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 <[email protected]> Authored: Mon Mar 13 14:34:00 2017 +0000 Committer: Sergey Beryozkin <[email protected]> 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; + } }; } }
