[ 
https://issues.apache.org/jira/browse/WINK-218?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12768230#action_12768230
 ] 

Kaloyan Kolev commented on WINK-218:
------------------------------------

{quote}
Not exactly. The GenericEntity is used to represent a response entity of a 
generic type.
For example, if there is a provider that accepts List of a specific type, the 
GenericEntity will be the solution.
{quote}
Yes this is the reason why I thought that if there is a provider that is able 
to serialize a AtomEntry then it will be able to serialize a derivative class 
by using the generic type. 

{quote}
In your case, the JAXBXmlProvider doesn't expect to handle any specific generic 
types, but only supported raw types. Therefore, it cannot find a provider since 
raw type is XAtomEntity and it doesn't have any JAXB annotations.
{quote}

What is the reason for this provider to not be able to handle any objects of 
known generic types? After all the XAtomEntry is an instance of AtomEntry, so I 
don't see why this won't work always.

I checked the specification and it does not enforce such obligation on the 
providers so I agree it is not a bug (as I was assuming) but probably an 
enhancement request. Do you think I should close this and open a feature 
request?

Thanks.

> GenericEntity's generic type is not used when choosing provider.
> ----------------------------------------------------------------
>
>                 Key: WINK-218
>                 URL: https://issues.apache.org/jira/browse/WINK-218
>             Project: Wink
>          Issue Type: Bug
>          Components: Common
>    Affects Versions: 0.2
>            Reporter: Kaloyan Kolev
>
> I have created a subclass of the AtomEntry, let's say XAtomEntry. When I 
> return that as an entity resource I get exception that there is no provider 
> for that type. The exception is thrown by FlushResultHandler. I tried to wrap 
> the new type in a GenericEntity with a generic type set to AtomEntry, but the 
> result was the same.
> Here is the check for the GenericEntity:
> {code}
>  Class<?> rawType = null;
>         if (entity instanceof GenericEntity) {
>             GenericEntity<?> genericEntity = (GenericEntity<?>)entity; 
>             entity = genericEntity.getEntity(); // this is the XAtomEntity 
> instance
>             rawType = genericEntity.getRawType(); // this is the  XAtomEntity 
> class
>             genericType = genericEntity.getType(); // this is the AtomEntity 
> class
>         } else {
>             rawType = (entity != null ? entity.getClass() : null);
>             if (isOriginalEntityResponseObj) {
>                 genericType = rawType;
>             } else {
>                 genericType = (genericType != null ? genericType : rawType);
>             }
>         }
> {code}
> This should match the default JAXBXmlProvider, right? 
> Later a provider is searched for:
> {code}
> // get the provider to write the entity
>         Providers providers = context.getProviders();
>         MessageBodyWriter<Object> messageBodyWriter =
>             (MessageBodyWriter<Object>)providers.getMessageBodyWriter(rawType,
>                                                                       
> genericType,
>                                                                       
> declaredAnnotations,
>                                                                       
> responseMediaType);
> {code}
> Here the messageBodyWriter is set to null.

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

Reply via email to