Sambit Dikshit created CXF-4799:
-----------------------------------

             Summary: Parameterized Classes should be automatically added to 
JAXBContext
                 Key: CXF-4799
                 URL: https://issues.apache.org/jira/browse/CXF-4799
             Project: CXF
          Issue Type: Improvement
          Components: JAXB Databinding
    Affects Versions: 2.7.2
            Reporter: Sambit Dikshit


We are using a payload type which is a parameterized generic. For example, 
ServiceResponse<T>  { 

T payload;

public T getPayload() { 
return T
}

public void setPayload(T t){
this.payload = t;
}

We are using this as a payload wrapper for JAXRS services.  The payload can be 
any type at runtime. Unless we set the extraClass, the JAXBContext created in 
AbstractJAXBProvider is not picking up the actual parameter types. I was 
thinking of extending to add to existing jaxb context map, i could not since 
its a private scoped hashmap. This should be automatically handled in 
AbstractJAXBProvider class.  Following check can be made and added for actual 
type. 

ParameterizedType paramType = (genericType instanceof ParameterizedType) ? 
(ParameterizedType) genericType: null;
if (paramType.getActualTypeArguments().length > 0) {
  // Fetch the actual type at index 0
   actualWrapperParamType = InjectionUtils.getType(
   paramType.getActualTypeArguments(), 0);
   Class<?> actualWrapperClass = 
InjectionUtils.getActualType(actualWrapperParamType);
                                
This actual class type check can be done inside getJAXBContext. This will do 
automatic deep check and setting into JAXB context only for custom payload 
types. 

Or else expose the jaxb context map to be accessible when extend 
AbstractJAXBprovider or JAXBElementProvider.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to