Commit 3789424f authored by Dave Syer's avatar Dave Syer

Add JodaModule bean if detected on classpath

Fixes gh-146
parent a79e3613
......@@ -26,6 +26,11 @@
<artifactId>jackson-databind</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
......
......@@ -23,11 +23,11 @@ import java.util.List;
import javax.annotation.PostConstruct;
import org.joda.time.DateTime;
import org.springframework.beans.factory.BeanFactoryUtils;
import org.springframework.beans.factory.ListableBeanFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
......@@ -38,6 +38,7 @@ import org.springframework.http.converter.json.MappingJackson2HttpMessageConvert
import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.joda.JodaModule;
/**
* {@link EnableAutoConfiguration Auto-configuration} for {@link HttpMessageConverter}s.
......@@ -60,7 +61,17 @@ public class HttpMessageConvertersAutoConfiguration {
}
@Configuration
@ConditionalOnBean(ObjectMapper.class)
@ConditionalOnClass({ JodaModule.class, DateTime.class })
protected static class JodaModuleConfiguration {
@Bean
public JodaModule jodaModule() {
return new JodaModule();
}
}
@Configuration
@ConditionalOnClass(ObjectMapper.class)
protected static class ObjectMappers {
......
......@@ -37,6 +37,7 @@ import com.fasterxml.jackson.databind.module.SimpleModule;
import static org.hamcrest.Matchers.hasItem;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.argThat;
import static org.mockito.Mockito.verify;
......@@ -72,6 +73,14 @@ public class HttpMessageConvertersAutoConfigurationTests {
assertTrue(converters.getConverters().contains(converter));
}
@Test
public void defaultJacksonModules() throws Exception {
this.context = new AnnotationConfigApplicationContext();
this.context.register(HttpMessageConvertersAutoConfiguration.class);
this.context.refresh();
assertNotNull(this.context.getBean("jodaModule", Module.class));
}
@Test
public void customJacksonModules() throws Exception {
this.context = new AnnotationConfigApplicationContext();
......@@ -82,7 +91,8 @@ public class HttpMessageConvertersAutoConfigurationTests {
@SuppressWarnings({ "unchecked", "unused" })
ObjectMapper result = verify(mapper).registerModules(
(Iterable<Module>) argThat(hasItem(this.context.getBean(Module.class))));
(Iterable<Module>) argThat(hasItem(this.context.getBean("jacksonModule",
Module.class))));
}
@Test
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment