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 {