diff --git a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java index c4d89032d..b6b5b4590 100644 --- a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java +++ b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java @@ -60,6 +60,7 @@ import com.opensymphony.xwork2.util.reflection.ReflectionProvider; import com.opensymphony.xwork2.validator.ActionValidatorManager; import org.apache.struts2.StrutsConstants; import org.apache.struts2.components.UrlRenderer; +import org.apache.struts2.dispatcher.DispatcherErrorHandler; import org.apache.struts2.dispatcher.StaticContentLoader; import org.apache.struts2.dispatcher.mapper.ActionMapper; import org.apache.struts2.dispatcher.multipart.MultiPartRequest; @@ -380,6 +381,8 @@ public class DefaultBeanSelectionProvider extends AbstractBeanSelectionProvider alias(TextParser.class, StrutsConstants.STRUTS_EXPRESSION_PARSER, builder, props); + alias(DispatcherErrorHandler.class, StrutsConstants.STRUTS_DISPATCHER_ERROR_HANDLER, builder, props); + switchDevMode(props); // Convert Struts properties into XWork properties diff --git a/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java b/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java index 0d2845604..3a6b761fe 100644 --- a/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java +++ b/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java @@ -125,6 +125,11 @@ public class FilterDispatcherTest extends StrutsInternalTestCase { public void serviceAction(HttpServletRequest request, HttpServletResponse response, ServletContext context, ActionMapping mapping) throws ServletException { serviceRequest = true; } + + @Override + public void sendError(HttpServletRequest request, HttpServletResponse response, ServletContext ctx, int code, Exception e) { + // NO-OP + } } public static class InnerDispatcher extends Dispatcher { diff --git a/plugins/codebehind/src/test/java/org/apache/struts2/codebehind/CodebehindUnknownHandlerTest.java b/plugins/codebehind/src/test/java/org/apache/struts2/codebehind/CodebehindUnknownHandlerTest.java index dada8161d..e6cff7965 100644 --- a/plugins/codebehind/src/test/java/org/apache/struts2/codebehind/CodebehindUnknownHandlerTest.java +++ b/plugins/codebehind/src/test/java/org/apache/struts2/codebehind/CodebehindUnknownHandlerTest.java @@ -29,6 +29,7 @@ import com.opensymphony.xwork2.config.entities.ResultTypeConfig; import com.opensymphony.xwork2.util.XWorkTestCaseHelper; import org.apache.struts2.StrutsTestCase; import org.apache.struts2.dispatcher.ServletDispatcherResult; +import org.springframework.mock.web.MockServletContext; import javax.servlet.ServletContext; import java.net.MalformedURLException; @@ -46,6 +47,7 @@ public class CodebehindUnknownHandlerTest extends StrutsTestCase { configuration = configurationManager.getConfiguration(); container = configuration.getContainer(); actionProxyFactory = container.getInstance(ActionProxyFactory.class); + servletContext = new MockServletContext(); initDispatcher(Collections.singletonMap("actionPackages", "foo.bar")); mockServletContext = new Mock(ServletContext.class); handler = new CodebehindUnknownHandler("codebehind-default", configuration); diff --git a/plugins/portlet/src/test/java/org/apache/struts2/views/jsp/PortletUrlTagTest.java b/plugins/portlet/src/test/java/org/apache/struts2/views/jsp/PortletUrlTagTest.java index 5f34cfc81..8bdb3fbcb 100644 --- a/plugins/portlet/src/test/java/org/apache/struts2/views/jsp/PortletUrlTagTest.java +++ b/plugins/portlet/src/test/java/org/apache/struts2/views/jsp/PortletUrlTagTest.java @@ -35,21 +35,14 @@ import org.apache.struts2.portlet.util.PortletUrlHelper; import org.jmock.Mock; import org.jmock.cglib.MockObjectTestCase; import org.jmock.core.Constraint; +import org.springframework.mock.web.MockServletContext; -import javax.portlet.PortletContext; -import javax.portlet.PortletMode; -import javax.portlet.PortletURL; -import javax.portlet.RenderRequest; -import javax.portlet.RenderResponse; -import javax.portlet.WindowState; +import javax.portlet.*; +import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.jsp.PageContext; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; +import java.util.*; import static org.apache.struts2.StrutsStatics.STRUTS_PORTLET_CONTEXT; @@ -92,7 +85,8 @@ public class PortletUrlTagTest extends MockObjectTestCase { public void setUp() throws Exception { super.setUp(); - dispatcher = new Dispatcher(null, new HashMap()); + ServletContext servletContext = new MockServletContext(); + dispatcher = new Dispatcher(servletContext, new HashMap()); dispatcher.init(); Dispatcher.setInstance(dispatcher); @@ -100,7 +94,7 @@ public class PortletUrlTagTest extends MockObjectTestCase { stack.getContext().put(ActionContext.CONTAINER, dispatcher.getContainer()); ActionContext context = new ActionContext(stack.getContext()); ActionContext.setContext(context); - + mockActionInvocation = mock(ActionInvocation.class); mockActionProxy = mock(ActionProxy.class); mockHttpReq = mock(HttpServletRequest.class); @@ -111,7 +105,7 @@ public class PortletUrlTagTest extends MockObjectTestCase { mockPortletUrl = mock(PortletURL.class); mockJspWriter = new MockJspWriter(); mockCtx = mock(PortletContext.class); - + mockActionProxy.stubs().method("getNamespace").will(returnValue("/view")); mockActionInvocation.stubs().method("getProxy").will(returnValue( mockActionProxy.proxy()));