You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Daumantas (JIRA)" <ji...@apache.org> on 2015/03/13 16:02:39 UTC

[jira] [Comment Edited] (CXF-6299) Providers registered in cxf bus are ignored.

    [ 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)