[ https://issues.apache.org/jira/browse/WW-5070?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17093045#comment-17093045 ]
ASF subversion and git services commented on WW-5070: ----------------------------------------------------- Commit 333f7812073a51530407538033fa6ff747470c02 in struts's branch refs/heads/WW-5070-root-action-model from Lukasz Lenart [ https://gitbox.apache.org/repos/asf?p=struts.git;h=333f781 ] WW-5070 Generates a new serialVersionUID > JSONResult default root object should be set explicitly, rather than from > result of ValueStack.peek() > ----------------------------------------------------------------------------------------------------- > > Key: WW-5070 > URL: https://issues.apache.org/jira/browse/WW-5070 > Project: Struts 2 > Issue Type: Improvement > Components: Core Results > Affects Versions: 2.5.17 > Environment: Struts 2.5.17 > Tomcat 8.0.24 > Reporter: Michael Hum > Priority: Minor > Fix For: 2.6 > > Time Spent: 50m > Remaining Estimate: 0h > > JSONResult#setRoot() is documented as follows: > {quote} > Sets the root object to be serialized, defaults to the Action > {quote} > This is implemented in {{org.apache.struts2.json.JSONResult#findRootObject}}: > {code:java} > if (this.root != null) { > ValueStack stack = invocation.getStack(); > rootObject = stack.findValue(root); > } else { > rootObject = invocation.getStack().peek(); // model overrides > action > } > {code} > We have just run into an issue with our application where this expectation > did not turn out to be true, due to a race condition in some of our custom > results/interceptors (triggered by multiple requests) that results in the top > of the stack not being the action. We've mitigated the issue by explicitly > setting the root for serialization as the action: > {code:java} > @Result(name = FooAction.JSON, type = "json", params = {"root", "#action", > "noCache", "true", "ignoreHierarchy", "false"}), > {code} > While not a bug triggered by any struts code, it would make more sense in > this case to explicitly find the action instead of assuming that the top of > the stack is the action. The ValueStack is able to be manipulated freely by > developers, so this would guarantee that the default be correct regardless of > external manipulation. -- This message was sent by Atlassian Jira (v8.3.4#803005)