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 <lukaszlen...@apache.org>
Authored: Mon Aug 31 14:43:31 2015 +0200
Committer: Lukasz Lenart <lukaszlen...@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>

Reply via email to