You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2015/05/12 21:44:33 UTC

[1/2] incubator-tinkerpop git commit: Change "default" vertex serialization to look like StarGraph serialization.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/master 03fd69df2 -> ae6114a08


Change "default" vertex serialization to look like StarGraph serialization.

"Default" serialization for vertex uses "detached" classes.  This change makes it so that vertex properties are in the form of Map<String,List<Map<String,Object>>> where the properties are keyed to have a list of first-class VertexProperty maps.  The property key (or vertexproperty label) isn't duplicated.


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

Branch: refs/heads/master
Commit: ffe4d3f9a0e122d6add6d6a16683e31a42c7dcda
Parents: 5a63155
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue May 12 15:33:55 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue May 12 15:33:55 2015 -0400

----------------------------------------------------------------------
 .../io/graphson/GraphSONSerializers.java        | 45 +++++++++++++-------
 .../JsonMessageSerializerGremlinV1d0Test.java   |  9 ++--
 .../ser/JsonMessageSerializerV1d0Test.java      |  7 ++-
 .../gremlin/structure/SerializationTest.java    | 13 ++++--
 4 files changed, 49 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ffe4d3f9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializers.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializers.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializers.java
index ed5a840..30c9dfe 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializers.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializers.java
@@ -39,6 +39,7 @@ import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -64,13 +65,13 @@ class GraphSONSerializers {
         @Override
         public void serialize(final VertexProperty property, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
                 throws IOException {
-            serializerVertexProperty(property, jsonGenerator, serializerProvider, null, normalize);
+            serializerVertexProperty(property, jsonGenerator, serializerProvider, null, normalize, true);
         }
 
         @Override
         public void serializeWithType(final VertexProperty property, final JsonGenerator jsonGenerator,
                                       final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
-            serializerVertexProperty(property, jsonGenerator, serializerProvider, typeSerializer, normalize);
+            serializerVertexProperty(property, jsonGenerator, serializerProvider, typeSerializer, normalize, true);
         }
     }
 
@@ -192,21 +193,32 @@ class GraphSONSerializers {
 
         private void writeProperties(final Vertex vertex, final JsonGenerator jsonGenerator,
                                             final SerializerProvider serializerProvider, final TypeSerializer typeSerializer) throws IOException {
-            final Iterator<VertexProperty<Object>> vertexProperties = normalize ?
-                    IteratorUtils.list(vertex.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : vertex.properties();
-            if (vertexProperties.hasNext()) {
-                jsonGenerator.writeArrayFieldStart(GraphSONTokens.PROPERTIES);
-                if (typeSerializer != null) {
-                    jsonGenerator.writeString(ArrayList.class.getName());
-                    jsonGenerator.writeStartArray();
-                }
+            jsonGenerator.writeObjectFieldStart(GraphSONTokens.PROPERTIES);
+            if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
 
-                while (vertexProperties.hasNext()) {
-                    jsonGenerator.writeObject(vertexProperties.next());
+            final List<String> keys = normalize ?
+                    IteratorUtils.list(vertex.keys().iterator(), Comparator.naturalOrder()) : new ArrayList<>(vertex.keys());
+            for (String key : keys) {
+                final Iterator<VertexProperty<Object>> vertexProperties = normalize ?
+                        IteratorUtils.list(vertex.properties(key), Comparators.PROPERTY_COMPARATOR).iterator() : vertex.properties(key);
+
+                if (vertexProperties.hasNext()) {
+                    jsonGenerator.writeArrayFieldStart(key);
+                    if (typeSerializer != null) {
+                        jsonGenerator.writeString(ArrayList.class.getName());
+                        jsonGenerator.writeStartArray();
+                    }
+
+                    while (vertexProperties.hasNext()) {
+                        serializerVertexProperty(vertexProperties.next(), jsonGenerator, serializerProvider, typeSerializer, normalize, false);
+                    }
+
+                    jsonGenerator.writeEndArray();
+                    if (typeSerializer != null) jsonGenerator.writeEndArray();
                 }
-                jsonGenerator.writeEndArray();
-                if (typeSerializer != null) jsonGenerator.writeEndArray();
             }
+
+            jsonGenerator.writeEndObject();
         }
 
     }
@@ -314,12 +326,13 @@ class GraphSONSerializers {
 
     private static void serializerVertexProperty(final VertexProperty property, final JsonGenerator jsonGenerator,
                                                  final SerializerProvider serializerProvider,
-                                                 final TypeSerializer typeSerializer, final boolean normalize) throws IOException {
+                                                 final TypeSerializer typeSerializer, final boolean normalize,
+                                                 final boolean includeLabel) throws IOException {
         jsonGenerator.writeStartObject();
         if (typeSerializer != null) jsonGenerator.writeStringField(GraphSONTokens.CLASS, HashMap.class.getName());
         GraphSONUtil.writeWithType(GraphSONTokens.ID, property.id(), jsonGenerator, serializerProvider, typeSerializer);
         GraphSONUtil.writeWithType(GraphSONTokens.VALUE, property.value(), jsonGenerator, serializerProvider, typeSerializer);
-        jsonGenerator.writeStringField(GraphSONTokens.LABEL, property.label());
+        if (includeLabel) jsonGenerator.writeStringField(GraphSONTokens.LABEL, property.label());
         tryWriteMetaProperties(property, jsonGenerator, serializerProvider, typeSerializer, normalize);
         jsonGenerator.writeEndObject();
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ffe4d3f9/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerGremlinV1d0Test.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerGremlinV1d0Test.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerGremlinV1d0Test.java
index da4ce64..484c266 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerGremlinV1d0Test.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerGremlinV1d0Test.java
@@ -187,10 +187,13 @@ public class JsonMessageSerializerGremlinV1d0Test {
         assertEquals(v.id(), deserializedVertex.get(GraphSONTokens.ID));
         assertEquals(Vertex.DEFAULT_LABEL, deserializedVertex.get(GraphSONTokens.LABEL));
 
-        final Map<String, Object> properties = ((List<Map<String, Object>>) deserializedVertex.get(GraphSONTokens.PROPERTIES)).get(0);
-        assertEquals(3, properties.size());
+        final Map<String, Object> properties = ((Map<String, Object>) deserializedVertex.get(GraphSONTokens.PROPERTIES));
+        assertEquals(1, properties.size());
 
-        final List<Object> deserializedInnerList = (List<Object>) properties.get(GraphSONTokens.VALUE);
+        final List<Map<String,Object>> friendsProperties = (List<Map<String,Object>>) properties.get("friends");
+        assertEquals(1, friendsProperties.size());
+
+        final List<Object> deserializedInnerList = (List<Object>) friendsProperties.get(0).get(GraphSONTokens.VALUE);
         assertEquals(3, deserializedInnerList.size());
         assertEquals("x", deserializedInnerList.get(0));
         assertEquals(5, deserializedInnerList.get(1));

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ffe4d3f9/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerV1d0Test.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerV1d0Test.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerV1d0Test.java
index 46d4c0d..07e3894 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerV1d0Test.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerV1d0Test.java
@@ -240,10 +240,13 @@ public class JsonMessageSerializerV1d0Test {
         final JSONObject vertexAsJson = converted.optJSONObject(0);
         assertNotNull(vertexAsJson);
 
-        final JSONArray properties = vertexAsJson.optJSONArray(GraphSONTokens.PROPERTIES);
+        final JSONObject properties = vertexAsJson.optJSONObject(GraphSONTokens.PROPERTIES);
         assertNotNull(properties);
+        assertEquals(1, properties.length());
 
-        final JSONObject friendsProperty = properties.getJSONObject(0);
+        final JSONArray friendProperties = properties.getJSONArray("friends");
+        assertEquals(1, friendProperties.length());
+        final JSONObject friendsProperty = friendProperties.getJSONObject(0);
         assertNotNull(friendsProperty);
         assertEquals(3, friends.size());
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ffe4d3f9/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
index 822582b..7e401bc 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
@@ -242,8 +242,12 @@ public class SerializationTest {
             assertEquals(GraphSONTokens.VERTEX, m.get(GraphSONTokens.TYPE));
             assertEquals(v.label(), m.get(GraphSONTokens.LABEL));
             assertNotNull(m.get(GraphSONTokens.ID));
-            assertEquals(v.value("name").toString(), ((List<Map>) m.get(GraphSONTokens.PROPERTIES)).stream().filter(map -> map.get(GraphSONTokens.LABEL).equals("name")).findFirst().get().get(GraphSONTokens.VALUE).toString());
-            assertEquals((Integer) v.value("age"), ((List<Map>) m.get(GraphSONTokens.PROPERTIES)).stream().filter(map -> map.get(GraphSONTokens.LABEL).equals("age")).findFirst().get().get(GraphSONTokens.VALUE));
+            final Map<String,List<Map<String,Object>>> properties = (Map<String,List<Map<String,Object>>>) m.get(GraphSONTokens.PROPERTIES);
+            assertEquals(v.value("name").toString(), properties.get("name").get(0).get(GraphSONTokens.VALUE).toString());
+            assertEquals((Integer) v.value("age"), properties.get("age").get(0).get(GraphSONTokens.VALUE));
+            assertEquals(1, properties.get("name").size());
+            assertEquals(1, properties.get("age").size());
+            assertEquals(2, properties.size());
         }
 
         @Test
@@ -322,9 +326,10 @@ public class SerializationTest {
 
             final List<Object> objects = (List<Object>) m.get(GraphSONTokens.OBJECTS);
             assertEquals(3, objects.size());
-            assertEquals("marko", ((List<Map>) ((Map) objects.get(0)).get(GraphSONTokens.PROPERTIES)).stream().filter(map -> map.get(GraphSONTokens.LABEL).equals("name")).findFirst().get().get(GraphSONTokens.VALUE).toString());
+
+            assertEquals("marko", ((List<Map>) ((Map) ((Map) objects.get(0)).get(GraphSONTokens.PROPERTIES)).get("name")).get(0).get(GraphSONTokens.VALUE).toString());
             assertEquals("created", ((Map) objects.get(1)).get(GraphSONTokens.LABEL));
-            assertEquals("lop", ((List<Map>) ((Map) objects.get(2)).get(GraphSONTokens.PROPERTIES)).stream().filter(map -> map.get(GraphSONTokens.LABEL).equals("name")).findFirst().get().get(GraphSONTokens.VALUE).toString());
+            assertEquals("lop", ((List<Map>) ((Map) ((Map) objects.get(2)).get(GraphSONTokens.PROPERTIES)).get("name")).get(0).get(GraphSONTokens.VALUE).toString());
         }
 
         @Test


[2/2] incubator-tinkerpop git commit: Merge remote-tracking branch 'origin/master'

Posted by sp...@apache.org.
Merge remote-tracking branch 'origin/master'


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

Branch: refs/heads/master
Commit: ae6114a08f1a2a26a1c4a333b36b7283c54cbe05
Parents: ffe4d3f 03fd69d
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue May 12 15:44:25 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue May 12 15:44:25 2015 -0400

----------------------------------------------------------------------
 docs/preprocessor/processor.groovy              |   5 +-
 docs/src/the-traversal.asciidoc                 |  42 +---
 .../traversal/dsl/graph/GraphTraversal.java     |  43 ++--
 .../gremlin/process/traversal/dsl/graph/__.java |  49 ++---
 .../traversal/step/filter/ExceptStep.java       |  97 ---------
 .../traversal/step/filter/RetainStep.java       |  97 ---------
 .../traversal/step/filter/WhereStep.java        |   7 +-
 .../process/traversal/step/map/MapStep.java     |   4 -
 .../strategy/decoration/PartitionStrategy.java  |  20 +-
 .../ComputerVerificationStrategy.java           |  13 +-
 .../apache/tinkerpop/gremlin/structure/P.java   |   2 +-
 .../decoration/SubgraphStrategyTest.java        |  15 --
 .../step/filter/GroovyExceptTest.groovy         |  76 -------
 .../step/filter/GroovyRetainTest.groovy         |  46 -----
 .../step/filter/GroovyWhereTest.groovy          |  40 +++-
 .../traversal/step/map/GroovyMatchTest.groovy   |   2 -
 .../traversal/step/map/GroovySelectTest.groovy  |   5 +-
 .../process/GroovyProcessComputerSuite.java     |  12 +-
 .../process/GroovyProcessStandardSuite.java     |   4 -
 .../gremlin/process/ProcessComputerSuite.java   |  33 +---
 .../gremlin/process/ProcessStandardSuite.java   |  17 +-
 .../tinkerpop/gremlin/process/UseEngine.java    |  39 ----
 .../tinkerpop/gremlin/process/UseEngines.java   |  35 ----
 .../process/computer/GraphComputerTest.java     |   2 -
 .../ranking/PageRankVertexProgramTest.java      |   2 -
 .../process/traversal/CoreTraversalTest.java    |   2 -
 .../traversal/TraversalSideEffectsTest.java     |   2 -
 .../traversal/step/branch/BranchTest.java       |   3 -
 .../traversal/step/branch/ChooseTest.java       |   3 -
 .../traversal/step/branch/LocalTest.java        |   3 -
 .../traversal/step/branch/RepeatTest.java       |   3 -
 .../traversal/step/branch/UnionTest.java        |   3 -
 .../process/traversal/step/filter/AndTest.java  |   3 -
 .../process/traversal/step/filter/CoinTest.java |   3 -
 .../traversal/step/filter/CyclicPathTest.java   |   3 -
 .../traversal/step/filter/DedupTest.java        |   3 -
 .../process/traversal/step/filter/DropTest.java |   2 -
 .../traversal/step/filter/ExceptTest.java       | 198 -------------------
 .../traversal/step/filter/FilterTest.java       |   3 -
 .../traversal/step/filter/HasNotTest.java       |   3 -
 .../process/traversal/step/filter/HasTest.java  |   3 -
 .../process/traversal/step/filter/IsTest.java   |   3 -
 .../process/traversal/step/filter/OrTest.java   |   3 -
 .../traversal/step/filter/RangeTest.java        |   3 -
 .../traversal/step/filter/RetainTest.java       |  94 ---------
 .../traversal/step/filter/SampleTest.java       |   3 -
 .../traversal/step/filter/SimplePathTest.java   |   3 -
 .../traversal/step/filter/WhereTest.java        | 133 +++++++++++--
 .../process/traversal/step/map/AddEdgeTest.java |   2 -
 .../traversal/step/map/AddVertexTest.java       |   2 -
 .../traversal/step/map/CoalesceTest.java        |   3 -
 .../process/traversal/step/map/CountTest.java   |   3 -
 .../process/traversal/step/map/FoldTest.java    |   3 -
 .../process/traversal/step/map/MapTest.java     |   3 -
 .../process/traversal/step/map/MatchTest.java   |   2 -
 .../process/traversal/step/map/MaxTest.java     |   3 -
 .../process/traversal/step/map/MeanTest.java    |   3 -
 .../process/traversal/step/map/MinTest.java     |   3 -
 .../process/traversal/step/map/OrderTest.java   |   3 -
 .../process/traversal/step/map/PathTest.java    |   3 -
 .../traversal/step/map/PropertiesTest.java      |   3 -
 .../process/traversal/step/map/SelectTest.java  |   3 -
 .../process/traversal/step/map/SumTest.java     |   3 -
 .../process/traversal/step/map/UnfoldTest.java  |   3 -
 .../traversal/step/map/ValueMapTest.java        |   3 -
 .../process/traversal/step/map/VertexTest.java  |   3 -
 .../step/sideEffect/AggregateTest.java          |   3 -
 .../step/sideEffect/GroupCountTest.java         |   3 -
 .../traversal/step/sideEffect/GroupTest.java    |   2 -
 .../traversal/step/sideEffect/InjectTest.java   |   3 -
 .../traversal/step/sideEffect/ProfileTest.java  |   2 -
 .../traversal/step/sideEffect/SackTest.java     |   3 -
 .../step/sideEffect/SideEffectCapTest.java      |   3 -
 .../step/sideEffect/SideEffectTest.java         |   5 +-
 .../traversal/step/sideEffect/StoreTest.java    |   3 -
 .../traversal/step/sideEffect/SubgraphTest.java |   2 -
 .../traversal/step/sideEffect/TreeTest.java     |   3 -
 .../process/traversal/step/util/PathTest.java   |   2 -
 .../ElementIdStrategyProcessTest.java           |   2 -
 .../decoration/EventStrategyProcessTest.java    |   2 -
 .../PartitionStrategyProcessTest.java           |   2 -
 .../decoration/SubgraphStrategyProcessTest.java |   3 -
 ...ComputerVerificationStrategyProcessTest.java |   3 -
 .../ReadOnlyStrategyProcessTest.java            |   3 -
 84 files changed, 219 insertions(+), 1070 deletions(-)
----------------------------------------------------------------------