@Test public void convertsJodaTimeTypesCorrectly() { List<Converter<?, ?>> converters = new ArrayList<Converter<?, ?>>(); converters.add(new LocalDateToDateConverter()); converters.add(new DateToLocalDateConverter()); List<Class<?>> customSimpleTypes = new ArrayList<Class<?>>(); customSimpleTypes.add(LocalDate.class); mappingContext.setCustomSimpleTypes(customSimpleTypes); converter = new MappingMongoConverter(mappingContext); converter.setConverters(converters); converter.afterPropertiesSet(); Person person = new Person(); person.birthDate = new LocalDate(); DBObject dbObject = new BasicDBObject(); converter.write(person, dbObject); assertTrue(dbObject.get("birthDate") instanceof Date); Person result = converter.read(Person.class, dbObject); assertThat(result.birthDate, is(notNullValue())); }
/** @see DATADOC-128 */ @Test public void ignoresDocumentsStoredTypeIfCompletelyDifferentTypeRequested() { DBObject dbObject = new BasicDBObject(); dbObject.put("birthDate", new LocalDate()); dbObject.put(MappingMongoConverter.CUSTOM_TYPE_KEY, Person.class.getName()); assertThat(converter.read(BirthDateContainer.class, dbObject), is(BirthDateContainer.class)); }
/** @see DATADOC-128 */ @Test public void usesDocumentsStoredTypeIfSubtypeOfRequest() { DBObject dbObject = new BasicDBObject(); dbObject.put("birthDate", new LocalDate()); dbObject.put(MappingMongoConverter.CUSTOM_TYPE_KEY, Person.class.getName()); assertThat(converter.read(Contact.class, dbObject), is(Person.class)); }