Example usage for com.fasterxml.jackson.databind ObjectMapper registerModule

List of usage examples for com.fasterxml.jackson.databind ObjectMapper registerModule

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind ObjectMapper registerModule.

Prototype

public ObjectMapper registerModule(Module module) 

Source Link

Document

Method for registering a module that can extend functionality provided by this mapper; for example, by adding providers for custom serializers and deserializers.

Usage

From source file:com.linecorp.bot.model.event.CallbackRequestTest.java

private void parse(String resourceName, RequestTester callback) throws IOException {
    try (InputStream resource = getClass().getClassLoader().getResourceAsStream(resourceName)) {
        String json = StreamUtils.copyToString(resource, StandardCharsets.UTF_8);
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        objectMapper.registerModule(new JavaTimeModule())
                .configure(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS, false);
        CallbackRequest callbackRequest = objectMapper.readValue(json, CallbackRequest.class);

        callback.call(callbackRequest);// www.  j  a va  2  s.  co m
    }
}

From source file:org.efaps.cli.rest.PrintCall.java

/**
 * Compile the target in the server./*from   ww w.ja v  a  2  s.  c  o  m*/
 *
 * @param _eql the _eql
 * @param _exportFormat the _export format
 * @param _fileName the _file name
 * @return the string
 */
public String execute(final String _eql, final ExportFormat _exportFormat, final String _fileName) {
    init();
    final String fileName = StringUtils.isEmpty(_fileName) ? "export" : _fileName;

    final StringBuilder ret = new StringBuilder();

    final Response response = getWebTarget().queryParam("origin", "eFaps-CLI").queryParam("stmt", _eql)
            .request(MediaType.TEXT_PLAIN_TYPE, MediaType.APPLICATION_JSON_TYPE).get();
    LOG.debug("Response: {}", response);
    if (MediaType.APPLICATION_JSON_TYPE.equals(response.getMediaType())) {

        final BufferedReader br = new BufferedReader(
                new InputStreamReader(response.readEntity(InputStream.class)));

        final ObjectMapper mapper = new ObjectMapper();
        mapper.registerModule(new JodaModule());

        try {
            final Object obj = mapper.readValue(br, AbstractEFapsJSON.class);
            StringWriter writer = null;
            if (obj instanceof AbstractCI) {
                final AbstractCI<?> ciObject = (AbstractCI<?>) obj;
                writer = new StringWriter();
                final TreeExporter treeWriter = new TreeExporter(writer);

                final Row root = new Row(ciObject.getName());
                root.addChild(new Row("Nature: Type"));
                root.addChild(new Row("UUID: " + ciObject.getUUID()));
                root.addChild(new Row("ID: " + ciObject.getId()));
                final Row attrNode = new Row("Attributes");
                root.addChild(attrNode);
                for (final Attribute attr : ((Type) ciObject).getAttributes()) {
                    attrNode.addChild(
                            new Row(attr.getName(), attr.getType().getName(), attr.getType().getInfo()));
                }
                treeWriter.addRows(root);
            } else if (obj instanceof DataList) {
                final DataList tmp = (DataList) obj;
                final DataExporter tableWriter;
                boolean permitNUll = true;
                switch (_exportFormat) {
                case CSV:
                    tableWriter = new CsvExporter(new FileOutputStream(fileName + ".csv"));
                    ret.append("Exported to CSV.");
                    break;
                case TXT:
                    tableWriter = new TextExporter(new FileOutputStream(fileName + ".txt"));
                    ret.append("Exported to txt.");
                    break;
                case XML:
                    tableWriter = new XmlExporter(new FileOutputStream(fileName + ".xml"));
                    ret.append("Exported to xml.");
                    break;
                default:
                    writer = new StringWriter();
                    tableWriter = new TextTableExporter(writer);
                    final LineNumberColumn lineNumberCol = new LineNumberColumn("", 1);
                    lineNumberCol.setWidth(lineNumberCol.format(tmp.size()).length());
                    tableWriter.addColumns(lineNumberCol);
                    permitNUll = false;
                    break;
                }

                final Map<String, Column> key2Column = new LinkedHashMap<>();
                for (final ObjectData objData : tmp) {
                    for (final AbstractValue<?> val : objData.getValues()) {
                        int length = 0;
                        if (key2Column.containsKey(val.getKey())) {
                            length = String.valueOf(val.getValue()).length() + 2;
                        } else {
                            if (val instanceof StringValue) {
                                key2Column.put(val.getKey(), new StringColumn(val.getKey()));
                            } else if (val instanceof DateTimeValue) {
                                key2Column.put(val.getKey(), new StringColumn(val.getKey()));
                            } else if (val instanceof DecimalValue) {
                                key2Column.put(val.getKey(), new NumberColumn(val.getKey(), 1, 2));
                            } else if (val instanceof LongValue) {
                                key2Column.put(val.getKey(), new NumberColumn(val.getKey(), 1, 0));
                            } else {
                                key2Column.put(val.getKey(), new StringColumn(val.getKey()));
                            }
                            length = val.getKey().length() > String.valueOf(val.getValue()).length()
                                    ? val.getKey().length()
                                    : String.valueOf(val.getValue()).length();
                        }
                        if (length > key2Column.get(val.getKey()).getWidth()) {
                            key2Column.get(val.getKey()).setWidth(length);
                        }
                    }
                }
                tableWriter.addColumns(key2Column.values().toArray(new Column[key2Column.size()]));

                for (final ObjectData objData : tmp) {
                    final Row row = new Row();
                    for (final AbstractValue<?> val : objData.getValues()) {
                        Object value = val.getValue();
                        if (!permitNUll) {
                            if (value instanceof String && ((String) value).isEmpty()) {
                                value = " ";
                            }
                        }
                        if (val instanceof StringListValue) {
                            final StringBuilder bldr = new StringBuilder();
                            boolean first = true;
                            for (final String strVal : ((StringListValue) val).getValue()) {
                                if (first) {
                                    first = false;
                                } else {
                                    bldr.append("\n");
                                }
                                bldr.append(strVal);
                            }
                            value = bldr.toString();
                        }
                        row.addCellValue(value);
                    }
                    tableWriter.addRows(row);
                }
            } else if (obj instanceof ErrorReply) {
                writer = new StringWriter();
                writer.append(getErrorReply(response, (ErrorReply) obj));
            }
            if (writer != null) {
                ret.append(writer);
            }
        } catch (final IOException e) {
            LOG.error("Catched", e);
        }
    } else if (MediaType.TEXT_PLAIN_TYPE.equals(response.getMediaType())) {
        ret.append(response.readEntity(String.class));
    } else {
        ret.append(response.getStatusInfo().toString());
    }
    return ret.toString();
}

From source file:io.druid.cli.validate.DruidJsonValidator.java

private void registerModules(ObjectMapper jsonMapper, Iterable<DruidModule> fromExtensions) {
    for (DruidModule druidModule : fromExtensions) {
        for (Module module : druidModule.getJacksonModules()) {
            jsonMapper.registerModule(module);
        }//from  ww  w  .j  av a  2 s  . c  om
    }
}

From source file:com.bazaarvoice.jolt.jsonUtil.testdomain.three.MappingTest3.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 QueryFilterDeserializer());

    mapper.registerModule(testModule);

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

    String testFixture = "/jsonUtils/testdomain/two/queryFilter-realAndLogical2.json";

    // TEST JsonUtil and our deserialization logic
    QueryFilter queryFilter = jsonUtil.classpathToType(testFixture, new TypeReference<QueryFilter>() {
    });/*from  w w  w  .  j a va2  s  .  c o m*/

    // Make sure the hydrated QFilter looks right
    AssertJUnit.assertTrue(queryFilter instanceof LogicalFilter3);
    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.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);

    // 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>() {
    });//from ww w.  j a  v a 2  s.c  o  m

    // 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:eu.trentorise.opendata.semtext.jackson.test.SemTextModuleTest.java

/**
 * Example with manual modules registration
 *//*w w  w  . j  a  va2  s .  c  om*/
@Test
public void example1() throws JsonProcessingException, IOException {
    ObjectMapper om = new ObjectMapper();
    om.registerModule(new GuavaModule());
    om.registerModule(new OdtCommonsModule());
    om.registerModule(new SemTextModule());

    String json = om.writeValueAsString(SemText.of(Locale.ITALIAN, "ciao"));
    SemText reconstructedSemText = om.readValue(json, SemText.class);
}

From source file:org.lambdamatic.internal.elasticsearch.codec.ObjectMapperFactory.java

/**
 * Initializes an {@link ObjectMapper} configured with mixins to support serialization and
 * deserialization of all built-in and user-defined domain types.
 * <p>/*w ww. j  ava 2  s.c o m*/
 * <strong>Note:</strong>The {@link ObjectMapper} is instantiated and initialized once and then
 * kept in cache, so multiple calls will retrieve the same instance.
 * </p>
 * 
 * @return the {@link ObjectMapper}
 * 
 */
public static ObjectMapper getObjectMapper() {
    if (instance.objectMapper == null) {
        LOGGER.info("Initializing the ObjectMapper");
        final ObjectMapper mapper = new ObjectMapper();
        final ExecutorService availableProcessorsThreadPool = Executors
                .newFixedThreadPool(Runtime.getRuntime().availableProcessors());
        final Reflections reflections = new Reflections(new ConfigurationBuilder()

                // TODO: allow for configuration settings to reduce the scope of searching, using package
                // names instead of a classloader
                .setUrls(ClasspathHelper.forJavaClassPath())
                // .setUrls(ClasspathHelper.forClassLoader())
                .setScanners(new SubTypesScanner(), new TypeAnnotationsScanner())
                .setExecutorService(availableProcessorsThreadPool));
        // thread pool must be closed after it has been used, to avoid leaking threads in the JVM.
        availableProcessorsThreadPool.shutdown();
        // final Reflections reflections = new Reflections();
        reflections.getTypesAnnotatedWith(Mixin.class).stream().forEach(mixin -> {
            final Mixin mixinAnnotation = mixin.getAnnotation(Mixin.class);
            LOGGER.info("Adding mixin {} to {}", mixin, mixinAnnotation.target());
            mapper.addMixIn(mixinAnnotation.target(), mixin);
        });
        mapper.registerModule(new JavaTimeModule());
        // configure LocalDate serialization as string with pattern: YYYY-mm-dd
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        instance.objectMapper = mapper;
    }
    return instance.objectMapper;
}

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);

    // 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>() {
    });// w  w  w.ja  v a 2s .  com

    // 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:org.springframework.cloud.dataflow.rest.client.JobExecutionDeserializationTests.java

@Test
public void testDeserializationOfMultipleJobExecutions() throws IOException {

    final ObjectMapper objectMapper = new ObjectMapper();

    final InputStream inputStream = JobExecutionDeserializationTests.class
            .getResourceAsStream("/JobExecutionJson.txt");

    final String json = new String(StreamUtils.copyToByteArray(inputStream));

    objectMapper.registerModule(new Jackson2HalModule());
    objectMapper.addMixIn(JobExecution.class, JobExecutionJacksonMixIn.class);
    objectMapper.addMixIn(JobParameters.class, JobParametersJacksonMixIn.class);
    objectMapper.addMixIn(JobParameter.class, JobParameterJacksonMixIn.class);
    objectMapper.addMixIn(JobInstance.class, JobInstanceJacksonMixIn.class);
    objectMapper.addMixIn(StepExecution.class, StepExecutionJacksonMixIn.class);
    objectMapper.addMixIn(StepExecutionHistory.class, StepExecutionHistoryJacksonMixIn.class);
    objectMapper.addMixIn(ExecutionContext.class, ExecutionContextJacksonMixIn.class);
    objectMapper.addMixIn(ExitStatus.class, ExitStatusJacksonMixIn.class);

    PagedResources<Resource<JobExecutionResource>> paged = objectMapper.readValue(json,
            new TypeReference<PagedResources<Resource<JobExecutionResource>>>() {
            });// w  w w .ja  va  2  s.c o m
    JobExecutionResource jobExecutionResource = paged.getContent().iterator().next().getContent();
    Assert.assertEquals("Expect 1 JobExecutionInfoResource", 6, paged.getContent().size());
    Assert.assertEquals(Long.valueOf(6), jobExecutionResource.getJobId());
    Assert.assertEquals("job200616815", jobExecutionResource.getName());
    Assert.assertEquals("COMPLETED", jobExecutionResource.getJobExecution().getStatus().name());

}