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 2015/02/03 13:30:47 UTC

svn commit: r1656707 - in /felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal: dispatch/Dispatcher.java dispatch/RequestDispatcherProvider.java handler/FilterHandler.java handler/HandlerRegistry.java handler/ServletHandler.java

Author: cziegeler
Date: Tue Feb  3 12:30:46 2015
New Revision: 1656707

URL: http://svn.apache.org/r1656707
Log:
FELIX-4060 : Implement HTTP Service Update (RFC-189)

Modified:
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/RequestDispatcherProvider.java
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterHandler.java
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerRegistry.java
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java

Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java?rev=1656707&r1=1656706&r2=1656707&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/Dispatcher.java Tue Feb  3 12:30:46 2015
@@ -564,14 +564,14 @@ public final class Dispatcher implements
     }
 
     @Override
-    public RequestDispatcher getNamedDispatcher(final long contextId, final String name)
+    public RequestDispatcher getNamedDispatcher(final Long contextId, final String name)
     {
         ServletHandler handler = this.handlerRegistry.getServletHandlerByName(contextId, name);
         return handler != null ? new RequestDispatcherImpl(handler, null) : null;
     }
 
     @Override
-    public RequestDispatcher getRequestDispatcher(final long contextId, String path)
+    public RequestDispatcher getRequestDispatcher(final Long contextId, String path)
     {
         // See section 9.1 of Servlet 3.x specification...
         if (path == null || (!path.startsWith("/") && !"".equals(path)))

Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/RequestDispatcherProvider.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/RequestDispatcherProvider.java?rev=1656707&r1=1656706&r2=1656707&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/RequestDispatcherProvider.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/dispatch/RequestDispatcherProvider.java Tue Feb  3 12:30:46 2015
@@ -30,10 +30,10 @@ public interface RequestDispatcherProvid
     /**
      * @see ServletContext#getNamedDispatcher(String)
      */
-    RequestDispatcher getNamedDispatcher(long contextId, String name);
+    RequestDispatcher getNamedDispatcher(Long contextId, String name);
 
     /**
      * @see ServletContext#getRequestDispatcher(String)
      */
-    RequestDispatcher getRequestDispatcher(long contextId, String path);
+    RequestDispatcher getRequestDispatcher(Long contextId, String path);
 }

Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterHandler.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterHandler.java?rev=1656707&r1=1656706&r2=1656707&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterHandler.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/FilterHandler.java Tue Feb  3 12:30:46 2015
@@ -62,7 +62,7 @@ public final class FilterHandler extends
         }
         else
         {
-            this.contextServiceId = -1;
+            this.contextServiceId = 0;
         }
     }
 

Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerRegistry.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerRegistry.java?rev=1656707&r1=1656706&r2=1656707&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerRegistry.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HandlerRegistry.java Tue Feb  3 12:30:46 2015
@@ -34,9 +34,15 @@ import org.apache.felix.http.base.intern
  */
 public final class HandlerRegistry
 {
+    private static FilterHandler[] EMPTY_FILTER_HANDLER = new FilterHandler[0];
+
     /** Current list of context registrations. */
     private volatile List<PerContextHandlerRegistry> registrations = Collections.emptyList();
 
+    /**
+     * Create a new registry.
+     * Register default context registry for Http Service
+     */
     public HandlerRegistry()
     {
         this.add(new PerContextHandlerRegistry());
@@ -151,17 +157,15 @@ public final class HandlerRegistry
         return null;
     }
 
-    private static FilterHandler[] EMPTY_FILTER_HANDLER = new FilterHandler[0];
-
-    public FilterHandler[] getFilterHandlers(final ServletHandler servletHandler,
+    public FilterHandler[] getFilterHandlers(@Nonnull final ServletHandler servletHandler,
             final DispatcherType dispatcherType,
-            final String requestURI)
+            @Nonnull final String requestURI)
     {
-        final long id = servletHandler.getContextServiceId();
+        final long key = servletHandler.getContextServiceId();
         final List<PerContextHandlerRegistry> regs = this.registrations;
         for(final PerContextHandlerRegistry r : regs)
         {
-            if ( id == r.getContextServiceId() )
+            if ( key == r.getContextServiceId() )
             {
                 return r.getFilterHandlers(servletHandler, dispatcherType, requestURI);
             }
@@ -169,24 +173,35 @@ public final class HandlerRegistry
         return EMPTY_FILTER_HANDLER;
     }
 
-    public ServletHandler getServletHandlerByName(final Long contextId, final String name)
+    /**
+     * Get the servlet handler for a servlet by name
+     * @param contextId The context id or {@code null}
+     * @param name The servlet name
+     * @return The servlet handler or {@code null}
+     */
+    public ServletHandler getServletHandlerByName(final Long contextId, @Nonnull final String name)
     {
-        if ( contextId != null )
+        final long key = (contextId == null ? 0 : contextId);
+        final List<PerContextHandlerRegistry> regs = this.registrations;
+        for(final PerContextHandlerRegistry r : regs)
         {
-            final List<PerContextHandlerRegistry> regs = this.registrations;
-            for(final PerContextHandlerRegistry r : regs)
+            if ( key == r.getContextServiceId() )
             {
-                if ( contextId == r.getContextServiceId() )
-                {
-                    return r.getServletHandlerByName(name);
-                }
+                return r.getServletHandlerByName(name);
             }
         }
+
         return null;
     }
 
-    public ServletHandler getServletHander(final String requestURI)
+    /**
+     * Search the servlet handler for the request uri
+     * @param requestURI The request uri
+     * @return
+     */
+    public ServletHandler getServletHander(@Nonnull final String requestURI)
     {
+        // search the first matching context registry
         final List<PerContextHandlerRegistry> regs = this.registrations;
         for(final PerContextHandlerRegistry r : regs)
         {

Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java?rev=1656707&r1=1656706&r2=1656707&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/handler/ServletHandler.java Tue Feb  3 12:30:46 2015
@@ -71,7 +71,7 @@ public final class ServletHandler extend
         }
         else
         {
-            this.contextServiceId = -1;
+            this.contextServiceId = 0;
         }
     }