[ https://issues.apache.org/jira/browse/CXF-5988?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14123146#comment-14123146 ]
Srinivas Nagulapalli commented on CXF-5988: ------------------------------------------- We tried using ParamConverter with no effect. Converter code and client side configuration to register it are below: Please note, this approach works for the server-side but not on the client-side. // SomeDateConverter.java// package com.my.util; import java.util.Date; import javax.ws.rs.ext.ParamConverter; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.ISODateTimeFormat; public class SomeDateConverter implements ParamConverter<Date> { @Override public Date fromString(String dateString) { if (dateString.contains("-")) { DateTime result = ISODateTimeFormat.dateTimeParser().withZone(DateTimeZone.UTC).parseDateTime(dateString); return result.toDate(); } return new Date(Long.parseLong(dateString)); } @Override public String toString(Date dateToConvert) { return ISODateTimeFormat.dateTime().withZone(DateTimeZone.UTC).print(dateToConvert.getTime()); } } // ParamConverterProviderImpl.java// package com.my.util; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import java.util.Map; import javax.ws.rs.ext.ParamConverter; import javax.ws.rs.ext.ParamConverterProvider; public class ParamConverterProviderImpl implements ParamConverterProvider { private final Map<Class<?>, ? extends ParamConverter<?>> paramConverters; public ParamConverterProviderImpl(Map<Class<?>, ? extends ParamConverter<?>> paramConverters) { this.paramConverters = paramConverters; } @Override public <T> ParamConverter<T> getConverter(Class<T> rawClass, Type genericType, Annotation[] annotations) { return (ParamConverter<T>) paramConverters.get(rawClass); } } //////////our-config.xml ///////////////// <bean id="someDateConverter" class="com.my.util.SomeDateConverter"/> <bean id="paramConverterProvider" class="com.my.util.ParamConverterProviderImpl"> <constructor-arg> <map> <entry key="java.util.Date" value-ref="someDateConverter" /> </map> </constructor-arg> </bean> <jaxrs:client id="someService" address="http://${somehostname}:$someport}/${somesvc}" serviceClass="com.my.SomeService" inheritHeaders="true"> <jaxrs:providers> <ref bean="paramConverterProvider" /> </jaxrs:providers> </jaxrs:client> > Provide support for a pluggable parameter conversion mechanism for JAX-RS > client side proxies > --------------------------------------------------------------------------------------------- > > Key: CXF-5988 > URL: https://issues.apache.org/jira/browse/CXF-5988 > Project: CXF > Issue Type: Bug > Components: Core, JAX-RS > Affects Versions: 3.0.1 > Environment: Windows 7 > Reporter: Srinivas Nagulapalli > Labels: patch > Fix For: 3.0.1 > > > Server-side JAX-RS implementation allows injection of custom parameter > converters using ParamConverterProvider > (http://cxf.apache.org/docs/jax-rs-basics.html#JAX-RSBasics-Parameterconverters). > A similar mechanism (or the exact same) is required on the client side to > control how parameters are serialized (marshalled). One approach is to allow > specifying param converters when declaring jaxrs:client with Spring and/or > programmatically specifying it. > A specific case to consider: Client side serialization of Date object > (java.util.Date). > Given the following API: > @Path(“/someresource”) > @GET > void someApi(@MatrixParam(“”) SomeRequestWithDate request); > > Following shows the structure of the request with Dates: > //---------------------------------------------------- > import java.util.Date; > public class SomeRequestWithDate { > protected Date startDate; > > public Date getStartDate() { > return startDate; > } > } > //---------------------------------------------------- > When API is invoked through a client proxy > Then the following URL should be generated (where dates are serialized as ISO > strings): > /someresource/;startDate=2014-09-04T19:05:38.785Z > Instead, currently following URL is generated: > /someresource/;startDate.date=4;startDate.hours=15;startDate.minutes=4;startDate.month=8;startDate.seconds=34;startDate.time=1409857474660;startDate.year=114;startDate.day=4;startDate.timezoneOffset=240 -- This message was sent by Atlassian JIRA (v6.3.4#6332)