[ 
https://issues.apache.org/jira/browse/CXF-6299?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14360458#comment-14360458
 ] 

Daumantas edited comment on CXF-6299 at 3/13/15 3:02 PM:
---------------------------------------------------------

addBusExtension() methos is called and providers are set to current 
ProviderFactory, but each jaxrs:server with serviceBeans inside gets new 
reference of ProviderFactory and it doesn't have providers from bus.
For test case try defining some more custom provider inside bus. F.e. instance 
of javax.ws.rs.container.ContainerRequestFilter class with 
filter(ContainerRequestContext) method overridden.


was (Author: dstulgis):
addBusExtension() methos is called and providers are set to current 
ProviderFactory, but each jaxrs:server with serviceBeans inside gets new 
reference of ProviderFactory and it doesn't have providers from bus.
For test case try defining some more custom provider inside. F.e. instance of 
javax.ws.rs.container.ContainerRequestFilter class with 
filter(ContainerRequestContext) method overridden.

> Providers registered in cxf bus are ignored.
> --------------------------------------------
>
>                 Key: CXF-6299
>                 URL: https://issues.apache.org/jira/browse/CXF-6299
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 2.7.8, 2.7.15
>         Environment: JDK 1.7.0_55
>            Reporter: Daumantas
>
> Providers list configured following 
> http://cxf.apache.org/docs/jaxrs-services-configuration.html documentation.
> Bus object created with configuration and is being set to ProviderFactory, 
> but configured providers from bus are never used by ProviderFactory.
> To fix problem following example can be used (updated existing initialization 
> method):
> {code:title=AbstractJAXRSFactoryBean|language=java}
> ...
>     private static final Object BUS_PROVIDERS_ALL = 
> "org.apache.cxf.jaxrs.bus.providers";
> ...
>     protected ProviderFactory setupFactory(Endpoint ep) { 
>         ProviderFactory factory = ProviderFactory.createInstance(getBus()); 
>         if (entityProviders != null) {
>             Map<String, Object> busProperties = getBus().getProperties();
>             List<?> busProviders = 
> (List<?>)busProperties.get(BUS_PROVIDERS_ALL);
>             if (busProviders != null) {
>                 entityProviders.addAll(busProviders);
>             }
>             factory.setUserProviders(entityProviders);
>         }
>         setDataBindingProvider(factory, ep.getService());
>         
>         factory.setBus(getBus());
>         factory.initProviders(serviceFactory.getRealClassResourceInfo());
>         if (schemaLocations != null) {
>             factory.setSchemaLocations(schemaLocations);
>         }
>         
>         setBeanInfo(factory);
>         
>         ep.put(ProviderFactory.class.getName(), factory);
>         getBus().setProperty(ProviderFactory.class.getName(), factory);
>         return factory;
>     }
> ...
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to