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=4447&dsMessageId=3048597