Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoberto E. Escobar2014-06-12 02:11:13 +0000
committerRoberto E. Escobar2014-08-28 23:58:39 +0000
commitd4a7765ec05b4f124de987004505b5510b50d36a (patch)
treec9f7e8dca41e9021a4fe9bdcb9659564550493a9 /plugins/org.eclipse.osee.jaxrs.server
parent87185d728b0628e8562b5046ec092eb44ff5ba8c (diff)
downloadorg.eclipse.osee-d4a7765ec05b4f124de987004505b5510b50d36a.tar.gz
org.eclipse.osee-d4a7765ec05b4f124de987004505b5510b50d36a.tar.xz
org.eclipse.osee-d4a7765ec05b4f124de987004505b5510b50d36a.zip
feature[ats_ATS55930]: Upgrade JAX-RS to 2.0 API using Apache CXF
Change JAX-RS endpoints to comply with 2.0 API Change JAX-RS clients to use JAX-RS 2.0 Client API instead of using Jersey's client implementation. Remove all Jersey dependencies. Integrate Apache CXF with OSEE JAX-RS Change-Id: I866dff8516b91dbcde07b07819cf0bbc89b5d293
Diffstat (limited to 'plugins/org.eclipse.osee.jaxrs.server')
-rw-r--r--plugins/org.eclipse.osee.jaxrs.server/META-INF/MANIFEST.MF43
-rw-r--r--plugins/org.eclipse.osee.jaxrs.server/OSGI-INF/jaxrs.application.registry.xml3
-rw-r--r--plugins/org.eclipse.osee.jaxrs.server/OSGI-INF/jaxrs.factory.xml10
-rw-r--r--plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/applications/AbstractJaxRsContainer.java4
-rw-r--r--plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/applications/JaxRsApplicationRegistry.java22
-rw-r--r--plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/ext/CxfJaxRsFactory.java264
-rw-r--r--plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/ext/JerseyJaxRsFactory.java210
-rw-r--r--plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/ext/JerseyWadlGeneratorConfig.java139
-rw-r--r--plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecureResourceFilterFactory.java61
-rw-r--r--plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecurityContextFilter.java21
-rw-r--r--plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecurityContextProvider.java4
-rw-r--r--plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecurityContextProviderImpl.java18
-rw-r--r--plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/resources/ApplicationResource.java2
-rw-r--r--plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/resources/ServicesResource.java96
14 files changed, 324 insertions, 573 deletions
diff --git a/plugins/org.eclipse.osee.jaxrs.server/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.jaxrs.server/META-INF/MANIFEST.MF
index e09aee57fe3..7d0eea2cb04 100644
--- a/plugins/org.eclipse.osee.jaxrs.server/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.osee.jaxrs.server/META-INF/MANIFEST.MF
@@ -6,24 +6,30 @@ Bundle-Version: 0.18.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Service-Component: OSGI-INF/*.xml
Import-Package: com.google.common.io,
- com.sun.jersey.api.container.filter;version="1.18.0",
- com.sun.jersey.api.container.filter.servlet;version="1.18.0",
- com.sun.jersey.api.core;version="1.18.0",
- com.sun.jersey.api.model;version="1.18.0",
- com.sun.jersey.api.wadl.config;version="1.18.0",
- com.sun.jersey.server.wadl;version="1.18.0",
- com.sun.jersey.server.wadl.generators;version="1.18.0",
- com.sun.jersey.server.wadl.generators.resourcedoc;version="1.18.0",
- com.sun.jersey.server.wadl.generators.resourcedoc.model;version="1.18.0",
- com.sun.jersey.server.wadl.generators.resourcedoc.xhtml;version="1.18.0",
- com.sun.jersey.spi.container;version="1.18.0",
- com.sun.jersey.spi.container.servlet;version="1.18.0",
javax.annotation.security;version="1.1.0",
- javax.servlet;version="2.5.0",
- javax.servlet.http;version="2.5.0",
- javax.ws.rs,
- javax.ws.rs.core,
- javax.ws.rs.ext,
+ javax.servlet;version="2.6.0",
+ javax.servlet.http;version="2.6.0",
+ javax.ws.rs;version="2.0.0",
+ javax.ws.rs.container;version="2.0.0",
+ javax.ws.rs.core;version="2.0.0",
+ javax.ws.rs.ext;version="2.0.0",
+ org.apache.cxf;version="3.0.0",
+ org.apache.cxf.binding;version="3.0.0",
+ org.apache.cxf.endpoint;version="3.0.0",
+ org.apache.cxf.feature;version="3.0.0",
+ org.apache.cxf.interceptor;version="3.0.0",
+ org.apache.cxf.interceptor.security;version="3.0.0",
+ org.apache.cxf.jaxrs;version="3.0.0",
+ org.apache.cxf.jaxrs.impl;version="3.0.0",
+ org.apache.cxf.jaxrs.provider.json;version="3.0.0",
+ org.apache.cxf.jaxrs.utils;version="3.0.0",
+ org.apache.cxf.jaxrs.validation;version="3.0.0",
+ org.apache.cxf.service.factory;version="3.0.0",
+ org.apache.cxf.transport;version="3.0.0",
+ org.apache.cxf.transport.common.gzip;version="3.0.0",
+ org.apache.cxf.transport.http;version="3.0.0",
+ org.apache.cxf.transport.servlet;version="3.0.0",
+ org.codehaus.jackson.jaxrs;version="1.9.13",
org.eclipse.osee.authorization.admin,
org.eclipse.osee.framework.jdk.core.type,
org.eclipse.osee.framework.jdk.core.util,
@@ -32,6 +38,3 @@ Import-Package: com.google.common.io,
org.osgi.framework,
org.osgi.service.http
Bundle-Vendor: Eclipse Open System Engineering Environment
-Require-Bundle: org.codehaus.jackson.core,
- org.codehaus.jackson.jaxrs,
- org.codehaus.jackson.mapper
diff --git a/plugins/org.eclipse.osee.jaxrs.server/OSGI-INF/jaxrs.application.registry.xml b/plugins/org.eclipse.osee.jaxrs.server/OSGI-INF/jaxrs.application.registry.xml
index 6cf025dfa7b..7ffe90bbc33 100644
--- a/plugins/org.eclipse.osee.jaxrs.server/OSGI-INF/jaxrs.application.registry.xml
+++ b/plugins/org.eclipse.osee.jaxrs.server/OSGI-INF/jaxrs.application.registry.xml
@@ -4,7 +4,6 @@
<service>
<provide interface="org.eclipse.osee.jaxrs.server.internal.applications.JaxRsApplicationRegistry"/>
</service>
- <reference bind="setHttpService" cardinality="1..1" interface="org.osgi.service.http.HttpService" name="HttpService" policy="static" />
<reference bind="setLogger" cardinality="1..1" interface="org.eclipse.osee.logger.Log" name="Log" policy="static"/>
- <reference bind="setAuthorizationAdmin" cardinality="1..1" interface="org.eclipse.osee.authorization.admin.AuthorizationAdmin" name="AuthorizationAdmin" policy="static"/>
+ <reference bind="setJaxRsFactory" cardinality="1..1" interface="org.eclipse.osee.jaxrs.server.internal.applications.JaxRsFactory" name="JaxRsFactory" policy="static"/>
</scr:component>
diff --git a/plugins/org.eclipse.osee.jaxrs.server/OSGI-INF/jaxrs.factory.xml b/plugins/org.eclipse.osee.jaxrs.server/OSGI-INF/jaxrs.factory.xml
new file mode 100644
index 00000000000..de3aec8da1c
--- /dev/null
+++ b/plugins/org.eclipse.osee.jaxrs.server/OSGI-INF/jaxrs.factory.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="start" deactivate="stop">
+ <implementation class="org.eclipse.osee.jaxrs.server.internal.ext.CxfJaxRsFactory" />
+ <service>
+ <provide interface="org.eclipse.osee.jaxrs.server.internal.applications.JaxRsFactory"/>
+ </service>
+ <reference bind="setHttpService" cardinality="1..1" interface="org.osgi.service.http.HttpService" name="HttpService" policy="static" />
+ <reference bind="setLogger" cardinality="1..1" interface="org.eclipse.osee.logger.Log" name="Log" policy="static"/>
+ <reference bind="setAuthorizationAdmin" cardinality="1..1" interface="org.eclipse.osee.authorization.admin.AuthorizationAdmin" name="AuthorizationAdmin" policy="static"/>
+</scr:component>
diff --git a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/applications/AbstractJaxRsContainer.java b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/applications/AbstractJaxRsContainer.java
index 15d7c35b8dd..4a497a305d1 100644
--- a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/applications/AbstractJaxRsContainer.java
+++ b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/applications/AbstractJaxRsContainer.java
@@ -57,6 +57,10 @@ public abstract class AbstractJaxRsContainer<H extends HttpServlet, C extends Ab
return props;
}
+ protected H getBaseServlet() {
+ return baseJaxsRsServlet;
+ }
+
@Override
public String getServletContext() {
return servletContextName.get();
diff --git a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/applications/JaxRsApplicationRegistry.java b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/applications/JaxRsApplicationRegistry.java
index 454aed30496..f30c1b62fe7 100644
--- a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/applications/JaxRsApplicationRegistry.java
+++ b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/applications/JaxRsApplicationRegistry.java
@@ -13,17 +13,12 @@ package org.eclipse.osee.jaxrs.server.internal.applications;
import java.util.Iterator;
import java.util.concurrent.ConcurrentHashMap;
import javax.ws.rs.core.Application;
-import org.eclipse.osee.authorization.admin.AuthorizationAdmin;
import org.eclipse.osee.jaxrs.server.internal.JaxRsConfiguration;
import org.eclipse.osee.jaxrs.server.internal.JaxRsConstants;
import org.eclipse.osee.jaxrs.server.internal.JaxRsVisitable;
import org.eclipse.osee.jaxrs.server.internal.JaxRsVisitor;
-import org.eclipse.osee.jaxrs.server.internal.ext.JerseyJaxRsFactory;
-import org.eclipse.osee.jaxrs.server.internal.filters.SecurityContextFilter;
-import org.eclipse.osee.jaxrs.server.internal.filters.SecurityContextProviderImpl;
import org.eclipse.osee.logger.Log;
import org.osgi.framework.Bundle;
-import org.osgi.service.http.HttpService;
/**
* @author Roberto E. Escobar
@@ -62,35 +57,24 @@ public class JaxRsApplicationRegistry implements JaxRsVisitable {
new ConcurrentHashMap<String, JaxRsContainerProvider>();
private Log logger;
- private HttpService httpService;
- private AuthorizationAdmin authorizationAdmin;
-
private JaxRsFactory factory;
- private String baseContext = JaxRsConstants.DEFAULT_JAXRS_BASE_CONTEXT;
- public void setHttpService(HttpService httpService) {
- this.httpService = httpService;
- }
+ private String baseContext = JaxRsConstants.DEFAULT_JAXRS_BASE_CONTEXT;
public void setLogger(Log logger) {
this.logger = logger;
}
- public void setAuthorizationAdmin(AuthorizationAdmin authorizationAdmin) {
- this.authorizationAdmin = authorizationAdmin;
+ public void setJaxRsFactory(JaxRsFactory factory) {
+ this.factory = factory;
}
public void start() {
logger.trace("Starting [%s]...", getClass().getSimpleName());
- SecurityContextProviderImpl provider = new SecurityContextProviderImpl(logger, authorizationAdmin);
- SecurityContextFilter filter = new SecurityContextFilter(provider);
-
- factory = new JerseyJaxRsFactory(logger, httpService, filter);
}
public void stop() {
logger.trace("Stopping [%s]...", getClass().getSimpleName());
- this.factory = null;
}
public String getBaseContext() {
diff --git a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/ext/CxfJaxRsFactory.java b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/ext/CxfJaxRsFactory.java
new file mode 100644
index 00000000000..7ee24a05fa5
--- /dev/null
+++ b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/ext/CxfJaxRsFactory.java
@@ -0,0 +1,264 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.jaxrs.server.internal.ext;
+
+import java.util.ArrayList;
+import java.util.Dictionary;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
+import javax.ws.rs.core.Application;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response.Status;
+import javax.ws.rs.ext.RuntimeDelegate;
+import org.apache.cxf.Bus;
+import org.apache.cxf.endpoint.Server;
+import org.apache.cxf.feature.Feature;
+import org.apache.cxf.feature.LoggingFeature;
+import org.apache.cxf.jaxrs.JAXRSBindingFactory;
+import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
+import org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper;
+import org.apache.cxf.jaxrs.utils.ResourceUtils;
+import org.apache.cxf.transport.common.gzip.GZIPFeature;
+import org.apache.cxf.transport.servlet.CXFNonSpringServlet;
+import org.eclipse.osee.authorization.admin.AuthorizationAdmin;
+import org.eclipse.osee.jaxrs.JacksonFeature;
+import org.eclipse.osee.jaxrs.OseeWebApplicationException;
+import org.eclipse.osee.jaxrs.server.internal.JaxRsUtils;
+import org.eclipse.osee.jaxrs.server.internal.JaxRsVisitable;
+import org.eclipse.osee.jaxrs.server.internal.applications.AbstractJaxRsApplicationContainer;
+import org.eclipse.osee.jaxrs.server.internal.applications.AbstractJaxRsContainer;
+import org.eclipse.osee.jaxrs.server.internal.applications.JaxRsApplicationRegistry.JaxRsContainer;
+import org.eclipse.osee.jaxrs.server.internal.applications.JaxRsApplicationRegistry.JaxRsContainerProvider;
+import org.eclipse.osee.jaxrs.server.internal.applications.JaxRsContainerProviderImpl;
+import org.eclipse.osee.jaxrs.server.internal.applications.JaxRsFactory;
+import org.eclipse.osee.jaxrs.server.internal.exceptions.GenericExceptionMapper;
+import org.eclipse.osee.jaxrs.server.internal.filters.SecurityContextFilter;
+import org.eclipse.osee.jaxrs.server.internal.filters.SecurityContextProviderImpl;
+import org.eclipse.osee.logger.Log;
+import org.osgi.service.http.HttpService;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public final class CxfJaxRsFactory implements JaxRsFactory {
+
+ private static final String APACHE_CXF_LOGGER = "org.apache.cxf.Logger";
+ private static final String DEFAULT_CXF_LOGGING_IMPL = "org.apache.cxf.common.logging.Slf4jLogger";
+
+ private Log logger;
+ private HttpService httpService;
+ private AuthorizationAdmin authorizationAdmin;
+
+ private List<Feature> features;
+ private List<? extends Object> providers;
+ private Map<String, Object> properties;
+ private Map<Object, Object> extensionMappings;
+
+ public void setLogger(Log logger) {
+ this.logger = logger;
+ }
+
+ public void setHttpService(HttpService httpService) {
+ this.httpService = httpService;
+ }
+
+ public void setAuthorizationAdmin(AuthorizationAdmin authorizationAdmin) {
+ this.authorizationAdmin = authorizationAdmin;
+ }
+
+ public void start(Map<String, Object> props) {
+ logger.debug("Starting [%s]...", getClass().getSimpleName());
+
+ System.setProperty(APACHE_CXF_LOGGER, DEFAULT_CXF_LOGGING_IMPL);
+
+ // Ensure CXF JAX-RS implementation is loaded
+ RuntimeDelegate runtimeDelegate = new org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl();
+ RuntimeDelegate.setInstance(runtimeDelegate);
+
+ SecurityContextProviderImpl provider = new SecurityContextProviderImpl(logger, authorizationAdmin);
+ SecurityContextFilter filter = new SecurityContextFilter(provider);
+
+ List<Object> providers = new ArrayList<Object>();
+ WebApplicationExceptionMapper waem = new WebApplicationExceptionMapper();
+ waem.setPrintStackTrace(true);
+ waem.setAddMessageToResponse(true);
+
+ providers.add(waem);
+ providers.add(new GenericExceptionMapper(logger));
+ providers.addAll(JacksonFeature.getProviders());
+ providers.add(filter);
+ this.providers = providers;
+
+ List<Feature> features = new ArrayList<Feature>();
+ LoggingFeature loggingFeature = new LoggingFeature();
+ loggingFeature.setPrettyLogging(true);
+
+ features.add(loggingFeature);
+ features.add(new GZIPFeature());
+ this.features = features;
+
+ Map<Object, Object> extensionMappings = new HashMap<Object, Object>(4);
+ extensionMappings.put("xml", MediaType.APPLICATION_XML);
+ extensionMappings.put("json", MediaType.APPLICATION_JSON);
+ extensionMappings.put("gzip", "application/gzip");
+ extensionMappings.put("zip", "application/zip");
+ this.extensionMappings = extensionMappings;
+ this.properties = props;
+ }
+
+ public void stop() {
+ RuntimeDelegate.setInstance(null);
+ if (providers != null) {
+ providers.clear();
+ providers = null;
+ }
+ if (features != null) {
+ features.clear();
+ features = null;
+ }
+ if (extensionMappings != null) {
+ extensionMappings.clear();
+ extensionMappings = null;
+ }
+ properties = null;
+ }
+
+ private Map<Object, Object> getExtensionMappings() {
+ return extensionMappings;
+ }
+
+ private List<? extends Object> getProviders() {
+ return providers;
+ }
+
+ private List<Feature> getFeatures() {
+ return features;
+ }
+
+ private Map<String, Object> getProperties() {
+ return properties;
+ }
+
+ @Override
+ public JaxRsContainerProvider newJaxRsContainerProvider(String contextName) {
+ return new JaxRsContainerProviderImpl(this, contextName);
+ }
+
+ @Override
+ public JaxRsContainer newJaxRsContainer(String contextName) {
+ Dictionary<String, Object> props = new Hashtable<String, Object>();
+ CxfJaxRsContainer container = new CxfJaxRsContainer(logger, httpService, props);
+ container.setServletContext(contextName);
+ logger.trace("Create - [%s]", container);
+ return container;
+ }
+
+ private CxfJaxRsApplicationContainer newApplicationContainer(String applicationContext) {
+ return new CxfJaxRsApplicationContainer(applicationContext);
+ }
+
+ private CXFNonSpringServlet newBaseJaxsRsServlet(JaxRsVisitable visitable) {
+ return new CXFNonSpringServlet();
+ }
+
+ public Server newCxfServer(CXFNonSpringServlet servlet, String applicationPath, Application application) {
+ String contextName = servlet.getServletName();
+ Bus bus = servlet.getBus();
+ if (bus == null) {
+ throw new OseeWebApplicationException(Status.INTERNAL_SERVER_ERROR,
+ "Error initializing [%s] for application [%s] - bus was null", contextName, application);
+ }
+
+ boolean ignoreApplicationPath = true;
+ boolean staticSubresourceResolution = true;
+ JAXRSServerFactoryBean bean =
+ ResourceUtils.createApplication(application, ignoreApplicationPath, staticSubresourceResolution);
+
+ if (JaxRsUtils.hasPath(applicationPath)) {
+ String subAddress = JaxRsUtils.normalize(applicationPath);
+ bean.setAddress(subAddress);
+ }
+
+ bean.setProviders(getProviders());
+ bean.setFeatures(getFeatures());
+ bean.setProperties(getProperties());
+ bean.setExtensionMappings(getExtensionMappings());
+
+ bean.setBindingId(JAXRSBindingFactory.JAXRS_BINDING_ID);
+ bean.setTransportId("http://cxf.apache.org/transports/http");
+
+ bean.setBus(bus);
+ bean.setStart(false);
+
+ Server server = bean.create();
+ return server;
+ }
+
+ private final class CxfJaxRsContainer extends AbstractJaxRsContainer<CXFNonSpringServlet, CxfJaxRsApplicationContainer> {
+
+ public CxfJaxRsContainer(Log logger, HttpService httpService, Dictionary<String, Object> props) {
+ super(logger, httpService, props);
+ }
+
+ @Override
+ protected CxfJaxRsApplicationContainer createApplicationContainer(String applicationContext) {
+ return newApplicationContainer(applicationContext);
+ }
+
+ @Override
+ protected CXFNonSpringServlet createBaseJaxsRsServlet(JaxRsVisitable visitable) {
+ return newBaseJaxsRsServlet(visitable);
+ }
+
+ @Override
+ protected void startContainer(CxfJaxRsApplicationContainer container) {
+ CXFNonSpringServlet baseServlet = getBaseServlet();
+ container.startContainer(baseServlet);
+ }
+
+ @Override
+ protected void stopContainer(CxfJaxRsApplicationContainer container) {
+ container.stopContainer();
+ }
+
+ };
+
+ private final class CxfJaxRsApplicationContainer extends AbstractJaxRsApplicationContainer {
+
+ private final AtomicBoolean isRegistered = new AtomicBoolean(false);
+ private volatile Server server;
+
+ public CxfJaxRsApplicationContainer(String applicationContext) {
+ super(applicationContext);
+ }
+
+ public void startContainer(CXFNonSpringServlet servlet) {
+ if (!isRegistered.getAndSet(true)) {
+ Server newServer = newCxfServer(servlet, getApplicationContext(), getApplication());
+ newServer.start();
+ server = newServer;
+ }
+ }
+
+ public void stopContainer() {
+ if (isRegistered.getAndSet(false)) {
+ if (server != null) {
+ server.stop();
+ server.destroy();
+ }
+ }
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/ext/JerseyJaxRsFactory.java b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/ext/JerseyJaxRsFactory.java
deleted file mode 100644
index a18e890b776..00000000000
--- a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/ext/JerseyJaxRsFactory.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2014 Boeing.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Boeing - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osee.jaxrs.server.internal.ext;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Dictionary;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicBoolean;
-import javax.servlet.http.HttpServlet;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response.Status;
-import org.eclipse.osee.jaxrs.OseeWebApplicationException;
-import org.eclipse.osee.jaxrs.server.internal.JaxRsUtils;
-import org.eclipse.osee.jaxrs.server.internal.JaxRsVisitable;
-import org.eclipse.osee.jaxrs.server.internal.applications.AbstractJaxRsApplicationContainer;
-import org.eclipse.osee.jaxrs.server.internal.applications.AbstractJaxRsContainer;
-import org.eclipse.osee.jaxrs.server.internal.applications.JaxRsApplicationRegistry.JaxRsContainer;
-import org.eclipse.osee.jaxrs.server.internal.applications.JaxRsApplicationRegistry.JaxRsContainerProvider;
-import org.eclipse.osee.jaxrs.server.internal.applications.JaxRsContainerProviderImpl;
-import org.eclipse.osee.jaxrs.server.internal.applications.JaxRsFactory;
-import org.eclipse.osee.jaxrs.server.internal.exceptions.GenericExceptionMapper;
-import org.eclipse.osee.jaxrs.server.internal.filters.SecureResourceFilterFactory;
-import org.eclipse.osee.jaxrs.server.internal.filters.SecurityContextFilter;
-import org.eclipse.osee.jaxrs.server.internal.resources.ServicesResource;
-import org.eclipse.osee.logger.Log;
-import org.osgi.service.http.HttpService;
-import com.sun.jersey.api.container.filter.UriConnegFilter;
-import com.sun.jersey.api.core.DefaultResourceConfig;
-import com.sun.jersey.api.core.ResourceConfig;
-import com.sun.jersey.spi.container.ResourceFilterFactory;
-import com.sun.jersey.spi.container.servlet.ServletContainer;
-
-/**
- * @author Roberto E. Escobar
- */
-public final class JerseyJaxRsFactory implements JaxRsFactory {
-
- private final Log logger;
- private final HttpService httpService;
- private final SecurityContextFilter securityContextFilter;
-
- private List<Object> singletons;
- private List<Object> requestFilters;
-
- public JerseyJaxRsFactory(Log logger, HttpService httpService, SecurityContextFilter securityContextFilter) {
- super();
- this.logger = logger;
- this.httpService = httpService;
- this.securityContextFilter = securityContextFilter;
- }
-
- @Override
- public JaxRsContainerProvider newJaxRsContainerProvider(String contextName) {
- return new JaxRsContainerProviderImpl(this, contextName);
- }
-
- @Override
- public JaxRsContainer newJaxRsContainer(String contextName) {
- Dictionary<String, Object> props = new Hashtable<String, Object>();
- JerseyJaxRsContainer container = new JerseyJaxRsContainer(logger, httpService, props);
- container.setServletContext(contextName);
- logger.trace("Create - [%s]", container);
- return container;
- }
-
- private List<Object> getResourceSingletons() {
- if (singletons == null) {
- List<Object> resources = new ArrayList<Object>();
- resources.add(new GenericExceptionMapper(logger));
- singletons = resources;
- }
- return singletons;
- }
-
- private List<Object> getRequestFilters() {
- if (requestFilters == null) {
- List<Object> resources = new ArrayList<Object>();
- Map<String, MediaType> mappings = new HashMap<String, MediaType>();
- mappings.put("xml", MediaType.APPLICATION_XML_TYPE);
- mappings.put("json", MediaType.APPLICATION_JSON_TYPE);
- UriConnegFilter filter1 = new UriConnegFilter(mappings);
- resources.add(filter1);
- requestFilters = resources;
- }
- return requestFilters;
- }
-
- private List<ResourceFilterFactory> getResourceFilterFactories() {
- SecureResourceFilterFactory filterFactory = new SecureResourceFilterFactory(logger, securityContextFilter);
- return Collections.<ResourceFilterFactory> singletonList(filterFactory);
- }
-
- private JerseyJaxRsApplicationContainer newApplicationContainer(String applicationContext) {
- return new JerseyJaxRsApplicationContainer(applicationContext);
- }
-
- private DefaultResourceConfig newResourceConfig() {
- DefaultResourceConfig config = new DefaultResourceConfig();
- Map<String, Object> properties = config.getProperties();
- properties.put(ResourceConfig.PROPERTY_CONTAINER_REQUEST_FILTERS, getRequestFilters());
- properties.put(ResourceConfig.PROPERTY_RESOURCE_FILTER_FACTORIES, getResourceFilterFactories());
- for (Object resource : getResourceSingletons()) {
- config.getSingletons().add(resource);
- }
- return config;
- }
-
- private HttpServlet newBaseJaxsRsServlet(JaxRsVisitable visitable) {
- DefaultResourceConfig config = newResourceConfig();
- config.getSingletons().add(new ServicesResource(visitable));
- return new ServletContainer(config);
- }
-
- private HttpServlet newApplicationServlet(JaxRsVisitable visitable, Application application) {
- DefaultResourceConfig config = newResourceConfig();
- config.add(application);
- JerseyWadlGeneratorConfig wadl = new JerseyWadlGeneratorConfig(logger, visitable);
- Map<String, Object> properties = config.getProperties();
- if (wadl.hasExtendedWadl()) {
- properties.put(ResourceConfig.PROPERTY_WADL_GENERATOR_CONFIG, wadl);
- } else {
- properties.remove(ResourceConfig.PROPERTY_WADL_GENERATOR_CONFIG);
- }
- return new ServletContainer(config);
- }
-
- private final class JerseyJaxRsContainer extends AbstractJaxRsContainer<HttpServlet, JerseyJaxRsApplicationContainer> {
-
- public JerseyJaxRsContainer(Log logger, HttpService httpService, Dictionary<String, Object> props) {
- super(logger, httpService, props);
- }
-
- @Override
- protected JerseyJaxRsApplicationContainer createApplicationContainer(String applicationContext) {
- return newApplicationContainer(applicationContext);
- }
-
- @Override
- protected HttpServlet createBaseJaxsRsServlet(JaxRsVisitable visitable) {
- return newBaseJaxsRsServlet(visitable);
- }
-
- @Override
- protected void startContainer(JerseyJaxRsApplicationContainer container) {
- String baseContext = getServletContext();
- Dictionary<String, Object> properties = getServletProperties();
- HttpService httpService = getHttpService();
- container.startContainer(httpService, baseContext, properties);
- }
-
- @Override
- protected void stopContainer(JerseyJaxRsApplicationContainer container) {
- String baseContext = getServletContext();
- HttpService httpService = getHttpService();
- container.stopContainer(httpService, baseContext);
- }
-
- };
-
- private final class JerseyJaxRsApplicationContainer extends AbstractJaxRsApplicationContainer {
-
- private final AtomicBoolean isRegistered = new AtomicBoolean(false);
-
- public JerseyJaxRsApplicationContainer(String applicationContext) {
- super(applicationContext);
- }
-
- public void startContainer(HttpService httpService, String baseContext, Dictionary<String, Object> props) {
- if (!isRegistered.getAndSet(true)) {
- String contextName = getAbsoluteContext(baseContext);
- Application application = getApplication();
- HttpServlet servlet = newApplicationServlet(this, application);
- try {
- httpService.registerServlet(contextName, servlet, props, null);
- } catch (Exception ex) {
- throw new OseeWebApplicationException(ex, Status.INTERNAL_SERVER_ERROR,
- "Error registering servlet [%s] ", contextName);
- }
- }
- }
-
- public void stopContainer(HttpService httpService, String baseContext) {
- if (isRegistered.getAndSet(false)) {
- String contextName = getAbsoluteContext(baseContext);
- httpService.unregister(contextName);
- }
- }
-
- private String getAbsoluteContext(String baseContext) {
- String appPath = JaxRsUtils.normalize(getApplicationContext());
- String path = String.format("%s%s", baseContext, appPath);
- path = path.replaceAll("//", "/");
- return path;
- }
- }
-
-}
diff --git a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/ext/JerseyWadlGeneratorConfig.java b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/ext/JerseyWadlGeneratorConfig.java
deleted file mode 100644
index 8a9b431c946..00000000000
--- a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/ext/JerseyWadlGeneratorConfig.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 Boeing.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Boeing - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osee.jaxrs.server.internal.ext;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import javax.ws.rs.core.Application;
-import org.eclipse.osee.framework.jdk.core.util.Lib;
-import org.eclipse.osee.jaxrs.server.internal.JaxRsVisitable;
-import org.eclipse.osee.jaxrs.server.internal.JaxRsVisitor;
-import org.eclipse.osee.logger.Log;
-import org.osgi.framework.Bundle;
-import com.google.common.io.InputSupplier;
-import com.sun.jersey.api.wadl.config.WadlGeneratorConfig;
-import com.sun.jersey.api.wadl.config.WadlGeneratorDescription;
-import com.sun.jersey.server.wadl.generators.WadlGeneratorApplicationDoc;
-import com.sun.jersey.server.wadl.generators.WadlGeneratorGrammarsSupport;
-import com.sun.jersey.server.wadl.generators.resourcedoc.WadlGeneratorResourceDocSupport;
-
-/**
- * @author Roberto E. Escobar
- */
-public class JerseyWadlGeneratorConfig extends WadlGeneratorConfig {
-
- private final Log logger;
- private final JaxRsVisitable visitable;
-
- public JerseyWadlGeneratorConfig(Log logger, JaxRsVisitable visitable) {
- this.logger = logger;
- this.visitable = visitable;
- }
-
- private Iterable<Bundle> getBundles() {
- final List<Bundle> bundles = new ArrayList<Bundle>();
- visitable.accept(new JaxRsVisitor() {
-
- @Override
- public void onApplication(String applicationContext, String componentName, Bundle bundle, Application application) {
- bundles.add(bundle);
- }
- });
- return bundles;
- }
-
- public boolean hasExtendedWadl() {
- boolean result = false;
- Iterable<Bundle> bundles = getBundles();
- for (Bundle bundle : bundles) {
- result = hasExtendedWadl(bundle);
- if (result) {
- break;
- }
- }
- return result;
- }
-
- @Override
- public List<WadlGeneratorDescription> configure() {
- List<WadlGeneratorDescription> toReturn;
-
- InputStream appDocsStream = null;
- InputStream grammarsStream = null;
- InputStream resourceDocStream = null;
- try {
- appDocsStream = getAsInputStream("REST-INF/application-doc.xml", "applicationDocs");
- grammarsStream = getAsInputStream("REST-INF/application-grammars.xml", "grammars");
- resourceDocStream = getAsInputStream("REST-INF/resourcedoc.xml", "resourceDoc");
-
- toReturn = generator(WadlGeneratorApplicationDoc.class) //
- .prop("applicationDocsStream", appDocsStream) //
- .generator(WadlGeneratorGrammarsSupport.class) //
- .prop("grammarsStream", grammarsStream) //
- .generator(WadlGeneratorResourceDocSupport.class) //
- .prop("resourceDocStream", resourceDocStream) //
- .descriptions();
- } catch (Exception ex) {
- logger.error(ex, "Error generating wadl");
- toReturn = Collections.emptyList();
- } finally {
- Lib.close(appDocsStream);
- Lib.close(grammarsStream);
- Lib.close(resourceDocStream);
- }
- return toReturn;
- }
-
- private static InputSupplier<InputStream> newSupplier(final URL url) {
- return new InputSupplier<InputStream>() {
- @Override
- public InputStream getInput() throws IOException {
- return url.openStream();
- }
- };
- }
-
- private InputStream getAsInputStream(String path, String xmlRoot) throws Exception {
- RestResourceConcatenator concat = new RestResourceConcatenator();
- concat.initialize(xmlRoot);
- Iterable<Bundle> bundles = getBundles();
- for (Bundle bundle : bundles) {
- if (hasExtendedWadl(bundle)) {
- URL url = bundle.getResource(path);
- concat.addResource(newSupplier(url));
- }
- }
- return concat.getAsInputStream();
- }
-
- private boolean hasEntries(Bundle bundle, String... paths) {
- // if you don't pass in any paths, this will return true
- for (String path : paths) {
- if (!hasEntry(bundle, path)) {
- return false;
- }
- }
- return true;
- }
-
- private boolean hasExtendedWadl(Bundle bundle) {
- return hasEntries(bundle, "REST-INF/application-doc.xml", "REST-INF/application-grammars.xml",
- "REST-INF/resourcedoc.xml");
- }
-
- private boolean hasEntry(Bundle bundle, String path) {
- return bundle.getEntry(path) != null;
- }
-}
diff --git a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecureResourceFilterFactory.java b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecureResourceFilterFactory.java
deleted file mode 100644
index 3aafaa82778..00000000000
--- a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecureResourceFilterFactory.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 Boeing.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Boeing - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osee.jaxrs.server.internal.filters;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.osee.jaxrs.NoSecurityFilter;
-import org.eclipse.osee.logger.Log;
-import com.sun.jersey.api.container.filter.servlet.RolesAllowedResourceFilterFactory;
-import com.sun.jersey.api.model.AbstractMethod;
-import com.sun.jersey.spi.container.ResourceFilter;
-
-/**
- * Ensures the security context filter {@link SecurityContextFilter} is always the first filter in the chain.
- *
- * @author Roberto E. Escobar
- */
-public class SecureResourceFilterFactory extends RolesAllowedResourceFilterFactory {
-
- private static final String SECURE = "SECURE";
- private static final String INSECURE = "SKIPPED";
-
- private final Log logger;
- private final SecurityContextFilter securityContextFilter;
-
- public SecureResourceFilterFactory(Log logger, SecurityContextFilter securityContextFilter) {
- super();
- this.logger = logger;
- this.securityContextFilter = securityContextFilter;
- }
-
- @Override
- public List<ResourceFilter> create(AbstractMethod am) {
- List<ResourceFilter> securityFilters = super.create(am);
- if (securityFilters == null) {
- securityFilters = new ArrayList<ResourceFilter>();
- } else {
- securityFilters = new ArrayList<ResourceFilter>(securityFilters);
- }
-
- boolean secure = isSecured(am);
- if (secure) {
- securityFilters.add(0, securityContextFilter);
- }
- logger.info("REST Security Filter: [%s] [%s]", secure ? SECURE : INSECURE, am);
- return securityFilters;
- }
-
- private boolean isSecured(AbstractMethod am) {
- return !am.isAnnotationPresent(NoSecurityFilter.class) && //
- !am.getResource().isAnnotationPresent(NoSecurityFilter.class);
- }
-} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecurityContextFilter.java b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecurityContextFilter.java
index d63babbd6b9..5218f8f665a 100644
--- a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecurityContextFilter.java
+++ b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecurityContextFilter.java
@@ -10,18 +10,16 @@
*******************************************************************************/
package org.eclipse.osee.jaxrs.server.internal.filters;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.core.SecurityContext;
import javax.ws.rs.ext.Provider;
-import com.sun.jersey.spi.container.ContainerRequest;
-import com.sun.jersey.spi.container.ContainerRequestFilter;
-import com.sun.jersey.spi.container.ContainerResponseFilter;
-import com.sun.jersey.spi.container.ResourceFilter;
/**
* @author Roberto E. Escobar
*/
@Provider
-public class SecurityContextFilter implements ResourceFilter, ContainerRequestFilter {
+public class SecurityContextFilter implements ContainerRequestFilter {
private final SecurityContextProvider contextProvider;
@@ -31,22 +29,11 @@ public class SecurityContextFilter implements ResourceFilter, ContainerRequestFi
}
@Override
- public ContainerRequest filter(ContainerRequest request) {
+ public void filter(ContainerRequestContext request) {
SecurityContext securityContext = contextProvider.getSecurityContext(request);
if (securityContext != null) {
request.setSecurityContext(securityContext);
}
- return request;
- }
-
- @Override
- public ContainerRequestFilter getRequestFilter() {
- return this;
- }
-
- @Override
- public ContainerResponseFilter getResponseFilter() {
- return null;
}
}
diff --git a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecurityContextProvider.java b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecurityContextProvider.java
index e6a6e60d03c..0329308490a 100644
--- a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecurityContextProvider.java
+++ b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecurityContextProvider.java
@@ -10,14 +10,14 @@
*******************************************************************************/
package org.eclipse.osee.jaxrs.server.internal.filters;
+import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.core.SecurityContext;
-import com.sun.jersey.api.core.HttpRequestContext;
/**
* @author Roberto E. Escobar
*/
public interface SecurityContextProvider {
- SecurityContext getSecurityContext(HttpRequestContext requestContext);
+ SecurityContext getSecurityContext(ContainerRequestContext requestContext);
}
diff --git a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecurityContextProviderImpl.java b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecurityContextProviderImpl.java
index c4703a6192a..b6db993d006 100644
--- a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecurityContextProviderImpl.java
+++ b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/filters/SecurityContextProviderImpl.java
@@ -14,8 +14,10 @@ import java.security.Principal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
+import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.SecurityContext;
+import javax.ws.rs.core.UriInfo;
import org.eclipse.osee.authorization.admin.Authorization;
import org.eclipse.osee.authorization.admin.AuthorizationAdmin;
import org.eclipse.osee.authorization.admin.AuthorizationRequest;
@@ -23,7 +25,6 @@ import org.eclipse.osee.authorization.admin.AuthorizationRequestBuilder;
import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.jaxrs.OseeWebApplicationException;
import org.eclipse.osee.logger.Log;
-import com.sun.jersey.api.core.HttpRequestContext;
/**
* @author Roberto E. Escobar
@@ -44,11 +45,12 @@ public class SecurityContextProviderImpl implements SecurityContextProvider {
}
@Override
- public SecurityContext getSecurityContext(HttpRequestContext request) {
- boolean isSecure = request.isSecure();
- Date requestDate = asDate(request.getHeaderValue(DATE_HEADER));
- String authType = request.getHeaderValue(AUTHORIZATION_HEADER);
- String path = request.getPath();
+ public SecurityContext getSecurityContext(ContainerRequestContext request) {
+ UriInfo uriInfo = request.getUriInfo();
+ boolean isSecure = isSecure(uriInfo);
+ Date requestDate = asDate(request.getHeaderString(DATE_HEADER));
+ String authType = request.getHeaderString(AUTHORIZATION_HEADER);
+ String path = uriInfo.getPath();
String method = request.getMethod();
AuthorizationRequest authRequest = AuthorizationRequestBuilder.newBuilder()//
@@ -63,6 +65,10 @@ public class SecurityContextProviderImpl implements SecurityContextProvider {
return new SecurityContextImpl(authorized);
}
+ private boolean isSecure(UriInfo uriInfo) {
+ return uriInfo.getAbsolutePath().toASCIIString().startsWith("https");
+ }
+
private Date asDate(String value) {
Date toReturn = null;
if (Strings.isValid(value)) {
diff --git a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/resources/ApplicationResource.java b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/resources/ApplicationResource.java
index 2cefbedf407..51211216649 100644
--- a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/resources/ApplicationResource.java
+++ b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/resources/ApplicationResource.java
@@ -65,7 +65,7 @@ public class ApplicationResource {
String absolutePath = getServletPath();
- URI build = UriBuilder.fromPath(absolutePath).path(applicationContext).path("application.wadl").build();
+ URI build = UriBuilder.fromPath(absolutePath).path(applicationContext).queryParam("_wadl").build();
String path = build.toASCIIString();
info.setUri(path);
toReturn.add(info);
diff --git a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/resources/ServicesResource.java b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/resources/ServicesResource.java
deleted file mode 100644
index 2342c48520d..00000000000
--- a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/resources/ServicesResource.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2014 Boeing.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Boeing - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osee.jaxrs.server.internal.resources;
-
-import javax.annotation.security.PermitAll;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.UriBuilder;
-import javax.ws.rs.core.UriInfo;
-import org.eclipse.osee.jaxrs.server.internal.JaxRsVisitable;
-import org.eclipse.osee.jaxrs.server.internal.JaxRsVisitor;
-import org.osgi.framework.Bundle;
-
-/**
- * @author Roberto E. Escobar
- */
-@Path("services")
-public class ServicesResource {
-
- private static final String CSS = "<style>" + "@CHARSET \"ISO-8859-1\"; " + //
- ".heading { font-size: large; } " + //
- ".field { font-weight: bold; } " + //
- ".value { font-weight: normal; } " + //
- ".porttypename { font-weight: bold; } " + //
- "table { border: solid; border-collapse: collapse; border-width: 2px; } " + //
- "td { border: solid; border-width: 1px; vertical-align: text-top; padding: 5px; } " + //
- "</style>";
-
- private final JaxRsVisitable visitable;
-
- public ServicesResource(JaxRsVisitable visitable) {
- super();
- this.visitable = visitable;
- }
-
- @PermitAll
- @GET
- @Produces(MediaType.TEXT_HTML)
- public String getServices(final @Context UriInfo uriInfo) {
- final StringBuilder builder = new StringBuilder();
- builder.append("<html>");
- builder.append("<head>");
- builder.append(CSS);
- builder.append("<meta http-equiv=content-type content=\"text/html; charset=UTF-8\">");
- builder.append("<title>JAX-RS - Service list</title>");
- builder.append("</head>");
- builder.append("<br/><span class=\"heading\">Available RESTful services:</span><br/>");
- builder.append("<table cellpadding=\"1\" cellspacing=\"1\" border=\"1\" width=\"100%\">");
-
- visitable.accept(new JaxRsVisitor() {
-
- @Override
- public void onApplication(String applicationContext, String componentName, Bundle bundle, Application application) {
- String absolutePath = getServletPath();
- UriBuilder uriBuilder = UriBuilder.fromPath(absolutePath).path(applicationContext);
- String baseApplicationPath = uriBuilder.build().toASCIIString();
- String wadlPath = uriBuilder.path("application.wadl").build().toASCIIString();
-
- builder.append("<tr><td>");
- builder.append("<span class=\"field\">Endpoint address:</span>");
- builder.append("<span class=\"value\">");
- builder.append(baseApplicationPath);
- builder.append("</span>");
- builder.append("<br />");
- builder.append("<span class=\"field\">WADL :</span>");
- builder.append("<a href=\"");
- builder.append(wadlPath);
- builder.append("\">");
- builder.append(wadlPath);
- builder.append("</a></td></tr>");
- }
-
- private String getServletPath() {
- String absolutePath = uriInfo.getAbsolutePath().toASCIIString();
- absolutePath = absolutePath.replaceAll("/services", "");
- return absolutePath;
- }
- });
- builder.append("</table>");
- builder.append("</html>");
- return builder.toString();
- }
-
-}

Back to the top