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(@Context UriInfo uriInfo)
{
setupQueryParms(uriInfo.getQueryParameters());
List<Customer> custList = null;
try {
custList = listAllPaginated();
} catch (FinderException e) {
Log.getInstance().error("FinderException caught :", e );
throwException(Response.Status.NOT_FOUND, "Error searching
customers");
}
GenericEntity<List<Customer>> entity = new
GenericEntity<List<Customer>>(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 List<Foo> - the difference being
the {foo: } which looks like a wrapper for the object.
I changed the code to return List<Customer> instead of the Response with
GenericEntity including the List<Customer> 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 List<Customer> vs Response with the List<Customer> 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=58041391&iu=/4140/ostg.clktrk
_______________________________________________
Resteasy-users mailing list
Resteasy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/resteasy-users