You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/07/07 23:07:10 UTC
svn commit: r1608612 -
/tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
Author: rmannibucau
Date: Mon Jul 7 21:07:09 2014
New Revision: 1608612
URL: http://svn.apache.org/r1608612
Log:
ensuring jsonp jsr @Provider and wadl one are always registered
Modified:
tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
Modified: tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java?rev=1608612&r1=1608611&r2=1608612&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java (original)
+++ tomee/tomee/trunk/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java Mon Jul 7 21:07:09 2014
@@ -333,9 +333,16 @@ public class CxfRsHttpListener implement
instances.add(o);
}
}
+
return instances;
}
+ private static void addMandatoryProviders(final Collection<Object> instances) {
+ instances.add(new JsrProvider()); // is this one really mandatory?
+ instances.add(new WadlDocumentMessageBodyWriter());
+ instances.add(EJBAccessExceptionMapper.INSTANCE);
+ }
+
private Object newProvider(final Class<?> clazz) throws IllegalAccessException, InstantiationException {
return clazz.newInstance();
}
@@ -558,7 +565,7 @@ public class CxfRsHttpListener implement
return factory;
}
- private void configureFactory(final Collection<Object> additionalProviders, final ServiceConfiguration serviceConfiguration, final JAXRSServerFactoryBean factory) {
+ private void configureFactory(final Collection<Object> givenAdditionalProviders, final ServiceConfiguration serviceConfiguration, final JAXRSServerFactoryBean factory) {
CxfUtil.configureEndpoint(factory, serviceConfiguration, CXF_JAXRS_PREFIX);
final Collection<ServiceInfo> services = serviceConfiguration.getAvailableServices();
@@ -617,6 +624,10 @@ public class CxfRsHttpListener implement
}
}
+ // another property to configure the scanning of providers but this one is consistent with current cxf config
+ // the other one is more generic but need another file
+ final boolean ignoreAutoProviders = "false".equalsIgnoreCase(serviceConfiguration.getProperties().getProperty(CXF_JAXRS_PREFIX + "skip-provider-scanning"));
+ final Collection<Object> additionalProviders = ignoreAutoProviders ? Collections.emptyList() : givenAdditionalProviders;
List<Object> providers = null;
if (providersConfig != null) {
providers = ServiceInfos.resolve(services, providersConfig.toArray(new String[providersConfig.size()]), ProviderFactory.INSTANCE);
@@ -625,7 +636,7 @@ public class CxfRsHttpListener implement
}
}
if (providers == null) {
- providers = new ArrayList<Object>();
+ providers = new ArrayList<Object>(4);
if (additionalProviders != null && !additionalProviders.isEmpty()) {
providers.addAll(providers(services, additionalProviders));
} else {
@@ -633,12 +644,13 @@ public class CxfRsHttpListener implement
}
}
- // add the EJB access exception mapper
- providers.add(EJBAccessExceptionMapper.INSTANCE);
+ if (!ignoreAutoProviders) {
+ addMandatoryProviders(providers);
+ }
LOGGER.info("Using providers:");
for (final Object provider : providers) {
- LOGGER.info(" " + provider);
+ LOGGER.info(" " + provider);
}
factory.setProviders(providers);
}
@@ -649,7 +661,10 @@ public class CxfRsHttpListener implement
jaxbProperties.put(Marshaller.JAXB_FRAGMENT, true);
jaxb.setMarshallerProperties(jaxbProperties);
- return Arrays.asList((Object) new WadlDocumentMessageBodyWriter(), new FleeceProvider<>(), new JsrProvider(), jaxb);
+ final List<Object> providers = new ArrayList<>(4);
+ providers.add(jaxb);
+ providers.add(new FleeceProvider<>());
+ return providers;
}
private static class ProviderFactory implements ServiceInfos.Factory {