Java tutorial
/* * Copyright (C) 2011 Benoit GUEROUT <bguerout at gmail dot com> and Yves AMSELLEM <amsellem dot yves at gmail dot com> * * 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 org.jongo.marshall.jackson.oid; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectReader; import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import org.jongo.bson.Bson; import org.jongo.bson.BsonDocument; import org.jongo.marshall.jackson.configuration.Mapping; import org.junit.Before; import org.junit.Test; import java.io.IOException; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; public class AnnotationsTest { private ObjectMapper externalMapper; @Before public void setUp() throws Exception { externalMapper = new ObjectMapper(); } @Test(expected = UnrecognizedPropertyException.class) public void shouldIgnoreIdAnnotation() throws IOException { externalMapper.readValue("{\"_id\":\"53a499be60b2a2248d956875\"}", WithMongoId.class); } @Test public void shouldHandleIdAnnotation() throws IOException { Mapping build = new Mapping.Builder().build(); ObjectReader reader = build.getReader(WithMongoId.class); BsonDocument document = Bson.createDocument(new BasicDBObject("_id", "53a499be60b2a2248d956875")); WithMongoId friend = reader.readValue(document.toByteArray()); assertThat(friend.id, equalTo("53a499be60b2a2248d956875")); } @Test(expected = JsonMappingException.class) public void shouldIgnoreObjectIdAnnotation() throws IOException { externalMapper.readValue("{\"id\":{\"$oid\":\"53a499be60b2a2248d956875\"}}", WithMongoObjectId.class); } @Test public void shouldHandleObjectIdAnnotation() throws IOException { Mapping build = new Mapping.Builder().build(); ObjectReader reader = build.getReader(WithMongoObjectId.class); DBObject oid = new BasicDBObject("$oid", "53a499be60b2a2248d956875"); BasicDBObject dbObject = new BasicDBObject("id", oid); BsonDocument document = Bson.createDocument(dbObject); WithMongoObjectId testObj = reader.readValue(document.toByteArray()); assertThat(testObj.id, equalTo("53a499be60b2a2248d956875")); } private static class WithMongoObjectId { @MongoObjectId @JsonProperty String id; } private static class WithMongoId { @MongoId private String id; } }