users@jersey.java.net

Re: application/json programming model

From: Jakub Podlesak <Jakub.Podlesak_at_Sun.COM>
Date: Mon, 03 Sep 2007 09:58:33 +0200

Hi Arun,

The NetBeans project should use jar files from it's [lib] subdirectory. I have
rewritten the dependencies. (If you look at the snapshot you will realize
I run it from outside of Jersey dir structure)

But you right, I forgot to remove [nbproject/private] directory, which keeps
info about the files within my filesystem. It can probably cause issues.

Could you please remove the [private] dir and try again?
I will fix the issue and update the project on the web.

Thanks,

~Jakub

On Fri, Aug 31, 2007 at 11:56:52AM -0700, 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
> >
>
> --
> 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