I am facing one very known issue yet no solution is working for me. Any quick help will be grateful.
From MVC controller, I am calling REST service which returns me Model object with LocalDate
as one of the fields. JacksonJAXbJSONProvider
does not parse the Localdate
object. I wrote custom Mapper as below And dependency is added in pom.xml
. Other required dependencies are also added(jackson databind, core, annotation)
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.6.1</version>
</dependency>
Custom ObjectMapper
class :
public class LocalDateObjectMapperContextResolver extends ObjectMapper{
@Provider
public LocalDateObjectMapperContextResolver() {
registerModule(new JavaTimeModule());
//findAndRegisterModules();
configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
}
}
This was suggested in Java 8 LocalDate Jackson format
My spring.xml(contains configuration for MVC controller etc...) has already one mapper configured which does conversion automatically as below
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"
p:objectMapper-ref="myobjectMapper"/>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"
p:objectMapper-ref="objectMapper"/>
</mvc:message-converters>
</mvc:annotation-driven>
<bean id="objectMapper" class="org.codehaus.jackson.map.ObjectMapper"/>
<bean id="myobjectMapper" class="mypackage.LocalDateObjectMapperContextResolver"/>
Below is stub file which connects to REST Service. I also tried to provide provider as below after above didnot work, but no luck here too.
<jaxrs:client id="testclient"
serviceClass="package1.RESTService"
username="abc"
password="abc"
address="$serviceURL">
<jaxrs:features>
<bean class="org.apache.cxf.transport.common.gzip.GZIPFeature"/>
<cxf:logging/>
</jaxrs:features>
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider"/>
<bean class="mypackage.LocalDateObjectMapperContextResolver"/>
</jaxrs:providers>
</jaxrs:client>
Now How do I configure my Context resolver which I just wrote so that I should be able to convert LocalDate.
What Am I doing wrong ?
I am getting below exception
No suitable constructor found for type [simple type, class java.time.LocalDate]: can not instantiate from JSON object (need to add/enable type information?)