Advertisement
NLinker

Passing ObjectModule into context

Nov 21st, 2016
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 3.88 KB | None | 0 0
  1. package com.vertigo.test.module;
  2.  
  3. import java.io.IOException;
  4. import java.util.TimeZone;
  5. import com.fasterxml.jackson.annotation.JsonAutoDetect;
  6. import com.fasterxml.jackson.annotation.PropertyAccessor;
  7. import com.fasterxml.jackson.core.JsonGenerator;
  8. import com.fasterxml.jackson.core.JsonParser;
  9. import com.fasterxml.jackson.core.JsonProcessingException;
  10. import com.fasterxml.jackson.databind.DeserializationConfig;
  11. import com.fasterxml.jackson.databind.DeserializationContext;
  12. import com.fasterxml.jackson.databind.JsonDeserializer;
  13. import com.fasterxml.jackson.databind.JsonSerializer;
  14. import com.fasterxml.jackson.databind.MapperFeature;
  15. import com.fasterxml.jackson.databind.ObjectMapper;
  16. import com.fasterxml.jackson.databind.SerializationFeature;
  17. import com.fasterxml.jackson.databind.SerializerProvider;
  18. import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
  19. import com.fasterxml.jackson.databind.annotation.JsonSerialize;
  20. import com.fasterxml.jackson.databind.cfg.ContextAttributes;
  21.  
  22. import com.vertigo.model.json.serialization.opt.OptModule;
  23.  
  24. public class ObjectMapperModule {
  25.     private static final String TEH_MAPPER = "tehMapper";
  26.  
  27.     // @Override
  28.     protected ObjectMapper configure() {
  29.         ObjectMapper mapper = new ObjectMapper().setVisibility(PropertyAccessor.GETTER,
  30.             JsonAutoDetect.Visibility.PUBLIC_ONLY);
  31.         mapper.setTimeZone(TimeZone.getDefault());
  32.         mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
  33.         mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
  34.         mapper.configure(MapperFeature.USE_ANNOTATIONS, true);
  35.         mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
  36.         mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
  37.         mapper.configure(JsonParser.Feature.ALLOW_NUMERIC_LEADING_ZEROS, true);
  38.         //mapper.registerModule(new JodaModule());
  39.         mapper.registerModule(new OptModule());
  40.         // bind(ObjectMapper.class).toInstance(mapper);
  41.         return mapper;
  42.     }
  43.  
  44.     public static class ModelFromString extends JsonDeserializer<Model> {
  45.         @Override
  46.         public Model deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
  47.             Model m = new Model();
  48.             ContextAttributes ats = ctxt.getConfig().getAttributes();
  49.             System.out.println("om = " + ats.getAttribute(TEH_MAPPER));
  50.             m.str = p.getText();
  51.             return m;
  52.         }
  53.     }
  54.  
  55.     public static class ModelToString extends JsonSerializer<Model> {
  56.         @Override
  57.         public void serialize(Model value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
  58.             gen.writeString(value.str);
  59.         }
  60.     }
  61.  
  62.     public static class Model<T> {
  63.         public String str;
  64.         public Model() {
  65.         }
  66.     }
  67.  
  68.     public static class UserM {
  69.         @JsonSerialize(using = ModelToString.class)
  70.         @JsonDeserialize(using = ModelFromString.class)
  71.         Model model;
  72.  
  73.         public Model getModel() {
  74.             return model;
  75.         }
  76.         public void setModel(Model rate) {
  77.             this.model = rate;
  78.         }
  79.     }
  80.  
  81.  
  82.     public static void main(String[] args) throws Exception {
  83.         ObjectMapperModule omm = new ObjectMapperModule();
  84.         ObjectMapper mapper = omm.configure();
  85.         DeserializationConfig conf = mapper.getDeserializationConfig()
  86.             .withAttribute(TEH_MAPPER, mapper);
  87.         mapper.setConfig(conf);
  88.         UserM userM = new UserM();
  89.         Model model = new Model();
  90.         model.str = "W33ha";
  91.         userM.setModel(model);
  92.         String s = mapper.writeValueAsString(userM);
  93.         System.out.println("s = " + s);
  94.         UserM userM1 = mapper.readValue(s, UserM.class);
  95.         System.out.println("userM1 = " + userM1);
  96.     }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement