Hi, I think I have stumbled across a bug in the ObjectFactory. Has
anyone else noticed the following behavior?

ObjectFactory.buildResult() invokes OgnlUtil.setProperties() to populate
a Result instance with a parameter map. In addition, the call to
OgnlUtil.setProperties forces exceptions to be thrown when necessary. 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. This property
is the first thing that is set, yet an error is thrown. The rest of the
properties in the map are ignored and the Result class is incorrectly
configured.

If all you want to do is log an erroneous attempt to set a property, why
are you throwing exceptions? The OgnlUtil.internalSetProperty class will
do that for you if it told not to throw exceptions.

Thanks,
Aaron brown


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to