[ 
https://issues.apache.org/struts/browse/WW-2170?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aaron Brown updated WW-2170:
----------------------------

    Attachment: ww-2170.patch

I'm retarded...here is the patch with the Struts 2 code formatting rather than 
my company's formatting. Habitual keystrokes get you on occasion. Sorry for the 
confusion!

thanks,
aaron

> ObjectFactory.buildResult not correctly configuring Result instance properties
> ------------------------------------------------------------------------------
>
>                 Key: WW-2170
>                 URL: https://issues.apache.org/struts/browse/WW-2170
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Actions
>    Affects Versions: 2.0.9
>         Environment: WIndows Server 2003
>            Reporter: Aaron Brown
>             Fix For: 2.0.11
>
>         Attachments: ww-2170.patch, ww-2170.patch, ww-2170.patch
>
>
> Hi, I think I have stumbled across a bug in the ObjectFactory. 
> ObjectFactory.buildResult() invokes 
> OgnlUtil.setProperties(resultConfig.getParams(), result, extraContext, true) 
> to populate a Result instance with a parameter map. In addition, the call to 
> OgnlUtil.setProperties forces exceptions to be thrown when necessary, by 
> setting the last parameter in the method call to 'true'. 
> If an exception is thrown, it is caught by the ObjectFactory and logged with 
> a level of DEBUG. Further, in the ObjectFactory.buildResult() method the 
> following comment appears: "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."      
> However, throwing exceptions is not ok. The Ognl.setProperties method will 
> stop execution if an exception is thrown. As such, it is possible that not 
> all properties specified in the ResultConfig parameter map will be set on the 
> Result instance. 
> For example, I am trying to set a property on a JSONResult class. However, 
> the ResultConfig parameter map has a 'location' property in addition to the 
> property in my Result action annotation. (I havne't tracked down where this 
> location is being set in the ResultConfig). The 'location' property is the 
> first thing that OgnlUtils tries to set and an error is thrown. Loop 
> iteration stops, and the "enableSMD" property in the params map is ignored 
> and the Result class is incorrectly configured.
> Here is my Action class:
> @Result(name = "success", value = "", type = JSONResult.class, params = 
> {"enableSMD", "true"}) 
> public class JsonAction extends ActionSupport  {
>        
>       @SMDMethod
>       public String getName(String client) {
>         return "testName";
>       }
> }
> If all you want to do is log an erroneous attempt to set a property, why are 
> you throwing exceptions? The OgnlUtil.internalSetProperty() method will do 
> that for you if it configured not to throw exceptions.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to