You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2016/05/20 16:29:47 UTC

[16/49] incubator-geode git commit: GEODE-732 Fixed the issue with List inside list and added test for it

GEODE-732 Fixed the issue with List inside list and added test for it


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/a881e9cb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/a881e9cb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/a881e9cb

Branch: refs/heads/feature/GEODE-835-test
Commit: a881e9cb1b86bfd5b928b8719219421f5a26a954
Parents: 04a0004
Author: Hitesh Khamesra <hk...@pivotal.io>
Authored: Thu May 12 12:52:41 2016 -0700
Committer: Hitesh Khamesra <hk...@pivotal.io>
Committed: Fri May 13 10:32:51 2016 -0700

----------------------------------------------------------------------
 .../com/gemstone/gemfire/pdx/JSONFormatter.java | 21 +++++++--
 .../pdx/internal/json/PdxListHelper.java        |  2 +-
 .../pdx/jsonStrings/jsonListInsideList.txt      | 48 ++++++++++++++++++++
 3 files changed, 65 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a881e9cb/geode-core/src/main/java/com/gemstone/gemfire/pdx/JSONFormatter.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/pdx/JSONFormatter.java b/geode-core/src/main/java/com/gemstone/gemfire/pdx/JSONFormatter.java
index 220deaf..d929cf6 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/pdx/JSONFormatter.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/pdx/JSONFormatter.java
@@ -52,7 +52,7 @@ public class JSONFormatter {
   
   public static final String JSON_CLASSNAME = "__GEMFIRE_JSON";
   
-  enum states {NONE, ObJECT_START,  FIELD_NAME, INNER_OBJECT_FOUND, SCALER_FOUND, LIST_FOUND, OBJECT_ENDS};
+  enum states {NONE, ObJECT_START,  FIELD_NAME, SCALER_FOUND, LIST_FOUND, LIST_ENDS, OBJECT_ENDS};
   
   private JSONFormatter() {
   }
@@ -192,9 +192,10 @@ public class JSONFormatter {
         {
           //need to create array; fieldname may be there; will it case it not there
           arrayStarts(currentState);
+          currentState = states.LIST_FOUND;
           PdxListHelper list = getList(jp, currentState, null);
           currentPdxInstance.addListField(currentFieldName, list);
-          currentState = states.LIST_FOUND;
+          currentState = states.LIST_ENDS;
           currentFieldName = null;          
           break;
         }
@@ -409,10 +410,10 @@ public class JSONFormatter {
         {
           //array is end
           arrayEnds(currentState);
+          currentState = states.LIST_ENDS;
           if(currentPdxList.getParent() == null)
             return currentPdxList;
-          currentPdxList = currentPdxList.getParent(); 
-          currentState = states.LIST_FOUND;
+          currentPdxList = currentPdxList.getParent();          
           break;
         }
         case VALUE_EMBEDDED_OBJECT :
@@ -486,6 +487,8 @@ public class JSONFormatter {
     case FIELD_NAME:
     case OBJECT_ENDS://in list
     case SCALER_FOUND://inlist
+    case LIST_FOUND:
+    case LIST_ENDS:
       return true;
       default:
         throw new IllegalStateException("Object start called when state is " +currentState);
@@ -499,7 +502,7 @@ public class JSONFormatter {
     {
     case ObJECT_START: //when empty object on field
     case SCALER_FOUND:
-    case LIST_FOUND:
+    case LIST_ENDS:
     case OBJECT_ENDS://inner object closes
       return true;
       default:
@@ -515,6 +518,7 @@ public class JSONFormatter {
     case SCALER_FOUND:
     case FIELD_NAME:
     case LIST_FOUND:
+    case LIST_ENDS:
       return true;
       default:
         throw new IllegalStateException("Array start called when state is " +currentState);
@@ -529,6 +533,7 @@ public class JSONFormatter {
     case FIELD_NAME://when empty array
     case SCALER_FOUND:
     case LIST_FOUND:
+    case LIST_ENDS:  
     case OBJECT_ENDS:
       return true;
       default:
@@ -544,6 +549,7 @@ public class JSONFormatter {
     case FIELD_NAME:
     case SCALER_FOUND:
     case LIST_FOUND:
+    case LIST_ENDS:
     case OBJECT_ENDS:
       return true;
       default:
@@ -559,6 +565,7 @@ public class JSONFormatter {
     case FIELD_NAME:
     case SCALER_FOUND:
     case LIST_FOUND:
+    case LIST_ENDS:
     case OBJECT_ENDS:
       return true;
       default:
@@ -574,6 +581,7 @@ public class JSONFormatter {
     case FIELD_NAME:
     case SCALER_FOUND:
     case LIST_FOUND:
+    case LIST_ENDS:
     case OBJECT_ENDS:
       return true;
       default:
@@ -589,6 +597,7 @@ public class JSONFormatter {
     case FIELD_NAME:
     case SCALER_FOUND:
     case LIST_FOUND:
+    case LIST_ENDS:
     case OBJECT_ENDS:
       return true;
       default:
@@ -604,6 +613,7 @@ public class JSONFormatter {
     case ObJECT_START:
     case SCALER_FOUND:
     case LIST_FOUND:
+    case LIST_ENDS:
     case OBJECT_ENDS:
       return true;
       default:
@@ -619,6 +629,7 @@ public class JSONFormatter {
     case FIELD_NAME:
     case SCALER_FOUND:
     case LIST_FOUND:
+    case LIST_ENDS:
     case OBJECT_ENDS:
       return true;
       default:

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a881e9cb/geode-core/src/main/java/com/gemstone/gemfire/pdx/internal/json/PdxListHelper.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/pdx/internal/json/PdxListHelper.java b/geode-core/src/main/java/com/gemstone/gemfire/pdx/internal/json/PdxListHelper.java
index 7700b30..d51ceed 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/pdx/internal/json/PdxListHelper.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/pdx/internal/json/PdxListHelper.java
@@ -153,7 +153,7 @@ public class PdxListHelper {
       logger.trace("addListField");
     }
     PdxListHelper tmp = new PdxListHelper(this, "no-name");
-    list.add(tmp);
+    list.add(tmp.getList());
     return tmp;
   }
   

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a881e9cb/geode-core/src/test/resources/com/gemstone/gemfire/pdx/jsonStrings/jsonListInsideList.txt
----------------------------------------------------------------------
diff --git a/geode-core/src/test/resources/com/gemstone/gemfire/pdx/jsonStrings/jsonListInsideList.txt b/geode-core/src/test/resources/com/gemstone/gemfire/pdx/jsonStrings/jsonListInsideList.txt
new file mode 100755
index 0000000..9a04081
--- /dev/null
+++ b/geode-core/src/test/resources/com/gemstone/gemfire/pdx/jsonStrings/jsonListInsideList.txt
@@ -0,0 +1,48 @@
+{
+  "photos": [
+    [
+      {
+        "url": "image url",
+        "dimensions": "192x144"
+      },
+      {
+        "url": "image url",
+        "dimensions": "original"
+      },
+      {
+        "url": "image url",
+        "dimensions": "128x96"
+      },
+      {
+        "url": "image url",
+        "dimensions": "64x48"
+      },
+      {
+        "url": "image url",
+        "dimensions": "400x300"
+      }
+    ],
+    [
+      {
+        "url": "image url",
+        "dimensions": "192x144"
+      },
+      {
+        "url": "image url",
+        "dimensions": "original"
+      },
+      {
+        "url": "image url",
+        "dimensions": "128x96"
+      },
+      {
+        "url": "image url",
+        "dimensions": "64x48"
+      },
+      {
+        "url": "image url",
+        "dimensions": "400x300"
+      }
+    ]
+  ]
+}
\ No newline at end of file