You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by sm...@apache.org on 2011/06/28 00:39:42 UTC

svn commit: r1140352 - in /pivot/trunk/core: src/org/apache/pivot/json/JSON.java test/org/apache/pivot/json/test/JSONSerializerTest.java

Author: smartini
Date: Mon Jun 27 22:39:42 2011
New Revision: 1140352

URL: http://svn.apache.org/viewvc?rev=1140352&view=rev
Log:
PIVOT-764

Modified:
    pivot/trunk/core/src/org/apache/pivot/json/JSON.java
    pivot/trunk/core/test/org/apache/pivot/json/test/JSONSerializerTest.java

Modified: pivot/trunk/core/src/org/apache/pivot/json/JSON.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/json/JSON.java?rev=1140352&r1=1140351&r2=1140352&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/json/JSON.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/json/JSON.java Mon Jun 27 22:39:42 2011
@@ -19,7 +19,9 @@ package org.apache.pivot.json;
 import org.apache.pivot.beans.BeanAdapter;
 import org.apache.pivot.collections.ArrayList;
 import org.apache.pivot.collections.Dictionary;
+import org.apache.pivot.collections.Map;
 import org.apache.pivot.collections.Sequence;
+import org.apache.pivot.collections.adapter.MapAdapter;
 
 /**
  * Contains utility methods for working with JSON or JSON-like data structures.
@@ -71,9 +73,9 @@ public class JSON {
 
             String key = keys.get(i);
 
-            BeanAdapter beanAdapter = new BeanAdapter(value);
-            if (beanAdapter.containsKey(key)) {
-                value = beanAdapter.get(key);
+            Map adapter = value instanceof java.util.Map ? new MapAdapter((java.util.Map) value) : new BeanAdapter(value);
+            if (adapter.containsKey(key)) {
+                value = adapter.get(key);
             } else if (value instanceof Sequence<?>) {
                 Sequence<Object> sequence = (Sequence<Object>)value;
                 value = sequence.get(Integer.parseInt(key));
@@ -145,11 +147,11 @@ public class JSON {
             throw new IllegalArgumentException("Invalid path.");
         }
 
-        BeanAdapter beanAdapter = new BeanAdapter(parent);
+        Map adapter = parent instanceof java.util.Map ? new MapAdapter((java.util.Map) parent) : new BeanAdapter(parent);
 
         Object previousValue;
-        if (beanAdapter.containsKey(key)) {
-            previousValue = beanAdapter.put(key, value);
+        if (adapter.containsKey(key)) {
+            previousValue = adapter.put(key, value);
         } else if (parent instanceof Sequence<?>) {
             Sequence<Object> sequence = (Sequence<Object>)parent;
             previousValue = sequence.update(Integer.parseInt(key), value);
@@ -230,8 +232,8 @@ public class JSON {
         if (parent == null) {
             containsKey = false;
         } else {
-            BeanAdapter beanAdapter = new BeanAdapter(parent);
-            containsKey = beanAdapter.containsKey(key);
+            Map adapter = parent instanceof java.util.Map ? new MapAdapter((java.util.Map) parent) : new BeanAdapter(parent);
+            containsKey = adapter.containsKey(key);
 
             if (!containsKey) {
                 if (parent instanceof Sequence<?>) {

Modified: pivot/trunk/core/test/org/apache/pivot/json/test/JSONSerializerTest.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/test/org/apache/pivot/json/test/JSONSerializerTest.java?rev=1140352&r1=1140351&r2=1140352&view=diff
==============================================================================
--- pivot/trunk/core/test/org/apache/pivot/json/test/JSONSerializerTest.java (original)
+++ pivot/trunk/core/test/org/apache/pivot/json/test/JSONSerializerTest.java Mon Jun 27 22:39:42 2011
@@ -144,4 +144,21 @@ public class JSONSerializerTest {
 
         assertFalse(o1.equals(o2));
     }
+    
+    @Test
+    public void testJavaMap() 
+    {
+        System.out.println("Test interaction with Standard java.util.Map"); 
+
+        java.util.HashMap<String, java.util.Map<String, String>> root  = new java.util.HashMap<String, java.util.Map<String, String>>();
+        java.util.HashMap<String, String> child = new java.util.HashMap<String, String>();
+        
+        child.put("name", "John Doe");
+        root.put("child", child);
+
+        String childName = JSON.get(root, "child.name");
+        System.out.println("JSON child.name = \"" + childName + "\""); 
+        assertEquals(childName, "John Doe");
+    }
+    
 }