com.commercehub.jackson.datatype.mongo.MongoModule.java Source code

Java tutorial

Introduction

Here is the source code for com.commercehub.jackson.datatype.mongo.MongoModule.java

Source

/*
 * Copyright (C) 2014 Commerce Technologies, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.commercehub.jackson.datatype.mongo;

import com.commercehub.jackson.datatype.mongo.deser.MongoClientURIDeserializer;
import com.commercehub.jackson.datatype.mongo.deser.ObjectIdDeserializer;
import com.commercehub.jackson.datatype.mongo.ser.MongoClientURISerializer;
import com.commercehub.jackson.datatype.mongo.ser.ObjectIdSerializer;
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.BeanDescription;
import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.databind.SerializationConfig;
import com.fasterxml.jackson.databind.deser.Deserializers;
import com.fasterxml.jackson.databind.ser.Serializers;
import com.mongodb.MongoClientURI;
import org.bson.types.ObjectId;

public class MongoModule extends Module {

    @Override
    public String getModuleName() {
        return "mongo";
    }

    @Override
    public Version version() {
        return Version.unknownVersion();
    }

    @Override
    public void setupModule(SetupContext context) {
        context.addSerializers(new MongoSerializers());
        context.addDeserializers(new MongoDeserializers());
    }

    private static class MongoSerializers extends Serializers.Base {

        @Override
        public JsonSerializer<?> findSerializer(SerializationConfig config, JavaType type,
                BeanDescription beanDesc) {
            Class<?> rawClass = type.getRawClass();
            if (ObjectId.class.isAssignableFrom(rawClass)) {
                return new ObjectIdSerializer();
            }
            if (MongoClientURI.class.isAssignableFrom(rawClass)) {
                return new MongoClientURISerializer();
            }
            return super.findSerializer(config, type, beanDesc);
        }

    }

    private static class MongoDeserializers extends Deserializers.Base {

        @Override
        public JsonDeserializer<?> findBeanDeserializer(JavaType type, DeserializationConfig config,
                BeanDescription beanDesc) throws JsonMappingException {
            Class<?> rawClass = type.getRawClass();
            if (ObjectId.class.isAssignableFrom(rawClass)) {
                return new ObjectIdDeserializer();
            }
            if (MongoClientURI.class.isAssignableFrom(rawClass)) {
                return new MongoClientURIDeserializer();
            }
            return super.findBeanDeserializer(type, config, beanDesc);
        }

    }

}