Package org.springframework.data.simpledb.core.entity.json

Source Code of org.springframework.data.simpledb.core.entity.json.JsonMarshaller$JsonMarshallerHolder

package org.springframework.data.simpledb.core.entity.json;

import java.io.IOException;

import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.annotate.JsonAutoDetect;
import org.codehaus.jackson.annotate.JsonMethod;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.mrbean.MrBeanModule;
import org.springframework.data.mapping.model.MappingException;
import org.springframework.util.Assert;

/**
* Marshall and unmarshall objects, collections and map field wrappers
*/
public final class JsonMarshaller {

  static class JsonMarshallerHolder {

    private static JsonMarshaller instance = new JsonMarshaller();
  }

  private ObjectMapper jsonMapper;

  private JsonMarshaller() {
    JsonFactory factory = new JsonFactory();
    jsonMapper = new ObjectMapper(factory);
        jsonMapper.enableDefaultTypingAsProperty(ObjectMapper.DefaultTyping.NON_FINAL, "@class");
        JsonUnknownPropertyHandler jsonUnknownPropertyHandler = new JsonUnknownPropertyHandler();
    jsonMapper.getDeserializationConfig().addHandler(jsonUnknownPropertyHandler);
    jsonMapper.registerModule(new MrBeanModule());
  }

  public static JsonMarshaller getInstance() {
    return JsonMarshallerHolder.instance;
  }

    static JsonMarshaller createNew(){
        return new JsonMarshaller();
    }

  public <T> T unmarshall(String jsonString, Class<?> objectType) {
    Assert.notNull(jsonString);
    try {
      return (T) jsonMapper.readValue(jsonString, objectType);
    } catch(IOException e) {
      throw new MappingException("Could not unmarshall object : " + jsonString, e);
    }
  }

  public <T> String marshall(T input) {
    Assert.notNull(input);
    jsonMapper = new ObjectMapper().setVisibility(JsonMethod.FIELD, JsonAutoDetect.Visibility.ANY);
    jsonMapper.enableDefaultTypingAsProperty(ObjectMapper.DefaultTyping.NON_FINAL, "@class");
    try {
      return jsonMapper.writeValueAsString(input);
    } catch(Exception e) {
      throw new MappingException(e.getMessage(), e);
    }
  }

}
TOP

Related Classes of org.springframework.data.simpledb.core.entity.json.JsonMarshaller$JsonMarshallerHolder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.