You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Borut Bolčina <bo...@gmail.com> on 2010/07/08 12:01:22 UTC

Return type net.sf.json.JSONObject can not be handled

Hello,

Is it possible to configure return types?

In one of my event methods I was trying to return net.sf.json.JSONObject
instead of org.apache.tapestry5.json.JSONObject and got this error message:

[ERROR] TapestryModule.RequestExceptionHandler Processing of request failed
with uncaught exception: A component event handler method returned the value
{"birthDay":"","birthMonth":"","birthYear":"","gender":"male","postOfficeNumberAndName":"1236
Trzin"}. Return type net.sf.json.JSONObject can not be handled.  Configured
return types are java.lang.Class, java.lang.String,
org.apache.tapestry5.Link, org.apache.tapestry5.StreamResponse,
org.apache.tapestry5.ajax.MultiZoneUpdate,
org.apache.tapestry5.json.JSONArray, org.apache.tapestry5.json.JSONObject,
org.apache.tapestry5.runtime.Component,
org.apache.tapestry5.runtime.RenderCommand.
org.apache.tapestry5.runtime.ComponentEventException: A component event
handler method returned the value
{"birthDay":"","birthMonth":"","birthYear":"","gender":"male","postOfficeNumberAndName":"1236
Trzin"}. Return type net.sf.json.JSONObject can not be handled.  Configured
return types are java.lang.Class, java.lang.String,
org.apache.tapestry5.Link, org.apache.tapestry5.StreamResponse,
org.apache.tapestry5.ajax.MultiZoneUpdate,
org.apache.tapestry5.json.JSONArray, org.apache.tapestry5.json.JSONObject,
org.apache.tapestry5.runtime.Component,
org.apache.tapestry5.runtime.RenderCommand. [at context:Index.tml, line 20]


My event method:

    @OnEvent(component = "email", value = "blur")
    public JSONObject checkIfUserWithThisEmailExists(String value) {
        UserData userData = new UserData();
        if(value.equals("bob@example.com")) {
            userData.setPostOfficeNumberAndName("1236 Trzin");
            userData.setGender("male");
        } else {
            logger.info("Bob does not exist.");
        }
        JSONObject jsonObject = (JSONObject)
JSONSerializer.toJSON(userData);
        return jsonObject;
    }

The reason I used net.sf.json.JSONObject is because it offers great
conversion and construction capabilities to/from JavaBeans/XML/JSON. Have a
look at http://json-lib.sourceforge.net/snippets.html.

Is it possible or do I have to construct the org.apache.tapestry5.json.JSON
object by hand?

Thanks,
Borut

Re: Return type net.sf.json.JSONObject can not be handled

Posted by Inge Solvoll <in...@gmail.com>.
It's more fun to create your own ResultProcessor, though :) You'll get to
try out the real power of T5.

On Thu, Jul 8, 2010 at 1:28 PM, Borut Bolčina <bo...@gmail.com>wrote:

> Thanks for ultra fast responses. I guess they went through
> AjaxComponentEventResultProcessor :-)
>
> Until I try implementing the processor class, I found a compromise.
>
> return org.apache.tapestry5.json.JSONObject jsonObject = new
>
> org.apache.tapestry5.json.JSONObject(JSONSerializer.toJSON(userData).toString());
>
> I found out that org.apache.tapestry5.json.JSONObject has a constructor
> with
> a String form of a JSON object.
>
> Thanks!
> Borut
>
> >
>
> 2010/7/8 Ulrich Stärk <ul...@spielviel.de>
>
> > You'll probably want to contribute it to
> AjaxComponentEventResultProcessor
> > though.
> >
> >
> > On 08.07.2010 12:36, Christophe Cordenier wrote:
> >
> >> Hi
> >>
> >> You will have to create your own ComponentEventResultProcessor and
> >> contribute it in your AppModule class :
> >>
> >> public void contributeComponentEventResultProcessor(
> >>             MappedConfiguration<Class, ComponentEventResultProcessor>
> >> configuration) {
> >>
> >>   configuration.addInstance(net.sf.json.JSONObject.class,
> >> YouProcessor.class);
> >>
> >> }
> >>
> >> 2010/7/8 Borut Bolčina<bo...@gmail.com>
> >>
> >>  Hello,
> >>>
> >>> Is it possible to configure return types?
> >>>
> >>> In one of my event methods I was trying to return
> net.sf.json.JSONObject
> >>> instead of org.apache.tapestry5.json.JSONObject and got this error
> >>> message:
> >>>
> >>> [ERROR] TapestryModule.RequestExceptionHandler Processing of request
> >>> failed
> >>> with uncaught exception: A component event handler method returned the
> >>> value
> >>>
> >>>
> >>>
> {"birthDay":"","birthMonth":"","birthYear":"","gender":"male","postOfficeNumberAndName":"1236
> >>> Trzin"}. Return type net.sf.json.JSONObject can not be handled.
> >>>  Configured
> >>> return types are java.lang.Class, java.lang.String,
> >>> org.apache.tapestry5.Link, org.apache.tapestry5.StreamResponse,
> >>> org.apache.tapestry5.ajax.MultiZoneUpdate,
> >>> org.apache.tapestry5.json.JSONArray,
> >>> org.apache.tapestry5.json.JSONObject,
> >>> org.apache.tapestry5.runtime.Component,
> >>> org.apache.tapestry5.runtime.RenderCommand.
> >>> org.apache.tapestry5.runtime.ComponentEventException: A component event
> >>> handler method returned the value
> >>>
> >>>
> >>>
> {"birthDay":"","birthMonth":"","birthYear":"","gender":"male","postOfficeNumberAndName":"1236
> >>> Trzin"}. Return type net.sf.json.JSONObject can not be handled.
> >>>  Configured
> >>> return types are java.lang.Class, java.lang.String,
> >>> org.apache.tapestry5.Link, org.apache.tapestry5.StreamResponse,
> >>> org.apache.tapestry5.ajax.MultiZoneUpdate,
> >>> org.apache.tapestry5.json.JSONArray,
> >>> org.apache.tapestry5.json.JSONObject,
> >>> org.apache.tapestry5.runtime.Component,
> >>> org.apache.tapestry5.runtime.RenderCommand. [at context:Index.tml, line
> >>> 20]
> >>>
> >>>
> >>> My event method:
> >>>
> >>>    @OnEvent(component = "email", value = "blur")
> >>>    public JSONObject checkIfUserWithThisEmailExists(String value) {
> >>>        UserData userData = new UserData();
> >>>        if(value.equals("bob@example.com")) {
> >>>            userData.setPostOfficeNumberAndName("1236 Trzin");
> >>>            userData.setGender("male");
> >>>        } else {
> >>>            logger.info("Bob does not exist.");
> >>>        }
> >>>        JSONObject jsonObject = (JSONObject)
> >>> JSONSerializer.toJSON(userData);
> >>>        return jsonObject;
> >>>    }
> >>>
> >>> The reason I used net.sf.json.JSONObject is because it offers great
> >>> conversion and construction capabilities to/from JavaBeans/XML/JSON.
> Have
> >>> a
> >>> look at http://json-lib.sourceforge.net/snippets.html.
> >>>
> >>> Is it possible or do I have to construct the
> >>> org.apache.tapestry5.json.JSON
> >>> object by hand?
> >>>
> >>> Thanks,
> >>> Borut
> >>>
> >>>
> >>
> >>
> >>
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> > For additional commands, e-mail: users-help@tapestry.apache.org
> >
> >
>

Re: Return type net.sf.json.JSONObject can not be handled

Posted by Borut Bolčina <bo...@gmail.com>.
Thanks for ultra fast responses. I guess they went through
AjaxComponentEventResultProcessor :-)

Until I try implementing the processor class, I found a compromise.

return org.apache.tapestry5.json.JSONObject jsonObject = new
org.apache.tapestry5.json.JSONObject(JSONSerializer.toJSON(userData).toString());

I found out that org.apache.tapestry5.json.JSONObject has a constructor with
a String form of a JSON object.

Thanks!
Borut

>

2010/7/8 Ulrich Stärk <ul...@spielviel.de>

> You'll probably want to contribute it to AjaxComponentEventResultProcessor
> though.
>
>
> On 08.07.2010 12:36, Christophe Cordenier wrote:
>
>> Hi
>>
>> You will have to create your own ComponentEventResultProcessor and
>> contribute it in your AppModule class :
>>
>> public void contributeComponentEventResultProcessor(
>>             MappedConfiguration<Class, ComponentEventResultProcessor>
>> configuration) {
>>
>>   configuration.addInstance(net.sf.json.JSONObject.class,
>> YouProcessor.class);
>>
>> }
>>
>> 2010/7/8 Borut Bolčina<bo...@gmail.com>
>>
>>  Hello,
>>>
>>> Is it possible to configure return types?
>>>
>>> In one of my event methods I was trying to return net.sf.json.JSONObject
>>> instead of org.apache.tapestry5.json.JSONObject and got this error
>>> message:
>>>
>>> [ERROR] TapestryModule.RequestExceptionHandler Processing of request
>>> failed
>>> with uncaught exception: A component event handler method returned the
>>> value
>>>
>>>
>>> {"birthDay":"","birthMonth":"","birthYear":"","gender":"male","postOfficeNumberAndName":"1236
>>> Trzin"}. Return type net.sf.json.JSONObject can not be handled.
>>>  Configured
>>> return types are java.lang.Class, java.lang.String,
>>> org.apache.tapestry5.Link, org.apache.tapestry5.StreamResponse,
>>> org.apache.tapestry5.ajax.MultiZoneUpdate,
>>> org.apache.tapestry5.json.JSONArray,
>>> org.apache.tapestry5.json.JSONObject,
>>> org.apache.tapestry5.runtime.Component,
>>> org.apache.tapestry5.runtime.RenderCommand.
>>> org.apache.tapestry5.runtime.ComponentEventException: A component event
>>> handler method returned the value
>>>
>>>
>>> {"birthDay":"","birthMonth":"","birthYear":"","gender":"male","postOfficeNumberAndName":"1236
>>> Trzin"}. Return type net.sf.json.JSONObject can not be handled.
>>>  Configured
>>> return types are java.lang.Class, java.lang.String,
>>> org.apache.tapestry5.Link, org.apache.tapestry5.StreamResponse,
>>> org.apache.tapestry5.ajax.MultiZoneUpdate,
>>> org.apache.tapestry5.json.JSONArray,
>>> org.apache.tapestry5.json.JSONObject,
>>> org.apache.tapestry5.runtime.Component,
>>> org.apache.tapestry5.runtime.RenderCommand. [at context:Index.tml, line
>>> 20]
>>>
>>>
>>> My event method:
>>>
>>>    @OnEvent(component = "email", value = "blur")
>>>    public JSONObject checkIfUserWithThisEmailExists(String value) {
>>>        UserData userData = new UserData();
>>>        if(value.equals("bob@example.com")) {
>>>            userData.setPostOfficeNumberAndName("1236 Trzin");
>>>            userData.setGender("male");
>>>        } else {
>>>            logger.info("Bob does not exist.");
>>>        }
>>>        JSONObject jsonObject = (JSONObject)
>>> JSONSerializer.toJSON(userData);
>>>        return jsonObject;
>>>    }
>>>
>>> The reason I used net.sf.json.JSONObject is because it offers great
>>> conversion and construction capabilities to/from JavaBeans/XML/JSON. Have
>>> a
>>> look at http://json-lib.sourceforge.net/snippets.html.
>>>
>>> Is it possible or do I have to construct the
>>> org.apache.tapestry5.json.JSON
>>> object by hand?
>>>
>>> Thanks,
>>> Borut
>>>
>>>
>>
>>
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

Re: Return type net.sf.json.JSONObject can not be handled

Posted by Ulrich Stärk <ul...@spielviel.de>.
You'll probably want to contribute it to AjaxComponentEventResultProcessor though.

On 08.07.2010 12:36, Christophe Cordenier wrote:
> Hi
>
> You will have to create your own ComponentEventResultProcessor and
> contribute it in your AppModule class :
>
> public void contributeComponentEventResultProcessor(
>              MappedConfiguration<Class, ComponentEventResultProcessor>
> configuration) {
>
>    configuration.addInstance(net.sf.json.JSONObject.class,
> YouProcessor.class);
>
> }
>
> 2010/7/8 Borut Bolčina<bo...@gmail.com>
>
>> Hello,
>>
>> Is it possible to configure return types?
>>
>> In one of my event methods I was trying to return net.sf.json.JSONObject
>> instead of org.apache.tapestry5.json.JSONObject and got this error message:
>>
>> [ERROR] TapestryModule.RequestExceptionHandler Processing of request failed
>> with uncaught exception: A component event handler method returned the
>> value
>>
>> {"birthDay":"","birthMonth":"","birthYear":"","gender":"male","postOfficeNumberAndName":"1236
>> Trzin"}. Return type net.sf.json.JSONObject can not be handled.  Configured
>> return types are java.lang.Class, java.lang.String,
>> org.apache.tapestry5.Link, org.apache.tapestry5.StreamResponse,
>> org.apache.tapestry5.ajax.MultiZoneUpdate,
>> org.apache.tapestry5.json.JSONArray, org.apache.tapestry5.json.JSONObject,
>> org.apache.tapestry5.runtime.Component,
>> org.apache.tapestry5.runtime.RenderCommand.
>> org.apache.tapestry5.runtime.ComponentEventException: A component event
>> handler method returned the value
>>
>> {"birthDay":"","birthMonth":"","birthYear":"","gender":"male","postOfficeNumberAndName":"1236
>> Trzin"}. Return type net.sf.json.JSONObject can not be handled.  Configured
>> return types are java.lang.Class, java.lang.String,
>> org.apache.tapestry5.Link, org.apache.tapestry5.StreamResponse,
>> org.apache.tapestry5.ajax.MultiZoneUpdate,
>> org.apache.tapestry5.json.JSONArray, org.apache.tapestry5.json.JSONObject,
>> org.apache.tapestry5.runtime.Component,
>> org.apache.tapestry5.runtime.RenderCommand. [at context:Index.tml, line 20]
>>
>>
>> My event method:
>>
>>     @OnEvent(component = "email", value = "blur")
>>     public JSONObject checkIfUserWithThisEmailExists(String value) {
>>         UserData userData = new UserData();
>>         if(value.equals("bob@example.com")) {
>>             userData.setPostOfficeNumberAndName("1236 Trzin");
>>             userData.setGender("male");
>>         } else {
>>             logger.info("Bob does not exist.");
>>         }
>>         JSONObject jsonObject = (JSONObject)
>> JSONSerializer.toJSON(userData);
>>         return jsonObject;
>>     }
>>
>> The reason I used net.sf.json.JSONObject is because it offers great
>> conversion and construction capabilities to/from JavaBeans/XML/JSON. Have a
>> look at http://json-lib.sourceforge.net/snippets.html.
>>
>> Is it possible or do I have to construct the org.apache.tapestry5.json.JSON
>> object by hand?
>>
>> Thanks,
>> Borut
>>
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Return type net.sf.json.JSONObject can not be handled

Posted by Christophe Cordenier <ch...@gmail.com>.
Hi

You will have to create your own ComponentEventResultProcessor and
contribute it in your AppModule class :

public void contributeComponentEventResultProcessor(
            MappedConfiguration<Class, ComponentEventResultProcessor>
configuration) {

  configuration.addInstance(net.sf.json.JSONObject.class,
YouProcessor.class);

}

2010/7/8 Borut Bolčina <bo...@gmail.com>

> Hello,
>
> Is it possible to configure return types?
>
> In one of my event methods I was trying to return net.sf.json.JSONObject
> instead of org.apache.tapestry5.json.JSONObject and got this error message:
>
> [ERROR] TapestryModule.RequestExceptionHandler Processing of request failed
> with uncaught exception: A component event handler method returned the
> value
>
> {"birthDay":"","birthMonth":"","birthYear":"","gender":"male","postOfficeNumberAndName":"1236
> Trzin"}. Return type net.sf.json.JSONObject can not be handled.  Configured
> return types are java.lang.Class, java.lang.String,
> org.apache.tapestry5.Link, org.apache.tapestry5.StreamResponse,
> org.apache.tapestry5.ajax.MultiZoneUpdate,
> org.apache.tapestry5.json.JSONArray, org.apache.tapestry5.json.JSONObject,
> org.apache.tapestry5.runtime.Component,
> org.apache.tapestry5.runtime.RenderCommand.
> org.apache.tapestry5.runtime.ComponentEventException: A component event
> handler method returned the value
>
> {"birthDay":"","birthMonth":"","birthYear":"","gender":"male","postOfficeNumberAndName":"1236
> Trzin"}. Return type net.sf.json.JSONObject can not be handled.  Configured
> return types are java.lang.Class, java.lang.String,
> org.apache.tapestry5.Link, org.apache.tapestry5.StreamResponse,
> org.apache.tapestry5.ajax.MultiZoneUpdate,
> org.apache.tapestry5.json.JSONArray, org.apache.tapestry5.json.JSONObject,
> org.apache.tapestry5.runtime.Component,
> org.apache.tapestry5.runtime.RenderCommand. [at context:Index.tml, line 20]
>
>
> My event method:
>
>    @OnEvent(component = "email", value = "blur")
>    public JSONObject checkIfUserWithThisEmailExists(String value) {
>        UserData userData = new UserData();
>        if(value.equals("bob@example.com")) {
>            userData.setPostOfficeNumberAndName("1236 Trzin");
>            userData.setGender("male");
>        } else {
>            logger.info("Bob does not exist.");
>        }
>        JSONObject jsonObject = (JSONObject)
> JSONSerializer.toJSON(userData);
>        return jsonObject;
>    }
>
> The reason I used net.sf.json.JSONObject is because it offers great
> conversion and construction capabilities to/from JavaBeans/XML/JSON. Have a
> look at http://json-lib.sourceforge.net/snippets.html.
>
> Is it possible or do I have to construct the org.apache.tapestry5.json.JSON
> object by hand?
>
> Thanks,
> Borut
>



-- 
Regards,
Christophe Cordenier.

Committer on Apache Tapestry 5
Co-creator of wooki @wookicentral.com