This is an automated email from the ASF dual-hosted git repository. yasserzamani pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/struts.git
The following commit(s) were added to refs/heads/master by this push: new be457f4 WW-5009 EmptyStackException in JSON plugin due to concurrency new f3fb36b Merge pull request #329 from aleksandr-m/feature/WW-5009_master be457f4 is described below commit be457f4241418b75cdcf0a9b71775dde91f94163 Author: Aleksandr Mashchenko <amashche...@apache.org> AuthorDate: Sun Feb 3 21:41:08 2019 +0200 WW-5009 EmptyStackException in JSON plugin due to concurrency --- .../org/apache/struts2/json/JSONInterceptor.java | 11 +++-------- .../apache/struts2/json/JSONInterceptorTest.java | 21 --------------------- 2 files changed, 3 insertions(+), 29 deletions(-) diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java index 2c793de..e92620f 100644 --- a/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java +++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java @@ -71,18 +71,11 @@ public class JSONInterceptor extends AbstractInterceptor { private String jsonContentType = "application/json"; private String jsonRpcContentType = "application/json-rpc"; - private JSONUtil jsonUtil; - - @Inject - public void setJsonUtil(JSONUtil jsonUtil) { - this.jsonUtil = jsonUtil; - } - @SuppressWarnings("unchecked") public String intercept(ActionInvocation invocation) throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); - + String requestContentType = readContentType(request); String requestContentTypeEncoding = readContentTypeEncoding(request); @@ -175,6 +168,8 @@ public class JSONInterceptor extends AbstractInterceptor { result = rpcResponse; } + JSONUtil jsonUtil = invocation.getInvocationContext().getContainer().getInstance(JSONUtil.class); + String json = jsonUtil.serialize(result, excludeProperties, getIncludeProperties(), ignoreHierarchy, excludeNullProperties); json = addCallbackIfApplicable(request, json); diff --git a/plugins/json/src/test/java/org/apache/struts2/json/JSONInterceptorTest.java b/plugins/json/src/test/java/org/apache/struts2/json/JSONInterceptorTest.java index dd84927..9f6b76f 100644 --- a/plugins/json/src/test/java/org/apache/struts2/json/JSONInterceptorTest.java +++ b/plugins/json/src/test/java/org/apache/struts2/json/JSONInterceptorTest.java @@ -93,9 +93,6 @@ public class JSONInterceptorTest extends StrutsTestCase { this.request.addHeader("Content-Type", "application/json-rpc"); JSONInterceptor interceptor = new JSONInterceptor(); - JSONUtil jsonUtil = new JSONUtil(); - jsonUtil.setWriter(new DefaultJSONWriter()); - interceptor.setJsonUtil(jsonUtil); SMDActionTest1 action = new SMDActionTest1(); this.invocation.setAction(action); @@ -116,9 +113,6 @@ public class JSONInterceptorTest extends StrutsTestCase { JSONInterceptor interceptor = new JSONInterceptor(); interceptor.setEnableSMD(true); - JSONUtil jsonUtil = new JSONUtil(); - jsonUtil.setWriter(new DefaultJSONWriter()); - interceptor.setJsonUtil(jsonUtil); SMDActionTest2 action = new SMDActionTest2(); this.invocation.setAction(action); @@ -137,9 +131,6 @@ public class JSONInterceptorTest extends StrutsTestCase { JSONInterceptor interceptor = new JSONInterceptor(); interceptor.setEnableSMD(true); - JSONUtil jsonUtil = new JSONUtil(); - jsonUtil.setWriter(new DefaultJSONWriter()); - interceptor.setJsonUtil(jsonUtil); SMDActionTest2 action = new SMDActionTest2(); this.invocation.setAction(action); @@ -158,9 +149,6 @@ public class JSONInterceptorTest extends StrutsTestCase { JSONInterceptor interceptor = new JSONInterceptor(); interceptor.setEnableSMD(true); - JSONUtil jsonUtil = new JSONUtil(); - jsonUtil.setWriter(new DefaultJSONWriter()); - interceptor.setJsonUtil(jsonUtil); SMDActionTest1 action = new SMDActionTest1(); this.invocation.setAction(action); @@ -206,9 +194,6 @@ public class JSONInterceptorTest extends StrutsTestCase { JSONInterceptor interceptor = new JSONInterceptor(); interceptor.setEnableSMD(true); - JSONUtil jsonUtil = new JSONUtil(); - jsonUtil.setWriter(new DefaultJSONWriter()); - interceptor.setJsonUtil(jsonUtil); SMDActionTest1 action = new SMDActionTest1(); this.invocation.setAction(action); @@ -244,9 +229,6 @@ public class JSONInterceptorTest extends StrutsTestCase { JSONInterceptor interceptor = new JSONInterceptor(); interceptor.setEnableSMD(true); - JSONUtil jsonUtil = new JSONUtil(); - jsonUtil.setWriter(new DefaultJSONWriter()); - interceptor.setJsonUtil(jsonUtil); SMDActionTest2 action = new SMDActionTest2(); this.invocation.setAction(action); @@ -272,9 +254,6 @@ public class JSONInterceptorTest extends StrutsTestCase { JSONInterceptor interceptor = new JSONInterceptor(); interceptor.setEnableSMD(true); - JSONUtil jsonUtil = new JSONUtil(); - jsonUtil.setWriter(new DefaultJSONWriter()); - interceptor.setJsonUtil(jsonUtil); SMDActionTest1 action = new SMDActionTest1(); this.invocation.setAction(action);