users@jersey.java.net

Re: application/json programming model

From: Arun Gupta <Arun.Gupta_at_Sun.COM>
Date: Fri, 31 Aug 2007 12:20:37 -0700

Running from the command-line gives the same error as well :(

Arun Gupta wrote:
> Thanks Jakub.
>
> The NetBeans project seems to be using Jersey directory structure for
> resolving libraries and that gives the error attached in the image. I
> resolved the references but building the project gives the following error:
>
> C:\workarea\samples\JsonFromJaxb\JsonFromJaxb\build.xml:22: taskdef
> class com.sun.ws.rest.tools.ant.WebResourcesProcessorTask cannot be found
>
> -Arun
>
> Jakub Podlesak wrote:
>> Hi Arun,
>>
>> please look at the sample linked from:
>> http://blogs.sun.com/japod/entry/json_representation_of_jaxb_object
>>
>> ~Jakub
>>
>> On Fri, Aug 31, 2007 at 08:13:36AM -0700, Arun Gupta wrote:
>>>> What you need to do is to create a JAXB bean with @XmlRootElement on
>>>> the class. Write a JAX-RS bean with a method that returns the JAXB
>>>> bean and is annotated with @ProduceMime("application/json")
>>>> something like:
>>>>
>>>> @XmlRootElement
>>>> public class States {
>>>> ...
>>>> }
>>>>
>>>> @UriTemplate("states")
>>>> public class StatesResource {
>>>>
>>>> @HttpMethod
>>>> @ProduceMime("application/json")
>>>> States getStates() {
>>>> ...
>>>> }
>>>> }
>>>>
>>>> The JAXB provider will automagically convert the returned States
>>>> class instance into JSON for you.
>>> This is reasonable. I tried it exactly this way without looking at
>>> the sample and got an empty response.
>>>
>>>> I'm sure Jakub's example will show this in more detail.
>>> This sample is not configured to run by default:
>>>
>>> -- cut here --
>>> init:
>>> deps-jar:
>>> Processing resource classes
>>> compile:
>>> run:
>>> Exception in thread "main" java.lang.IllegalArgumentException
>>> at
>>> com.sun.ws.rest.samples.storageservice.Main.main(Main.java:85)
>>> Java Result: 1
>>> BUILD SUCCESSFUL (total time: 4 seconds)
>>> -- cut here --
>>>
>>> A default command-line argument is missing.
>>>
>>> -Arun
>>>> Marc.
>>>>
>>>>>>> use. You might not be able to get the exact JSON format you show
>>>>>>> below but I'd bet you could get close just using some of the
>>>>>>> JAXB annotations.
>>>>>>>
>>>>>>> Marc.
>>>>>>>
>>>>>>> On Aug 30, 2007, at 2:33 PM, Arun Gupta wrote:
>>>>>>>
>>>>>>>> In order to return a JSON array like:
>>>>>>>>
>>>>>>>> [{"name":"California","value":"California"},{"name":"New
>>>>>>>> York","value":"New York"},{"name":"Alabama" ,"value":"Alabama"},
>>>>>>>> {"name":"Texas","value":"Texas"}]
>>>>>>>>
>>>>>>>> I have to write the following code:
>>>>>>>>
>>>>>>>> -- cut here --
>>>>>>>> @HttpMethod("GET")
>>>>>>>> @ProduceMime("application/json")
>>>>>>>> public JSONArray getMessage() throws JSONException {
>>>>>>>> String[] states = { "California", "New York", "Alabama",
>>>>>>>> "Texas"};
>>>>>>>> JSONArray array = new JSONArray();
>>>>>>>> for (String s : states) {
>>>>>>>> JSONObject item = new JSONObject();
>>>>>>>> item.put("name", s).put("value", s);
>>>>>>>> array.put(item);
>>>>>>>> }
>>>>>>>>
>>>>>>>> return array;
>>>>>>>> }
>>>>>>>> -- cut here --
>>>>>>>>
>>>>>>>> I think this is too involving and low-level. Can the code be
>>>>>>>> something like the following ?
>>>>>>>>
>>>>>>>> -- cut here --
>>>>>>>> @JSONObject
>>>>>>>> ItemBean {
>>>>>>>> ItemBean(String name, String value) { ... }
>>>>>>>>
>>>>>>>> @JSONObjectKey
>>>>>>>> public String getName() { ... }
>>>>>>>>
>>>>>>>> @JSONObjectValue("value")
>>>>>>>> public String getNameValue() { ... }
>>>>>>>> }
>>>>>>>>
>>>>>>>> @HttpMethod("GET")
>>>>>>>> @ProduceMime("application/json")
>>>>>>>> public List<ItemBean> getMessage() {
>>>>>>>> String[] states = { "California", "New York", "Alabama",
>>>>>>>> "Texas"};
>>>>>>>> List<ItemBean> list = new ArrayList<ItemBean>();
>>>>>>>> for (String s : states) {
>>>>>>>> ItemBean bean = new ItemBean(s, s);
>>>>>>>> list.add(bean);
>>>>>>>> }
>>>>>>>>
>>>>>>>> return list;
>>>>>>>> }
>>>>>>>> -- cut here --
>>>>>>>>
>>>>>>>> This will require defining new annotations JSONObject,
>>>>>>>> JSONObjectKey & JSONObjectValue. I think this is more natural to
>>>>>>>> a Java developer.
>>>>>>>>
>>>>>>>> -Arun
>>>>>>>> --
>>>>>>>> Web Technologies and Standards
>>>>>>>> Sun Microsystems, Inc.
>>>>>>>> Blog: http://blogs.sun.com/arungupta
>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>
>>>>>>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>>>>>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>>>>>>
>>>>>>> ---
>>>>>>> Marc Hadley <marc.hadley at sun.com>
>>>>>>> CTO Office, Sun Microsystems.
>>>>>>>
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>>
>>>>>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>>>>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>>>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>>> --
>>>>> Web Technologies and Standards
>>>>> Sun Microsystems, Inc.
>>>>> Blog: http://blogs.sun.com/arungupta
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>>>
>>>> ---
>>>> Marc Hadley <marc.hadley at sun.com>
>>>> CTO Office, Sun Microsystems.
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>>
>>> --
>>> Web Technologies and Standards
>>> Sun Microsystems, Inc.
>>> Blog: http://blogs.sun.com/arungupta
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>
>
>
> ------------------------------------------------------------------------
>
>
> ------------------------------------------------------------------------
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net

-- 
Web Technologies and Standards
Sun Microsystems, Inc.
Blog: http://blogs.sun.com/arungupta