You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2012/07/09 00:21:33 UTC

[2/9] git commit: Add JSONArray.toList()

Add JSONArray.toList()


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/ed524613
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/ed524613
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/ed524613

Branch: refs/heads/5.4-js-rewrite
Commit: ed524613821ec28dd23ac28e8ca1cd76f2a1637f
Parents: 68bcdca
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Sun Jul 8 15:10:10 2012 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Sun Jul 8 15:10:10 2012 -0700

----------------------------------------------------------------------
 .../java/org/apache/tapestry5/json/JSONArray.java  |   17 +++++++-
 .../java/org/apache/tapestry5/json/JSONObject.java |    2 +-
 .../test/groovy/json/specs/JSONArraySpec.groovy    |   31 +++++++++++++++
 .../test/groovy/json/specs/JSONObjectSpec.groovy   |    2 +-
 4 files changed, 48 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/ed524613/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONArray.java
----------------------------------------------------------------------
diff --git a/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONArray.java b/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONArray.java
index 3afb401..eaa268e 100644
--- a/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONArray.java
+++ b/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONArray.java
@@ -1,4 +1,4 @@
-// Copyright 2007, 2008, 2010, 2011 The Apache Software Foundation
+// Copyright 2007, 2008, 2010, 2011, 2012 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.
@@ -35,6 +35,7 @@ package org.apache.tapestry5.json;
  */
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
@@ -466,7 +467,7 @@ public final class JSONArray extends JSONCollection implements Iterable<Object>
      * @return this JSONArray
      * @since 5.4
      */
-    JSONArray putAll(Iterable<Object> collection)
+    public JSONArray putAll(Iterable<Object> collection)
     {
         if (collection != null)
         {
@@ -478,4 +479,16 @@ public final class JSONArray extends JSONCollection implements Iterable<Object>
 
         return this;
     }
+
+    /**
+     * Returns an unmodifiable list of the contents of the array. This is a wrapper around the list's internal
+     * storage and is live (changes to the JSONArray affect the returned List).
+     *
+     * @return unmodifiable list of array contents
+     * @since 5.4
+     */
+    public List<Object> toList()
+    {
+        return Collections.unmodifiableList(list);
+    }
 }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/ed524613/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONObject.java
----------------------------------------------------------------------
diff --git a/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONObject.java b/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONObject.java
index 33fd585..d4f8b6d 100644
--- a/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONObject.java
+++ b/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONObject.java
@@ -1,4 +1,4 @@
-// Copyright 2007, 2010, 2011 The Apache Software Foundation
+// Copyright 2007, 2010, 2011, 2012 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.

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/ed524613/tapestry-json/src/test/groovy/json/specs/JSONArraySpec.groovy
----------------------------------------------------------------------
diff --git a/tapestry-json/src/test/groovy/json/specs/JSONArraySpec.groovy b/tapestry-json/src/test/groovy/json/specs/JSONArraySpec.groovy
index 44ccc91..3008cf0 100644
--- a/tapestry-json/src/test/groovy/json/specs/JSONArraySpec.groovy
+++ b/tapestry-json/src/test/groovy/json/specs/JSONArraySpec.groovy
@@ -298,7 +298,38 @@ class JSONArraySpec extends Specification {
         then:
 
         array.toCompactString() == /[100,200]/
+    }
+
+    def "list returned by toList() is unmodifiable"() {
+        def array = new JSONArray(100, 200)
+        def list = array.toList()
+
+        when:
+
+        list.clear()
+
+        then:
+
+        thrown(UnsupportedOperationException)
+    }
+
+    def "list from toList() is live"() {
+        def array = new JSONArray(100, 200)
+        when:
+
+        def list = array.toList()
+
+        then:
+
+        list == [100, 200]
+
+        when:
+
+        array.remove(0)
+
+        then:
 
+        list == [200]
     }
 
 }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/ed524613/tapestry-json/src/test/groovy/json/specs/JSONObjectSpec.groovy
----------------------------------------------------------------------
diff --git a/tapestry-json/src/test/groovy/json/specs/JSONObjectSpec.groovy b/tapestry-json/src/test/groovy/json/specs/JSONObjectSpec.groovy
index 1741ce7..db99cb9 100644
--- a/tapestry-json/src/test/groovy/json/specs/JSONObjectSpec.groovy
+++ b/tapestry-json/src/test/groovy/json/specs/JSONObjectSpec.groovy
@@ -328,7 +328,7 @@ class JSONObjectSpec extends Specification {
         names instanceof JSONArray
         names.length() == 2
 
-        names.toArray().sort() == ["barney", "fred"]
+        new ArrayList(names.toList()).sort() == ["barney", "fred"]
     }
 
     def "names() with no properties returns null"() {