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)
{