SerializationUtil.java

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.azure.search.documents.implementation.serializer;

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;

/**
 * Utility type to configure JSON serialization behavior.
 */
public class SerializationUtil {
    /**
     * Configures an {@link ObjectMapper} with custom behavior needed to work with the Azure Cognitive Search REST API.
     * @param mapper The Jackson ObjectMapper.
     */
    public static void configureMapper(ObjectMapper mapper) {
        mapper.registerModule(new JavaTimeModule());
        mapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);
        UntypedObjectDeserializer defaultDeserializer = new UntypedObjectDeserializer(null, null);
        Iso8601DateDeserializer iso8601DateDeserializer = new Iso8601DateDeserializer(defaultDeserializer);
        //GeoPointDeserializer geoPointDeserializer = new GeoPointDeserializer(iso8601DateDeserializer);
        SimpleModule module = new SimpleModule();
        module.addDeserializer(Object.class, iso8601DateDeserializer);
        mapper.registerModule(Iso8601DateSerializer.getModule());
//        mapper.registerModule(GeometrySerializer.getModule());
//        mapper.registerModule(GeometryDeserializer.getModule());

        mapper.registerModule(module);
    }
}