Details
Description
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