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);

Reply via email to