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/01 16:20:05 UTC

svn commit: r1656314 - in /felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal: DispatcherServlet.java handler/HandlerRegistry.java runtime/ServletInfo.java whiteboard/tracker/ServletTracker.java

Author: cziegeler
Date: Sun Feb  1 15:20:05 2015
New Revision: 1656314

URL: http://svn.apache.org/r1656314
Log:
FELIX-4548 : Implement the missing errors registration

Modified:
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/DispatcherServlet.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/runtime/ServletInfo.java
    felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/ServletTracker.java

Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/DispatcherServlet.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/DispatcherServlet.java?rev=1656314&r1=1656313&r2=1656314&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/DispatcherServlet.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/DispatcherServlet.java Sun Feb  1 15:20:05 2015
@@ -54,6 +54,11 @@ public final class DispatcherServlet ext
         super.destroy();
     }
 
+    public boolean handleError(HttpServletRequest request, HttpServletResponse response, int errorCode, String exceptionType) throws IOException
+    {
+        return this.controller.getDispatcher().handleError(request, response, errorCode, exceptionType);
+    }
+
     @Override
     protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
     {
@@ -84,6 +89,7 @@ public final class DispatcherServlet ext
             this.listener = requestAttributeListener;
         }
 
+        @Override
         public void setAttribute(String name, Object value)
         {
             if (value == null)
@@ -106,6 +112,7 @@ public final class DispatcherServlet ext
             }
         }
 
+        @Override
         public void removeAttribute(String name)
         {
             Object oldValue = this.getAttribute(name);

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=1656314&r1=1656313&r2=1656314&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 Sun Feb  1 15:20:05 2015
@@ -42,11 +42,6 @@ public final class HandlerRegistry
     private volatile HandlerMapping<FilterHandler> filterMapping = new HandlerMapping<FilterHandler>();
     private volatile ErrorsMapping errorsMapping = new ErrorsMapping();
 
-    public synchronized void addErrorServlet(String errorPage, ServletHandler handler) throws ServletException
-    {
-        this.errorsMapping.addErrorServlet(errorPage, handler);
-    }
-
     public synchronized void addFilter(FilterHandler handler) throws ServletException
     {
         if (this.filterMap.containsKey(handler.getFilter()))
@@ -85,6 +80,14 @@ public final class HandlerRegistry
             this.servletPatternMap.put(pattern, handler.getServlet());
         }
 
+        patterns = handler.getServletInfo().getErrorPage();
+        if ( patterns != null )
+        {
+            for(final String errorPage : patterns)
+            {
+                this.errorsMapping.addErrorServlet(errorPage, handler);
+            }
+        }
         handler.init();
         this.servletMap.put(handler.getServlet(), handler);
 

Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java?rev=1656314&r1=1656313&r2=1656314&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java Sun Feb  1 15:20:05 2015
@@ -116,7 +116,7 @@ public final class ServletInfo extends W
     @Override
     public boolean isValid()
     {
-        return super.isValid() && !isEmpty(this.patterns);
+        return super.isValid() && (!isEmpty(this.patterns) || !isEmpty(this.errorPage));
     }
 
     public String getName()

Modified: felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/ServletTracker.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/ServletTracker.java?rev=1656314&r1=1656313&r2=1656314&view=diff
==============================================================================
--- felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/ServletTracker.java (original)
+++ felix/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/tracker/ServletTracker.java Sun Feb  1 15:20:05 2015
@@ -34,9 +34,10 @@ public final class ServletTracker extend
     {
         try
         {
-            return btx.createFilter(String.format("(&(objectClass=%s)(%s=*))",
+            return btx.createFilter(String.format("(&(objectClass=%s)(|(%s=*)(%s=*)))",
                     Servlet.class.getName(),
-                    HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN));
+                    HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN,
+                    HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_ERROR_PAGE));
         }
         catch ( final InvalidSyntaxException ise)
         {