You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2015/09/28 20:52:56 UTC
[07/33] struts git commit: Fixes tests
Fixes tests
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/c3f4457b
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/c3f4457b
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/c3f4457b
Branch: refs/heads/master
Commit: c3f4457b8b8ad6bd0e89646d825f2ef5f9f91118
Parents: 4565993
Author: Lukasz Lenart <lu...@apache.org>
Authored: Mon Aug 31 14:43:31 2015 +0200
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Mon Aug 31 14:43:31 2015 +0200
----------------------------------------------------------------------
.../opensymphony/xwork2/DefaultActionProxy.java | 11 ++++++-----
.../opensymphony/xwork2/ActionInvocationTest.java | 18 ++++++++++++++----
.../config/providers/SomeUnknownHandler.java | 5 +++++
core/src/test/resources/xwork-sample.xml | 6 ++++--
4 files changed, 29 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/c3f4457b/core/src/main/java/com/opensymphony/xwork2/DefaultActionProxy.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/com/opensymphony/xwork2/DefaultActionProxy.java b/core/src/main/java/com/opensymphony/xwork2/DefaultActionProxy.java
index d1bfd71..6b8749e 100644
--- a/core/src/main/java/com/opensymphony/xwork2/DefaultActionProxy.java
+++ b/core/src/main/java/com/opensymphony/xwork2/DefaultActionProxy.java
@@ -194,12 +194,13 @@ public class DefaultActionProxy implements ActionProxy, Serializable {
resolveMethod();
- if (!config.isAllowedMethod(method)) {
- throw new ConfigurationException("Invalid method: " + method + " for action " + actionName);
+ if (config.isAllowedMethod(method) ||
+ (unknownHandlerManager.hasUnknownHandlers() && unknownHandlerManager.isAllowedMethod(method, config))
+ ) {
+ invocation.init(this);
+ } else {
+ throw new ConfigurationException("This method: " + method + " for action " + actionName + " is not allowed!");
}
-
- invocation.init(this);
-
} finally {
UtilTimerStack.pop(profileKey);
}
http://git-wip-us.apache.org/repos/asf/struts/blob/c3f4457b/core/src/test/java/com/opensymphony/xwork2/ActionInvocationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/com/opensymphony/xwork2/ActionInvocationTest.java b/core/src/test/java/com/opensymphony/xwork2/ActionInvocationTest.java
index 05c09b2..37aa2a5 100644
--- a/core/src/test/java/com/opensymphony/xwork2/ActionInvocationTest.java
+++ b/core/src/test/java/com/opensymphony/xwork2/ActionInvocationTest.java
@@ -17,6 +17,7 @@ package com.opensymphony.xwork2;
import com.opensymphony.xwork2.config.entities.ActionConfig;
import com.opensymphony.xwork2.config.providers.XmlConfigurationProvider;
+import com.opensymphony.xwork2.mock.MockResult;
import java.util.HashMap;
@@ -45,12 +46,12 @@ public class ActionInvocationTest extends XWorkTestCase {
public void testCommandInvocationUnknownHandler() throws Exception {
- DefaultActionProxy baseActionProxy = (DefaultActionProxy) actionProxyFactory.createActionProxy(
- "baz", "unknownMethodTest", "unknownmethod", null);
UnknownHandler unknownHandler = new UnknownHandler() {
- public ActionConfig handleUnknownAction(String namespace, String actionName) throws XWorkException { return null;}
+ public ActionConfig handleUnknownAction(String namespace, String actionName) throws XWorkException {
+ return new ActionConfig.Builder("test", actionName, ActionSupport.class.getName()).build();
+ }
public Result handleUnknownResult(ActionContext actionContext, String actionName, ActionConfig actionConfig, String resultCode) throws XWorkException {
- return null;
+ return new MockResult();
}
public Object handleUnknownActionMethod(Object action, String methodName) {
if (methodName.equals("unknownmethod")) {
@@ -59,10 +60,19 @@ public class ActionInvocationTest extends XWorkTestCase {
return null;
}
}
+ public boolean isAllowedMethod(String allowedMethod, ActionConfig actionConfig) {
+ return "unknownmethod".equals(allowedMethod);
+ }
};
UnknownHandlerManagerMock uhm = new UnknownHandlerManagerMock();
uhm.addUnknownHandler(unknownHandler);
+
+ loadButAdd(UnknownHandlerManager.class, uhm);
+
+ DefaultActionProxy baseActionProxy = (DefaultActionProxy) actionProxyFactory.createActionProxy(
+ "baz", "unknownMethodTest", "unknownmethod", null);
+
((DefaultActionInvocation)baseActionProxy.getInvocation()).setUnknownHandlerManager(uhm);
assertEquals("found", baseActionProxy.execute());
http://git-wip-us.apache.org/repos/asf/struts/blob/c3f4457b/core/src/test/java/com/opensymphony/xwork2/config/providers/SomeUnknownHandler.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/com/opensymphony/xwork2/config/providers/SomeUnknownHandler.java b/core/src/test/java/com/opensymphony/xwork2/config/providers/SomeUnknownHandler.java
index 312f4c9..5e922e0 100644
--- a/core/src/test/java/com/opensymphony/xwork2/config/providers/SomeUnknownHandler.java
+++ b/core/src/test/java/com/opensymphony/xwork2/config/providers/SomeUnknownHandler.java
@@ -38,6 +38,11 @@ public class SomeUnknownHandler implements UnknownHandler{
return null;
}
+ @Override
+ public boolean isAllowedMethod(String allowedMethod, ActionConfig actionConfig) {
+ return false;
+ }
+
public void setActionConfig(ActionConfig actionConfig) {
this.actionConfig = actionConfig;
}
http://git-wip-us.apache.org/repos/asf/struts/blob/c3f4457b/core/src/test/resources/xwork-sample.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/xwork-sample.xml b/core/src/test/resources/xwork-sample.xml
index 3705298..cd2ddcb 100644
--- a/core/src/test/resources/xwork-sample.xml
+++ b/core/src/test/resources/xwork-sample.xml
@@ -1,6 +1,6 @@
<!DOCTYPE xwork PUBLIC
- "-//Apache Struts//XWork 2.0//EN"
- "http://struts.apache.org/dtds/xwork-2.0.dtd"
+ "-//Apache Struts//XWork 2.5//EN"
+ "http://struts.apache.org/dtds/xwork-2.5.dtd"
>
<!-- "file:///temp/ross/xwork/src/etc/xwork-1.0.dtd" -->
@@ -14,6 +14,8 @@
</result>
</global-results>
+ <global-allowed-methods methods="execute,input,back,cancel,browse"/>
+
<action name="Foo" class="com.opensymphony.xwork2.SimpleAction">
<param name="foo">17</param>
<param name="bar">23</param>