Repository: cxf Updated Branches: refs/heads/master 8cd3eb88f -> 9e6e0ea42
Adding few CXFNonSpringJaxrsServ;et utility constructors Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/9e6e0ea4 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/9e6e0ea4 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/9e6e0ea4 Branch: refs/heads/master Commit: 9e6e0ea422536f384e07f5ac6bb002201a9120c6 Parents: 8cd3eb8 Author: Sergey Beryozkin <[email protected]> Authored: Mon Jan 19 12:36:02 2015 +0000 Committer: Sergey Beryozkin <[email protected]> Committed: Mon Jan 19 12:36:02 2015 +0000 ---------------------------------------------------------------------- .../jaxrs/servlet/CXFNonSpringJaxrsServlet.java | 55 +++++++++++++++++++- 1 file changed, 53 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/9e6e0ea4/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 562ffa2..73d8688 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 @@ -28,6 +28,7 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.logging.Logger; import javax.servlet.ServletConfig; @@ -89,11 +90,32 @@ public class CXFNonSpringJaxrsServlet extends CXFNonSpringServlet { private static final String JAXRS_APPLICATION_PARAM = "javax.ws.rs.Application"; private ClassLoader classLoader; + private Application application; + + public CXFNonSpringJaxrsServlet() { + + } + + public CXFNonSpringJaxrsServlet(Application app) { + this.application = app; + } + + public CXFNonSpringJaxrsServlet(Object singletonService) { + this(Collections.singleton(singletonService)); + } + public CXFNonSpringJaxrsServlet(Set<Object> applicationSingletones) { + this(new ApplicationImpl(applicationSingletones)); + } @Override public void init(ServletConfig servletConfig) throws ServletException { super.init(servletConfig); + if (getApplication() != null) { + createServerFromApplication(servletConfig); + return; + } + String applicationClass = servletConfig.getInitParameter(JAXRS_APPLICATION_PARAM); if (applicationClass != null) { createServerFromApplication(applicationClass, servletConfig); @@ -466,8 +488,7 @@ public class CXFNonSpringJaxrsServlet extends CXFNonSpringServlet { protected void createServerFromApplication(String applicationNames, ServletConfig servletConfig) throws ServletException { - String ignoreParam = servletConfig.getInitParameter(IGNORE_APP_PATH_PARAM); - boolean ignoreApplicationPath = ignoreParam == null || MessageUtils.isTrue(ignoreParam); + boolean ignoreApplicationPath = isIgnoreApplicationPath(servletConfig); String[] classNames = StringUtils.split(applicationNames, getParameterSplitChar(servletConfig)); @@ -494,6 +515,22 @@ public class CXFNonSpringJaxrsServlet extends CXFNonSpringServlet { } } + protected boolean isIgnoreApplicationPath(ServletConfig servletConfig) { + String ignoreParam = servletConfig.getInitParameter(IGNORE_APP_PATH_PARAM); + return ignoreParam == null || MessageUtils.isTrue(ignoreParam); + } + + protected void createServerFromApplication(ServletConfig servletConfig) + throws ServletException { + + JAXRSServerFactoryBean bean = ResourceUtils.createApplication(getApplication(), + isIgnoreApplicationPath(servletConfig), + getStaticSubResolutionValue(servletConfig)); + bean.setBus(getBus()); + bean.setApplication(getApplication()); + bean.create(); + } + protected Application createApplicationInstance(String appClassName, ServletConfig servletConfig) throws ServletException { return null; @@ -549,4 +586,18 @@ public class CXFNonSpringJaxrsServlet extends CXFNonSpringServlet { public void setClassLoader(ClassLoader loader) { this.classLoader = loader; } + + protected Application getApplication() { + return application; + } + + private static class ApplicationImpl extends Application { + private Set<Object> applicationSingletones; + public ApplicationImpl(Set<Object> applicationSingletones) { + this.applicationSingletones = applicationSingletones; + } + public Set<Object> getSingletons() { + return applicationSingletones; + } + } }
