You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2012/07/28 21:05:47 UTC

svn commit: r1366743 - in /cxf/branches/2.5.x-fixes: ./ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java systests/jaxrs/src/test/resources/jaxrs_non_spring/WEB-INF/web.xml

Author: sergeyb
Date: Sat Jul 28 19:05:47 2012
New Revision: 1366743

URL: http://svn.apache.org/viewvc?rev=1366743&view=rev
Log:
Merged revisions 1366742 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/branches/2.6.x-fixes

................
  r1366742 | sergeyb | 2012-07-28 20:02:48 +0100 (Sat, 28 Jul 2012) | 9 lines
  
  Merged revisions 1366740 via svnmerge from 
  https://svn.apache.org/repos/asf/cxf/trunk
  
  ........
    r1366740 | sergeyb | 2012-07-28 19:57:05 +0100 (Sat, 28 Jul 2012) | 1 line
    
    [CXF-4445] Making a comma a default char for splitting multiple parameters, supporting 'space' for backward comp
  ........
................

Modified:
    cxf/branches/2.5.x-fixes/   (props changed)
    cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java
    cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/resources/jaxrs_non_spring/WEB-INF/web.xml

Propchange: cxf/branches/2.5.x-fixes/
------------------------------------------------------------------------------
  Merged /cxf/trunk:r1366740
  Merged /cxf/branches/2.6.x-fixes:r1366742

Propchange: cxf/branches/2.5.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java?rev=1366743&r1=1366742&r2=1366743&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java (original)
+++ cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java Sat Jul 28 19:05:47 2012
@@ -37,6 +37,7 @@ import javax.ws.rs.ext.RuntimeDelegate;
 import org.apache.cxf.common.classloader.ClassLoaderUtils;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.PrimitiveUtils;
+import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.interceptor.Interceptor;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
@@ -77,15 +78,22 @@ public class CXFNonSpringJaxrsServlet ex
     private static final String SERVICE_SCOPE_SINGLETON = "singleton";
     private static final String SERVICE_SCOPE_REQUEST = "prototype";
     
+    private static final String PARAMETER_SPLIT_CHAR = "class.parameter.split.char";
+    private static final String DEFAULT_PARAMETER_SPLIT_CHAR = ",";
+    private static final String SPACE_PARAMETER_SPLIT_CHAR = "space";
+    
     private static final String JAXRS_APPLICATION_PARAM = "javax.ws.rs.Application";
     
     
     @Override
     public void init(ServletConfig servletConfig) throws ServletException {
         super.init(servletConfig);
+        
+        String splitChar = getParameterSplitChar(servletConfig);
+                
         String applicationClass = servletConfig.getInitParameter(JAXRS_APPLICATION_PARAM);
         if (applicationClass != null) {
-            createServerFromApplication(applicationClass, servletConfig);
+            createServerFromApplication(applicationClass, servletConfig, splitChar);
             return;
         }
         
@@ -106,15 +114,15 @@ public class CXFNonSpringJaxrsServlet ex
         }
         setDocLocation(bean, servletConfig);
         setSchemasLocations(bean, servletConfig);
-        setAllInterceptors(bean, servletConfig);
+        setAllInterceptors(bean, servletConfig, splitChar);
         setInvoker(bean, servletConfig);
         
         Map<Class, Map<String, String>> resourceClasses = 
-            getServiceClasses(servletConfig, modelRef != null);
+            getServiceClasses(servletConfig, modelRef != null, splitChar);
         Map<Class, ResourceProvider> resourceProviders = 
             getResourceProviders(servletConfig, resourceClasses);
         
-        List<?> providers = getProviders(servletConfig);
+        List<?> providers = getProviders(servletConfig, splitChar);
                 
         bean.setResourceClasses(new ArrayList<Class>(resourceClasses.keySet()));
         bean.setProviders(providers);
@@ -126,6 +134,14 @@ public class CXFNonSpringJaxrsServlet ex
         bean.create();
     }
 
+    protected String getParameterSplitChar(ServletConfig servletConfig) {
+        String param = servletConfig.getInitParameter(PARAMETER_SPLIT_CHAR);
+        if (!StringUtils.isEmpty(param) && SPACE_PARAMETER_SPLIT_CHAR.equals(param.trim())) {
+            return " ";
+        } else {
+            return DEFAULT_PARAMETER_SPLIT_CHAR;
+        }
+    }
     protected boolean getStaticSubResolutionValue(ServletConfig servletConfig) {
         String param = servletConfig.getInitParameter(STATIC_SUB_RESOLUTION_PARAM);
         if (param != null) {
@@ -145,11 +161,12 @@ public class CXFNonSpringJaxrsServlet ex
                 String.class, Object.class));
     }
     
-    protected void setAllInterceptors(JAXRSServerFactoryBean bean, ServletConfig servletConfig) 
+    protected void setAllInterceptors(JAXRSServerFactoryBean bean, ServletConfig servletConfig, 
+                                      String splitChar) 
         throws ServletException {
-        setInterceptors(bean, servletConfig, OUT_INTERCEPTORS_PARAM);
-        setInterceptors(bean, servletConfig, OUT_FAULT_INTERCEPTORS_PARAM);
-        setInterceptors(bean, servletConfig, IN_INTERCEPTORS_PARAM);
+        setInterceptors(bean, servletConfig, OUT_INTERCEPTORS_PARAM, splitChar);
+        setInterceptors(bean, servletConfig, OUT_FAULT_INTERCEPTORS_PARAM, splitChar);
+        setInterceptors(bean, servletConfig, IN_INTERCEPTORS_PARAM, splitChar);
     }
     
     protected void setSchemasLocations(JAXRSServerFactoryBean bean, ServletConfig servletConfig) {
@@ -179,12 +196,13 @@ public class CXFNonSpringJaxrsServlet ex
     
     @SuppressWarnings("unchecked")
     protected void setInterceptors(JAXRSServerFactoryBean bean, ServletConfig servletConfig,
-                                   String paramName) throws ServletException {
+                                   String paramName,
+                                   String splitChar) throws ServletException {
         String value  = servletConfig.getInitParameter(paramName);
         if (value == null) {
             return;
         }
-        String[] values = value.split(" ");
+        String[] values = value.split(splitChar);
         List<Interceptor<? extends Message>> list = new ArrayList<Interceptor<? extends Message>>();
         for (String interceptorVal : values) {
             Map<String, String> props = new HashMap<String, String>();
@@ -240,7 +258,8 @@ public class CXFNonSpringJaxrsServlet ex
     }
     
     protected Map<Class, Map<String, String>> getServiceClasses(ServletConfig servletConfig,
-                                            boolean modelAvailable) throws ServletException {
+                                            boolean modelAvailable,
+                                            String splitChar) throws ServletException {
         String serviceBeans = servletConfig.getInitParameter(SERVICE_CLASSES_PARAM);
         if (serviceBeans == null) {
             if (modelAvailable) {
@@ -248,7 +267,7 @@ public class CXFNonSpringJaxrsServlet ex
             }
             throw new ServletException("At least one resource class should be specified");
         }
-        String[] classNames = serviceBeans.split(" ");
+        String[] classNames = serviceBeans.split(splitChar);
         Map<Class, Map<String, String>> map = new HashMap<Class, Map<String, String>>();
         for (String cName : classNames) {
             Map<String, String> props = new HashMap<String, String>();
@@ -264,12 +283,12 @@ public class CXFNonSpringJaxrsServlet ex
         return map;
     }
     
-    protected List<?> getProviders(ServletConfig servletConfig) throws ServletException {
+    protected List<?> getProviders(ServletConfig servletConfig, String splitChar) throws ServletException {
         String providersList = servletConfig.getInitParameter(PROVIDERS_PARAM);
         if (providersList == null) {
             return Collections.EMPTY_LIST;
         }
-        String[] classNames = providersList.split(" ");
+        String[] classNames = providersList.split(splitChar);
         List<Object> providers = new ArrayList<Object>();
         for (String cName : classNames) {
             Map<String, String> props = new HashMap<String, String>();
@@ -376,7 +395,8 @@ public class CXFNonSpringJaxrsServlet ex
         
     }
     
-    protected void createServerFromApplication(String cName, ServletConfig servletConfig) 
+    protected void createServerFromApplication(String cName, ServletConfig servletConfig,
+                                               String splitChar) 
         throws ServletException {
         Map<String, String> props = new HashMap<String, String>();
         cName = getClassNameAndProperties(cName, props);
@@ -387,7 +407,7 @@ public class CXFNonSpringJaxrsServlet ex
         JAXRSServerFactoryBean bean = ResourceUtils.createApplication(app, 
                                             MessageUtils.isTrue(ignoreParam),
                                             getStaticSubResolutionValue(servletConfig));
-        setAllInterceptors(bean, servletConfig);
+        setAllInterceptors(bean, servletConfig, splitChar);
         setInvoker(bean, servletConfig);
         setExtensions(bean, servletConfig);
         setDocLocation(bean, servletConfig);

Modified: cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/resources/jaxrs_non_spring/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/resources/jaxrs_non_spring/WEB-INF/web.xml?rev=1366743&r1=1366742&r2=1366743&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/resources/jaxrs_non_spring/WEB-INF/web.xml (original)
+++ cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/resources/jaxrs_non_spring/WEB-INF/web.xml Sat Jul 28 19:05:47 2012
@@ -40,6 +40,14 @@
 		           org.apache.cxf.systest.jaxrs.BookStore
 		      </param-value>    
 		</init-param>
+		<init-param>
+		      <param-name>jaxrs.providers</param-name>
+		      <param-value>
+		           org.apache.cxf.jaxrs.provider.json.JSONProvider(dropRootElement=false attributesToElements=true),
+		           org.apache.cxf.jaxrs.provider.JAXBElementProvider
+		      </param-value>    
+		</init-param>
+		
 		<load-on-startup>1</load-on-startup>
 	</servlet>