Commits

Anonymous committed b82907a

Fixing problem with duplicate result execution XW-521

git-svn-id: http://svn.opensymphony.com/svn/xwork/trunk@1628e221344d-f017-0410-9bd5-d282ab1896d7

Comments (0)

Files changed (3)

src/java/com/opensymphony/xwork2/DefaultActionInvocation.java

     protected Iterator interceptors;
     protected ValueStack stack;
     protected Result result;
+    protected Result explicitResult;
     protected String resultCode;
     protected boolean executed = false;
     protected boolean pushAction = true;
 
     public Result createResult() throws Exception {
 
-    	if (result != null) {
-    		return result;
+    	if (explicitResult != null) {
+    	    Result ret = explicitResult;
+    	    explicitResult = null;;
+    		return ret;
     	}
         ActionConfig config = proxy.getConfig();
         Map results = config.getResults();
         	}
         	
             if (methodResult instanceof Result) {
-            	this.result = (Result) methodResult;
+            	this.explicitResult = (Result) methodResult;
             	return null;
             } else {
             	return (String) methodResult;

src/test/com/opensymphony/xwork2/ActionInvocationTest.java

         ActionProxy baseActionProxy = actionProxyFactory.createActionProxy(
                 "baz", "resultAction", null);
         assertEquals(null, baseActionProxy.execute());
+        assertTrue(SimpleAction.resultCalled);
     }
 
     public void testSimple() {

src/test/com/opensymphony/xwork2/SimpleAction.java

 
     private String aliasSource;
     private String aliasDest;
+    
+    public static boolean resultCalled;
 
 
     public SimpleAction() {
+        resultCalled = false;
     }
 
 
     }
     
     public Result resultAction() throws Exception {
-    	return new VoidResult();
+    	return new Result() {
+
+            public void execute(ActionInvocation invocation) throws Exception {
+                resultCalled = true;
+            }
+    	    
+    	};
     }
 
     public String exceptionMethod() throws Exception {
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.