struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (WW-4846) Not able to convert Spring object to the JSON response
Date Sun, 05 Nov 2017 16:02:00 GMT

    [ https://issues.apache.org/jira/browse/WW-4846?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16239601#comment-16239601
] 

ASF GitHub Bot commented on WW-4846:
------------------------------------

lukaszlenart closed pull request #180: WW-4846 Adds unit tests
URL: https://github.com/apache/struts/pull/180
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java b/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java
index c5f649333..506210324 100644
--- a/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java
+++ b/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java
@@ -35,8 +35,11 @@
 
 import javax.servlet.http.HttpServletResponse;
 
+import org.aopalliance.intercept.MethodInterceptor;
+import org.aopalliance.intercept.MethodInvocation;
 import org.apache.struts2.StrutsStatics;
 import org.apache.struts2.StrutsTestCase;
+import org.springframework.aop.framework.ProxyFactory;
 import org.springframework.mock.web.MockHttpServletRequest;
 import org.springframework.mock.web.MockHttpServletResponse;
 import org.springframework.mock.web.MockServletContext;
@@ -153,6 +156,38 @@ public void testExcludeNullPropeties() throws Exception {
         assertEquals(normalizedExpected, normalizedActual);
     }
 
+    public void testNotTraverseOrIncludeProxyInfo() throws Exception {
+        JSONResult result = new JSONResult();
+        JSONUtil jsonUtil = new JSONUtil();
+        JSONWriter writer = new DefaultJSONWriter();
+        jsonUtil.setWriter(writer);
+        result.setJsonUtil(jsonUtil);
+        Object proxiedAction = new ProxyFactory(new TestAction2()).getProxy();
+        stack.push(proxiedAction);
+
+        this.invocation.setAction(proxiedAction);
+        try {
+            result.execute(this.invocation);
+        } catch (Exception ignored) {
+        }
+
+        String out = response.getContentAsString();
+
+        String normalizedActual = TestUtils.normalize(out, true);
+        String normalizedExpected = "{\"name\":\"name\"}";
+        assertNotSame(normalizedExpected, normalizedActual);
+        response.setCommitted(false);
+        response.reset();
+
+        writer.setExcludeProxyProperties(true);
+        result.execute(this.invocation);
+
+        out = response.getContentAsString();
+
+        normalizedActual = TestUtils.normalize(out, true);
+        assertEquals(normalizedExpected, normalizedActual);
+    }
+
     public void testWrapPrefix() throws Exception {
         JSONResult result = new JSONResult();
         result.setWrapPrefix("_prefix_");


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


> Not able to convert Spring object to the JSON response
> ------------------------------------------------------
>
>                 Key: WW-4846
>                 URL: https://issues.apache.org/jira/browse/WW-4846
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Core Results, Plugin - JSON
>    Affects Versions: 2.5.12
>            Reporter: Vijay Srivastava
>            Priority: Blocker
>             Fix For: 2.5.14
>
>
> Hi,
> I am using latest version of struts struts-2.5.12 and and spring 4.1 as advised. I am
having an issue in JSON response. There is an action class which is returning Spring request
scoped object as JSON response however I am getting error as below 
> {noformat}
> ERROR ExceptionMappingInterceptor org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
java.lang.reflect.InvocationTargetException
>  org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
java.lang.reflect.InvocationTargetException
> 	at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:269)
> 	at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:197)
> 	at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:182)
> 	at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:143)
> 	at org.
> {noformat}
> Any idea what's wrong here ? I am using Java 1.8. I think below code in JSONWriter is
not working as expected
> {code:java}
> protected Method findBaseAccessor(Class clazz, Method accessor) {
>         Method baseAccessor = null;
>         if (clazz.getName().contains("$$EnhancerByCGLIB$$")) {
>             try {
>                 baseAccessor = Thread.currentThread().getContextClassLoader().loadClass(
>                         clazz.getName().substring(0, clazz.getName().indexOf("$$"))).getMethod(
>                         accessor.getName(), accessor.getParameterTypes());
>             } catch (Exception ex) {
>                 LOG.debug(ex.getMessage(), ex);
>             }
>         } else if (clazz.getName().contains("$$_javassist")) {
>             try {
>                 baseAccessor = Class.forName(
>                         clazz.getName().substring(0, clazz.getName().indexOf("_$$")))
>                         .getMethod(accessor.getName(), accessor.getParameterTypes());
>             } catch (Exception ex) {
>                 LOG.debug(ex.getMessage(), ex);
>             }
>             
>         //in hibernate4.3.7,because javassist3.18.1's class name generate rule is '_$$_jvst'+...
>         } else if(clazz.getName().contains("$$_jvst")){
>             try {
>                 baseAccessor = Class.forName(
>                         clazz.getName().substring(0, clazz.getName().indexOf("_$$")))
>                         .getMethod(accessor.getName(), accessor.getParameterTypes());
>             } catch (Exception ex) {
>                 LOG.debug(ex.getMessage(), ex);
>             }
>         }
>         else {
>             return accessor;
>         }
>         return baseAccessor;
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message