Re: [Resteasy-users] Confused on handling response containing collections in json
Sorry - we are JBoss 4.2.3.GA (still) with RestEasy 2.3.5. -Original Message- From: Bill Burke [mailto:bbu...@redhat.com] Sent: Wednesday, September 04, 2013 3:06 PM To: Mike Miller Cc: resteasy-users@lists.sourceforge.net Subject: Re: [Resteasy-users] Confused on handling response containing collections in json What is your server? Tomcat? Jetty? JBoss version? On 9/4/2013 4:02 PM, Mike Miller wrote: Okay, thanks - so how do I do that? I see Chapter 21 (2.3.5) talks about Maven but we aren't using maven. Do I just need to include the jar or is there something in the web.xml that I need to add to include this 'provider? Also could someone please address my last question: Are we using the Response object incorrectly? What's really the difference between returning ListCustomer vs Response with the ListCustomer in the generic entity? -Original Message- From: Bill Burke [mailto:bbu...@redhat.com] Sent: Wednesday, September 04, 2013 2:54 PM To: resteasy-users@lists.sourceforge.net Subject: Re: [Resteasy-users] Confused on handling response containing collections in json Switch to Jackson on the server side. We will be deprecating Jettison in the near future as it is buggy and not being well maintained. Jackson has all of what Jettison has and more... But you are right, Jettison produces different JSON. On 9/4/2013 3:27 PM, Mike Miller wrote: We are building a restful api, using 2.3.5 (although I don't think the release level matters) and I am a bit confused on response handling within RestEasy: Right or wrong, we made most of our resource methods return Response, using the GenericEntity when we wanted to return a collection of objects.Testing up to now was in Chrome Advanced Rest Client. We have our beans JAXB annotated and the resource 'produces' both application/xml and application/json. For example: @GET @Produces({application/json, application/xml}) *public*Response find(@ContextUriInfo uriInfo) { setupQueryParms(uriInfo.getQueryParameters()); ListCustomer custList = *null*; *try*{ custList = listAllPaginated(); } *catch*(FinderException e) { Log./getInstance/().error(FinderException caught :, e ); throwException(Response.Status./NOT_FOUND/, Error searching customers); } GenericEntityListCustomer entity = *new*GenericEntityListCustomer(custList) {}; *return*Response./ok/(entity).build(); } Now, as part of writing JUnit test cases, I wanted to take the response I get back and put it back to object form so that I can then do a set of asserts against the object or list of objects returned. I downloaded Jackson version 1.9.11 and tried to serialize/marshal the json back to object form but keep getting the following error: Exception in thread main _org.codehaus.jackson.map.exc.UnrecognizedPropertyException_: Unrecognized field Customer (Class com.jda.portfolio.api.rest.base.Customer), not marked as ignorable at [Source: C:\PPOSDevelopment\Trunk\API\REST\Server\response.json; line: 1, column: 15] (through reference chain: com.jda.portfolio.api.rest.base.Customer[Customer]) Is there a difference between Jackson json and what RestEasy produces, from I think Jettison? I also took the example from User doc section 19.6.1 JSON and JAXB collections/arrays [{foo:{@test:bill}},{foo:{@test:monica}}}] and tried to marshal that back to object form - getting the same error. It seems like from Jackson, I would get something like: [{@test:bill},{@test:monica}}] for a ListFoo - the difference being the {foo: } which looks like a wrapper for the object. I changed the code to return ListCustomer instead of the Response with GenericEntity including the ListCustomer but the json looks the same. What am I doing wrong? Are we using the Response object incorrectly? What's really the difference between returning ListCustomer vs Response with the ListCustomer in the generic entity? I hope this is clear, but I can provide more details if needed. - - Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more! Discover the easy way to master current and previous Microsoft technologies and advance your career. Get an incredible 1,500+ hours of step-by-step tutorial videos with LearnDevNow. Subscribe today and save! http://pubads.g.doubleclick.net/gampad/clk?id=58041391iu=/4140/ostg. c lktrk ___ Resteasy-users mailing list Resteasy-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/resteasy-users -- Bill Burke JBoss, a division of Red Hat http://bill.burkecentral.com
Re: [Resteasy-users] Confused on handling response containing collections in json
Yeah, I've run into this too (my situation is worse, I have RESTeasy w/ Jackson, Apache CXF w/ Jettison and a third system using Spring MVC w/ Jackson). Jettison's JSON structure is more like XML with its use of root elements in a parent wrapper tag. This is acceptable by JSON standards, but not normal by JSON standards. On Wed, Sep 4, 2013 at 4:57 PM, Bill Burke bbu...@redhat.com wrote: JSON is not a *Java* format. It is a JavaScript Object Notation. On 9/4/2013 4:54 PM, Mike Miller wrote: Thanks - will try that. Just included the Jackson jar but that didn't make it. One last question - don't mean to eat up all your time - but your statement, But you are right, Jettison produces different JSON. How that be? Isn't JSON a spec such that there should be consistent output for a set of data? -Original Message- From: Bill Burke [mailto:bbu...@redhat.com] Sent: Wednesday, September 04, 2013 3:50 PM To: Mike Miller Cc: resteasy-users@lists.sourceforge.net Subject: Re: [Resteasy-users] Confused on handling response containing collections in json Just don't include the jettison module and include all the jackson stuff. Should work. On 9/4/2013 4:19 PM, Mike Miller wrote: Sorry - we are JBoss 4.2.3.GA (still) with RestEasy 2.3.5. -Original Message- From: Bill Burke [mailto:bbu...@redhat.com] Sent: Wednesday, September 04, 2013 3:06 PM To: Mike Miller Cc: resteasy-users@lists.sourceforge.net Subject: Re: [Resteasy-users] Confused on handling response containing collections in json What is your server? Tomcat? Jetty? JBoss version? On 9/4/2013 4:02 PM, Mike Miller wrote: Okay, thanks - so how do I do that? I see Chapter 21 (2.3.5) talks about Maven but we aren't using maven. Do I just need to include the jar or is there something in the web.xml that I need to add to include this 'provider? Also could someone please address my last question: Are we using the Response object incorrectly? What's really the difference between returning ListCustomer vs Response with the ListCustomer in the generic entity? -Original Message- From: Bill Burke [mailto:bbu...@redhat.com] Sent: Wednesday, September 04, 2013 2:54 PM To: resteasy-users@lists.sourceforge.net Subject: Re: [Resteasy-users] Confused on handling response containing collections in json Switch to Jackson on the server side. We will be deprecating Jettison in the near future as it is buggy and not being well maintained. Jackson has all of what Jettison has and more... But you are right, Jettison produces different JSON. On 9/4/2013 3:27 PM, Mike Miller wrote: We are building a restful api, using 2.3.5 (although I don't think the release level matters) and I am a bit confused on response handling within RestEasy: Right or wrong, we made most of our resource methods return Response, using the GenericEntity when we wanted to return a collection of objects.Testing up to now was in Chrome Advanced Rest Client. We have our beans JAXB annotated and the resource 'produces' both application/xml and application/json. For example: @GET @Produces({application/json, application/xml}) *public*Response find(@ContextUriInfo uriInfo) { setupQueryParms(uriInfo.getQueryParameters()); ListCustomer custList = *null*; *try*{ custList = listAllPaginated(); } *catch*(FinderException e) { Log./getInstance/().error(FinderException caught :, e ); throwException(Response.Status./NOT_FOUND/, Error searching customers); } GenericEntityListCustomer entity = *new*GenericEntityListCustomer(custList) {}; *return*Response./ok/(entity).build(); } Now, as part of writing JUnit test cases, I wanted to take the response I get back and put it back to object form so that I can then do a set of asserts against the object or list of objects returned. I downloaded Jackson version 1.9.11 and tried to serialize/marshal the json back to object form but keep getting the following error: Exception in thread main _org.codehaus.jackson.map.exc.UnrecognizedPropertyException_: Unrecognized field Customer (Class com.jda.portfolio.api.rest.base.Customer), not marked as ignorable at [Source: C:\PPOSDevelopment\Trunk\API\REST\Server\response.json; line: 1, column: 15] (through reference chain: com.jda.portfolio.api.rest.base.Customer[Customer]) Is there a difference between Jackson json and what RestEasy produces, from I think Jettison? I also took the example from User doc section 19.6.1 JSON and JAXB collections/arrays [{foo:{@test:bill}},{foo:{@test:monica}}}] and tried to marshal that back to object form - getting the same error. It seems like from Jackson, I would get something like: [{@test:bill},{@test:monica}}] for a ListFoo
Re: [Resteasy-users] Confused on handling response containing collections in json
JSON is not a *Java* format. It is a JavaScript Object Notation. On 9/4/2013 4:54 PM, Mike Miller wrote: Thanks - will try that. Just included the Jackson jar but that didn't make it. One last question - don't mean to eat up all your time - but your statement, But you are right, Jettison produces different JSON. How that be? Isn't JSON a spec such that there should be consistent output for a set of data? -Original Message- From: Bill Burke [mailto:bbu...@redhat.com] Sent: Wednesday, September 04, 2013 3:50 PM To: Mike Miller Cc: resteasy-users@lists.sourceforge.net Subject: Re: [Resteasy-users] Confused on handling response containing collections in json Just don't include the jettison module and include all the jackson stuff. Should work. On 9/4/2013 4:19 PM, Mike Miller wrote: Sorry - we are JBoss 4.2.3.GA (still) with RestEasy 2.3.5. -Original Message- From: Bill Burke [mailto:bbu...@redhat.com] Sent: Wednesday, September 04, 2013 3:06 PM To: Mike Miller Cc: resteasy-users@lists.sourceforge.net Subject: Re: [Resteasy-users] Confused on handling response containing collections in json What is your server? Tomcat? Jetty? JBoss version? On 9/4/2013 4:02 PM, Mike Miller wrote: Okay, thanks - so how do I do that? I see Chapter 21 (2.3.5) talks about Maven but we aren't using maven. Do I just need to include the jar or is there something in the web.xml that I need to add to include this 'provider? Also could someone please address my last question: Are we using the Response object incorrectly? What's really the difference between returning ListCustomer vs Response with the ListCustomer in the generic entity? -Original Message- From: Bill Burke [mailto:bbu...@redhat.com] Sent: Wednesday, September 04, 2013 2:54 PM To: resteasy-users@lists.sourceforge.net Subject: Re: [Resteasy-users] Confused on handling response containing collections in json Switch to Jackson on the server side. We will be deprecating Jettison in the near future as it is buggy and not being well maintained. Jackson has all of what Jettison has and more... But you are right, Jettison produces different JSON. On 9/4/2013 3:27 PM, Mike Miller wrote: We are building a restful api, using 2.3.5 (although I don't think the release level matters) and I am a bit confused on response handling within RestEasy: Right or wrong, we made most of our resource methods return Response, using the GenericEntity when we wanted to return a collection of objects.Testing up to now was in Chrome Advanced Rest Client. We have our beans JAXB annotated and the resource 'produces' both application/xml and application/json. For example: @GET @Produces({application/json, application/xml}) *public*Response find(@ContextUriInfo uriInfo) { setupQueryParms(uriInfo.getQueryParameters()); ListCustomer custList = *null*; *try*{ custList = listAllPaginated(); } *catch*(FinderException e) { Log./getInstance/().error(FinderException caught :, e ); throwException(Response.Status./NOT_FOUND/, Error searching customers); } GenericEntityListCustomer entity = *new*GenericEntityListCustomer(custList) {}; *return*Response./ok/(entity).build(); } Now, as part of writing JUnit test cases, I wanted to take the response I get back and put it back to object form so that I can then do a set of asserts against the object or list of objects returned. I downloaded Jackson version 1.9.11 and tried to serialize/marshal the json back to object form but keep getting the following error: Exception in thread main _org.codehaus.jackson.map.exc.UnrecognizedPropertyException_: Unrecognized field Customer (Class com.jda.portfolio.api.rest.base.Customer), not marked as ignorable at [Source: C:\PPOSDevelopment\Trunk\API\REST\Server\response.json; line: 1, column: 15] (through reference chain: com.jda.portfolio.api.rest.base.Customer[Customer]) Is there a difference between Jackson json and what RestEasy produces, from I think Jettison? I also took the example from User doc section 19.6.1 JSON and JAXB collections/arrays [{foo:{@test:bill}},{foo:{@test:monica}}}] and tried to marshal that back to object form - getting the same error. It seems like from Jackson, I would get something like: [{@test:bill},{@test:monica}}] for a ListFoo - the difference being the {foo: } which looks like a wrapper for the object. I changed the code to return ListCustomer instead of the Response with GenericEntity including the ListCustomer but the json looks the same. What am I doing wrong? Are we using the Response object incorrectly? What's really the difference between returning ListCustomer vs Response with the ListCustomer
Re: [Resteasy-users] Confused on handling response containing collections in json
Thanks - will try that. Just included the Jackson jar but that didn't make it. One last question - don't mean to eat up all your time - but your statement, But you are right, Jettison produces different JSON. How that be? Isn't JSON a spec such that there should be consistent output for a set of data? -Original Message- From: Bill Burke [mailto:bbu...@redhat.com] Sent: Wednesday, September 04, 2013 3:50 PM To: Mike Miller Cc: resteasy-users@lists.sourceforge.net Subject: Re: [Resteasy-users] Confused on handling response containing collections in json Just don't include the jettison module and include all the jackson stuff. Should work. On 9/4/2013 4:19 PM, Mike Miller wrote: Sorry - we are JBoss 4.2.3.GA (still) with RestEasy 2.3.5. -Original Message- From: Bill Burke [mailto:bbu...@redhat.com] Sent: Wednesday, September 04, 2013 3:06 PM To: Mike Miller Cc: resteasy-users@lists.sourceforge.net Subject: Re: [Resteasy-users] Confused on handling response containing collections in json What is your server? Tomcat? Jetty? JBoss version? On 9/4/2013 4:02 PM, Mike Miller wrote: Okay, thanks - so how do I do that? I see Chapter 21 (2.3.5) talks about Maven but we aren't using maven. Do I just need to include the jar or is there something in the web.xml that I need to add to include this 'provider? Also could someone please address my last question: Are we using the Response object incorrectly? What's really the difference between returning ListCustomer vs Response with the ListCustomer in the generic entity? -Original Message- From: Bill Burke [mailto:bbu...@redhat.com] Sent: Wednesday, September 04, 2013 2:54 PM To: resteasy-users@lists.sourceforge.net Subject: Re: [Resteasy-users] Confused on handling response containing collections in json Switch to Jackson on the server side. We will be deprecating Jettison in the near future as it is buggy and not being well maintained. Jackson has all of what Jettison has and more... But you are right, Jettison produces different JSON. On 9/4/2013 3:27 PM, Mike Miller wrote: We are building a restful api, using 2.3.5 (although I don't think the release level matters) and I am a bit confused on response handling within RestEasy: Right or wrong, we made most of our resource methods return Response, using the GenericEntity when we wanted to return a collection of objects.Testing up to now was in Chrome Advanced Rest Client. We have our beans JAXB annotated and the resource 'produces' both application/xml and application/json. For example: @GET @Produces({application/json, application/xml}) *public*Response find(@ContextUriInfo uriInfo) { setupQueryParms(uriInfo.getQueryParameters()); ListCustomer custList = *null*; *try*{ custList = listAllPaginated(); } *catch*(FinderException e) { Log./getInstance/().error(FinderException caught :, e ); throwException(Response.Status./NOT_FOUND/, Error searching customers); } GenericEntityListCustomer entity = *new*GenericEntityListCustomer(custList) {}; *return*Response./ok/(entity).build(); } Now, as part of writing JUnit test cases, I wanted to take the response I get back and put it back to object form so that I can then do a set of asserts against the object or list of objects returned. I downloaded Jackson version 1.9.11 and tried to serialize/marshal the json back to object form but keep getting the following error: Exception in thread main _org.codehaus.jackson.map.exc.UnrecognizedPropertyException_: Unrecognized field Customer (Class com.jda.portfolio.api.rest.base.Customer), not marked as ignorable at [Source: C:\PPOSDevelopment\Trunk\API\REST\Server\response.json; line: 1, column: 15] (through reference chain: com.jda.portfolio.api.rest.base.Customer[Customer]) Is there a difference between Jackson json and what RestEasy produces, from I think Jettison? I also took the example from User doc section 19.6.1 JSON and JAXB collections/arrays [{foo:{@test:bill}},{foo:{@test:monica}}}] and tried to marshal that back to object form - getting the same error. It seems like from Jackson, I would get something like: [{@test:bill},{@test:monica}}] for a ListFoo - the difference being the {foo: } which looks like a wrapper for the object. I changed the code to return ListCustomer instead of the Response with GenericEntity including the ListCustomer but the json looks the same. What am I doing wrong? Are we using the Response object incorrectly? What's really the difference between returning ListCustomer vs Response with the ListCustomer in the generic entity? I hope this is clear, but I can provide more details if needed
Re: [Resteasy-users] Confused on handling response containing collections in json
Switch to Jackson on the server side. We will be deprecating Jettison in the near future as it is buggy and not being well maintained. Jackson has all of what Jettison has and more... But you are right, Jettison produces different JSON. On 9/4/2013 3:27 PM, Mike Miller wrote: We are building a restful api, using 2.3.5 (although I don’t think the release level matters) and I am a bit confused on response handling within RestEasy: Right or wrong, we made most of our resource methods return Response, using the GenericEntity when we wanted to return a collection of objects.Testing up to now was in Chrome Advanced Rest Client. We have our beans JAXB annotated and the resource ‘produces’ both application/xml and application/json. For example: @GET @Produces({application/json, application/xml}) *public*Response find(@ContextUriInfo uriInfo) { setupQueryParms(uriInfo.getQueryParameters()); ListCustomer custList = *null*; *try*{ custList = listAllPaginated(); } *catch*(FinderException e) { Log./getInstance/().error(FinderException caught :, e ); throwException(Response.Status./NOT_FOUND/, Error searching customers); } GenericEntityListCustomer entity = *new*GenericEntityListCustomer(custList) {}; *return*Response./ok/(entity).build(); } Now, as part of writing JUnit test cases, I wanted to take the response I get back and put it back to object form so that I can then do a set of asserts against the object or list of objects returned. I downloaded Jackson version 1.9.11 and tried to serialize/marshal the json back to object form but keep getting the following error: Exception in thread main _org.codehaus.jackson.map.exc.UnrecognizedPropertyException_: Unrecognized field Customer (Class com.jda.portfolio.api.rest.base.Customer), not marked as ignorable at [Source: C:\PPOSDevelopment\Trunk\API\REST\Server\response.json; line: 1, column: 15] (through reference chain: com.jda.portfolio.api.rest.base.Customer[Customer]) Is there a difference between Jackson json and what RestEasy produces, from I think Jettison? I also took the example from User doc section 19.6.1 JSON and JAXB collections/arrays [{foo:{@test:bill}},{foo:{@test:monica}}}] and tried to marshal that back to object form – getting the same error. It seems like from Jackson, I would get something like: [{@test:bill},{@test:monica}}] for a ListFoo - the difference being the {foo: } which looks like a wrapper for the object. I changed the code to return ListCustomer instead of the Response with GenericEntity including the ListCustomer but the json looks the same. What am I doing wrong? Are we using the Response object incorrectly? What’s really the difference between returning ListCustomer vs Response with the ListCustomer in the generic entity? I hope this is clear, but I can provide more details if needed. -- Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more! Discover the easy way to master current and previous Microsoft technologies and advance your career. Get an incredible 1,500+ hours of step-by-step tutorial videos with LearnDevNow. Subscribe today and save! http://pubads.g.doubleclick.net/gampad/clk?id=58041391iu=/4140/ostg.clktrk ___ Resteasy-users mailing list Resteasy-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/resteasy-users -- Bill Burke JBoss, a division of Red Hat http://bill.burkecentral.com -- Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more! Discover the easy way to master current and previous Microsoft technologies and advance your career. Get an incredible 1,500+ hours of step-by-step tutorial videos with LearnDevNow. Subscribe today and save! http://pubads.g.doubleclick.net/gampad/clk?id=58041391iu=/4140/ostg.clktrk ___ Resteasy-users mailing list Resteasy-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/resteasy-users