[
https://issues.apache.org/jira/browse/WW-3603?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13797658#comment-13797658
]
Hudson commented on WW-3603:
----------------------------
FAILURE: Integrated in Struts2-JDK6 #812 (See
[https://builds.apache.org/job/Struts2-JDK6/812/])
WW-3603 Prevents creating new map entries (lukaszlenart: rev 1532974)
*
/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMapPropertyAccessor.java
*
/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/XWorkMapPropertyAccessorTest.java
> XWorkMapPropertyAccessor always create new map entries
> ------------------------------------------------------
>
> Key: WW-3603
> URL: https://issues.apache.org/jira/browse/WW-3603
> Project: Struts 2
> Issue Type: Bug
> Affects Versions: 2.2.1
> Reporter: Igor Evgrafov
> Assignee: Lukasz Lenart
> Fix For: 2.3.16
>
> Attachments: 0001-WW-3603-Consider-value-of-CREATE_NULL_OBJECTS.patch
>
>
> XWorkMapPropertyAccessor uses
> "context.get(ReflectionContextState.CREATE_NULL_OBJECTS) != null" to check if
> it in create new objects mode.
> {code:java}
> if (result == null &&
> context.get(ReflectionContextState.CREATE_NULL_OBJECTS)
> != null //BUG
> &&
> objectTypeDeterminer.shouldCreateIfNew(lastClass,lastProperty,target,null,false))
> {
> Class valueClass =
> objectTypeDeterminer.getElementClass(lastClass, lastProperty, key);
> try {
> result = objectFactory.buildBean(valueClass, context);
> map.put(key, result);
> } catch (Exception exc) {
> }
> }
> {code}
> However ParametersInterceptor uses
> ReflectionContextState.setCreatingNullObjects(contextMap, true\false); to
> turn this mode on and off. In result
> "context.get(ReflectionContextState.CREATE_NULL_OBJECTS) != null" is always
> true and result bean is always created.
> {code:java}
> Map<String, Object> contextMap = ac.getContextMap();
> try {
> ReflectionContextState.setCreatingNullObjects(contextMap,
> true);
> ReflectionContextState.setDenyMethodExecution(contextMap,
> true);
>
> ReflectionContextState.setReportingConversionErrors(contextMap, true);
> ValueStack stack = ac.getValueStack();
> setParameters(action, stack, parameters);
> } finally {
> ReflectionContextState.setCreatingNullObjects(contextMap,
> false);
> ReflectionContextState.setDenyMethodExecution(contextMap,
> false);
>
> ReflectionContextState.setReportingConversionErrors(contextMap, false);
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.1#6144)