Commits

Anonymous committed f0b942c

Handing result creation better so that ognl exceptions, like in the
case of the Struts 2 action redirect result, won't thrown warn messages
WW-1714

git-svn-id: http://svn.opensymphony.com/svn/xwork/branches/2.0@1509e221344d-f017-0410-9bd5-d282ab1896d7

Comments (0)

Files changed (1)

src/java/com/opensymphony/xwork2/ObjectFactory.java

 import java.util.HashMap;
 import java.util.Map;
 
+import ognl.OgnlException;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 
         if (resultClassName != null) {
             result = (Result) buildBean(resultClassName, extraContext);
-            OgnlUtil.setProperties(resultConfig.getParams(), result, extraContext);
+            try {
+            	OgnlUtil.setProperties(resultConfig.getParams(), result, extraContext, true);
+            } catch (XWorkException ex) {
+            	Throwable reason = ex.getCause();
+            	if (reason instanceof OgnlException)
+            	{
+            		// ognl exceptions could be thrown and be ok if, for example, the result uses parameters in ways other than
+            		// as properties for the result object.  For example, the redirect result from Struts 2 allows any parameters
+            		// to be set on the result, which it appends to the redirecting url.  These parameters wouldn't have a 
+            		// corresponding setter on the result object, so an OGNL exception could be thrown.  Still, this is a misuse
+            		// of exceptions, so we should look at improving it.
+            		LOG.debug(ex.getMessage(), reason);
+            	} else {
+            		throw ex;
+            	}
+            }
         }
 
         return result;