[ https://issues.apache.org/jira/browse/CXF-4799?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13573829#comment-13573829 ]
Sambit Dikshit commented on CXF-4799: ------------------------------------- Comments this out and try in the testCase - testGenericsAndSingleContext2 // provider.init(Collections.singletonList(cri)); Also try a full blown client / server model. Where the client is hitting jaxrs service using WebClient. How this provider.init method get called in a configuration like this in server side. <jaxrs:server address="http://localhost:8080/jaxrs"> <jaxrs:serviceBeans> <ref bean="bookstore" /> </jaxrs:serviceBeans> <jaxrs:providers> <ref bean="jaxbProvider" /> </jaxrs:providers> </jaxrs:server> <bean id="jaxbProvider" class="com.foo.soa.providers.JAXBElementProvider"> </bean> In your example when you call provider.init(), the flow is completely different and what is written in that should happen when readFrom/writeTo call happens. When i configure a jaxb provider as a bean, i didnt see the init method getting called. > 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