Hi Sergey,
the problem was that my web method returned a single String already json
formatted and corresponding to more json elements...
Using the JacksonJaxbJsonProvider it was modified adding a new json formatting
that added the unexpected chars.
So I solved it using a provider that extends the JacksonJaxbJsonProvider and
skipping its writeTo method for the String:
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JacksonJsonProvider extends JacksonJaxbJsonProvider {
public JacksonJsonProvider() {
super();
}
@Override
public boolean isWriteable(Class<?> type, Type genericType, Annotation[]
annotations, MediaType mediaType)
{
if (genericType.equals(String.class)){
return false;
}else{
return super.isWriteable(type, genericType, annotations, mediaType);
}
}
}
In this way the original String produced by the web method is returned to the
client without any change.
Best regards,
Andrea
Date: Fri, 5 Jul 2013 06:06:51 -0700
From: ml-node+s547215n5730341...@n5.nabble.com
To: bisoma...@hotmail.it
Subject: Re: JacksonJaxbJsonProvider anomalous behavior (add unexpeted chars to
the String returned by web method)
Hi
On 05/07/13 13:20, eanbiso wrote:
> Hi all,
> I've published a rest endPoint adding the JacksonJaxbJsonProvider at
> publication time (I've added it to properly support swagger).
> All is good but some times the JacksonJaxbJsonProvider seems to smudge the
> response adding unexpected chars.
> For example, I have an endPoint with this web method:
>
> @GET
> @Path("/getWSLatency/{appGardenID}/{lowerTimestamp}/{upperTimestamp}")
> @Produces("application/json")
> @ApiOperation(value = "Retrieves the latency of API invocation by the
> given
> app garden.",
> notes = "Refers to KPI: 3.17.9 WS
> Latency: Latency of WS invocation.",
> response = String.class)
> public String getWSLatency(
> @ApiParam(value = "appGardenID", required = true)
> @PathParam("appGardenID") int appGardenID,
> @ApiParam(value = "lowerTimestamp", required = true)
> @PathParam("lowerTimestamp") long lowerTimestamp,
> @ApiParam(value = "upperTimestamp", required = true)
> @PathParam("upperTimestamp") long upperTimestamp,
> @ApiParam(value = "apiName", required = false,
> defaultValue="")
> @DefaultValue("") @QueryParam("apiName") String apiName,
>
> @ApiParam(value = "serviceProvider", required = false,
> defaultValue="65535") @DefaultValue("65535") @QueryParam("serviceProvider")
> long serviceProvider,
> @ApiParam(value = "userName", required = false,
> defaultValue="")
> @DefaultValue("") @QueryParam("userName") String userName);
>
> returning a String like this:
>
> [{"latencyMax":48,"latencyMin":48,"latencySum":48,"msgNumber":1,"timestamp":1373018880000},{"latencyMax":53,"latencyMin":26,"latencySum":621,"msgNumber":16,"timestamp":1373018910000}]
>
this is a correct sequence, I wonder, which provider produces this
sequence ? CXF JSONProvider is not supporting String[]
> Adding the JacksonJaxbJsonProvider to the providers list the String arrives
> client side so formatted:
>
>
> "[{\"latencyMax\":46,\"latencyMin\":33,\"latencySum\":324,\"msgNumber\":8,\"timestamp\":1373019420000},{\"latencyMax\":58,\"latencyMin\":32,\"latencySum\":639,\"msgNumber\":16,\"timestamp\":1373019450000}]"
>
> while if I remove it the String arrives client side as expected.
>
> It seems that the provider has modified the String adding the initial and
> ending " and adding \ before ".
> How can I continue to use the JacksonJaxbJsonProvider (required by swagger)
> without anomalous behavior?
Hmm, I'd expect Jackson provider to do it correctly, please ask at
Jackson forums
Cheers, Sergey
> Best regards,
> Andrea
>
>
>
> --
> View this message in context:
> http://cxf.547215.n5.nabble.com/JacksonJaxbJsonProvider-anomalous-behavior-add-unexpeted-chars-to-the-String-returned-by-web-method-tp5730332.html
> Sent from the cxf-user mailing list archive at Nabble.com.
>
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com
If you reply to this email, your message will be added to the
discussion below:
http://cxf.547215.n5.nabble.com/JacksonJaxbJsonProvider-anomalous-behavior-add-unexpeted-chars-to-the-String-returned-by-web-method-tp5730332p5730341.html
To unsubscribe from JacksonJaxbJsonProvider anomalous behavior
(add unexpeted chars to the String returned by web method), click here.
NAML
--
View this message in context:
http://cxf.547215.n5.nabble.com/JacksonJaxbJsonProvider-anomalous-behavior-add-unexpeted-chars-to-the-String-returned-by-web-method-tp5730332p5730396.html
Sent from the cxf-user mailing list archive at Nabble.com.