I agree this should be flagged.. It's a pretty mysterious failure otherwise.
I'll open a JIRA.

Brent

On Fri, Aug 13, 2010 at 2:07 AM, Simon Laws <[email protected]>wrote:

>
>
> On Fri, Aug 13, 2010 at 5:25 AM, Brent Daniel <[email protected]>wrote:
>
>> The sample doesn't add the databinding to the chain because the AddService
>> interface isn't marked with @Remotable. If you add that, it runs
>> successfully.
>>
>> In the error from 1.4 below, it looks like the JSON databinding may not be
>> getting loaded. Is the tuscany-databinding-json JAR file on your classpath?
>>
>> Brent
>>
>> On Thu, Aug 12, 2010 at 9:29 AM, Simon Laws <[email protected]>wrote:
>>
>>>
>>>
>>> On Thu, Aug 12, 2010 at 2:29 PM, <[email protected]> wrote:
>>>
>>>>
>>>>
>>>> Hi,
>>>>
>>>> I did a test with the same app running in tuscany 1.4, all the
>>>> paramaters seems to be the same, including the SMD, and the JSON object 
>>>> from
>>>> the URL
>>>>
>>>>  1.4 -
>>>> {"SMDVersion":".1","objectName":"AuthenticationService","serviceType":"JSON-RPC","serviceURL":"
>>>> http://localhost:8080/eed-sca-services/AuthenticationComponent/authentication
>>>> ","methods":[{"name":"logoutUser","parameters":[]},{"name":"authenticate","parameters":[{"name":"param0","type":"STRING"}]}]}
>>>>
>>>> 2.0 -
>>>> {"SMDVersion":".1","objectName":"AuthenticationService","serviceType":"JSON-RPC","serviceURL":"
>>>> http://localhost:8080/eed-sca-sample-service/AuthenticationComponent/AuthenticationService/authentication
>>>> ","methods":[{"name":"logoutUser","parameters":[]},{"name":"authenticate","parameters":[{"name":"param0","type":"STRING"}]}]}
>>>>
>>>>
>>>> and the JSON Object:
>>>>
>>>> 1.4 
>>>> {"params":[{"intranetId":"[email protected]","firstName":"","lastName":"Grunin"}],"method":"authenticate","id":1}
>>>>
>>>>
>>>> 2.0 - 
>>>> {"params":[{"intranetId":"[email protected]","firstName":"","lastName":"Grunin"}],"method":"authenticate","id":1}
>>>>
>>>>
>>>>
>>>>
>>>> The error message changed to :
>>>>
>>>>
>>>> No path found for the transformation: JSON->java:complexType"
>>>>
>>>> org.apache.tuscany.sca.databinding.TransformationException: No path
>>>> found for the transformation: JSON->java:complexType at
>>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.getTransformerChain(MediatorImpl.java:197)
>>>> at
>>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:104)
>>>> at
>>>> org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:240)
>>>> at
>>>> org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:45)
>>>> at
>>>> org.apache.tuscany.sca.databinding.DefaultTransformerExtensionPoint$LazyPullTransformer.transform(DefaultTransformerExtensionPoint.java:209)
>>>> at
>>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:116)
>>>> at
>>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediateInput(MediatorImpl.java:436)
>>>> at
>>>> org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:64)
>>>> at
>>>> org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.handleJSONRPCMethodInvocation(JSONRPCServiceServlet.java:307)
>>>> at
>>>> org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.handleServiceRequest(JSONRPCServiceServlet.java:177)
>>>> at
>>>> org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.service(JSONRPCServiceServlet.java:96)
>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at
>>>> org.apache.tuscany.sca.host.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:110)
>>>> at
>>>> org.apache.tuscany.sca.host.webapp.TuscanyServletFilter.doFilter(TuscanyServletFilter.java:94)
>>>> at
>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>>>> at
>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>>>> at
>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>>>> at
>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
>>>> at
>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>>>> at
>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
>>>> at
>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
>>>> at
>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
>>>> at
>>>> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:837)
>>>> at
>>>> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)
>>>> at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
>>>> at java.lang.Thread.run(Thread.java:619) "
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>  *Simon Laws <[email protected]>*
>>>>
>>>> 12/08/2010 10:07
>>>>   To
>>>> Fabiano Amorim Oliveira/Brazil/i...@ibmbr
>>>>  cc
>>>>   Subject
>>>> Re: DOJO and Tuscany 2.0
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Wed, Aug 11, 2010 at 8:33 PM, 
>>>> <*[email protected]*<[email protected]>>
>>>> wrote:
>>>>
>>>>
>>>>
>>>> I could start the application without errors and executing a dojo sample
>>>> base on what was provided.
>>>>
>>>> When executing a request for a json-rpc request :
>>>>
>>>>
>>>> var authenticationService = new
>>>> dojo.rpc.JsonService("AuthenticationComponent/AuthenticationService/authentication?smd");
>>>>         the line above returns:
>>>> {"SMDVersion":".1","objectName":"AuthenticationService","serviceType":"JSON-RPC","serviceURL":"
>>>> *
>>>> http://localhost:8080/eed-sca-sample-service/AuthenticationComponent/AuthenticationService/authentication
>>>> *<http://localhost:8080/eed-sca-sample-service/AuthenticationComponent/AuthenticationService/authentication>
>>>> ","methods":[{"name":"authenticate","parameters":[{"name":"param0","type":"STRING"}]},{"name":"logoutUser","parameters":[]}]}
>>>>
>>>> var userProfile = new Object();
>>>>         userProfile.intranetId = "*[email protected]*<[email protected]>
>>>> ";
>>>>         userProfile.firstName = "Galina";
>>>>         userProfile.lastName = "Grunin";
>>>>
>>>> authenticationService.authenticate(userProfile)
>>>>
>>>> {"params":[{"intranetId":"*[email protected]* <[email protected]>
>>>> ","firstName":"Galina","lastName":"Grunin"}],"method":"authenticate","id":1}
>>>>
>>>> The userProfile object is translated into a json object as stated above.
>>>>
>>>>
>>>> when executing the actual request it returns an error which I suspect is
>>>> a internal databinding error
>>>>
>>>> error
>>>> Object { trace="org.apache.tuscany.sca....ava:58)\r\n ... 27 more\r\n",
>>>> more...}
>>>>
>>>> code
>>>> 490
>>>>
>>>> msg
>>>> "org.codehaus.jackson.JsonParseException: Unexpected character ('U'
>>>> (code 85)): expected a valid value (number, String, array, object, 'true',
>>>> 'false' or 'null') at [Source: java.io.stringrea...@17fc253; line: 1,
>>>> column: 2]"
>>>>
>>>> trace
>>>> "org.apache.tuscany.sca.databinding.TransformationException:
>>>> org.codehaus.jackson.JsonParseException: Unexpected character ('U' (code
>>>> 85)): expected a valid value (number, String, array, object, 'true', 
>>>> 'false'
>>>> or 'null') at [Source: java.io.stringrea...@17fc253; line: 1, column:
>>>> 2] at
>>>> org.apache.tuscany.sca.databinding.json.jackson.JSON2Object.transform(JSON2Object.java:61)
>>>> at
>>>> org.apache.tuscany.sca.databinding.DefaultTransformerExtensionPoint$LazyPullTransformer.transform(DefaultTransformerExtensionPoint.java:209)
>>>> at
>>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:116)
>>>> at
>>>> org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:240)
>>>> at
>>>> org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:45)
>>>> at
>>>> org.apache.tuscany.sca.databinding.DefaultTransformerExtensionPoint$LazyPullTransformer.transform(DefaultTransformerExtensionPoint.java:209)
>>>> at
>>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:116)
>>>> at
>>>> org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediateInput(MediatorImpl.java:436)
>>>> at
>>>> org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:64)
>>>> at
>>>> org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:66)
>>>> at
>>>> org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.handleJSONRPCMethodInvocation(JSONRPCServiceServlet.java:307)
>>>> at
>>>> org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.handleServiceRequest(JSONRPCServiceServlet.java:177)
>>>> at
>>>> org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.service(JSONRPCServiceServlet.java:96)
>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at
>>>> org.apache.tuscany.sca.host.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:110)
>>>> at
>>>> org.apache.tuscany.sca.host.webapp.TuscanyServletFilter.doFilter(TuscanyServletFilter.java:94)
>>>> at
>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>>>> at
>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>>>> at
>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>>>> at
>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
>>>> at
>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>>>> at
>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
>>>> at
>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
>>>> at
>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
>>>> at
>>>> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:837)
>>>> at
>>>> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)
>>>> at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
>>>> at java.lang.Thread.run(Thread.java:619) Caused by:
>>>> org.codehaus.jackson.JsonParseException: Unexpected character ('U' (code
>>>> 85)): expected a valid value (number, String, array, object, 'true', 
>>>> 'false'
>>>> or 'null') at [Source: java.io.stringrea...@17fc253; line: 1, column:
>>>> 2] at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:943)
>>>> at
>>>> org.codehaus.jackson.impl.JsonParserBase._reportError(JsonParserBase.java:632)
>>>> at
>>>> org.codehaus.jackson.impl.JsonParserBase._reportUnexpectedChar(JsonParserBase.java:565)
>>>> at
>>>> org.codehaus.jackson.impl.ReaderBasedParser._handleUnexpectedValue(ReaderBasedParser.java:429)
>>>> at
>>>> org.codehaus.jackson.impl.ReaderBasedParser.nextToken(ReaderBasedParser.java:192)
>>>> at
>>>> org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:1625)
>>>> at
>>>> org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:1580)
>>>> at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1130)
>>>> at
>>>> org.apache.tuscany.sca.databinding.json.jackson.JSON2Object.transform(JSON2Object.java:58)
>>>> ... 27 more
>>>>
>>>>
>>>>
>>>> Hi Fabiano
>>>>
>>>> I'd first note that the input parameters that you report don't match the
>>>> required parameters as defined in the SMD that you provide. Having said 
>>>> that
>>>> that doesn't really explain why it's complaining about a "U" character as I
>>>> can't obviously see a "U" character in what you've reported. What I would 
>>>> do
>>>> to debug this is the following.
>>>>
>>>> 1. Make the parameters provided by the client match the parameters
>>>> required by the server
>>>>
>>>> If this doesn't get you any further
>>>>
>>>> 2. trap the message on the wire with an HTTP sniffer to get a definitive
>>>> view of what characters the client is actually sending
>>>> 3. debug the jsonrpc binding to see what characters are presented as the
>>>> array of message parameters added to the Tuscany message structure
>>>> 4. debug the databinding transformer (from your stack
>>>> org.apache.tuscany.sca.databinding.json.jackson.JSON2Object) to see what
>>>> data the transformer is operating on.
>>>>
>>>> Doing a quick Google this doesn't seem to be an obvious issue with
>>>> Jackson.
>>>>
>>>> Regards
>>>>
>>>> Simon
>>>>
>>>> --
>>>> Apache Tuscany committer: *tuscany.apache.org*<http://tuscany.apache.org/>
>>>> Co-author of a book about Tuscany and SCA: 
>>>> *tuscanyinaction.com*<http://tuscanyinaction.com/>
>>>>
>>>
>>> I created a simple JSONRPC sample for Tuscany based on the calculator
>>> sample and made the add method take a complex type. This doesn't work
>>> seemingly because the server is no applying a JSON databinding when it
>>> should. The result it that it tries to call a Java method with a JSONObject
>>> parameter. This doesn't lead to happiness.
>>>
>>>
>>> Simon
>>> --
>>> Apache Tuscany committer: tuscany.apache.org
>>> Co-author of a book about Tuscany and SCA: tuscanyinaction.com
>>>
>>
>>
> Doh, well spotted Brent. I wonder if we can raise a warning when you try to
> use a remote binding with a non-remote interface?
>
>
> Simon
>
> --
> Apache Tuscany committer: tuscany.apache.org
> Co-author of a book about Tuscany and SCA: tuscanyinaction.com
>

Reply via email to