Re: internal NPE exception while handling 415 response
Hi Dan, We plan to release 2.1.2 early next week. If you can't wait, you indeed need to build the sources. We used to have automated 2.2 snapshots built daily, but we haven't restored the cron scripts on our new machine. Best regards, Jerome 2013/2/13 Daniel Halperin dhalp...@cs.washington.edu On Sun, Feb 10, 2013 at 9:55 AM, Jérôme Louvel jlou...@restlet.comwrote: Hi Daniel, Thanks very much for the detailed report. I've been able to reproduce the issue, add a test case and fix the underlying problem (in both 2.1 and 2.2 branches). Thanks, Jérôme! That's great. How can I get these changes? (Do I have to rebuild the source? Will there be a 2.1.2 release soon?) Dan Actually, it was a serious issue beyond the JAX-RS extension itself as the internal connector wasn't restoring the current Response, Application, Context and Virtual Host (thread local variables) when writing the outbound entities. Thanks, Jerome -- http://restlet.com http://twitter.com/#!/jlouvel 2013/1/31 Daniel Halperin dhalp...@cs.washington.edu Hi everyone, I'm just getting started with RESTlet (v.2.1.1, with org.restlet.jee.ext.jackson jee.ext.jaxrs), so I may be doing something very wrong. However, basic things work well for me. For instance, if I return POJOs from a function annotated with @Produces(MediaType.APPLICATION_JSON), they seem to be returned properly. Right now, I'm experimenting with implementing different handlers for different Content-Types. I started with the simplest possible: echo JSON input (converted to String) back as JSON: /** * Class that handles queries. * * @author dhalperi */ @Path(/query) public final class QueryResource { /** * For now, simply echoes back its input. * * @param input the payload of the POST request itself. * @return the payload. */ @POST @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public String postNewQuery(final String input) { return input; } } If I access this resource with an invalid Content-Type (curl -i -XPOST localhost:8753/query -d hi), the curl process hangs and it looks like RESTlet experiences an internal exception deep in its code: Exception in thread Restlet-PipedWritableChannel java.lang.NullPointerException at org.restlet.ext.jaxrs.internal.provider.StringProvider.getCurrentResponseEntityCharset(StringProvider.java:98) at org.restlet.ext.jaxrs.internal.provider.StringProvider.writeTo(StringProvider.java:178) at org.restlet.ext.jaxrs.internal.provider.StringProvider.writeTo(StringProvider.java:63) at org.restlet.ext.jaxrs.internal.wrappers.provider.SingletonProvider.writeTo(SingletonProvider.java:350) at org.restlet.ext.jaxrs.internal.util.JaxRsOutputRepresentation.write(JaxRsOutputRepresentation.java:112) at org.restlet.representation.StreamRepresentation.write(StreamRepresentation.java:76) at org.restlet.engine.io.NioUtils$1.run(NioUtils.java:210) at java.lang.Thread.run(Thread.java:722) Google has literally no hits for 'Restlet-PipedWritableChannel'---so I came here. :) Note that if I use the expected Content-type, it works fine: curl -i -XPOST localhost:8753/query -H Content-type: application/json -d hi INFO: 2013-01-30 18:15:30 127.0.0.1 - - 8753 POST /query - 200 2 2 10 http://localhost:8753 curl/7.28.1 - What suggestions does the group have for me? Thanks! Dan -- http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=3048679
Re: internal NPE exception while handling 415 response
On Sun, Feb 10, 2013 at 9:55 AM, Jérôme Louvel jlou...@restlet.com wrote: Hi Daniel, Thanks very much for the detailed report. I've been able to reproduce the issue, add a test case and fix the underlying problem (in both 2.1 and 2.2 branches). Thanks, Jérôme! That's great. How can I get these changes? (Do I have to rebuild the source? Will there be a 2.1.2 release soon?) Dan Actually, it was a serious issue beyond the JAX-RS extension itself as the internal connector wasn't restoring the current Response, Application, Context and Virtual Host (thread local variables) when writing the outbound entities. Thanks, Jerome -- http://restlet.com http://twitter.com/#!/jlouvel 2013/1/31 Daniel Halperin dhalp...@cs.washington.edu Hi everyone, I'm just getting started with RESTlet (v.2.1.1, with org.restlet.jee.ext.jackson jee.ext.jaxrs), so I may be doing something very wrong. However, basic things work well for me. For instance, if I return POJOs from a function annotated with @Produces(MediaType.APPLICATION_JSON), they seem to be returned properly. Right now, I'm experimenting with implementing different handlers for different Content-Types. I started with the simplest possible: echo JSON input (converted to String) back as JSON: /** * Class that handles queries. * * @author dhalperi */ @Path(/query) public final class QueryResource { /** * For now, simply echoes back its input. * * @param input the payload of the POST request itself. * @return the payload. */ @POST @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public String postNewQuery(final String input) { return input; } } If I access this resource with an invalid Content-Type (curl -i -XPOST localhost:8753/query -d hi), the curl process hangs and it looks like RESTlet experiences an internal exception deep in its code: Exception in thread Restlet-PipedWritableChannel java.lang.NullPointerException at org.restlet.ext.jaxrs.internal.provider.StringProvider.getCurrentResponseEntityCharset(StringProvider.java:98) at org.restlet.ext.jaxrs.internal.provider.StringProvider.writeTo(StringProvider.java:178) at org.restlet.ext.jaxrs.internal.provider.StringProvider.writeTo(StringProvider.java:63) at org.restlet.ext.jaxrs.internal.wrappers.provider.SingletonProvider.writeTo(SingletonProvider.java:350) at org.restlet.ext.jaxrs.internal.util.JaxRsOutputRepresentation.write(JaxRsOutputRepresentation.java:112) at org.restlet.representation.StreamRepresentation.write(StreamRepresentation.java:76) at org.restlet.engine.io.NioUtils$1.run(NioUtils.java:210) at java.lang.Thread.run(Thread.java:722) Google has literally no hits for 'Restlet-PipedWritableChannel'---so I came here. :) Note that if I use the expected Content-type, it works fine: curl -i -XPOST localhost:8753/query -H Content-type: application/json -d hi INFO: 2013-01-30 18:15:30 127.0.0.1 - - 8753 POST /query - 200 2 2 10 http://localhost:8753 curl/7.28.1 - What suggestions does the group have for me? Thanks! Dan -- http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=3048597
Re: internal NPE exception while handling 415 response
Hi Daniel, Thanks very much for the detailed report. I've been able to reproduce the issue, add a test case and fix the underlying problem (in both 2.1 and 2.2 branches). Actually, it was a serious issue beyond the JAX-RS extension itself as the internal connector wasn't restoring the current Response, Application, Context and Virtual Host (thread local variables) when writing the outbound entities. Thanks, Jerome -- http://restlet.com http://twitter.com/#!/jlouvel 2013/1/31 Daniel Halperin dhalp...@cs.washington.edu Hi everyone, I'm just getting started with RESTlet (v.2.1.1, with org.restlet.jee.ext.jackson jee.ext.jaxrs), so I may be doing something very wrong. However, basic things work well for me. For instance, if I return POJOs from a function annotated with @Produces(MediaType.APPLICATION_JSON), they seem to be returned properly. Right now, I'm experimenting with implementing different handlers for different Content-Types. I started with the simplest possible: echo JSON input (converted to String) back as JSON: /** * Class that handles queries. * * @author dhalperi */ @Path(/query) public final class QueryResource { /** * For now, simply echoes back its input. * * @param input the payload of the POST request itself. * @return the payload. */ @POST @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public String postNewQuery(final String input) { return input; } } If I access this resource with an invalid Content-Type (curl -i -XPOST localhost:8753/query -d hi), the curl process hangs and it looks like RESTlet experiences an internal exception deep in its code: Exception in thread Restlet-PipedWritableChannel java.lang.NullPointerException at org.restlet.ext.jaxrs.internal.provider.StringProvider.getCurrentResponseEntityCharset(StringProvider.java:98) at org.restlet.ext.jaxrs.internal.provider.StringProvider.writeTo(StringProvider.java:178) at org.restlet.ext.jaxrs.internal.provider.StringProvider.writeTo(StringProvider.java:63) at org.restlet.ext.jaxrs.internal.wrappers.provider.SingletonProvider.writeTo(SingletonProvider.java:350) at org.restlet.ext.jaxrs.internal.util.JaxRsOutputRepresentation.write(JaxRsOutputRepresentation.java:112) at org.restlet.representation.StreamRepresentation.write(StreamRepresentation.java:76) at org.restlet.engine.io.NioUtils$1.run(NioUtils.java:210) at java.lang.Thread.run(Thread.java:722) Google has literally no hits for 'Restlet-PipedWritableChannel'---so I came here. :) Note that if I use the expected Content-type, it works fine: curl -i -XPOST localhost:8753/query -H Content-type: application/json -d hi INFO: 2013-01-30 18:15:30 127.0.0.1 - - 8753 POST /query - 200 2 2 10 http://localhost:8753 curl/7.28.1 - What suggestions does the group have for me? Thanks! Dan -- http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=3048268
internal NPE exception while handling 415 response
Hi everyone, I'm just getting started with RESTlet (v.2.1.1, with org.restlet.jee.ext.jackson jee.ext.jaxrs), so I may be doing something very wrong. However, basic things work well for me. For instance, if I return POJOs from a function annotated with @Produces(MediaType.APPLICATION_JSON), they seem to be returned properly. Right now, I'm experimenting with implementing different handlers for different Content-Types. I started with the simplest possible: echo JSON input (converted to String) back as JSON: /** * Class that handles queries. * * @author dhalperi */ @Path(/query) public final class QueryResource { /** * For now, simply echoes back its input. * * @param input the payload of the POST request itself. * @return the payload. */ @POST @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public String postNewQuery(final String input) { return input; } } If I access this resource with an invalid Content-Type (curl -i -XPOST localhost:8753/query -d hi), the curl process hangs and it looks like RESTlet experiences an internal exception deep in its code: Exception in thread Restlet-PipedWritableChannel java.lang.NullPointerException at org.restlet.ext.jaxrs.internal.provider.StringProvider.getCurrentResponseEntityCharset(StringProvider.java:98) at org.restlet.ext.jaxrs.internal.provider.StringProvider.writeTo(StringProvider.java:178) at org.restlet.ext.jaxrs.internal.provider.StringProvider.writeTo(StringProvider.java:63) at org.restlet.ext.jaxrs.internal.wrappers.provider.SingletonProvider.writeTo(SingletonProvider.java:350) at org.restlet.ext.jaxrs.internal.util.JaxRsOutputRepresentation.write(JaxRsOutputRepresentation.java:112) at org.restlet.representation.StreamRepresentation.write(StreamRepresentation.java:76) at org.restlet.engine.io.NioUtils$1.run(NioUtils.java:210) at java.lang.Thread.run(Thread.java:722) Google has literally no hits for 'Restlet-PipedWritableChannel'---so I came here. :) Note that if I use the expected Content-type, it works fine: curl -i -XPOST localhost:8753/query -H Content-type: application/json -d hi INFO: 2013-01-30 18:15:30 127.0.0.1 - - 8753 POST /query - 200 2 2 10 http://localhost:8753 curl/7.28.1 - What suggestions does the group have for me? Thanks! Dan -- http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=3046837