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(); }