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

Reply via email to