From 6a2a22f659365271b7ab17d72d60601e033e6128 Mon Sep 17 00:00:00 2001 From: "Donald J. Brown" Date: Sun, 10 Sep 2006 00:18:08 +0000 Subject: [PATCH] Changed JSF interceptors to fail fast and show problem report to users, fixed test in showcase, ensured that config errors will show problem report when using filter dispatcher WW-1424 WW-1349 git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@441881 13f79535-47bb-0310-9956-ffa450edef68 --- .../struts2/showcase/tutorial/HelloTest.java | 2 ++ .../org/apache/struts2/dispatcher/Dispatcher.java | 10 +++++++--- .../struts2/dispatcher/FilterDispatcher.java | 14 ++++++++++++-- .../apache/struts2/jsf/FacesSetupInterceptor.java | 3 ++- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/apps/showcase/src/test/java/org/apache/struts2/showcase/tutorial/HelloTest.java b/apps/showcase/src/test/java/org/apache/struts2/showcase/tutorial/HelloTest.java index 60debf518..e309ff0d6 100644 --- a/apps/showcase/src/test/java/org/apache/struts2/showcase/tutorial/HelloTest.java +++ b/apps/showcase/src/test/java/org/apache/struts2/showcase/tutorial/HelloTest.java @@ -1,3 +1,5 @@ +package org.apache.struts2.showcase.tutorial; + import junit.framework.TestCase; /** diff --git a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java index 3fb8d56a7..a8a0f6a90 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java @@ -555,7 +555,7 @@ public class Dispatcher { * @param code the HttpServletResponse error code (see {@link javax.servlet.http.HttpServletResponse} for possible error codes). * @param e the Exception that is reported. */ - private void sendError(HttpServletRequest request, HttpServletResponse response, + public void sendError(HttpServletRequest request, HttpServletResponse response, ServletContext ctx, int code, Exception e) { if (devMode) { response.setContentType("text/html"); @@ -613,8 +613,12 @@ public class Dispatcher { /** Simple accessor for a static method */ public class Locator { - public Location getLocation(Throwable t) { - return LocationUtils.getLocation(t); + public Location getLocation(Object obj) { + Location loc = LocationUtils.getLocation(obj); + if (loc == null) { + return Location.UNKNOWN; + } + return loc; } } diff --git a/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java b/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java index b58514e9c..58da1be7d 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java @@ -49,8 +49,10 @@ import org.apache.struts2.dispatcher.mapper.ActionMapper; import org.apache.struts2.dispatcher.mapper.ActionMapperFactory; import org.apache.struts2.dispatcher.mapper.ActionMapping; +import com.opensymphony.module.sitemesh.RequestConstants; import com.opensymphony.util.ClassLoaderUtil; import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.XWorkException; /** * Master filter for Struts that handles four distinct @@ -214,8 +216,16 @@ public class FilterDispatcher implements Filter, StrutsStatics { Dispatcher.setInstance(du); } - ActionMapper mapper = ActionMapperFactory.getMapper(); - ActionMapping mapping = mapper.getMapping(request, du.getConfigurationManager().getConfiguration()); + ActionMapper mapper = null; + ActionMapping mapping = null; + try { + mapper = ActionMapperFactory.getMapper(); + mapping = mapper.getMapping(request, du.getConfigurationManager().getConfiguration()); + } catch (Exception ex) { + du.sendError(request, response, servletContext, response.SC_INTERNAL_SERVER_ERROR, ex); + ActionContextCleanUp.cleanUp(req); + return; + } if (mapping == null) { // there is no action in this request, should we look for a static resource? diff --git a/core/src/main/java/org/apache/struts2/jsf/FacesSetupInterceptor.java b/core/src/main/java/org/apache/struts2/jsf/FacesSetupInterceptor.java index 56784633e..db7990ec7 100644 --- a/core/src/main/java/org/apache/struts2/jsf/FacesSetupInterceptor.java +++ b/core/src/main/java/org/apache/struts2/jsf/FacesSetupInterceptor.java @@ -229,7 +229,8 @@ public class FacesSetupInterceptor extends FacesSupport implements Interceptor { } } } else { - log.error("Unable to initialize jsf interceptors probably due missing JSF implementation libraries"); + throw new StrutsException("Unable to initialize jsf interceptors probably due missing JSF implementation libraries", + invocation.getProxy().getConfig()); } return invocation.invoke(); }