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 2015/02/23 17:45:47 UTC

cxf git commit: [CXF-6132] Moving the initializer to a package different from the jaxrs frontend package and also moving META-INF resource from systests to the http-sci module

Repository: cxf
Updated Branches:
  refs/heads/master 992e3d604 -> 8077aaa7e


[CXF-6132] Moving the initializer to a package different from the jaxrs frontend package and also moving META-INF resource from systests to the http-sci module


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/8077aaa7
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/8077aaa7
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/8077aaa7

Branch: refs/heads/master
Commit: 8077aaa7e2968f53978b7deb3f9582c0279d3901
Parents: 992e3d6
Author: Sergey Beryozkin <sb...@talend.com>
Authored: Mon Feb 23 16:45:31 2015 +0000
Committer: Sergey Beryozkin <sb...@talend.com>
Committed: Mon Feb 23 16:45:31 2015 +0000

----------------------------------------------------------------------
 .../JaxrsServletContainerInitializer.java       | 195 ------------------
 .../sci/JaxrsServletContainerInitializer.java   | 196 +++++++++++++++++++
 .../javax.servlet.ServletContainerInitializer   |   1 +
 .../javax.servlet.ServletContainerInitializer   |   1 -
 4 files changed, 197 insertions(+), 196 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/8077aaa7/rt/rs/http-sci/src/main/java/org/apache/cxf/jaxrs/servlet/JaxrsServletContainerInitializer.java
----------------------------------------------------------------------
diff --git a/rt/rs/http-sci/src/main/java/org/apache/cxf/jaxrs/servlet/JaxrsServletContainerInitializer.java b/rt/rs/http-sci/src/main/java/org/apache/cxf/jaxrs/servlet/JaxrsServletContainerInitializer.java
deleted file mode 100644
index 18473f2..0000000
--- a/rt/rs/http-sci/src/main/java/org/apache/cxf/jaxrs/servlet/JaxrsServletContainerInitializer.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.jaxrs.servlet;
-
-import java.lang.annotation.Annotation;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.logging.Logger;
-
-import javax.servlet.ServletContainerInitializer;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRegistration;
-import javax.servlet.ServletRegistration.Dynamic;
-import javax.servlet.annotation.HandlesTypes;
-import javax.ws.rs.ApplicationPath;
-import javax.ws.rs.Path;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.ext.Provider;
-
-import org.apache.cxf.common.logging.LogUtils;
-
-@HandlesTypes({ Application.class, Provider.class, Path.class })
-public class JaxrsServletContainerInitializer implements ServletContainerInitializer {  
-    private static final Logger LOG = LogUtils.getL7dLogger(JaxrsServletContainerInitializer.class);
-    private static final String IGNORE_PACKAGE = "org.apache.cxf";
-    
-    private static final String JAXRS_APPLICATION_SERVLET_NAME = "javax.ws.rs.core.Application";
-    private static final String JAXRS_APPLICATION_PARAM = "javax.ws.rs.Application";
-    private static final String CXF_JAXRS_APPLICATION_PARAM = "jaxrs.application";
-    private static final String CXF_JAXRS_CLASSES_PARAM = "jaxrs.classes";
-        
-    @Override
-    public void onStartup(final Set< Class< ? > > classes, final ServletContext ctx) throws ServletException {        
-        Application app = null;
-        String servletName = null;
-        String servletMapping = null;
-        
-        final Class< ? > appClass = findCandidate(classes);
-        if (appClass != null) {
-            // The best effort at detecting a CXFNonSpringJaxrsServlet handling this application.
-            // Custom servlets using non-standard mechanisms to create Application will not be detected
-            if (isApplicationServletAvailable(ctx, appClass)) {
-                return;
-            }
-            try {
-                app = (Application)appClass.newInstance();
-            } catch (Throwable t) {
-                throw new ServletException(t);
-            }
-            // Servlet name is the application class name
-            servletName = appClass.getName();
-            ApplicationPath appPath = appClass.getAnnotation(ApplicationPath.class);
-            // If ApplicationPath is available - use its value as a mapping otherwise get it from 
-            // a servlet registration with an application implementation class name 
-            if (appPath != null) {
-                servletMapping = appPath.value() + "/*";
-            } else {
-                servletMapping = getServletMapping(ctx, servletName);
-            }
-        } 
-        // If application is null or empty then try to create a new application from available
-        // resource and provider classes
-        if (app == null
-            || (app.getClasses().isEmpty() && app.getSingletons().isEmpty())) {
-            // The best effort at detecting a CXFNonSpringJaxrsServlet
-            // Custom servlets using non-standard mechanisms to create Application will not be detected
-            if (isCxfServletAvailable(ctx)) {
-                return;
-            }
-            final Map< Class< ? extends Annotation >, Collection< Class< ? > > > providersAndResources = 
-                groupByAnnotations(classes);
-            if (!providersAndResources.get(Path.class).isEmpty()
-                || !providersAndResources.get(Provider.class).isEmpty()) {
-                if (app == null) {
-                    // Servlet name is a JAX-RS Application class name
-                    servletName = JAXRS_APPLICATION_SERVLET_NAME;
-                    // Servlet mapping is obtained from a servlet registration 
-                    // with a JAX-RS Application class name
-                    servletMapping = getServletMapping(ctx, servletName);
-                } 
-                
-                app = new Application() {
-                    @Override
-                    public Set<Class<?>> getClasses() {
-                        Set<Class<?>> set = new HashSet<Class<?>>();
-                        set.addAll(providersAndResources.get(Path.class));
-                        set.addAll(providersAndResources.get(Provider.class));
-                        return set;
-                    }
-                };
-            }
-        }
-        
-        if (app == null) {
-            return;
-        }
-        CXFNonSpringJaxrsServlet cxfServlet = new CXFNonSpringJaxrsServlet(app);
-        final Dynamic servlet =  ctx.addServlet(servletName, cxfServlet);
-        servlet.addMapping(servletMapping);
-    }
-    
-    private boolean isCxfServletAvailable(ServletContext ctx) {
-        for (Map.Entry<String, ? extends ServletRegistration> entry : ctx.getServletRegistrations().entrySet()) {
-            if (entry.getValue().getInitParameter(CXF_JAXRS_CLASSES_PARAM) != null) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private String getServletMapping(final ServletContext ctx, final String name) throws ServletException {
-        ServletRegistration sr = ctx.getServletRegistration(name);
-        if (sr != null) {
-            return sr.getMappings().iterator().next();
-        } else {
-            final String error = "Servlet with a name " + name + " is not available";
-            throw new ServletException(error); 
-        }
-    }
-
-    private boolean isApplicationServletAvailable(final ServletContext ctx, final Class<?> appClass) {
-        for (Map.Entry<String, ? extends ServletRegistration> entry : ctx.getServletRegistrations().entrySet()) {
-            String appParam = entry.getValue().getInitParameter(JAXRS_APPLICATION_PARAM);
-            if (appParam == null) {
-                appParam = entry.getValue().getInitParameter(CXF_JAXRS_APPLICATION_PARAM);
-            }
-            if (appParam != null && appParam.equals(appClass.getName())) { 
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private Map< Class< ? extends Annotation >, Collection< Class< ? > > > groupByAnnotations(
-        final Set< Class< ? > > classes) {
-        
-        final Map< Class< ? extends Annotation >, Collection< Class< ? > > > grouped = 
-            new HashMap< Class< ? extends Annotation >, Collection< Class< ? > > >();
-        
-        grouped.put(Provider.class, new ArrayList< Class< ? > >());
-        grouped.put(Path.class, new ArrayList< Class< ? > >());
-        
-        if (classes != null) {
-            for (final Class< ? > clazz: classes) {
-                if (!classShouldBeIgnored(clazz)) {
-                    for (final Class< ? extends Annotation > annotation: grouped.keySet()) {
-                        if (clazz.isAnnotationPresent(annotation)) {
-                            grouped.get(annotation).add(clazz);
-                        }
-                    }
-                }
-            }
-        }
-        
-        return grouped;
-    }
-
-    private static boolean classShouldBeIgnored(final Class<?> clazz) {
-        return clazz.getPackage().getName().startsWith(IGNORE_PACKAGE);
-    }
-
-    private static Class< ? > findCandidate(final Set< Class< ? > > classes) {
-        if (classes != null) {
-            for (final Class< ? > clazz: classes) {
-                if (Application.class.isAssignableFrom(clazz) && !classShouldBeIgnored(clazz)) {
-                    LOG.fine("Found JAX-RS application to initialize: " + clazz.getName());
-                    return clazz;
-                }
-            }
-        }
-        
-        return null;
-    }
-}

http://git-wip-us.apache.org/repos/asf/cxf/blob/8077aaa7/rt/rs/http-sci/src/main/java/org/apache/cxf/jaxrs/servlet/sci/JaxrsServletContainerInitializer.java
----------------------------------------------------------------------
diff --git a/rt/rs/http-sci/src/main/java/org/apache/cxf/jaxrs/servlet/sci/JaxrsServletContainerInitializer.java b/rt/rs/http-sci/src/main/java/org/apache/cxf/jaxrs/servlet/sci/JaxrsServletContainerInitializer.java
new file mode 100644
index 0000000..38eeeec
--- /dev/null
+++ b/rt/rs/http-sci/src/main/java/org/apache/cxf/jaxrs/servlet/sci/JaxrsServletContainerInitializer.java
@@ -0,0 +1,196 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.jaxrs.servlet.sci;
+
+import java.lang.annotation.Annotation;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Logger;
+
+import javax.servlet.ServletContainerInitializer;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRegistration;
+import javax.servlet.ServletRegistration.Dynamic;
+import javax.servlet.annotation.HandlesTypes;
+import javax.ws.rs.ApplicationPath;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Application;
+import javax.ws.rs.ext.Provider;
+
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet;
+
+@HandlesTypes({ Application.class, Provider.class, Path.class })
+public class JaxrsServletContainerInitializer implements ServletContainerInitializer {  
+    private static final Logger LOG = LogUtils.getL7dLogger(JaxrsServletContainerInitializer.class);
+    private static final String IGNORE_PACKAGE = "org.apache.cxf";
+    
+    private static final String JAXRS_APPLICATION_SERVLET_NAME = "javax.ws.rs.core.Application";
+    private static final String JAXRS_APPLICATION_PARAM = "javax.ws.rs.Application";
+    private static final String CXF_JAXRS_APPLICATION_PARAM = "jaxrs.application";
+    private static final String CXF_JAXRS_CLASSES_PARAM = "jaxrs.classes";
+        
+    @Override
+    public void onStartup(final Set< Class< ? > > classes, final ServletContext ctx) throws ServletException {        
+        Application app = null;
+        String servletName = null;
+        String servletMapping = null;
+        
+        final Class< ? > appClass = findCandidate(classes);
+        if (appClass != null) {
+            // The best effort at detecting a CXFNonSpringJaxrsServlet handling this application.
+            // Custom servlets using non-standard mechanisms to create Application will not be detected
+            if (isApplicationServletAvailable(ctx, appClass)) {
+                return;
+            }
+            try {
+                app = (Application)appClass.newInstance();
+            } catch (Throwable t) {
+                throw new ServletException(t);
+            }
+            // Servlet name is the application class name
+            servletName = appClass.getName();
+            ApplicationPath appPath = appClass.getAnnotation(ApplicationPath.class);
+            // If ApplicationPath is available - use its value as a mapping otherwise get it from 
+            // a servlet registration with an application implementation class name 
+            if (appPath != null) {
+                servletMapping = appPath.value() + "/*";
+            } else {
+                servletMapping = getServletMapping(ctx, servletName);
+            }
+        } 
+        // If application is null or empty then try to create a new application from available
+        // resource and provider classes
+        if (app == null
+            || (app.getClasses().isEmpty() && app.getSingletons().isEmpty())) {
+            // The best effort at detecting a CXFNonSpringJaxrsServlet
+            // Custom servlets using non-standard mechanisms to create Application will not be detected
+            if (isCxfServletAvailable(ctx)) {
+                return;
+            }
+            final Map< Class< ? extends Annotation >, Collection< Class< ? > > > providersAndResources = 
+                groupByAnnotations(classes);
+            if (!providersAndResources.get(Path.class).isEmpty()
+                || !providersAndResources.get(Provider.class).isEmpty()) {
+                if (app == null) {
+                    // Servlet name is a JAX-RS Application class name
+                    servletName = JAXRS_APPLICATION_SERVLET_NAME;
+                    // Servlet mapping is obtained from a servlet registration 
+                    // with a JAX-RS Application class name
+                    servletMapping = getServletMapping(ctx, servletName);
+                } 
+                
+                app = new Application() {
+                    @Override
+                    public Set<Class<?>> getClasses() {
+                        Set<Class<?>> set = new HashSet<Class<?>>();
+                        set.addAll(providersAndResources.get(Path.class));
+                        set.addAll(providersAndResources.get(Provider.class));
+                        return set;
+                    }
+                };
+            }
+        }
+        
+        if (app == null) {
+            return;
+        }
+        CXFNonSpringJaxrsServlet cxfServlet = new CXFNonSpringJaxrsServlet(app);
+        final Dynamic servlet =  ctx.addServlet(servletName, cxfServlet);
+        servlet.addMapping(servletMapping);
+    }
+    
+    private boolean isCxfServletAvailable(ServletContext ctx) {
+        for (Map.Entry<String, ? extends ServletRegistration> entry : ctx.getServletRegistrations().entrySet()) {
+            if (entry.getValue().getInitParameter(CXF_JAXRS_CLASSES_PARAM) != null) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private String getServletMapping(final ServletContext ctx, final String name) throws ServletException {
+        ServletRegistration sr = ctx.getServletRegistration(name);
+        if (sr != null) {
+            return sr.getMappings().iterator().next();
+        } else {
+            final String error = "Servlet with a name " + name + " is not available";
+            throw new ServletException(error); 
+        }
+    }
+
+    private boolean isApplicationServletAvailable(final ServletContext ctx, final Class<?> appClass) {
+        for (Map.Entry<String, ? extends ServletRegistration> entry : ctx.getServletRegistrations().entrySet()) {
+            String appParam = entry.getValue().getInitParameter(JAXRS_APPLICATION_PARAM);
+            if (appParam == null) {
+                appParam = entry.getValue().getInitParameter(CXF_JAXRS_APPLICATION_PARAM);
+            }
+            if (appParam != null && appParam.equals(appClass.getName())) { 
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private Map< Class< ? extends Annotation >, Collection< Class< ? > > > groupByAnnotations(
+        final Set< Class< ? > > classes) {
+        
+        final Map< Class< ? extends Annotation >, Collection< Class< ? > > > grouped = 
+            new HashMap< Class< ? extends Annotation >, Collection< Class< ? > > >();
+        
+        grouped.put(Provider.class, new ArrayList< Class< ? > >());
+        grouped.put(Path.class, new ArrayList< Class< ? > >());
+        
+        if (classes != null) {
+            for (final Class< ? > clazz: classes) {
+                if (!classShouldBeIgnored(clazz)) {
+                    for (final Class< ? extends Annotation > annotation: grouped.keySet()) {
+                        if (clazz.isAnnotationPresent(annotation)) {
+                            grouped.get(annotation).add(clazz);
+                        }
+                    }
+                }
+            }
+        }
+        
+        return grouped;
+    }
+
+    private static boolean classShouldBeIgnored(final Class<?> clazz) {
+        return clazz.getPackage().getName().startsWith(IGNORE_PACKAGE);
+    }
+
+    private static Class< ? > findCandidate(final Set< Class< ? > > classes) {
+        if (classes != null) {
+            for (final Class< ? > clazz: classes) {
+                if (Application.class.isAssignableFrom(clazz) && !classShouldBeIgnored(clazz)) {
+                    LOG.fine("Found JAX-RS application to initialize: " + clazz.getName());
+                    return clazz;
+                }
+            }
+        }
+        
+        return null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cxf/blob/8077aaa7/rt/rs/http-sci/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer
----------------------------------------------------------------------
diff --git a/rt/rs/http-sci/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer b/rt/rs/http-sci/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer
new file mode 100644
index 0000000..48979d7
--- /dev/null
+++ b/rt/rs/http-sci/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer
@@ -0,0 +1 @@
+org.apache.cxf.jaxrs.servlet.sci.JaxrsServletContainerInitializer
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cxf/blob/8077aaa7/systests/rs-http-sci/src/test/resources/META-INF/services/javax.servlet.ServletContainerInitializer
----------------------------------------------------------------------
diff --git a/systests/rs-http-sci/src/test/resources/META-INF/services/javax.servlet.ServletContainerInitializer b/systests/rs-http-sci/src/test/resources/META-INF/services/javax.servlet.ServletContainerInitializer
deleted file mode 100644
index 3d22cbc..0000000
--- a/systests/rs-http-sci/src/test/resources/META-INF/services/javax.servlet.ServletContainerInitializer
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.cxf.jaxrs.servlet.JaxrsServletContainerInitializer
\ No newline at end of file