It looks good on the surface. I'll take a look later in more details.

Thanks,
Raymond
________________________________________________________________ 
Raymond Feng
rf...@apache.org
Apache Tuscany PMC member and committer: tuscany.apache.org
Co-author of Tuscany SCA In Action book: www.tuscanyinaction.com
Personal Web Site: www.enjoyjava.com
________________________________________________________________

On Sep 2, 2010, at 6:53 AM, Simon Laws wrote:

> On Thu, Sep 2, 2010 at 1:38 PM, ant elder <antel...@apache.org> wrote:
>> On Tue, Aug 31, 2010 at 9:01 PM, Luciano Resende <luckbr1...@gmail.com> 
>> wrote:
>>> On Tue, Aug 31, 2010 at 12:10 PM, ant elder <antel...@apache.org> wrote:
>>>> Mmm, it looks like its a problem with the json data binding not being
>>>> able to convert an int response value into a json string.
>>>> 
>>> 
>>> It looks like we might be missing two things in the JSON databinding :
>>> 
>>> - A SimpleType transformer (e.g SimpleType2JSON)
>>> - Properly configuring the transformer in the PullTransformer file
>>> (src/main/resources/META-INF/org.apache.tuscany.databinding.PullTransformer)
>>> with something like
>>> 
>>> org.apache.tuscany.sca.databinding.json.jackson.SimpleType2JSON;source=java:simpleType,target=JSON,weight=90000,public=false
>>> 
>>> What does the "Databinding Experts"  think ?
>>> 
>> 
>> Raymond, I think that question was to you as you wrote the json data
>> binding and I'm not sure anyone else understands it any detail how it
>> works, so have you any comments?
>> 
>>   ...ant
>> 
> 
> I took a quick look at this. The error in Florian's sample is
> occurring when the runtime tries to convert the primitve type response
> back to JSON representation. It has code to pick up strings but not
> primitives. In both cases I think it should just return the value
> as-is and not try to do any conversion on it. In the JSONP servlet
> we'll wrap the returned value in the callback name and, in the error
> case, I believe we expect to see something like....
> 
> shareAgeCallback(54);
> 
> I.e the value returned by public int shareAge(int age); is just
> presented as an int.
> 
> This needs an extra test to see if the response target type is a
> primitive alongside the test to see it it's a String.
> 
> I've made the change locally and this allows the sample to run however
> I'm having trouble with lots of failures in the full build at the
> moment (anyone else seeing failures?) so I'll hold back from checking
> it in. If you want to try it this is the change:
> 
> Index: 
> src/main/java/org/apache/tuscany/sca/databinding/json/jackson/Object2JSON.java
> ===================================================================
> --- 
> src/main/java/org/apache/tuscany/sca/databinding/json/jackson/Object2JSON.java
>     (revision
> 991885)
> +++ 
> src/main/java/org/apache/tuscany/sca/databinding/json/jackson/Object2JSON.java
>     (working
> copy)
> @@ -54,7 +54,7 @@
>         }
>         try {
>             String value = mapper.writeValueAsString(source);
> -            if (targetType == String.class || targetType == Object.class) {
> +            if (targetType == String.class || targetType ==
> Object.class || targetType.isPrimitive()) {
>                 return value;
>             } else if (JsonNode.class.isAssignableFrom(targetType)) {
>                 return 
> JacksonHelper.createJsonParser(value).readValueAsTree();
> 
> 
> Simon
> 
> -- 
> Apache Tuscany committer: tuscany.apache.org
> Co-author of a book about Tuscany and SCA: tuscanyinaction.com

Reply via email to