Example usage for com.fasterxml.jackson.databind.module SimpleModule SimpleModule

List of usage examples for com.fasterxml.jackson.databind.module SimpleModule SimpleModule

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind.module SimpleModule SimpleModule.

Prototype

public SimpleModule(String name, Version version) 

Source Link

Document

Constructor to use for actual reusable modules.

Usage

From source file:org.mongojack.TestCustomObjectMapper.java

private ObjectMapper createObjectMapper() {
    SimpleModule module = new SimpleModule("MySimpleModule", new Version(1, 0, 0, null, "", ""));
    module.addDeserializer(Custom.class, new JsonDeserializer<Custom>() {
        @Override/*from  www.  j  a va2  s.  co  m*/
        public Custom deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
            JsonNode node = jp.readValueAsTree();
            return new Custom(node.get("v1").asText(), node.get("v2").asText());
        }
    });
    module.addSerializer(Custom.class, new JsonSerializer<Custom>() {
        @Override
        public void serialize(Custom value, JsonGenerator jgen, SerializerProvider provider)
                throws IOException {
            jgen.writeStartObject();
            jgen.writeFieldName("v1");
            jgen.writeString(value.value1);
            jgen.writeFieldName("v2");
            jgen.writeString(value.value2);
            jgen.writeEndObject();
        }
    });

    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.registerModule(module);
    MongoJackModule.configure(objectMapper);
    return objectMapper;
}

From source file:com.bazaarvoice.jolt.jsonUtil.testdomain.one.MappingTest1.java

@Test
public void testPolymorphicJacksonSerializationAndDeserialization() {
    ObjectMapper mapper = new ObjectMapper();

    SimpleModule testModule = new SimpleModule("testModule", new Version(1, 0, 0, null, null, null))
            .addDeserializer(QueryFilter.class, new QueryFilter1Deserializer());

    mapper.registerModule(testModule);// w  ww .ja  v  a2 s .co m

    // Verifying that we can pass in a custom Mapper and create a new JsonUtil
    JsonUtil jsonUtil = JsonUtils.customJsonUtil(mapper);

    String testFixture = "/jsonUtils/testdomain/one/queryFilter-realAndLogical.json";

    // TEST JsonUtil and our deserialization logic
    QueryFilter queryFilter = jsonUtil.classpathToType(testFixture, new TypeReference<QueryFilter>() {
    });

    // Make sure the hydrated queryFilter looks right
    AssertJUnit.assertTrue(queryFilter instanceof LogicalFilter1);
    AssertJUnit.assertEquals(QueryParam.AND, queryFilter.getQueryParam());
    AssertJUnit.assertTrue(queryFilter.isLogical());
    AssertJUnit.assertEquals(3, queryFilter.getFilters().size());
    AssertJUnit.assertNotNull(queryFilter.getFilters().get(QueryParam.OR));

    // Make sure one of the top level RealFilters looks right
    QueryFilter productIdFilter = queryFilter.getFilters().get(QueryParam.PRODUCTID);
    AssertJUnit.assertTrue(productIdFilter.isReal());
    AssertJUnit.assertEquals(QueryParam.PRODUCTID, productIdFilter.getQueryParam());
    AssertJUnit.assertEquals("Acme-1234", productIdFilter.getValue());

    // Make sure the nested OR looks right
    QueryFilter orFilter = queryFilter.getFilters().get(QueryParam.OR);
    AssertJUnit.assertTrue(orFilter.isLogical());
    AssertJUnit.assertEquals(QueryParam.OR, orFilter.getQueryParam());
    AssertJUnit.assertEquals(2, orFilter.getFilters().size());

    // Make sure nested AND looks right
    QueryFilter nestedAndFilter = orFilter.getFilters().get(QueryParam.AND);
    AssertJUnit.assertTrue(nestedAndFilter.isLogical());
    AssertJUnit.assertEquals(QueryParam.AND, nestedAndFilter.getQueryParam());
    AssertJUnit.assertEquals(2, nestedAndFilter.getFilters().size());

    // SERIALIZE TO STRING to test serialization logic
    String unitTestString = jsonUtil.toJsonString(queryFilter);

    // LOAD and Diffy the plain vanilla JSON versions of the documents
    Map<String, Object> actual = JsonUtils.jsonToMap(unitTestString);
    Map<String, Object> expected = JsonUtils.classpathToMap(testFixture);

    // Diffy the vanilla versions
    Diffy.Result result = diffy.diff(expected, actual);
    if (!result.isEmpty()) {
        AssertJUnit.fail("Failed.\nhere is a diff:\nexpected: " + JsonUtils.toJsonString(result.expected)
                + "\n  actual: " + JsonUtils.toJsonString(result.actual));
    }
}

From source file:com.bazaarvoice.jolt.jsonUtil.testdomain.four.MappingTest4.java

@Test
public void testPolymorphicJacksonSerializationAndDeserialization() {
    ObjectMapper mapper = new ObjectMapper();

    SimpleModule testModule = new SimpleModule("testModule", new Version(1, 0, 0, null, null, null))
            .addDeserializer(QueryFilter4.class, new QueryFilter4Deserializer());

    mapper.registerModule(testModule);/*w w  w  . ja  va2s.  c  o  m*/

    // Verifying that we can pass in a custom Mapper and create a new JsonUtil
    JsonUtil jsonUtil = JsonUtils.customJsonUtil(mapper);

    String testFixture = "/jsonUtils/testdomain/four/queryFilter-realAndLogical4.json";

    // TEST JsonUtil and our deserialization logic
    QueryFilter4 queryFilter = jsonUtil.classpathToType(testFixture, new TypeReference<QueryFilter4>() {
    });

    // Make sure the hydrated QFilter looks right
    AssertJUnit.assertTrue(queryFilter instanceof LogicalFilter4);
    AssertJUnit.assertEquals(QueryParam.AND, queryFilter.getQueryParam());
    AssertJUnit.assertTrue(queryFilter.isLogical());
    AssertJUnit.assertEquals(3, queryFilter.getFilters().size());
    AssertJUnit.assertNotNull(queryFilter.getFilters().get(QueryParam.OR));

    // Make sure one of the top level RealFilters looks right
    QueryFilter4 productIdFilter = queryFilter.getFilters().get(QueryParam.PRODUCTID);
    AssertJUnit.assertTrue(productIdFilter.isReal());
    AssertJUnit.assertTrue(productIdFilter instanceof StringRealFilter4);
    StringRealFilter4 stringRealProductIdFilter = (StringRealFilter4) productIdFilter;
    AssertJUnit.assertEquals(QueryParam.PRODUCTID, stringRealProductIdFilter.getQueryParam());
    AssertJUnit.assertEquals("Acme-1234", stringRealProductIdFilter.getValue());

    // Make sure the nested OR looks right
    QueryFilter4 orFilter = queryFilter.getFilters().get(QueryParam.OR);
    AssertJUnit.assertTrue(orFilter.isLogical());
    AssertJUnit.assertEquals(QueryParam.OR, orFilter.getQueryParam());
    AssertJUnit.assertEquals(2, orFilter.getFilters().size());

    // Make sure nested AND looks right
    QueryFilter4 nestedAndFilter = orFilter.getFilters().get(QueryParam.AND);
    AssertJUnit.assertTrue(nestedAndFilter.isLogical());
    AssertJUnit.assertEquals(QueryParam.AND, nestedAndFilter.getQueryParam());
    AssertJUnit.assertEquals(2, nestedAndFilter.getFilters().size());

    // SERIALIZE TO STRING to test serialization logic
    String unitTestString = jsonUtil.toJsonString(queryFilter);

    // LOAD and Diffy the plain vanilla JSON versions of the documents
    Map<String, Object> actual = JsonUtils.jsonToMap(unitTestString);
    Map<String, Object> expected = JsonUtils.classpathToMap(testFixture);

    // Diffy the vanilla versions
    Diffy.Result result = diffy.diff(expected, actual);
    if (!result.isEmpty()) {
        AssertJUnit.fail("Failed.\nhere is a diff:\nexpected: " + JsonUtils.toJsonString(result.expected)
                + "\n  actual: " + JsonUtils.toJsonString(result.actual));
    }
}

From source file:com.ning.billing.recurly.model.TestXmlMapper.java

@Test(groups = "fast", description = "See https://github.com/FasterXML/jackson-dataformat-xml/issues/76")
public void testCollection() throws Exception {
    final XmlMapper xmlMapper = new XmlMapper();
    xmlMapper.setSerializerProvider(new RecurlyXmlSerializerProvider());
    final SimpleModule m = new SimpleModule("module", new Version(1, 0, 0, null, null, null));
    m.addSerializer(Values.class, new ValuesSerializer());
    xmlMapper.registerModule(m);/*w  w w  . j  a  va2  s  . c  om*/

    final Values values = xmlMapper
            .readValue(
                    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "  <values type=\"array\">\n"
                            + "    <value>Hi!</value>" + "    <value>Salut!</value>" + "  </values>",
                    Values.class);
    Assert.assertEquals(values.size(), 2, values.toString());
    Assert.assertEquals(values.get(0), "Hi!");
    Assert.assertEquals(values.get(1), "Salut!");

    // Test we can re-serialize
    final String valueAsString = xmlMapper.writeValueAsString(values);
    final Values values2 = xmlMapper.readValue(valueAsString, Values.class);
    Assert.assertEquals(values2, values, valueAsString);
}

From source file:com.amazonaws.services.dynamodbv2.streamsadapter.model.RecordObjectMapper.java

public RecordObjectMapper() {
    super();//  w w  w  .jav  a 2s  . com
    SimpleModule module = new SimpleModule(MODULE, Version.unknownVersion());

    // Deal with (de)serializing of byte[].
    module.addSerializer(ByteBuffer.class, new ByteBufferSerializer());
    module.addDeserializer(ByteBuffer.class, new ByteBufferDeserializer());

    // Deal with (de)serializing of Date
    module.addSerializer(Date.class, DateSerializer.instance);
    module.addDeserializer(Date.class, new DateDeserializer());

    // Don't serialize things that are null
    this.setSerializationInclusion(JsonInclude.Include.NON_NULL);

    this.addMixInAnnotations(AttributeValue.class, AttributeValueMixIn.class);
    this.addMixInAnnotations(Record.class, RecordMixIn.class);
    this.addMixInAnnotations(StreamRecord.class, StreamRecordMixIn.class);
}

From source file:com.bazaarvoice.jolt.jsonUtil.testdomain.five.MappingTest5.java

@Test
public void testPolymorphicJacksonSerializationAndDeserialization() {
    ObjectMapper mapper = new ObjectMapper();

    SimpleModule testModule = new SimpleModule("testModule", new Version(1, 0, 0, null, null, null))
            .addDeserializer(QueryFilter5.class, new QueryFilter5Deserializer());

    mapper.registerModule(testModule);//from   w w w . j av  a2 s  .  co  m

    // Verifying that we can pass in a custom Mapper and create a new JsonUtil
    JsonUtil jsonUtil = JsonUtils.customJsonUtil(mapper);

    String testFixture = "/jsonUtils/testdomain/five/queryFilter-realAndLogical5.json";

    // TEST JsonUtil and our deserialization logic
    QueryFilter5 queryFilter = jsonUtil.classpathToType(testFixture, new TypeReference<QueryFilter5>() {
    });

    // Make sure the hydrated QFilter looks right
    AssertJUnit.assertTrue(queryFilter instanceof LogicalFilter5);
    LogicalFilter5 andFilter = (LogicalFilter5) queryFilter;
    AssertJUnit.assertEquals(Operator.AND, andFilter.getOperator());
    AssertJUnit.assertNotNull(andFilter.getValues());
    AssertJUnit.assertEquals(3, andFilter.getValues().size());

    // Make sure one of the top level RealFilters looks right
    QueryFilter5 productIdFilter = andFilter.getValues().get(1);
    AssertJUnit.assertTrue(productIdFilter instanceof StringRealFilter5);
    StringRealFilter5 stringRealProductIdFilter = (StringRealFilter5) productIdFilter;
    AssertJUnit.assertEquals(Field.PRODUCTID, stringRealProductIdFilter.getField());
    AssertJUnit.assertEquals(Operator.EQ, stringRealProductIdFilter.getOperator());
    AssertJUnit.assertEquals("Acme-1234", stringRealProductIdFilter.getValues().get(0));

    // Make sure the nested OR looks right
    QueryFilter5 orFilter = andFilter.getValues().get(2);
    AssertJUnit.assertTrue(orFilter instanceof LogicalFilter5);
    LogicalFilter5 realOrFilter = (LogicalFilter5) orFilter;
    AssertJUnit.assertEquals(Operator.OR, realOrFilter.getOperator());
    AssertJUnit.assertEquals(2, realOrFilter.getValues().size());

    // Make sure nested AND looks right
    QueryFilter5 nestedAndFilter = realOrFilter.getValues().get(1);
    AssertJUnit.assertTrue(nestedAndFilter instanceof LogicalFilter5);
    AssertJUnit.assertEquals(Operator.AND, nestedAndFilter.getOperator());
    AssertJUnit.assertEquals(3, nestedAndFilter.getValues().size());

    // SERIALIZE TO STRING to test serialization logic
    String unitTestString = jsonUtil.toJsonString(queryFilter);

    // LOAD and Diffy the plain vanilla JSON versions of the documents
    Map<String, Object> actual = JsonUtils.jsonToMap(unitTestString);
    Map<String, Object> expected = JsonUtils.classpathToMap(testFixture);

    // Diffy the vanilla versions
    Diffy.Result result = diffy.diff(expected, actual);
    if (!result.isEmpty()) {
        AssertJUnit.fail("Failed.\nhere is a diff:\nexpected: " + JsonUtils.toJsonString(result.expected)
                + "\n  actual: " + JsonUtils.toJsonString(result.actual));
    }
}

From source file:org.brutusin.json.impl.JacksonCodec.java

public JacksonCodec(ObjectMapper mapper, JacksonFactoryWrapper schemaFactory) {
    if (mapper == null) {
        mapper = new ObjectMapper();

        mapper.setVisibility(mapper.getSerializationConfig().getDefaultVisibilityChecker()
                .withFieldVisibility(JsonAutoDetect.Visibility.ANY)
                .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE));

        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

        SimpleModule testModule = new SimpleModule("json-provider-module",
                new Version(1, 0, 0, null, "org.brutusin", "json-provider"));
        testModule.addSerializer(new JsonNodeSerializer());
        testModule.addDeserializer(JsonNode.class, new JsonNodeDeserializer());
        testModule.addSerializer(new InputStreamSerializer());
        testModule.addDeserializer(InputStream.class, new InputStreamDeserializer());
        testModule.addDeserializer(MetaDataInputStream.class, new InputStreamDeserializer());
        mapper.registerModule(testModule);
    }/*from www  .  j a v a  2  s . co m*/
    if (schemaFactory == null) {
        schemaFactory = new JacksonFactoryWrapper(new HashMap<Class, String>(DEFAULT_FORMAT_MAP));
    }
    this.mapper = mapper;
    this.schemaFactory = schemaFactory;
}

From source file:com.google.code.ssm.transcoders.JsonTranscoderTest.java

@Test
public void testEncodeAndDecodeRegisterSerializerDirectlyToModule() {
    JsonObjectMapper mapper = new JsonObjectMapper();

    // first add serializer then register module
    SimpleModule module = new SimpleModule("cemo", Version.unknownVersion());
    module.addSerializer(Point.class, new PointSerializer());
    mapper.registerModule(module);/*from   www. j a  va 2  s .c o m*/

    transcoder = new JsonTranscoder(mapper);

    Point p = new Point(40, 50);

    CachedObject co = transcoder.encode(p);
    assertNotNull(co);
    assertNotNull(co.getData());
    assertEquals("{\"v\":\"40x50\"}", new String(co.getData()));
}

From source file:org.nohope.jongo.JacksonProcessor.java

@Nonnull
private static ObjectMapper createPreConfiguredMapper() {
    final ObjectMapper mapper = new ObjectMapper();
    mapper.registerModule(new JodaModule());
    mapper.registerModule(new ColorModule());

    mapper.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);
    mapper.configure(AUTO_DETECT_GETTERS, false);
    mapper.configure(AUTO_DETECT_SETTERS, false);
    mapper.setSerializationInclusion(NON_NULL);
    mapper.setVisibilityChecker(VisibilityChecker.Std.defaultInstance().withFieldVisibility(ANY));

    mapper.enableDefaultTypingAsProperty(ObjectMapper.DefaultTyping.NON_FINAL,
            JsonTypeInfo.Id.CLASS.getDefaultPropertyName());

    final SimpleModule module = new SimpleModule("jongo", Version.unknownVersion());
    module.addKeySerializer(Object.class, ComplexKeySerializer.S_OBJECT);
    module.addKeyDeserializer(String.class, ComplexKeyDeserializer.S_OBJECT);
    module.addKeyDeserializer(Object.class, ComplexKeyDeserializer.S_OBJECT);

    //addBSONTypeSerializers(module);

    mapper.registerModule(module);/*from  w w w. ja  v  a  2 s  .  co m*/
    return mapper;
}