The project contains Sring converters for jsr310 classes. It is not currently added in maven repository, so, it must be compiled from sources.
Usage
<dependency>
<groupId>ro.izi.jsr310</groupId>
<artifactId>data</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
Use it in mongo configuration:
@Configuration
@ConfigurationProperties
public class MongoPersistenceConfiguration extends AbstractMongoConfiguration {
@Value( "${mongo.host}" )
private String mongoHost;
@Value( "${mongo.db}" )
private String mongoDB;
@Bean
public Mongo mongo() throws Exception {
return new Mongo(mongoHost);
}
@Override
public String getDatabaseName() {
return mongoDB;
}
@Override
public String getMappingBasePackage() {
return "ro.izi.mypackage.domain";
}
@Bean
@Override
public CustomConversions customConversions() {
List<Converter<?, ?>> converterList = new ArrayList<Converter<?, ?>>();
converterList.add(new InstantToLongConverter());
converterList.add(new LongToInstantConverter());
converterList.add(new LocalDateToStringConverter());
converterList.add(new StringToLocalDateConverter());
return new CustomConversions(converterList);
}
}
Use it in repository unit tests:
public class MongoMyRepositoryTest {
MongoOperations mongoOperations;
MongoMyRepository mongoTodoRepository = new MongoMtRepository();
@SuppressWarnings("deprecation")
@Before
public void setup() throws UnknownHostException{
MongoDbFactory factory = new SimpleMongoDbFactory(new Mongo(), "unittests_priorities");
CustomConversions conversions = new CustomConversions(Arrays.asList(new LocalDateToStringConverter(), new StringToLocalDateConverter()));
MongoMappingContext context = new MongoMappingContext();
context.setInitialEntitySet(new HashSet<Class<?>>(Arrays.asList(Todo.class)));
context.setSimpleTypeHolder(conversions.getSimpleTypeHolder());
context.initialize();
MappingMongoConverter converter = new MappingMongoConverter(new DefaultDbRefResolver(factory), context);
converter.setCustomConversions(conversions);
converter.afterPropertiesSet();
mongoOperations = new MongoTemplate(factory, converter);
mongoMyRepository.setMongoOperations(mongoOperations);
}