com.google.mr4c.serialize.json.MetadataEntryBeanDeserializer.java Source code

Java tutorial

Introduction

Here is the source code for com.google.mr4c.serialize.json.MetadataEntryBeanDeserializer.java

Source

/**
  * Copyright 2014 Google Inc. All rights reserved.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  * 
  *     http://www.apache.org/licenses/LICENSE-2.0
  * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
*/

package com.google.mr4c.serialize.json;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonSerializer;
import com.google.gson.JsonParseException;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonDeserializationContext;

import com.google.mr4c.metadata.MetadataElementType;
import com.google.mr4c.serialize.bean.metadata.MetadataBeans;
import com.google.mr4c.serialize.bean.metadata.MetadataElementBean;
import com.google.mr4c.serialize.bean.metadata.MetadataEntryBean;

import java.lang.reflect.Type;

/*package*/ class MetadataEntryBeanDeserializer implements JsonDeserializer<MetadataEntryBean> {

    public MetadataEntryBean deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
            throws JsonParseException {
        MetadataElementType elementType = MetadataElementType
                .valueOf(json.getAsJsonObject().getAsJsonPrimitive("elementType").getAsString());
        JsonElement jsonElement = json.getAsJsonObject().get("element");
        Class clazz = MetadataBeans.getBeanClass(elementType);
        MetadataElementBean elementBean = context.deserialize(jsonElement, clazz);
        return MetadataEntryBean.instance(elementBean, elementType);
    }

}