Quick update - I put in explicit media types for the @Post() annotations on my implementing classes, e.g.: @Post("json") public Representation acceptJson(String jsonString) {
And that has fixed the problem both when going through tcpmon and without tcpmon involved. I wasn't able to figure out if tcpmon changes the headers. All is good now - thanks again for your help!! RB On Thu, Feb 23, 2012 at 1:00 AM, Thierry Templier [via Restlet Discuss] < ml-node+s1400322n7311238...@n2.nabble.com> wrote: > Hello Richard, > > I answer in the message content. > > Thierry: > > Thanks so much for your help. The short version is that the latest > Restlet JS code (plus one change in my code) fixes my problem with post(). > There is one "strangeness" that I will describe below, but it isn't a big > problem for me at this point, but I will describe it below in case you > think it matters. Again, thank you!! And, please let me know if there is > any testing that I can do for you. > > You're welcome! Thanks very much for your proposal! > > Details... > I installed the new scripts. Only part that confused me was that I > initially took restlet-browser.js from: > * modules\org.restlet.js\src\dist\restlet-browser.js > But that was the wrong file, I had to use: > * tests\org.restlet.js.tests\src\browser\static\restlet\restlet-browser.js > if that is what was intended, all is fine. > > The restlet-browser.js in the modules/org.restlet.js/src/dist folder is > the assembly file that selects which files to include in the Restlet JS > edition for browser. After having run Ant with build.browser task, the js > file for the edition can be found in the > modules/org.restlet.js/target/browser directory. > > Once I put in the right restlet-browser.js, I ran my test and got a 415 > error. So I ran the test through tcpmon - and when going through tcpmon - > it worked! But the mystery was that when going through tcpmon, the server > side method "acceptJava()" was being called, not "acceptJson()". I changed > the ordering as per your email, but that still didn't fix my problem (but I > did discover that the re-ordering is indeed necessary, but that is getting > ahead of the story). > > Do you know if tcpmon updates the request by adding or removing some HTTP > headers? > > > At this point I had: > public interface CommitmentsResource { > @Post("json") > public String acceptJson(String value); // For JSON > @Post("form") > public Representation accept(Form form); // For HTML form > @Post() > public Representation acceptJava(Commitment commitment); // For Java post > } > > And... > public class CommitmentsServerResource extends WadlServerResource > implements CommitmentsResource { > @Post > public Representation acceptJava(Commitment commitment) { > } > @Override > public String acceptJson(String value) { > } > @Override > // This is the code that actually handles posts that come from forms and > http posts > public Representation accept(Form form) { > } > I had the thought that acceptJava was the one being called since it was > the only one with the @Post annotation. I changed the @Override > annotations to @Post. And then the Javascript post was handled by the > acceptJson method (which I then fleshed out and changed to return a > Represenation). > > Everything would be perfect at this point, except for the "strangeness". > Now when I run the test through tcpmon, I get a 415 error there. The call > does make it to the server, since I get an error in the console along the > lines of: > Feb 22, 2012 3:07:33 PM org.restlet.ext.jackson.JacksonRepresentation > getObject > WARNING: Unable to parse the object with Jackson. > org.codehaus.jackson.map.JsonMappingException: Can not deserialize > instance of org.restlet.data.Form out of START_OBJECT token > at [Source: org.restlet.engine.io.UnclosableInputStream@41c7d56b; line: > 1, column: 1] > at > org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163) > ..... > > And then to try and break my "non-tcpmon" client, I changed the ordering > of the @Post methods, and that did indeed break things as you had predicted. > > I discussed this issue with Restlet team and the problem comes from the > Jackson extension. In fact, there is a problem when computing scores to > route to the right method. They're working on this issue... > > > Thanks again!! > RB > > Thierry > > > ------------------------------ > If you reply to this email, your message will be added to the discussion > below: > > http://restlet-discuss.1400322.n2.nabble.com/Post-problems-when-using-Restlet-Javascript-Edition-tp7270413p7311238.html > To unsubscribe from Post problems when using Restlet Javascript > Edition..., click > here<http://restlet-discuss.1400322.n2.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=7270413&code=cmljaGFyZEBsYW5kaXNmYW1pbHkub3JnfDcyNzA0MTN8LTYxMDE0ODc2> > . > NAML<http://restlet-discuss.1400322.n2.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> > -- View this message in context: http://restlet-discuss.1400322.n2.nabble.com/Post-problems-when-using-Restlet-Javascript-Edition-tp7270413p7313473.html Sent from the Restlet Discuss mailing list archive at Nabble.com. ------------------------------------------------------ http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2926014