Hi
Thanx for your answers :) I got some more question on the ResponseHandler. -- Brice Le mercredi 14 décembre 2011 à 12:41, Sergey Beryozkin a écrit : > Hi > On 14/12/11 09:49, Brice Dutheil wrote: > > Hi, > > > > I would like some advice or help in designing a new REST service. > > > > I'm using CXF to serve REST webservices. I already have a custom > > interceptors, however I'm not sure how to deal with the following. > > > > > > Is it possible to 'map' HeaderParams (or FormParam, QueryParam, PathParam) > > to custom Java types, instead of a simple string. > > > > > Have a look here please: > http://cxf.apache.org/docs/jax-rs-basics.html#JAX-RSBasics-DealingwithParameters > > JAX-RS offers one option: if a type has one of the factory methods then > it will be used; otherwise the CXF ParameterHandler extension will help > Ok, thx, I missed that page when focusing on interceptors. > > > And eventually answer > > something else if the value of the param is not valid. > > > > For example the HTTP Header "Accept-Language" can have several string > > values, I would like to map those values to a List<Locale> in order to > > write methods like the one below : > > > > @GET > > @Path("/check/stuff/{id}") > > public CustomAnswer checkStuffAndAnswerInAcceptedLanguage(@PathParam("id") > > int id, @HeaderParam(HttpHeaders.ACCEPT_LANGUAGE) List<Locale> locales) { > > // business stuff > > } > > > > > I'd recommend injecting HttpHeaders and use its getAcceptableLanguages > method which will a properly sorted List<Locale>; the above will also > work but it's not guaranteed to be sorted AFAIK and a Locale constructor > accepting a single String will be used which will miss on local values > such as 'us' in 'en-us', etc > Yes indeed, before your reply I was planning to use LocaleUtils from commons-lang. The locale was also just an example we will have more custom headers maybe. Anyway the page seems to explain this case. > > > > > Also if the locales are incorrect then answer with a custom response (in > > JSON or XML), I'm not sure if I should use the JAXRS response builder or > > rely on a provider (we are using GSon in a provider). > > > > Using custom Response, or out filter (ResponseHandler), ExceptionMapper > and even custom MBW will work > I'm not sure to follow you there, the JAX-RS Response class cannot receive a body. Does the ResponseHandler message parameter is the response payload/body ? On which we can feed an JSon content? Does the ExceptionMapper works if I throw something before the INVOKE phase ? > > HTH, Sergey > > > > > Thanx in advance for your input. > > > -- > Sergey Beryozkin > > Talend Community Coders > http://coders.talend.com/ > > Blog: http://sberyozkin.blogspot.com
