Quantcast
Channel: Apache Timeline
Viewing all articles
Browse latest Browse all 5648

org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "name" (Class org.codehaus.jettison.json.JSONObject), not marked as ignorable

$
0
0
Hi All,

I am using Karaf 3.0.0 to deploy my camel blueprint application which
creates a rest route.

I have exposed a rest service which accepts a
org.codehaus.jettison.json.JSONObject in its paramater.

@POST
@Consumes(MediaType.APPLICATION_JSON)
public void sayPlainTextHello(JSONObject json) {

The rest server has been configured as

<cxf:rsServer id="rsServer" address="/camel-example/rest"
serviceClass="com.gemato.rest.CustomerServiceResource"
loggingFeatureEnabled="true" >
<cxf:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
</cxf:providers>
</cxf:rsServer>

When I POST the request, with JSON as {"name":"sayhello"}, I get unsupported
media type exception as response and below exception in the logs.

at java.lang.Thread.run(Thread.java:662)
Caused by: org.codehaus.jackson.map.exc.UnrecognizedPropertyException:
Unrecognized field "name" (Class org.codehaus.jettison.json.JSONObject), not
marked as ignorable
at [Source: org.apache.cxf.transport.http.AbstractHTTPDestination$1 [ at ] b5e58f;
line: 1, column: 10] (through reference chain:
org.codehaus.jettison.json.JSONObject["name"])
at
org.codehaus.jackson.map.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:53)
at
org.codehaus.jackson.map.deser.StdDeserializationContext.unknownFieldException(StdDeserializationContext.java:267)
at
org.codehaus.jackson.map.deser.std.StdDeserializer.reportUnknownProperty(StdDeserializer.java:673)
at
org.codehaus.jackson.map.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:659)
at
org.codehaus.jackson.map.deser.BeanDeserializer.handleUnknownProperty(BeanDeserializer.java:1365)
at
org.codehaus.jackson.map.deser.BeanDeserializer._handleUnknown(BeanDeserializer.java:725)

When I use a custom entity(which has "name" variable ) as method parameter,
it works.

I guess it is trying to construct the JSONObject and it does not have a
variable "name" and hence it fails.

I found similar issue online which says that Jersey won't automatically
unwrap the JSONstring to JSONObject on its own but I tried with a sample
jersey example and deployed it in tomcat, there I was successfully able to
receive JSONObject in method paramter.

http://stackoverflow.com/questions/17631017/jersey-jackson-arbitrary-json

Is it possible to do this in karaf/camel as well? If no, is there is any
workaround for this. We do not want to create a custom entity for this as it
will limit the JSON request.

Regards,
Aryan

Viewing all articles
Browse latest Browse all 5648

Trending Articles