[
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