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>