I am using Restlet v2.1m3.

I recently began working on adding JSON as an available media type on top of 
existing XML functionality through JAXB. While I have had no real issues with 
GET calls Accepting application/json, PUT calls seem to be ignoring the 
availability of the Jackson converter.

Example resource contains:

  @Get("xml|json") 
  public Card lookup()

  @Put("xml|json:xml|json")
  public Card change(Card card)

Traces of the conversion selection from Restlet:

GET:

2012-03-20 15:44:33,590 TRACE org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-21 - Delegating the call to the target Restlet
2012-03-20 15:44:33,590 TRACE org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-21 - Call score for the "" URI pattern: 1.0
2012-03-20 15:44:33,590 DEBUG org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-21 - Selected route: "" -> Finder for CardResource
2012-03-20 15:44:33,590 TRACE org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-21 - No characters were matched
2012-03-20 15:44:33,593 DEBUG org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-21 - Score of annotation "AnnotationInfo [javaMethod: public 
com.s1.payments.services.dao.postcard.Card 
com.s1.payments.services.resources.postcard.CardResource.lookup(), 
resourceInterface: class 
com.s1.payments.services.resources.postcard.CardResource, restletMethod: GET, 
input: xml|json, output: xml|json, query: null]"= 0.5
2012-03-20 15:44:33,593 DEBUG org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-21 - Total score of variant "[text/xml]"= 0.08358333
2012-03-20 15:44:33,593 DEBUG org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-21 - Score of annotation "AnnotationInfo [javaMethod: public 
com.s1.payments.services.dao.postcard.Card 
com.s1.payments.services.resources.postcard.CardResource.lookup(), 
resourceInterface: class 
com.s1.payments.services.resources.postcard.CardResource, restletMethod: GET, 
input: xml|json, output: xml|json, query: null]"= 0.5
2012-03-20 15:44:33,593 DEBUG org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-21 - Total score of variant "[application/xml]"= 0.08483333
2012-03-20 15:44:33,593 DEBUG org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-21 - Score of annotation "AnnotationInfo [javaMethod: public 
com.s1.payments.services.dao.postcard.Card 
com.s1.payments.services.resources.postcard.CardResource.lookup(), 
resourceInterface: class 
com.s1.payments.services.resources.postcard.CardResource, restletMethod: GET, 
input: xml|json, output: xml|json, query: null]"= 0.5
2012-03-20 15:44:33,593 DEBUG org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-21 - Total score of variant "[application/json]"= 0.33333334
2012-03-20 15:44:33,650 DEBUG org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-21 - Converter selected for Card: JacksonConverter

PUT:

2012-03-20 16:14:52,654 TRACE org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-18 - Delegating the call to the target Restlet
2012-03-20 16:14:52,654 TRACE org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-18 - Call score for the "" URI pattern: 1.0
2012-03-20 16:14:52,654 DEBUG org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-18 - Selected route: "" -> Finder for CardResource
2012-03-20 16:14:52,654 TRACE org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-18 - No characters were matched
2012-03-20 16:14:52,658 DEBUG org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-18 - Score of annotation "AnnotationInfo [javaMethod: public 
com.s1.payments.services.dao.postcard.Card 
com.s1.payments.services.resources.postcard.CardResource.change(com.s1.payments.services.dao.postcard.Card),
 resourceInterface: class 
com.s1.payments.services.resources.postcard.CardResource, restletMethod: PUT, 
input: xml|json, output: xml|json, query: null]"= 0.5
2012-03-20 16:14:52,658 DEBUG org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-18 - Total score of variant "[text/xml]"= 0.08358333
2012-03-20 16:14:52,658 DEBUG org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-18 - Score of annotation "AnnotationInfo [javaMethod: public 
com.s1.payments.services.dao.postcard.Card 
com.s1.payments.services.resources.postcard.CardResource.change(com.s1.payments.services.dao.postcard.Card),
 resourceInterface: class 
com.s1.payments.services.resources.postcard.CardResource, restletMethod: PUT, 
input: xml|json, output: xml|json, query: null]"= 0.5
2012-03-20 16:14:52,658 DEBUG org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-18 - Total score of variant "[application/xml]"= 0.08483333
2012-03-20 16:14:52,658 DEBUG org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-18 - Score of annotation "AnnotationInfo [javaMethod: public 
com.s1.payments.services.dao.postcard.Card 
com.s1.payments.services.resources.postcard.CardResource.change(com.s1.payments.services.dao.postcard.Card),
 resourceInterface: class 
com.s1.payments.services.resources.postcard.CardResource, restletMethod: PUT, 
input: xml|json, output: xml|json, query: null]"= 0.5
2012-03-20 16:14:52,658 DEBUG org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-18 - Total score of variant "[application/json]"= 0.33333334
2012-03-20 16:14:52,659 DEBUG org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-18 - The following converter was selected for the 
[application/json] representation: org.restlet.ext.jaxb.JaxbConverter@166fdde
2012-03-20 16:14:52,663 WARN  org.restlet.Component.InternalRouter.RESTServices 
- qtp29056009-18 - Unable to unmarshal the XML representation

In the GET call, my headers are as follows (from WFetch):

Accept: application/json\r\n
Host: researchdev-vm\r\n
Authorization: Basic dGVzdDpQMHN0MWwxMG4=\r\n


In the PUT call, my headers are as follows (from WFetch):

Accept: application/json\r\n
Content-Type: application/json\r\n
Host: researchdev-vm\r\n
Content-Length:1249\r\n
Authorization: Basic dGVzdDpQMHN0MWwxMG4=\r\n

Anyone able to provide any insight into why this could be occurring? Based on 
the variant scores JacksonConverter should be chosen, but there's not a lot of 
debug information showing the actual connection between the Variant and the 
chosen Converter in terms of decision making.

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2938058

Reply via email to