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&lt;String&gt;="org.osgi.service.http.runtime.HttpServiceRuntime";
                             uses:="org.osgi.service.http.runtime,org.osgi.service.http.runtime.dto"
                         </Provide-Capability>