You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2017/11/21 13:47:04 UTC
svn commit: r1815921 - in /felix/trunk/osgi-r7/http: base/
base/src/main/java/org/apache/felix/http/base/internal/service/
base/src/main/java/org/apache/felix/http/base/internal/service/listener/
base/src/main/java/org/apache/felix/http/base/internal/w...
Author: cziegeler
Date: Tue Nov 21 13:47:04 2017
New Revision: 1815921
URL: http://svn.apache.org/viewvc?rev=1815921&view=rev
Log:
FELIX-5748 : Remove ExtHttpManager support
Removed:
felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/
Modified:
felix/trunk/osgi-r7/http/base/pom.xml
felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceFactory.java
felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/service/PerBundleHttpServiceImpl.java
felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/service/SharedHttpServiceImpl.java
felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/FailureStateHandler.java
felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/AsyncTest.java
felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/BaseIntegrationTest.java
felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/HttpJettyTest.java
felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/HttpServiceRuntimeTest.java
felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/RequestDispatchTest.java
felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/ResourceTest.java
felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/ServletPatternTest.java
felix/trunk/osgi-r7/http/jetty/pom.xml
Modified: felix/trunk/osgi-r7/http/base/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/http/base/pom.xml?rev=1815921&r1=1815920&r2=1815921&view=diff
==============================================================================
--- felix/trunk/osgi-r7/http/base/pom.xml (original)
+++ felix/trunk/osgi-r7/http/base/pom.xml Tue Nov 21 13:47:04 2017
@@ -37,6 +37,10 @@
<url>http://svn.apache.org/viewvc/felix/trunk/http/base/</url>
</scm>
+ <properties>
+ <felix.java.version>7</felix.java.version>
+ </properties>
+
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
Modified: felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceFactory.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceFactory.java?rev=1815921&r1=1815920&r2=1815921&view=diff
==============================================================================
--- felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceFactory.java (original)
+++ felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/service/HttpServiceFactory.java Tue Nov 21 13:47:04 2017
@@ -21,9 +21,7 @@ import java.util.Hashtable;
import javax.annotation.Nonnull;
import javax.servlet.ServletContext;
-import org.apache.felix.http.api.ExtHttpService;
import org.apache.felix.http.base.internal.registry.HandlerRegistry;
-import org.apache.felix.http.base.internal.service.listener.AbstractListenerManager;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
@@ -67,13 +65,12 @@ public final class HttpServiceFactory
private final BundleContext bundleContext;
private final boolean sharedContextAttributes;
- private final Hashtable<String, Object> httpServiceProps = new Hashtable<String, Object>();
+ private final Hashtable<String, Object> httpServiceProps = new Hashtable<>();
private volatile ServletContext context;
- private volatile ServiceRegistration<?> httpServiceReg;
+ private volatile ServiceRegistration<HttpService> httpServiceReg;
private final HandlerRegistry handlerRegistry;
private volatile SharedHttpServiceImpl sharedHttpService;
- private volatile AbstractListenerManager listenerManager;
public HttpServiceFactory(final BundleContext bundleContext,
@@ -98,16 +95,11 @@ public final class HttpServiceFactory
}
this.context = context;
- this.listenerManager = new AbstractListenerManager(bundleContext,
- handlerRegistry
- .getRegistry(HTTP_SERVICE_CONTEXT_SERVICE_ID).getEventListenerRegistry());
- this.listenerManager.open();
this.sharedHttpService = new SharedHttpServiceImpl(handlerRegistry);
- final String[] ifaces = new String[] { HttpService.class.getName(), ExtHttpService.class.getName() };
this.active = true;
- this.httpServiceReg = bundleContext.registerService(ifaces, this, this.httpServiceProps);
+ this.httpServiceReg = bundleContext.registerService(HttpService.class, this, this.httpServiceProps);
}
public void stop()
@@ -123,12 +115,6 @@ public final class HttpServiceFactory
this.context = null;
this.sharedHttpService = null;
- if ( this.listenerManager != null )
- {
- this.listenerManager.close();
- this.listenerManager = null;
- }
-
this.httpServiceProps.clear();
}
Modified: felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/service/PerBundleHttpServiceImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/service/PerBundleHttpServiceImpl.java?rev=1815921&r1=1815920&r2=1815921&view=diff
==============================================================================
--- felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/service/PerBundleHttpServiceImpl.java (original)
+++ felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/service/PerBundleHttpServiceImpl.java Tue Nov 21 13:47:04 2017
@@ -20,37 +20,31 @@ import java.util.Dictionary;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.Map;
import java.util.Set;
-import javax.servlet.Filter;
import javax.servlet.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
-import org.apache.felix.http.api.ExtHttpService;
import org.apache.felix.http.base.internal.context.ExtServletContext;
-import org.apache.felix.http.base.internal.handler.FilterHandler;
-import org.apache.felix.http.base.internal.handler.HttpServiceFilterHandler;
import org.apache.felix.http.base.internal.logger.SystemLogger;
-import org.apache.felix.http.base.internal.runtime.FilterInfo;
import org.apache.felix.http.base.internal.runtime.ServletInfo;
import org.apache.felix.http.base.internal.util.PatternUtil;
import org.osgi.framework.Bundle;
import org.osgi.service.http.HttpContext;
+import org.osgi.service.http.HttpService;
import org.osgi.service.http.NamespaceException;
/**
- * This implementation of the {@link ExtHttpService} implements the front end
+ * This implementation of the {@link HttpService} implements the front end
* used by client bundles. It performs the validity checks and passes the
* real operation to the shared http service.
*/
-public final class PerBundleHttpServiceImpl implements ExtHttpService
+public final class PerBundleHttpServiceImpl implements HttpService
{
private final Bundle bundle;
- private final Set<Servlet> localServlets = new HashSet<Servlet>();
- private final Set<FilterHandler> localFilters = new HashSet<FilterHandler>();
+ private final Set<Servlet> localServlets = new HashSet<>();
private final ServletContextManager contextManager;
private final SharedHttpServiceImpl sharedHttpService;
@@ -83,56 +77,6 @@ public final class PerBundleHttpServiceI
}
/**
- * @see org.apache.felix.http.api.ExtHttpService#registerFilter(javax.servlet.Filter, java.lang.String, java.util.Dictionary, int, org.osgi.service.http.HttpContext)
- */
- @Override
- public void registerFilter(final Filter filter,
- final String pattern,
- final Dictionary initParams,
- final int ranking,
- final HttpContext context)
- throws ServletException
- {
- if (filter == null)
- {
- throw new IllegalArgumentException("Filter must not be null");
- }
-
- final Map<String, String> paramMap = new HashMap<String, String>();
- if (initParams != null && initParams.size() > 0)
- {
- Enumeration e = initParams.keys();
- while (e.hasMoreElements())
- {
- Object key = e.nextElement();
- Object value = initParams.get(key);
-
- if ((key instanceof String) && (value instanceof String))
- {
- paramMap.put((String) key, (String) value);
- }
- }
- }
-
- final FilterInfo filterInfo = new FilterInfo(String.format("%s_%d", filter.getClass(), this.hashCode()), pattern, ranking, paramMap);
- if (!filterInfo.isValid())
- {
- throw new ServletException("Invalid registration information for filter.");
- }
-
- final ExtServletContext httpContext = getServletContext(context);
- final FilterHandler holder = new HttpServiceFilterHandler(httpContext, filterInfo, filter);
-
- if ( this.sharedHttpService.registerFilter(holder) )
- {
- synchronized ( this.localFilters )
- {
- this.localFilters.add(holder);
- }
- }
- }
-
- /**
* No need to sync this method, syncing is done via {@link #registerServlet(String, Servlet, Dictionary, HttpContext)}
* @see org.osgi.service.http.HttpService#registerResources(java.lang.String, java.lang.String, org.osgi.service.http.HttpContext)
*/
@@ -174,7 +118,7 @@ public final class PerBundleHttpServiceI
throw new IllegalArgumentException("Malformed servlet alias [" + alias + "]");
}
- final Map<String, String> paramMap = new HashMap<String, String>();
+ final Map<String, String> paramMap = new HashMap<>();
if (initParams != null && initParams.size() > 0)
{
Enumeration e = initParams.keys();
@@ -238,40 +182,14 @@ public final class PerBundleHttpServiceI
public void unregisterAll()
{
- final Set<Servlet> servlets = new HashSet<Servlet>(this.localServlets);
+ final Set<Servlet> servlets = new HashSet<>(this.localServlets);
for (final Servlet servlet : servlets)
{
- unregisterServlet(servlet, false);
- }
-
- final Set<FilterHandler> filters = new HashSet<FilterHandler>(this.localFilters);
- for (final FilterHandler holder : filters)
- {
- this.sharedHttpService.unregisterFilter(holder, false);
+ unregisterServlet(servlet);
}
}
- /**
- * Old whiteboard support
- * @see org.apache.felix.http.api.ExtHttpService#unregisterFilter(javax.servlet.Filter)
- */
- @Override
- public void unregisterFilter(final Filter filter)
- {
- this.unregisterFilter(filter, true);
- }
-
- /**
- * Old whiteboard support
- * @see org.apache.felix.http.api.ExtHttpService#unregisterServlet(javax.servlet.Servlet)
- */
- @Override
- public void unregisterServlet(final Servlet servlet)
- {
- this.unregisterServlet(servlet, true);
- }
-
- private void unregisterServlet(final Servlet servlet, final boolean destroy)
+ private void unregisterServlet(final Servlet servlet)
{
if (servlet != null)
{
@@ -279,7 +197,7 @@ public final class PerBundleHttpServiceI
{
this.localServlets.remove(servlet);
}
- this.sharedHttpService.unregisterServlet(servlet, destroy);
+ this.sharedHttpService.unregisterServlet(servlet);
}
}
@@ -293,27 +211,6 @@ public final class PerBundleHttpServiceI
return this.contextManager.getServletContext(context);
}
- private void unregisterFilter(final Filter filter, final boolean destroy)
- {
- if (filter != null)
- {
- synchronized ( this.localFilters )
- {
- final Iterator<FilterHandler> i = this.localFilters.iterator();
- while ( i.hasNext() )
- {
- final FilterHandler h = i.next();
- if ( h.getFilter() == filter )
- {
- this.sharedHttpService.unregisterFilter(h, destroy);
- i.remove();
- break;
- }
- }
- }
- }
- }
-
private boolean isNameValid(final String name)
{
if (name == null)
Modified: felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/service/SharedHttpServiceImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/service/SharedHttpServiceImpl.java?rev=1815921&r1=1815920&r2=1815921&view=diff
==============================================================================
--- felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/service/SharedHttpServiceImpl.java (original)
+++ felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/service/SharedHttpServiceImpl.java Tue Nov 21 13:47:04 2017
@@ -36,7 +36,7 @@ public final class SharedHttpServiceImpl
{
private final HandlerRegistry handlerRegistry;
- private final Map<String, ServletHandler> aliasMap = new HashMap<String, ServletHandler>();
+ private final Map<String, ServletHandler> aliasMap = new HashMap<>();
public SharedHttpServiceImpl(final HandlerRegistry handlerRegistry)
{
@@ -98,7 +98,7 @@ public final class SharedHttpServiceImpl
}
}
- public void unregisterServlet(final Servlet servlet, final boolean destroy)
+ public void unregisterServlet(final Servlet servlet)
{
if (servlet != null)
{
@@ -110,7 +110,7 @@ public final class SharedHttpServiceImpl
final Map.Entry<String, ServletHandler> entry = i.next();
if (entry.getValue().getServlet() == servlet)
{
- this.handlerRegistry.getRegistry(entry.getValue().getContextServiceId()).unregisterServlet(entry.getValue().getServletInfo(), destroy);
+ this.handlerRegistry.getRegistry(entry.getValue().getContextServiceId()).unregisterServlet(entry.getValue().getServletInfo(), false);
i.remove();
break;
@@ -121,15 +121,7 @@ public final class SharedHttpServiceImpl
}
}
- public void unregisterFilter(final FilterHandler handler, final boolean destroy)
- {
- if (handler != null)
- {
- this.handlerRegistry.getRegistry(handler.getContextServiceId()).unregisterFilter(handler.getFilterInfo(), destroy);
- }
- }
-
- public HandlerRegistry getHandlerRegistry()
+ public HandlerRegistry getHandlerRegistry()
{
return this.handlerRegistry;
}
Modified: felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/FailureStateHandler.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/FailureStateHandler.java?rev=1815921&r1=1815920&r2=1815921&view=diff
==============================================================================
--- felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/FailureStateHandler.java (original)
+++ felix/trunk/osgi-r7/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/FailureStateHandler.java Tue Nov 21 13:47:04 2017
@@ -23,6 +23,7 @@ import static org.osgi.service.http.runt
import static org.osgi.service.http.runtime.dto.DTOConstants.FAILURE_REASON_UNKNOWN;
import static org.osgi.service.http.runtime.dto.DTOConstants.FAILURE_REASON_VALIDATION_FAILED;
+import java.lang.reflect.Array;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
@@ -33,15 +34,16 @@ import org.apache.felix.http.base.intern
import org.apache.felix.http.base.internal.runtime.AbstractInfo;
import org.apache.felix.http.base.internal.runtime.dto.FailedDTOHolder;
import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceReference;
public class FailureStateHandler {
private static final class FailureStatus
{
- public final Map<Integer, Set<Long>> reasonToContextsMapping = new ConcurrentHashMap<Integer, Set<Long>>();
+ public final Map<Integer, Set<Long>> reasonToContextsMapping = new ConcurrentHashMap<>();
}
- private final Map<AbstractInfo<?>, FailureStatus> serviceFailures = new ConcurrentHashMap<AbstractInfo<?>, FailureStatus>();
+ private final Map<AbstractInfo<?>, FailureStatus> serviceFailures = new ConcurrentHashMap<>();
/**
* Remove all failures.
@@ -70,13 +72,72 @@ public class FailureStateHandler {
{
final String type = info.getClass().getSimpleName().substring(0, info.getClass().getSimpleName().length() - 4);
final String serviceInfo;
- if ( info.getServiceReference() == null ) {
+ final ServiceReference<?> ref = info.getServiceReference();
+ if ( ref == null ) {
serviceInfo = "with id " + String.valueOf(info.getServiceId());
} else {
- final Bundle bundle = info.getServiceReference().getBundle();
- serviceInfo = String.valueOf(info.getServiceId()) +
- " (bundle " + (bundle == null ? "<uninstalled>" : bundle.getSymbolicName())
- + " reference " + info.getServiceReference() + ")";
+ final Bundle bundle = ref.getBundle();
+ final StringBuilder ib = new StringBuilder();
+ ib.append(String.valueOf(info.getServiceId()));
+ ib.append(" (bundle ");
+ if ( bundle == null )
+ {
+ ib.append("<uninstalled>");
+ }
+ else
+ {
+ ib.append(bundle.getBundleId());
+ if ( bundle.getSymbolicName() != null )
+ {
+ ib.append(" : ");
+ ib.append(bundle.getSymbolicName());
+ ib.append(":");
+ ib.append(bundle.getVersion());
+ }
+ }
+ ib.append(" reference=");
+ ib.append(ref);
+ ib.append(" properties={");
+ boolean first = true;
+ for(final String name : ref.getPropertyKeys())
+ {
+ if ( first )
+ {
+ first = false;
+ }
+ else
+ {
+ ib.append(", ");
+ }
+ final Object val = ref.getProperty(name);
+ ib.append(name);
+ ib.append("=");
+ if ( val.getClass().isArray() )
+ {
+ boolean fa = true;
+ ib.append('[');
+ for(int i=0;i<Array.getLength(val);i++)
+ {
+ if ( fa )
+ {
+ fa = false;
+ }
+ else
+ {
+ ib.append(", ");
+ }
+ ib.append(Array.get(val, i));
+ }
+ ib.append(']');
+ }
+ else
+ {
+ ib.append(val);
+ }
+ }
+ ib.append("})");
+
+ serviceInfo = ib.toString();
}
if ( reason == FAILURE_REASON_NO_SERVLET_CONTEXT_MATCHING )
{
@@ -117,11 +178,11 @@ public class FailureStateHandler {
Set<Long> contexts = status.reasonToContextsMapping.get(reason);
if ( contexts == null )
{
- contexts = new HashSet<Long>();
+ contexts = new HashSet<>();
}
else
{
- contexts = new HashSet<Long>(contexts);
+ contexts = new HashSet<>(contexts);
}
contexts.add(contextId);
status.reasonToContextsMapping.put(reason, contexts);
@@ -156,7 +217,7 @@ public class FailureStateHandler {
}
else
{
- final Set<Long> set = new HashSet<Long>(entry.getValue());
+ final Set<Long> set = new HashSet<>(entry.getValue());
set.remove(contextId);
entry.setValue(set);
}
Modified: felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/AsyncTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/AsyncTest.java?rev=1815921&r1=1815920&r2=1815921&view=diff
==============================================================================
--- felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/AsyncTest.java (original)
+++ felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/AsyncTest.java Tue Nov 21 13:47:04 2017
@@ -100,7 +100,7 @@ public class AsyncTest extends BaseInteg
assertContent("Hello Async world!", createURL("/test"));
- unregister(servlet);
+ unregister("/test");
assertTrue(destroyLatch.await(5, TimeUnit.SECONDS));
@@ -163,7 +163,7 @@ public class AsyncTest extends BaseInteg
assertContent("Hello Async world!", createURL("/test"));
- unregister(servlet);
+ unregister("/test");
assertTrue(destroyLatch.await(5, TimeUnit.SECONDS));
Modified: felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/BaseIntegrationTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/BaseIntegrationTest.java?rev=1815921&r1=1815920&r2=1815921&view=diff
==============================================================================
--- felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/BaseIntegrationTest.java (original)
+++ felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/BaseIntegrationTest.java Tue Nov 21 13:47:04 2017
@@ -57,7 +57,6 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.apache.felix.http.api.ExtHttpService;
import org.junit.After;
import org.junit.Before;
import org.ops4j.pax.exam.Configuration;
@@ -328,7 +327,7 @@ public abstract class BaseIntegrationTes
mavenBundle("org.apache.felix", "org.apache.felix.configadmin").version("1.8.14").startLevel(START_LEVEL_SYSTEM_BUNDLES),
mavenBundle("org.apache.felix", "org.apache.felix.http.servlet-api", System.getProperty("http.servlet.api.version")).startLevel(START_LEVEL_SYSTEM_BUNDLES),
mavenBundle("org.apache.felix", ORG_APACHE_FELIX_HTTP_JETTY, System.getProperty("http.jetty.version")).startLevel(START_LEVEL_SYSTEM_BUNDLES),
- mavenBundle("org.apache.felix", "org.apache.felix.http.whiteboard", "3.0.0").startLevel(START_LEVEL_SYSTEM_BUNDLES),
+ mavenBundle("org.apache.felix", "org.apache.felix.http.whiteboard", "3.0.1-SNAPSHOT").startLevel(START_LEVEL_SYSTEM_BUNDLES),
mavenBundle("org.apache.httpcomponents", "httpcore-osgi", "4.4.6").startLevel(START_LEVEL_SYSTEM_BUNDLES),
mavenBundle("org.apache.httpcomponents", "httpclient-osgi", "4.5.3").startLevel(START_LEVEL_SYSTEM_BUNDLES),
@@ -450,11 +449,6 @@ public abstract class BaseIntegrationTes
return null;
}
- protected ExtHttpService getExtHttpService()
- {
- return getService(ExtHttpService.class.getName());
- }
-
protected Bundle getHttpJettyBundle()
{
Bundle b = findBundle(ORG_APACHE_FELIX_HTTP_JETTY);
@@ -488,16 +482,6 @@ public abstract class BaseIntegrationTes
return (T) tracker.getService();
}
- protected void register(String pattern, Filter filter) throws ServletException, NamespaceException
- {
- register(pattern, filter, null);
- }
-
- protected void register(String pattern, Filter servlet, HttpContext context) throws ServletException, NamespaceException
- {
- getExtHttpService().registerFilter(servlet, pattern, null, 0, context);
- }
-
protected void register(String alias, Servlet servlet) throws ServletException, NamespaceException
{
register(alias, servlet, null);
@@ -515,21 +499,12 @@ public abstract class BaseIntegrationTes
protected void register(String alias, String name, HttpContext context) throws ServletException, NamespaceException
{
- getExtHttpService().registerResources(alias, name, context);
+ getHttpService().registerResources(alias, name, context);
}
- protected void unregister(Filter filter) throws ServletException, NamespaceException
- {
- getExtHttpService().unregisterFilter(filter);
- }
-
- protected void unregister(Servlet servlet) throws ServletException, NamespaceException
- {
- getExtHttpService().unregisterServlet(servlet);
- }
protected void unregister(String alias) throws ServletException, NamespaceException
{
- getExtHttpService().unregister(alias);
+ getHttpService().unregister(alias);
}
}
Modified: felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/HttpJettyTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/HttpJettyTest.java?rev=1815921&r1=1815920&r2=1815921&view=diff
==============================================================================
--- felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/HttpJettyTest.java (original)
+++ felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/HttpJettyTest.java Tue Nov 21 13:47:04 2017
@@ -18,10 +18,8 @@
*/
package org.apache.felix.http.itest;
-import static javax.servlet.http.HttpServletResponse.SC_FORBIDDEN;
import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
import static javax.servlet.http.HttpServletResponse.SC_OK;
-import static javax.servlet.http.HttpServletResponse.SC_PAYMENT_REQUIRED;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@@ -36,10 +34,7 @@ import java.util.Dictionary;
import java.util.Hashtable;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicLong;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
@@ -167,7 +162,7 @@ public class HttpJettyTest extends BaseI
assertResponseCode(SC_OK, testURL);
- unregister(servlet);
+ unregister("/foo");
assertTrue(destroyLatch.await(5, TimeUnit.SECONDS));
@@ -175,183 +170,6 @@ public class HttpJettyTest extends BaseI
}
/**
- * Tests that we can register servlets and filters together.
- */
- @Test
- public void testHandleMultipleRegistrationsOk() throws Exception
- {
- CountDownLatch initLatch = new CountDownLatch(3);
- CountDownLatch destroyLatch = new CountDownLatch(3);
-
- TestServlet servlet1 = new TestServlet(initLatch, destroyLatch)
- {
- private static final long serialVersionUID = 1L;
-
- final AtomicLong m_count = new AtomicLong();
-
- @Override
- protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
- {
- resp.setStatus(SC_OK);
- resp.getWriter().printf("1.%d", m_count.incrementAndGet());
- resp.flushBuffer();
- }
- };
-
- TestServlet servlet2 = new TestServlet(initLatch, destroyLatch)
- {
- private static final long serialVersionUID = 1L;
-
- final AtomicLong m_count = new AtomicLong();
-
- @Override
- protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
- {
- resp.setStatus(SC_OK);
- resp.getWriter().printf("2.%d", m_count.incrementAndGet());
- resp.flushBuffer();
- }
- };
-
- TestFilter filter = new TestFilter(initLatch, destroyLatch)
- {
- @Override
- protected void filter(HttpServletRequest req, HttpServletResponse resp, FilterChain chain) throws IOException, ServletException
- {
- String param = req.getParameter("param");
- if ("forbidden".equals(param))
- {
- resp.reset();
- resp.sendError(SC_FORBIDDEN);
- resp.flushBuffer();
- }
- else
- {
- chain.doFilter(req, resp);
- }
- }
- };
-
- register("/test/1", servlet1);
- register("/test/2", servlet2);
- register("/test/.*", filter);
-
- assertTrue(initLatch.await(5, TimeUnit.SECONDS));
-
- assertContent("1.1", createURL("/test/1"));
- assertContent("2.1", createURL("/test/2"));
- assertContent("2.2", createURL("/test/2"));
- assertContent("1.2", createURL("/test/1"));
- assertContent("2.3", createURL("/test/2"));
-
- assertResponseCode(SC_FORBIDDEN, createURL("/test/2?param=forbidden"));
- assertResponseCode(SC_NOT_FOUND, createURL("/test?param=not_recognized"));
-
- assertContent("2.4", createURL("/test/2"));
- assertContent("1.3", createURL("/test/1"));
-
- assertResponseCode(SC_NOT_FOUND, createURL("/test?param=forbidden"));
-
- unregister(servlet1);
- unregister(servlet2);
- unregister(filter);
-
- assertTrue(destroyLatch.await(5, TimeUnit.SECONDS));
- }
-
- /**
- * Test case for FELIX-3988, handling security constraints in {@link Filter}s.
- */
- @Test
- public void testHandleSecurityInFilterOk() throws Exception
- {
- CountDownLatch initLatch = new CountDownLatch(2);
- CountDownLatch destroyLatch = new CountDownLatch(2);
-
- HttpContext context = new HttpContext()
- {
- @Override
- public String getMimeType(String name)
- {
- return null;
- }
-
- @Override
- public URL getResource(String name)
- {
- return null;
- }
-
- @Override
- public boolean handleSecurity(HttpServletRequest request, HttpServletResponse response) throws IOException
- {
- if (request.getParameter("setStatus") != null)
- {
- response.setStatus(SC_PAYMENT_REQUIRED);
- }
- else if (request.getParameter("sendError") != null)
- {
- response.sendError(SC_PAYMENT_REQUIRED);
- }
- else if (request.getParameter("commit") != null)
- {
- if (!response.isCommitted())
- {
- response.getWriter().append("Not allowed!");
- response.flushBuffer();
- }
- }
- return false;
- }
- };
-
- TestFilter filter = new TestFilter(initLatch, destroyLatch);
- TestServlet servlet = new TestServlet(initLatch, destroyLatch);
-
- register("/foo", servlet, context);
- register("/.*", filter, context);
-
- URL url1 = createURL("/foo");
- URL url2 = createURL("/foo?sendError=true");
- URL url3 = createURL("/foo?setStatus=true");
- URL url4 = createURL("/foo?commit=true");
-
- assertTrue(initLatch.await(5, TimeUnit.SECONDS));
-
- assertResponseCode(SC_FORBIDDEN, url1);
- assertResponseCode(SC_PAYMENT_REQUIRED, url2);
- assertResponseCode(SC_PAYMENT_REQUIRED, url3);
- assertContent(SC_OK, "Not allowed!", url4);
-
- unregister(filter);
- unregister(servlet);
-
- assertTrue(destroyLatch.await(5, TimeUnit.SECONDS));
-
- assertResponseCode(SC_NOT_FOUND, url1);
- }
-
- /**
- * Tests that we can register a filter with Jetty and that its lifecycle is correctly controlled.
- */
- @Test
- public void testRegisterFilterLifecycleOk() throws Exception
- {
- CountDownLatch initLatch = new CountDownLatch(1);
- CountDownLatch destroyLatch = new CountDownLatch(1);
-
- TestFilter filter = new TestFilter(initLatch, destroyLatch);
-
- register("/test", filter);
-
- assertTrue(initLatch.await(5, TimeUnit.SECONDS));
-
- unregister(filter);
-
- assertTrue(destroyLatch.await(5, TimeUnit.SECONDS));
- }
-
- /**
* Tests that we can register a servlet with Jetty and that its lifecycle is correctly controlled.
*/
@Test
@@ -366,7 +184,7 @@ public class HttpJettyTest extends BaseI
assertTrue(initLatch.await(5, TimeUnit.SECONDS));
- unregister(servlet);
+ unregister("/test");
assertTrue(destroyLatch.await(5, TimeUnit.SECONDS));
}
@@ -401,7 +219,7 @@ public class HttpJettyTest extends BaseI
assertTrue(initLatch.await(5, TimeUnit.SECONDS));
- unregister(servlet);
+ unregister("/initTest");
}
@Test
@@ -474,7 +292,7 @@ public class HttpJettyTest extends BaseI
assertResponseCode(SC_OK, testURL);
- unregister(servlet);
+ unregister("/foo");
assertTrue(destroyLatch.await(5, TimeUnit.SECONDS));
Modified: felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/HttpServiceRuntimeTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/HttpServiceRuntimeTest.java?rev=1815921&r1=1815920&r2=1815921&view=diff
==============================================================================
--- felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/HttpServiceRuntimeTest.java (original)
+++ felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/HttpServiceRuntimeTest.java Tue Nov 21 13:47:04 2017
@@ -1147,7 +1147,7 @@ public class HttpServiceRuntimeTest exte
final RequestInfoDTO infoDTO = serviceRuntime.calculateRequestInfoDTO("/pathcollision");
assertEquals(httpServiceContext.serviceId, infoDTO.servletDTO.servletContextId);
- unregister(testServlet);
+ unregister("/pathcollision");
awaitServiceRegistration(destroyLatch);
runtimeDTO = serviceRuntime.getRuntimeDTO();
Modified: felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/RequestDispatchTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/RequestDispatchTest.java?rev=1815921&r1=1815920&r2=1815921&view=diff
==============================================================================
--- felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/RequestDispatchTest.java (original)
+++ felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/RequestDispatchTest.java Tue Nov 21 13:47:04 2017
@@ -127,8 +127,8 @@ public class RequestDispatchTest extends
assertContent("FORWARD\n", createURL("/test/foo?bar=qux&quu"));
assertContent("FORWARD\n", createURL("/forward/bar?quu=qux"));
- unregister(forward);
- unregister(servlet);
+ unregister("/forward");
+ unregister("/test");
assertTrue(destroyLatch.await(5, TimeUnit.SECONDS));
}
@@ -195,7 +195,7 @@ public class RequestDispatchTest extends
assertContent("FORWARD\n", createURL("/test/foo?bar=qux&quu"));
- unregister(servlet);
+ unregister("/test");
assertTrue(destroyLatch.await(5, TimeUnit.SECONDS));
}
@@ -271,8 +271,8 @@ public class RequestDispatchTest extends
assertContent("BEFORE\nINCLUDE\nAFTER\n", createURL("/test/foo?bar=qux&quu"));
assertContent("INCLUDE\n", createURL("/include/bar?quu=qux"));
- unregister(include);
- unregister(servlet);
+ unregister("/include");
+ unregister("/test");
assertTrue(destroyLatch.await(5, TimeUnit.SECONDS));
}
@@ -339,7 +339,7 @@ public class RequestDispatchTest extends
assertContent("BEFORE\nINCLUDE\nAFTER\n", createURL("/test/foo?bar=qux&quu"));
- unregister(servlet);
+ unregister("/test");
assertTrue(destroyLatch.await(5, TimeUnit.SECONDS));
}
@@ -432,8 +432,8 @@ public class RequestDispatchTest extends
assertContent("FORWARD\n", createURL("/context/test/foo?bar=qux&quu"));
assertContent("FORWARD\n", createURL("/context/forward/bar?quu=qux"));
- unregister(forward);
- unregister(servlet);
+ unregister("/forward");
+ unregister("/test");
assertTrue(destroyLatch.await(5, TimeUnit.SECONDS));
}
@@ -508,8 +508,8 @@ public class RequestDispatchTest extends
assertContent("BEFORE\nINCLUDE\nAFTER\n", createURL("/context/test/foo?bar=qux&quu"));
assertContent("INCLUDE\n", createURL("/context/include/bar?quu=qux"));
- unregister(include);
- unregister(servlet);
+ unregister("/include");
+ unregister("/test");
assertTrue(destroyLatch.await(5, TimeUnit.SECONDS));
}
Modified: felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/ResourceTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/ResourceTest.java?rev=1815921&r1=1815920&r2=1815921&view=diff
==============================================================================
--- felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/ResourceTest.java (original)
+++ felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/ResourceTest.java Tue Nov 21 13:47:04 2017
@@ -100,7 +100,7 @@ public class ResourceTest extends BaseIn
assertResponseCode(SC_OK, testHtmlURL);
assertResponseCode(SC_OK, testURL);
- unregister(servlet);
+ unregister("/test");
assertTrue(destroyLatch.await(5, TimeUnit.SECONDS));
Modified: felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/ServletPatternTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/ServletPatternTest.java?rev=1815921&r1=1815920&r2=1815921&view=diff
==============================================================================
--- felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/ServletPatternTest.java (original)
+++ felix/trunk/osgi-r7/http/itest/src/test/java/org/apache/felix/http/itest/ServletPatternTest.java Tue Nov 21 13:47:04 2017
@@ -57,7 +57,7 @@ import org.osgi.service.http.context.Ser
@ExamReactorStrategy(PerMethod.class)
public class ServletPatternTest extends BaseIntegrationTest
{
- private List<ServiceRegistration<?>> registrations = new ArrayList<ServiceRegistration<?>>();
+ private List<ServiceRegistration<?>> registrations = new ArrayList<>();
private CountDownLatch initLatch;
private CountDownLatch destroyLatch;
@@ -70,7 +70,7 @@ public class ServletPatternTest extends
public void setupServlet(final String name, String[] path, int rank, String context) throws Exception
{
- Dictionary<String, Object> servletProps = new Hashtable<String, Object>();
+ Dictionary<String, Object> servletProps = new Hashtable<>();
servletProps.put(HTTP_WHITEBOARD_SERVLET_NAME, name);
servletProps.put(HTTP_WHITEBOARD_SERVLET_PATTERN, path);
servletProps.put(SERVICE_RANKING, rank);
@@ -168,7 +168,7 @@ public class ServletPatternTest extends
}
finally
{
- unregister(httpServiceServlet);
+ unregister("/test/foo");
}
}
@@ -197,7 +197,7 @@ public class ServletPatternTest extends
assertTrue(initLatch.await(5, TimeUnit.SECONDS));
assertContent("lowRankServlet", createURL("/foo"));
- Dictionary<String, Object> resourceProps = new Hashtable<String, Object>();
+ Dictionary<String, Object> resourceProps = new Hashtable<>();
String highRankPattern[] = { "/foo" };
resourceProps.put(HTTP_WHITEBOARD_RESOURCE_PATTERN, highRankPattern);
resourceProps.put(HTTP_WHITEBOARD_RESOURCE_PREFIX, "/resource/test.html");
Modified: felix/trunk/osgi-r7/http/jetty/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/http/jetty/pom.xml?rev=1815921&r1=1815920&r2=1815921&view=diff
==============================================================================
--- felix/trunk/osgi-r7/http/jetty/pom.xml (original)
+++ felix/trunk/osgi-r7/http/jetty/pom.xml Tue Nov 21 13:47:04 2017
@@ -100,6 +100,8 @@
<Provide-Capability>
osgi.implementation;osgi.implementation="osgi.http";version:Version="1.1";
uses:="javax.servlet,javax.servlet.http,org.osgi.service.http.context,org.osgi.service.http.whiteboard",
+ osgi.implementation;osgi.implementation="osgi.http";version:Version="1.0";
+ uses:="javax.servlet,javax.servlet.http,org.osgi.service.http.context,org.osgi.service.http.whiteboard",
osgi.service;objectClass:List<String>="org.osgi.service.http.runtime.HttpServiceRuntime";
uses:="org.osgi.service.http.runtime,org.osgi.service.http.runtime.dto"
</Provide-Capability>