[ 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: us...@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)