svn commit: r1129864 - in /struts/struts2/trunk/plugins/json/src/test: java/org/apache/struts2/json/ resources/org/apache/struts2/json/
Author: jafl Date: Tue May 31 19:24:27 2011 New Revision: 1129864 URL: http://svn.apache.org/viewvc?rev=1129864&view=rev Log: WW-3638 additional unit test for multi-level array in includeProperties Added: struts/struts2/trunk/plugins/json/src/test/resources/org/apache/struts2/json/json-11.txt - copied, changed from r1129833, struts/struts2/trunk/plugins/json/src/test/resources/org/apache/struts2/json/json-10.txt Modified: struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/TestAction.java struts/struts2/trunk/plugins/json/src/test/resources/org/apache/struts2/json/json-3.txt struts/struts2/trunk/plugins/json/src/test/resources/org/apache/struts2/json/json.txt Modified: struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java?rev=1129864&r1=1129863&r2=1129864&view=diff == --- struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java (original) +++ struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java Tue May 31 19:24:27 2011 @@ -28,8 +28,10 @@ import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.regex.Pattern; import javax.servlet.http.HttpServletResponse; @@ -530,6 +532,47 @@ public class JSONResultTest extends Stru assertEquals("application/json;charset=ISO-8859-1", response.getContentType()); } +public void testIncludePropertiesWithSetList() throws Exception { +JSONResult result = new JSONResult(); + result.setIncludeProperties("^set\\[\\d+\\]\\.list\\[\\d+\\]\\.booleanField"); +TestAction action = new TestAction(); +stack.push(action); + +Set set = new LinkedHashSet(); + +TestAction a1 = new TestAction(); + +List list = new ArrayList(); + +list.add(new Bean()); +list.add(new Bean()); +list.add(new Bean()); + +a1.setList(list); +set.add(a1); + +TestAction a2 = new TestAction(); + +list = new ArrayList(); + +list.add(new Bean()); +list.add(new Bean()); + +a2.setList(list); +set.add(a2); + +action.setSet(set); + +this.invocation.setAction(action); +result.execute(this.invocation); + +String json = response.getContentAsString(); +String normalizedActual = TestUtils.normalize(json, true); +String normalizedExpected = TestUtils.normalize(JSONResultTest.class.getResource("json-11.txt")); +assertEquals(normalizedExpected, normalizedActual); +assertEquals("application/json;charset=ISO-8859-1", response.getContentType()); +} + @Override protected void setUp() throws Exception { super.setUp(); Modified: struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/TestAction.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/TestAction.java?rev=1129864&r1=1129863&r2=1129864&view=diff == --- struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/TestAction.java (original) +++ struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/TestAction.java Tue May 31 19:24:27 2011 @@ -23,6 +23,7 @@ package org.apache.struts2.json; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.Set; import org.apache.struts2.json.annotations.JSON; @@ -37,6 +38,7 @@ public class TestAction extends ActionSu private List collection; private List collection2; private Map map; +private Set set; private String foo; private String result; private String[] array; @@ -82,6 +84,14 @@ public class TestAction extends ActionSu this.map = map; } +public Set getSet() { +return this.set; +} + +public void setSet(Set set) { +this.set = set; +} + public String getFoo() { return this.foo; } Copied: struts/struts2/trunk/plugins/json/src/test/resources/org/apache/struts2/json/json-11.txt (from r1129833, struts/struts2/trunk/plugins/json/src/test/resources/org/apache/struts2/json/json-10.txt) URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/test/resources/org/apache/struts2/json/json-11.txt?p2=struts/struts2/trunk/plugins/json/src/test/resources/org/apache/struts2/json/json-11.txt&p1=struts/struts2/trunk/plugins/json/src/test/re
svn commit: r1129873 - in /struts/struts2/trunk/plugins/json/src: main/java/org/apache/struts2/json/JSONInterceptor.java main/java/org/apache/struts2/json/JSONUtil.java test/java/org/apache/struts2/js
Author: jafl Date: Tue May 31 19:36:53 2011 New Revision: 1129873 URL: http://svn.apache.org/viewvc?rev=1129873&view=rev Log: WW-3635 return application/json instead of application/json-rpc Modified: struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONInterceptorTest.java Modified: struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java?rev=1129873&r1=1129872&r2=1129873&view=diff == --- struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java (original) +++ struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONInterceptor.java Tue May 31 19:36:53 2011 @@ -159,7 +159,7 @@ public class JSONInterceptor extends Abs json = addCallbackIfApplicable(request, json); boolean writeGzip = enableGZIP && JSONUtil.isGzipInRequest(request); JSONUtil.writeJSONToResponse(new SerializationParams(response, this.defaultEncoding, -this.wrapWithComments, json, true, writeGzip, noCache, -1, -1, prefix, contentType)); +this.wrapWithComments, json, true, writeGzip, noCache, -1, -1, prefix, "application/json")); return Action.NONE; } else { Modified: struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java?rev=1129873&r1=1129872&r2=1129873&view=diff == --- struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java (original) +++ struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java Tue May 31 19:36:53 2011 @@ -56,7 +56,7 @@ public class JSONUtil { /** * Serializes an object into JSON. - * + * * @param object *to be serialized * @return JSON string @@ -71,7 +71,7 @@ public class JSONUtil { /** * Serializes an object into JSON, excluding any properties matching any of * the regular expressions in the given collection. - * + * * @param object *to be serialized * @param excludeProperties @@ -93,7 +93,7 @@ public class JSONUtil { /** * Serializes an object into JSON, excluding any properties matching any of * the regular expressions in the given collection. - * + * * @param object *to be serialized * @param excludeProperties @@ -117,7 +117,7 @@ public class JSONUtil { /** * Serializes an object into JSON to the given writer. - * + * * @param writer *Writer to serialize the object to * @param object @@ -133,7 +133,7 @@ public class JSONUtil { * Serializes an object into JSON to the given writer, excluding any * properties matching any of the regular expressions in the given * collection. - * + * * @param writer *Writer to serialize the object to * @param object @@ -151,7 +151,7 @@ public class JSONUtil { /** * Deserializes a object from JSON - * + * * @param json *string in JSON * @return desrialized object @@ -164,7 +164,7 @@ public class JSONUtil { /** * Deserializes a object from JSON - * + * * @param reader *Reader to read a JSON string from * @return deserialized object @@ -219,11 +219,8 @@ public class JSONUtil { response.sendError(serializationParams.getErrorCode()); // content type -if (serializationParams.isSmd()) -response.setContentType("application/json-rpc;charset=" + serializationParams.getEncoding()); -else -response.setContentType(serializationParams.getContentType() + ";charset=" -+ serializationParams.getEncoding()); +response.setContentType(serializationParams.getContentType() + ";charset=" ++ serializationParams.getEncoding()); if (serializationParams.isNoCache()) { response.setHeader("Cache-Control", "no-cache"); @@ -267,9 +264,9 @@ public class JSONUtil { /** * List visible methods carrying the - * + * * @SMDMethod annotation - * + * * @param ignoreInterfaces *if true, only the methods of the class are examined. If false, *annotati
svn commit: r1129976 - in /struts/struts2/trunk/plugins/json/src: main/java/org/apache/struts2/json/JSONWriter.java test/java/org/apache/struts2/json/JSONWriterTest.java test/resources/org/apache/stru
Author: jafl Date: Wed Jun 1 00:06:22 2011 New Revision: 1129976 URL: http://svn.apache.org/viewvc?rev=1129976&view=rev Log: WW-3489 if excludeNullProperties, ignore nulls in maps Added: struts/struts2/trunk/plugins/json/src/test/resources/org/apache/struts2/json/jsonwriter-write-bean-03.txt - copied, changed from r1129833, struts/struts2/trunk/plugins/json/src/test/resources/org/apache/struts2/json/jsonwriter-write-bean-01.txt Modified: struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONWriterTest.java Modified: struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java?rev=1129976&r1=1129975&r2=1129976&view=diff == --- struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java (original) +++ struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONWriter.java Wed Jun 1 00:06:22 2011 @@ -342,18 +342,18 @@ class JSONWriter { * Add name/value pair to buffer */ private boolean add(String name, Object value, Method method, boolean hasData) throws JSONException { -if (!excludeNullProperties || (value != null)) { -if (hasData) { -this.add(','); -} -this.add('"'); -this.add(name); -this.add("\":"); -this.value(value, method); -return true; +if (excludeNullProperties && value == null) { +return false; } -return false; +if (hasData) { +this.add(','); +} +this.add('"'); +this.add(name); +this.add("\":"); +this.value(value, method); +return true; } /** @@ -368,6 +368,10 @@ class JSONWriter { boolean hasData = false; while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); +if (excludeNullProperties && entry.getValue() == null) { +continue; +} + Object key = entry.getKey(); String expr = null; if (this.buildExpr) { Modified: struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONWriterTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONWriterTest.java?rev=1129976&r1=1129975&r2=1129976&view=diff == --- struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONWriterTest.java (original) +++ struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONWriterTest.java Wed Jun 1 00:06:22 2011 @@ -5,6 +5,8 @@ import org.apache.struts2.json.annotatio import org.apache.struts2.json.bridge.StringBridge; import org.junit.Test; +import java.util.Map; +import java.util.LinkedHashMap; import java.net.URL; public class JSONWriterTest extends StrutsTestCase{ @@ -28,6 +30,44 @@ public class JSONWriterTest extends Stru } @Test +public void testWriteExcludeNull() throws Exception { +BeanWithMap bean1=new BeanWithMap(); +bean1.setStringField("str"); +bean1.setBooleanField(true); +bean1.setCharField('s'); +bean1.setDoubleField(10.1); +bean1.setFloatField(1.5f); +bean1.setIntField(10); +bean1.setLongField(100); +bean1.setEnumField(AnEnum.ValueA); +bean1.setEnumBean(AnEnumBean.Two); + +Map m = new LinkedHashMap(); +m.put("a", "x"); +m.put("b", null); +m.put("c", "z"); +bean1.setMap(m); + +JSONWriter jsonWriter = new JSONWriter(); +jsonWriter.setEnumAsBean(false); +jsonWriter.setIgnoreHierarchy(false); +String json = jsonWriter.write(bean1, null, null, true); + TestUtils.assertEquals(JSONWriter.class.getResource("jsonwriter-write-bean-03.txt"), json); +} + +private class BeanWithMap extends Bean{ +private Map map; + +public Map getMap() { +return map; +} + +public void setMap(Map map) { +this.map = map; +} +} + +@Test public void testWriteAnnotatedBean() throws Exception { AnnotatedBean bean1=new AnnotatedBean(); bean1.setStringField("str"); Copied: struts/struts2/trunk/plugins/json/src/test/resources/org/apache/struts2/json/jsonwriter-write-bean-03.txt (from r1129833, struts/struts2/trunk/plugins/json/src/test/resources/org/apache/struts2/json/jsonwriter-write-bean-01.txt) URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/test/resources/org/apache/struts2/json
svn commit: r1129979 - in /struts/struts2/trunk/xwork-core/src: main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java test/java/com/opensymphony/xwork2/interceptor/ParametersInterce
Author: jafl Date: Wed Jun 1 00:30:25 2011 New Revision: 1129979 URL: http://svn.apache.org/viewvc?rev=1129979&view=rev Log: XW-386 allow x['y'] as well as x.y Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java?rev=1129979&r1=1129978&r2=1129979&view=diff == --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java Wed Jun 1 00:30:25 2011 @@ -1,12 +1,12 @@ /* * Copyright 2002-2007,2009 The Apache Software Foundation. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -160,18 +160,22 @@ public class ParametersInterceptor exten } } +static private int countOGNLCharacters(String s) { +int count = 0; +for (int i = s.length() - 1; i >= 0; i--) { +char c = s.charAt(i); +if (c == '.' || c == '[') count++; +} +return count; +} + /** - * Compares based on number of '.' characters (fewer is higher) + * Compares based on number of '.' and '[' characters (fewer is higher) */ static final Comparator rbCollator = new Comparator() { public int compare(String s1, String s2) { -int l1 = 0, l2 = 0; -for (int i = s1.length() - 1; i >= 0; i--) { -if (s1.charAt(i) == '.') l1++; -} -for (int i = s2.length() - 1; i >= 0; i--) { -if (s2.charAt(i) == '.') l2++; -} +int l1 = countOGNLCharacters(s1), +l2 = countOGNLCharacters(s2); return l1 < l2 ? -1 : (l2 < l1 ? 1 : s1.compareTo(s2)); } @@ -328,7 +332,7 @@ public class ParametersInterceptor exten if (entry.getValue() instanceof Object[]) { Object[] valueArray = (Object[]) entry.getValue(); logEntry.append("[ "); - if (valueArray.length > 0 ) { +if (valueArray.length > 0 ) { for (int indexA = 0; indexA < (valueArray.length - 1); indexA++) { Object valueAtIndex = valueArray[indexA]; logEntry.append(String.valueOf(valueAtIndex)); Modified: struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java?rev=1129979&r1=1129978&r2=1129979&view=diff == --- struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java (original) +++ struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java Wed Jun 1 00:30:25 2011 @@ -394,20 +394,23 @@ public class ParametersInterceptorTest e Map parameters = new HashMap(); parameters.put("user.address.city", "London"); +parameters.put("user.address['postal']", "QJR387"); parameters.put("user.name", "Superman"); Action action = new SimpleAction(); pi.setParameters(action, stack, parameters); assertEquals(true, pi.isOrdered()); -assertEquals(2, actual.size()); +assertEquals(3, actual.size()); assertEquals("London", actual.get("user.address.city")); +assertEquals("QJR387", actual.get("user.address['postal']")); assertEquals("Superman", actual.get("user.name")); // should be ordered so user.name should be first List values = new ArrayList(actual.values()); assertEquals("Superman", values.get(0)); assertEquals("London", values.get(1)); +assertEquals("QJR387", values.get(2)); } public void testSetOrdered() throws Exception {
[CONF] Confluence Changes in the last 24 hours
This is a daily summary of all recent changes in Confluence. - Updated Spaces: - Apache Abdera (https://cwiki.apache.org/confluence/display/ABDERA) Pages - Building Abdera edited by ck (04:38 PM) https://cwiki.apache.org/confluence/display/ABDERA/Building+Abdera Apache Camel (https://cwiki.apache.org/confluence/display/CAMEL) Pages - Camel 2.8.0 Release edited by davsclaus (11:31 AM) https://cwiki.apache.org/confluence/display/CAMEL/Camel+2.8.0+Release Loop edited by davsclaus (11:29 AM) https://cwiki.apache.org/confluence/display/CAMEL/Loop Apache Cayenne Documentation v3.0 (https://cwiki.apache.org/confluence/display/CAYDOC30) Pages - Modeling Embeddables edited by blacknext (09:49 AM) https://cwiki.apache.org/confluence/display/CAYDOC30/Modeling+Embeddables Apache Chemistry (https://cwiki.apache.org/confluence/display/CMIS) Pages - OpenCMIS how-to-build edited by pmonks (03:45 PM) https://cwiki.apache.org/confluence/display/CMIS/OpenCMIS+how-to-build Apache Directory client API (https://cwiki.apache.org/confluence/display/DIRAPI) Pages - Downloads edited by elecharny (06:53 AM) https://cwiki.apache.org/confluence/display/DIRAPI/Downloads Navigation edited by elecharny (06:50 AM) https://cwiki.apache.org/confluence/display/DIRAPI/Navigation Apache Directory Website (https://cwiki.apache.org/confluence/display/DIRxSITE) Pages - Apache LDAP API version 1.0.0-M4 released created by elecharny (11:49 AM) https://cwiki.apache.org/confluence/display/DIRxSITE/2011/05/31/Apache+LDAP+API+version+1.0.0-M4+released Navigation edited by elecharny (06:58 AM) https://cwiki.apache.org/confluence/display/DIRxSITE/Navigation Apache Etch (https://cwiki.apache.org/confluence/display/ETCH) Comments https://cwiki.apache.org/confluence/display/ETCH/Java+Binding+Users+Guide (1) Apache MyFaces Extensions CDI (https://cwiki.apache.org/confluence/display/EXTCDI) Pages - Core Usage edited by bkummel (03:01 AM) https://cwiki.apache.org/confluence/display/EXTCDI/Core+Usage Apache Felix (https://cwiki.apache.org/confluence/display/FELIX) Pages - Apache Felix Service Component Runtime edited by fmeschbe (03:50 AM) https://cwiki.apache.org/confluence/display/FELIX/Apache+Felix+Service+Component+Runtime Apache Geronimo v3.0 (https://cwiki.apache.org/confluence/display/GMOxDOC30) Pages - New features and enhancements edited by chirun...@gmail.com (10:43 PM) https://cwiki.apache.org/confluence/display/GMOxDOC30/New+features+and+enhancements Apache Mahout (https://cwiki.apache.org/confluence/display/MAHOUT) Pages - Powered By Mahout edited by danithaca (03:21 PM) https://cwiki.apache.org/confluence/display/MAHOUT/Powered+By+Mahout Dimensional Reduction edited by danbri (02:18 AM) https://cwiki.apache.org/confluence/display/MAHOUT/Dimensional+Reduction SVD - Singular Value Decomposition edited by danbri (02:10 AM) https://cwiki.apache.org/confluence/display/MAHOUT/SVD+-+Singular+Value+Decomposition Apache ActiveMQ NMS (https://cwiki.apache.org/confluence/display/NMS) Pages - Apache.NMS.ActiveMQ v1.5.1 created by tabish121 (10:01 AM) https://cwiki.apache.org/confluence/display/NMS/Apache.NMS.ActiveMQ+v1.5.1 ActiveMQ Downloads edited by tabish121 (10:58 AM) https://cwiki.apache.org/confluence/display/NMS/ActiveMQ+Downloads Download edited by tabish121 (10:58 AM) https://cwiki.apache.org/confluence/display/NMS/Download Apache OpenNLP (https://cwiki.apache.org/confluence/display/OPENNLP) Pages - TestPlan1.5.2 created by joern (10:34 AM) https://cwiki.apache.org/confluence/display/OPENNLP/TestPlan1.5.2 Test Plans edited by joern (10:31 AM) https://cwiki.apache.org/confluence/display/OPENNLP/Test+Plans Apache Qpid (https://cwiki.apache.org/confluence/display/qpid) Pages - Qpid Release Page edited by justi9 (04:54 PM) https://cwiki.apache.org/confluence/display/qpid/Qpid+Release+Page Traffic Server (https://cwiki.apache.org/confluence/display/TS)