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 2017/03/13 14:34:16 UTC

cxf git commit: [CXF-7282] Support the overriding of Application resource life-cycle when it is autodiscovered

Repository: cxf
Updated Branches:
  refs/heads/master be6190da7 -> 74b8db2dc


[CXF-7282] Support the overriding of Application resource life-cycle when it is autodiscovered


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

Branch: refs/heads/master
Commit: 74b8db2dcc5fc60a513d9e73e258aeba99727a39
Parents: be6190d
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Mon Mar 13 14:34:00 2017 +0000
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Mon Mar 13 14:34:00 2017 +0000

----------------------------------------------------------------------
 .../jaxrs/servlet/CXFNonSpringJaxrsServlet.java    | 17 +++++++++++------
 .../sci/JaxrsServletContainerInitializer.java      |  8 +++++++-
 2 files changed, 18 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/74b8db2d/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java
index e961dd3..155c892 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java
@@ -415,9 +415,12 @@ public class CXFNonSpringJaxrsServlet extends CXFNonSpringServlet {
         return map;
     }
 
-    protected boolean isResourceLifecycleASingleton(ServletConfig servletConfig) {
+    protected boolean isAppResourceLifecycleASingleton(Application app, ServletConfig servletConfig) {
         String scope = servletConfig.getInitParameter(SERVICE_SCOPE_PARAM);
-        return SERVICE_SCOPE_SINGLETON.equals(scope);
+        if (scope != null) {
+            scope = (String)app.getProperties().get(SERVICE_SCOPE_PARAM);
+        }
+        return SERVICE_SCOPE_SINGLETON.equals(scope);    
     }
     
     protected Object createSingletonInstance(Class<?> cls, Map<String, List<String>> props, ServletConfig sc)
@@ -504,11 +507,12 @@ public class CXFNonSpringJaxrsServlet extends CXFNonSpringServlet {
         for (String cName : classNames) {
             ApplicationInfo providerApp = createApplicationInfo(cName, servletConfig);
 
+            Application app = providerApp.getProvider();
             JAXRSServerFactoryBean bean = ResourceUtils.createApplication(
-                                                providerApp.getProvider(),
+                                                app,
                                                 ignoreApplicationPath,
                                                 getStaticSubResolutionValue(servletConfig),
-                                                isResourceLifecycleASingleton(servletConfig),
+                                                isAppResourceLifecycleASingleton(app, servletConfig),
                                                 getBus());
             String splitChar = getParameterSplitChar(servletConfig);
             setAllInterceptors(bean, servletConfig, splitChar);
@@ -530,11 +534,12 @@ public class CXFNonSpringJaxrsServlet extends CXFNonSpringServlet {
     protected void createServerFromApplication(ServletConfig servletConfig)
         throws ServletException {
 
+        Application app = getApplication();
         JAXRSServerFactoryBean bean = ResourceUtils.createApplication(
-                                          getApplication(),
+                                          app,
                                           isIgnoreApplicationPath(servletConfig),
                                           getStaticSubResolutionValue(servletConfig),
-                                          isResourceLifecycleASingleton(servletConfig),
+                                          isAppResourceLifecycleASingleton(app, servletConfig),
                                           getBus());
         bean.setBus(getBus());
         bean.setApplication(getApplication());

http://git-wip-us.apache.org/repos/asf/cxf/blob/74b8db2d/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
index 017dc6e..c1896e1 100644
--- 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
@@ -21,6 +21,7 @@ package org.apache.cxf.jaxrs.servlet.sci;
 import java.lang.annotation.Annotation;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -101,7 +102,8 @@ public class JaxrsServletContainerInitializer implements ServletContainerInitial
                     // with a JAX-RS Application class name
                     servletMapping = getServletMapping(ctx, servletName);
                 }
-
+                final Map<String, Object> appProperties = 
+                    app != null ? app.getProperties() : Collections.emptyMap();
                 app = new Application() {
                     @Override
                     public Set<Class<?>> getClasses() {
@@ -110,6 +112,10 @@ public class JaxrsServletContainerInitializer implements ServletContainerInitial
                         set.addAll(providersAndResources.get(Provider.class));
                         return set;
                     }
+                    @Override
+                    public Map<String, Object> getProperties() {
+                        return appProperties;
+                    }
                 };
             }
         }