You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wink.apache.org by "Mike Rheinheimer (JIRA)" <ji...@apache.org> on 2010/09/03 16:39:34 UTC

[jira] Resolved: (WINK-310) Annotations inherited by a resource class should determine parameter type from the subclass, not the superclass

     [ https://issues.apache.org/jira/browse/WINK-310?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mike Rheinheimer resolved WINK-310.
-----------------------------------

    Fix Version/s: 1.1.2
       Resolution: Fixed

SVN rev 992311.

> Annotations inherited by a resource class should determine parameter type from the subclass, not the superclass
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: WINK-310
>                 URL: https://issues.apache.org/jira/browse/WINK-310
>             Project: Wink
>          Issue Type: Improvement
>          Components: Server
>    Affects Versions: 1.1
>            Reporter: Nick Maynard
>            Assignee: Mike Rheinheimer
>             Fix For: 1.1.2
>
>         Attachments: WINK-310.patch
>
>
> I have a generic service interface, like so:
> public interface GenericService<T> {
>         @POST
>         @Consumes(MediaType.APPLICATION_JSON)
>         public void doSomething(T obj);
> }
> And an implementation of the interface, like so:
> @Path("/impl")
> public class Impl implements GenericService<RealJAXBType> {
>         public void doSomething(RealJAXBType obj) {
>                 // blah blah
>         }
> }
> RealJAXBType is annotated as a JAXB XMLRootElement.  For information's 
> sake, I'm using Apache Wink 1.1 with Jackson 1.5.5.
> When I call the service exposed by the Wink servlet, Wink attempts to 
> deserialize the passed JSON content to an HashMap of some description, not 
> a RealJAXBType.  I assume that's because the @POST annotation is on the 
> generic interface.  My guess is that Wink picks up the "class" of T, which 
> is of course Object (as generic type T isn't scoped), and based on this, 
> attempts a best-effort conversion into a HashMap, which is incompatible 
> with the implementation's type of RealJAXBType.
> I've verified this happens for an abstract superclass as well as an 
> interface, so I guess it's to do with the annotation inheritance code.
> This seems unintuitive - I'd certainly expect Wink to look at the 
> implementation parameter's class when deciding what to attempt to 
> deserialise the JSON content into.  Ideally, I'd like Wink to heed the 
> type of the implementation.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.