[
https://issues.apache.org/jira/browse/CXF-5858?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14053817#comment-14053817
]
julien Bordeneuve commented on CXF-5858:
----------------------------------------
Hi,
I use the JacksonJaxbJsonProvider who (it seems) call the toString of Criteria
class.
Her my code.
@Override
public String toString() {
return "{destination:\"" + this.destination + "\",
arrivalDate:\""
+ this.arrivalDate + "\", nbNight:\"" +
this.nbNight
+ "\", nbAdult:\"" + this.nbAdult + "\",
nbChild:\""
+ this.nbChild + "\", nbRoom:\"" + this.nbRoom
+ "\"}";
}
public static Criteria fromString(final String value)
throws JsonParseException, JsonMappingException,
IOException {
final ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES,
true);
final Criteria criteria = mapper.readValue(value,
Criteria.class);
return criteria;
}
Thanks,
> WebClient using GET with complex query param object :
> IllegalArgumentException: Unresolved variables; only 0 value(s) given for 1
> unique variable(s)
> ----------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CXF-5858
> URL: https://issues.apache.org/jira/browse/CXF-5858
> Project: CXF
> Issue Type: Bug
> Affects Versions: 2.7.11, 3.0.0
> Reporter: julien Bordeneuve
>
> Hi,
> I use the CXF WebClient to GET a message to a server with a complex query ,
> this code work on CXF 2.5.x but after a complete version upgrade to CXF 3.0.0
> (also try on 2.7.11). I obtain this exception IllegalArgumentException:
> Unresolved variables; only 0 value(s) given for 1 unique variable(s).
> The problem seems to be on the URITemplate when CurlyBraceTokenizer parse
> the query.
> for example for my query :
> criteria={destination:"Paris", arrivalDate:"20/11/2014", nbNight:"2",
> nbAdult:"1", nbChild:"0", nbRoom:"null"},
> The CurlyBraceTokenizer parser split it like this :
> variable = destination
> value = "Paris", arrivalDate:"20/11/2014", nbNight:"2", nbAdult:"1",
> nbChild:"0", nbRoom:"null"
> client side :
> "
> final List<Object> providers = new ArrayList<Object>();
> providers.add(new JacksonJaxbJsonProvider());
> // providers.add(new ParamConverterProviderImpl());
> WebClient client = WebClient.create(
>
> "http://localhost:8090/rest-cxf_v2.7.11/API/REST/POC/", providers);
> client =
> client.accept("application/json").type("application/json")
> .path("/bookingServices/getHotelByCriteria");
> client.resetQuery();
>
> final Criteria criteria = new Criteria();
> criteria.setDestination("Paris");
> criteria.setArrivalDate("20/11/2014");
> criteria.setNbNight("2");
> criteria.setNbAdult("1");
> criteria.setNbChild("2");
> criteria.setNbRoom("1");
> client.query("criteria", criteria);
>
> client.getCurrentURI();
>
> @SuppressWarnings("unchecked")
> final List<Hotel> hotels = (List<Hotel>) client
> .getCollection(Hotel.class);
> assertThat(hotels).isNotNull();
> }
> "
> server side :
> @GET
> @Consumes({ MediaType.APPLICATION_JSON })
> @Produces({ MediaType.APPLICATION_JSON })
> @Path("/getHotelByCriteria")
> public List<Hotel> getHotelByCriteria (@QueryParam("criteria") final
> Criteria criteria)
> {
> }
--
This message was sent by Atlassian JIRA
(v6.2#6252)