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 2009/10/06 17:24:28 UTC

svn commit: r822315 - in /cxf/branches/2.2.x-fixes: ./ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java

Author: sergeyb
Date: Tue Oct  6 15:24:16 2009
New Revision: 822315

URL: http://svn.apache.org/viewvc?rev=822315&view=rev
Log:
Merged revisions 822312 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r822312 | sergeyb | 2009-10-06 16:19:10 +0100 (Tue, 06 Oct 2009) | 1 line
  
  JAXRS : minor update to CXFNonSpringJaxrsServlet to support out/in interceptors
........

Modified:
    cxf/branches/2.2.x-fixes/   (props changed)
    cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java

Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Oct  6 15:24:16 2009
@@ -1 +1 @@
-/cxf/trunk:822228
+/cxf/trunk:822228,822312

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

Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java?rev=822315&r1=822314&r2=822315&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java Tue Oct  6 15:24:16 2009
@@ -38,6 +38,7 @@
 
 import org.apache.cxf.common.classloader.ClassLoaderUtils;
 import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.interceptor.Interceptor;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.lifecycle.PerRequestResourceProvider;
 import org.apache.cxf.jaxrs.lifecycle.ResourceProvider;
@@ -53,6 +54,8 @@
     private static final String SERVICE_ADDRESS_PARAM = "jaxrs.address";
     private static final String SERVICE_CLASSES_PARAM = "jaxrs.serviceClasses";
     private static final String PROVIDERS_PARAM = "jaxrs.providers";
+    private static final String OUT_INTERCEPTORS_PARAM = "jaxrs.outInterceptors";
+    private static final String IN_INTERCEPTORS_PARAM = "jaxrs.inInterceptors";
     private static final String SERVICE_SCOPE_PARAM = "jaxrs.scope";
     private static final String SCHEMAS_PARAM = "jaxrs.schemaLocations";
     private static final String SERVICE_SCOPE_SINGLETON = "singleton";
@@ -83,6 +86,8 @@
         }
         
         setSchemasLocations(bean, servletConfig);
+        setInterceptors(bean, servletConfig, OUT_INTERCEPTORS_PARAM);
+        setInterceptors(bean, servletConfig, IN_INTERCEPTORS_PARAM);
         
         List<Class> resourceClasses = getServiceClasses(servletConfig, modelRef != null);
         Map<Class, ResourceProvider> resourceProviders = 
@@ -116,6 +121,42 @@
         }
     }
     
+    protected void setInterceptors(JAXRSServerFactoryBean bean, ServletConfig servletConfig,
+                                   String paramName) {
+        String value  = servletConfig.getInitParameter(paramName);
+        if (value == null) {
+            return;
+        }
+        String[] values = value.split(" ");
+        List<Interceptor> list = new ArrayList<Interceptor>();
+        for (String interceptorVal : values) {
+            String theValue = interceptorVal.trim();
+            if (theValue.length() != 0) {
+                try {
+                    Class<?> intClass = ClassLoaderUtils.loadClass(theValue,
+                                                                   CXFNonSpringJaxrsServlet.class);
+                    list.add((Interceptor)intClass.newInstance());
+                } catch (ClassNotFoundException ex) {
+                    LOG.warning("Interceptor class " + theValue + " can not be found");
+                } catch (InstantiationException ex) {
+                    LOG.warning(theValue + " class can not be instantiated");
+                    ex.printStackTrace();
+                } catch (IllegalAccessException ex) {
+                    LOG.warning("CXF Interceptor can not be instantiated due to IllegalAccessException"); 
+                } catch (ClassCastException ex) {
+                    LOG.warning(theValue + " class does not implement " + Interceptor.class.getName()); 
+                }
+            }
+        }
+        if (list.size() > 0) {
+            if (OUT_INTERCEPTORS_PARAM.equals(paramName)) {
+                bean.setOutInterceptors(list);
+            } else {
+                bean.setInInterceptors(list);
+            }
+        }
+    }
+    
     protected List<Class> getServiceClasses(ServletConfig servletConfig,
                                             boolean modelAvailable) throws ServletException {
         String serviceBeans = servletConfig.getInitParameter(SERVICE_CLASSES_PARAM);