Hi Nadeeshan, Can you share a sample request that you used to invoke the service? IMHO if the Content-Type header is available in your request this should work.
Thanks Thusitha On Mon, Aug 1, 2016 at 9:28 PM, Nadeeshaan Gunasinghe <nadeesh...@wso2.com> wrote: > Hi all, > > When I try to execute the following sample [1] service's POST operation I > could observe the bellow exception. > > *java.lang.IllegalArgumentException: argument type mismatch* > * at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)* > * at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)* > * at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)* > * at java.lang.reflect.Method.invoke(Method.java:497)* > * at > org.wso2.msf4j.internal.router.HttpMethodInfo.invoke(HttpMethodInfo.java:108)* > * at > org.wso2.msf4j.internal.MSF4JMessageProcessor.dispatchMethod(MSF4JMessageProcessor.java:129)* > * at > org.wso2.msf4j.internal.MSF4JMessageProcessor.receive(MSF4JMessageProcessor.java:73)* > * at > org.wso2.carbon.transport.http.netty.listener.WorkerPoolDispatchingSourceHandler$1.run(WorkerPoolDispatchingSourceHandler.java:127)* > * at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)* > * at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)* > * at java.lang.Thread.run(Thread.java:745)* > > According to the sample service method I am going to capture the json > payload as an object passed to the method as follows. > > @POST > @Path("/test") > public Response post(TestPayload testPayloadBody) { > // TODO: Implementation for HTTP POST request > System.out.println("POST invoked ====== " +testPayloadBody); > return Response.ok().entity(testPayloadBody).build(); > } > > > After further debugging the code, could find that the arguments list > passed at [2] contains a string. But according to the implementation it > should be a *TestPayload *object. If we observe at [3] the headers Map's > keys are all in lowercase. In order to get the header from the map, we use > the constant from* javax.ws.rs.core.Headers, *there the CONTENT_TYPE > constant is not in all lowercase and Due to this reason *contentTypeHeaderStr > *becomes null and leads to convert the object to a String by the default > text formatter, based on the wild card content-type [4]. > > [1] > https://drive.google.com/a/wso2.com/folderview?id=0Bx7aKS6MDJqSVDhVSTdWZ1JBVGc&usp=sharing > [2] > https://github.com/wso2/msf4j/blob/master/core/src/main/java/org/wso2/msf4j/internal/router/HttpMethodInfo.java#L108 > [3] > https://github.com/wso2/carbon-messaging/blob/master/components/src/main/java/org/wso2/carbon/messaging/CarbonMessage.java#L162 > [4] > https://github.com/wso2/msf4j/blob/master/core/src/main/java/org/wso2/msf4j/internal/router/HttpResourceModelProcessor.java#L158 > > Thanks, > > *Nadeeshaan Gunasinghe* > Software Engineer, WSO2 Inc. http://wso2.com > +94770596754 | nadeesh...@wso2.com | Skype: nadeeshaan.gunasinghe > <#m_4111866504169707809_> > <http://www.facebook.com/nadeeshaan.gunasinghe> > <http://lk.linkedin.com/in/nadeeshaan> <http://twitter.com/Nadeeshaan> > <http://nadeeshaan.blogspot.com/> > Get a signature like this: Click here! > <http://ws-promos.appspot.com/r?rdata=eyJydXJsIjogImh0dHA6Ly93d3cud2lzZXN0YW1wLmNvbS9lbWFpbC1pbnN0YWxsP3dzX25jaWQ9NjcyMjk0MDA4JnV0bV9zb3VyY2U9ZXh0ZW5zaW9uJnV0bV9tZWRpdW09ZW1haWwmdXRtX2NhbXBhaWduPXByb21vXzU3MzI1Njg1NDg3Njk3OTIiLCAiZSI6ICI1NzMyNTY4NTQ4NzY5NzkyIn0=&u=543026424429568> > -- Thusitha Dayaratne Software Engineer WSO2 Inc. - lean . enterprise . middleware | wso2.com Mobile +94712756809 Blog alokayasoya.blogspot.com About http://about.me/thusithathilina <http://wso2.com/signature>
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev