Java tutorial
/* * 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); } } }