Merge pull request #329 from aleksandr-m/feature/WW-5009_master

WW-5009 EmptyStackException in JSON plugin due to concurrency
This commit is contained in:
Yasser Zamani
2019-02-05 14:38:24 +03:30
committed by GitHub
2 changed files with 3 additions and 29 deletions
@@ -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);
@@ -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);