Hi,
The exception you are getting is because Jersey does not know how to
convert an instance of ChartSpecification to JSON.
You need to annotate ChartSpecification with the JAXB annotation
@XmlRootElement.
If you use Jackson JAX-RS support then you do not need to annotate
ChartSpecification.
Paul.
On Dec 16, 2009, at 7:12 PM, cgswtsu78 wrote:
>
> Hi Jakub,
>
> Thanks for the quick reply. I did find an Entity Provider and was
> using it.
> I removed it from the classpath and I get the below exception when I
> perform
> HTTP GET against the /topspamsenderchart resource. Is the Jersey
> provided
> writer implemented by default or is there some extra configuration I
> need to
> do? I have experimented with Jackson yet and would like to try the
> Jersey
> writer, but it looks like I have some dependency issue. I did some
> searching and it seems to be a JSON dependency issue, but I do have
> the
> json-lib-2.2.3-jdk15.jar on the classpath...so I'm a bit stumped
> here. Any
> ideas?
>
> Resource Method:
> @GET
> @Path("/topspamsenderchart")
> @Produces("application/json")
> public Response getTopSpamSenderChartTest1() throws Exception{
>
> ChartSpecification chartSpec = new ChartSpecification();
>
> chartSpec.setWidth(new Double(700));
> chartSpec.setHeight(new Double(500));
> chartSpec.setChartType("4");
>
> return Response.ok(chartSpec).type("application/json").build();
> }
>
> Exception:
> javax.ws.rs.WebApplicationException
> at
> com
> .sun
> .jersey.spi.container.ContainerResponse.write(ContainerResponse.java:
> 253)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .application
> .WebApplicationImpl._handleRequest(WebApplicationImpl.java:814)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .application
> .WebApplicationImpl.handleRequest(WebApplicationImpl.java:740)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .application
> .WebApplicationImpl.handleRequest(WebApplicationImpl.java:731)
> at
> com
> .sun
> .jersey.spi.container.servlet.WebComponent.service(WebComponent.java:
> 372)
> at
> com
> .sun
> .jersey
> .spi
> .container.servlet.ServletContainer.service(ServletContainer.java:452)
> at
> com
> .sun
> .jersey
> .spi
> .container.servlet.ServletContainer.service(ServletContainer.java:633)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> at
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 290)
> at
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org
> .apache
> .catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
> 233)
> at
> org
> .apache
> .catalina.core.StandardContextValve.invoke(StandardContextValve.java:
> 191)
> at
> org
> .apache
> .catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> at
> org
> .apache
> .catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> at
> org
> .apache
> .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
> 109)
> at
> org
> .apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
> 293)
> at
> org
> .apache.coyote.http11.Http11Processor.process(Http11Processor.java:
> 849)
> at
> org.apache.coyote.http11.Http11Protocol
> $Http11ConnectionHandler.process(Http11Protocol.java:583)
> at org.apache.tomcat.util.net.JIoEndpoint
> $Worker.run(JIoEndpoint.java:454)
> at java.lang.Thread.run(Unknown Source)
>
>
>
> Jakub Podlesak wrote:
>>
>>
>> Hi,
>>
>> please see inline...
>>
>> On Tue, Dec 15, 2009 at 04:28:01PM -0800, cgswtsu78 wrote:
>>>
>>> Hello,
>>>
>>> When I perform an HTTP GET request against the below resource
>>> method I
>>> get a
>>> net.sf.json.JSONException: There is a cycle in the hierarchy! (see
>>> below
>>> for
>>> full stack trace). The problem seems to be associated to
>>> returning an
>>> instance of the ImageDetails object after it is retrieved from the
>>> ClientResponse.getEntity method. The ImageDetails object is
>>> successfully
>>> retrieved but when I try to pass that retrieved instance back I
>>> get the
>>> JSONException. When I just create a new version of ImageDetails and
>>> return
>>> that the below method works fine. Any ideas?
>>>
>>> @GET
>>> @Path("/topspamsenderchart")
>>> @Produces("application/json")
>>> public ImageDetails getTopSpamSenderChart() throws Exception{
>>>
>>> Client client = Client.create();
>>> WebResource webResource =
>>> client.resource("http://localhost:8080/ChartWebWiz/jersey/
>>> chartsvcs/");
>>> ClientResponse response =
>>> webResource
>>> .path
>>> ("topspamsenderchart
>>> ").type(MediaType.APPLICATION_XML).post(ClientResponse.class,
>>> chartSpec);
>>>
>>> ImageDetails imgDetails = response.getEntity(ImageDetails.class);
>>> return imgDetails;
>>> }
>>>
>>>
>>> Stack Trace:
>>> net.sf.json.JSONException: There is a cycle in the hierarchy!
>>>
>>> net.sf.json.util.CycleDetectionStrategy
>>> $
>>> StrictCycleDetectionStrategy
>>> .handleRepeatedReferenceAsObject(CycleDetectionStrategy.java:97)
>>> net.sf.json.JSONObject._fromBean(JSONObject.java:859)
>>> net.sf.json.JSONObject.fromObject(JSONObject.java:194)
>>> net.sf.json.JSONObject._processValue(JSONObject.java:2793)
>>> net.sf.json.JSONObject._setInternal(JSONObject.java:2817)
>>> net.sf.json.JSONObject.setValue(JSONObject.java:1527)
>>> net.sf.json.JSONObject._fromBean(JSONObject.java:946)
>>> net.sf.json.JSONObject.fromObject(JSONObject.java:194)
>>> net.sf.json.JSONObject._processValue(JSONObject.java:2793)
>>> net.sf.json.JSONObject._setInternal(JSONObject.java:2817)
>>> net.sf.json.JSONObject.setValue(JSONObject.java:1527)
>>> net.sf.json.JSONObject._fromBean(JSONObject.java:946)
>>> net.sf.json.JSONObject.fromObject(JSONObject.java:194)
>>> net.sf.json.JSONObject._processValue(JSONObject.java:2793)
>>> net.sf.json.JSONObject._setInternal(JSONObject.java:2817)
>>> net.sf.json.JSONObject.setValue(JSONObject.java:1527)
>>> net.sf.json.JSONObject._fromBean(JSONObject.java:946)
>>> net.sf.json.JSONObject.fromObject(JSONObject.java:194)
>>> net.sf.json.JSONObject._processValue(JSONObject.java:2793)
>>> net.sf.json.JSONObject._setInternal(JSONObject.java:2817)
>>> net.sf.json.JSONObject.setValue(JSONObject.java:1527)
>>> net.sf.json.JSONObject._fromBean(JSONObject.java:946)
>>> net.sf.json.JSONObject.fromObject(JSONObject.java:194)
>>> net.sf.json.JSONArray.fromObject(JSONArray.java:194)
>>> net.sf.json.JSONSerializer.toJSON(JSONSerializer.java:113)
>>> net.sf.json.JSONSerializer.toJSON(JSONSerializer.java:84)
>>>
>>> com
>>> .proofpoint
>>> .resources
>>> .chartsvcs.impl.MyEntityProvider.writeTo(MyEntityProvider.java:33)
>>
>> you are apparently using either your own or a 3rd party entity
>> writer,
>> com.proofpoint.resources.chartsvcs.impl.MyEntityProvider.
>> It is hard to diagnose your issue, given that i have no clue what
>> it does.
>>
>> By any chance, have you tried using either Jersey provided writer
>> or the Jackson writer?
>>
>> ~Jakub
>>
>>>
>>> com
>>> .sun
>>> .jersey
>>> .spi.container.ContainerResponse.write(ContainerResponse.java:266)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .server
>>> .impl
>>> .application
>>> .WebApplicationImpl._handleRequest(WebApplicationImpl.java:814)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .server
>>> .impl
>>> .application
>>> .WebApplicationImpl.handleRequest(WebApplicationImpl.java:740)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .server
>>> .impl
>>> .application
>>> .WebApplicationImpl.handleRequest(WebApplicationImpl.java:731)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .spi.container.servlet.WebComponent.service(WebComponent.java:372)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .spi
>>> .container.servlet.ServletContainer.service(ServletContainer.java:
>>> 452)
>>>
>>> com
>>> .sun
>>> .jersey
>>> .spi
>>> .container.servlet.ServletContainer.service(ServletContainer.java:
>>> 633)
>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>>>
>>> --
>>> View this message in context:
>>> http://n2.nabble.com/net-sf-json-JSONException-There-is-a-cycle-in-the-hierarchy-tp4173118p4173118.html
>>> Sent from the Jersey mailing list archive at Nabble.com.
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>
>>
>> --
>> http://blogs.sun.com/japod
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>
>>
>>
>
> --
> View this message in context: http://n2.nabble.com/net-sf-json-JSONException-There-is-a-cycle-in-the-hierarchy-tp4173118p4177065.html
> Sent from the Jersey mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>