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 2016/12/29 10:40:10 UTC

[1/2] tinkerpop git commit: TINKERPOP-1587 TinkerGraph serialization supports multiproperties

Repository: tinkerpop
Updated Branches:
  refs/heads/master 24ff9e879 -> 59d0a6957


TINKERPOP-1587 TinkerGraph serialization supports multiproperties

This generally applies to TinkerGraphs sent over Gremlin Server.


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

Branch: refs/heads/master
Commit: cc918df4e56d468c56e7e0f3ef1aba49c207b03b
Parents: c1e3271
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Dec 29 05:37:47 2016 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Dec 29 05:37:47 2016 -0500

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../upgrade/release-3.2.x-incubating.asciidoc   | 14 +++++++++++
 .../tinkergraph/structure/TinkerIoRegistry.java | 10 ++++++--
 .../tinkergraph/structure/TinkerGraphTest.java  | 25 ++++++++++++++++++++
 4 files changed, 48 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cc918df4/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index b9c6408..d6fdc89 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 TinkerPop 3.2.4 (Release Date: NOT OFFICIALLY RELEASED YET)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+* `TinkerGraph` Gryo and GraphSON deserialization is now configured to use multi-properties.
 * Changed behavior of `ElementHelper.areEqual(Property, Property)` to not throw exceptions with `null` arguments.
 * Added `GryoVersion` for future flexibility when introducing a new verison of Gryo and moved serializer registrations to it.
 * Fixed Gryo serialization of `ConnectiveP` instances.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cc918df4/docs/src/upgrade/release-3.2.x-incubating.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade/release-3.2.x-incubating.asciidoc b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
index 428b0c6..6dcb0a3 100644
--- a/docs/src/upgrade/release-3.2.x-incubating.asciidoc
+++ b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
@@ -32,6 +32,20 @@ Please see the link:https://github.com/apache/tinkerpop/blob/3.2.4/CHANGELOG.asc
 Upgrading for Users
 ~~~~~~~~~~~~~~~~~~~
 
+TinkerGraph Deserialization
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A TinkerGraph deserialized from Gryo or GraphSON is now configured with multi-properties enabled. This change allows
+TinkerGraphs returned from Gremlin Server to properly return multi-properties, which was a problem seen when
+subgraphing a graph that contained properties with a setting other than `Cardinality.single`.
+
+This change could be considered breaking in the odd chance that a TinkerGraph returned from Gremlin Server was later
+mutated, because calls to `property(k,v)` would default to `Cardinality.list` instead of `Cardinality.single`. In the
+event that this is a problem, simple change calls to `property(k,v)` to `property(Cardinality.single,k,v)` and
+explicitly set the `Cardinality`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1587[TINKERPOP-1587]
+
 Traversal Promises
 ^^^^^^^^^^^^^^^^^^
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cc918df4/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistry.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistry.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistry.java
index 64398c9..66bdba1 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistry.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistry.java
@@ -18,6 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.tinkergraph.structure;
 
+import org.apache.commons.configuration.BaseConfiguration;
+import org.apache.commons.configuration.Configuration;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.io.AbstractIoRegistry;
@@ -109,7 +111,9 @@ public final class TinkerIoRegistry extends AbstractIoRegistry {
 
         @Override
         public TinkerGraph read(final Kryo kryo, final Input input, final Class<TinkerGraph> tinkerGraphClass) {
-            final TinkerGraph graph = TinkerGraph.open();
+            final Configuration conf = new BaseConfiguration();
+            conf.setProperty("gremlin.tinkergraph.defaultVertexPropertyCardinality", "list");
+            final TinkerGraph graph = TinkerGraph.open(conf);
             final int len = input.readInt();
             final byte[] bytes = input.readBytes(len);
             try (final ByteArrayInputStream stream = new ByteArrayInputStream(bytes)) {
@@ -222,7 +226,9 @@ public final class TinkerIoRegistry extends AbstractIoRegistry {
 
         @Override
         public TinkerGraph deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
-            final TinkerGraph graph = TinkerGraph.open();
+            final Configuration conf = new BaseConfiguration();
+            conf.setProperty("gremlin.tinkergraph.defaultVertexPropertyCardinality", "list");
+            final TinkerGraph graph = TinkerGraph.open(conf);
 
             final List<Map<String, Object>> edges;
             final List<Map<String, Object>> vertices;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cc918df4/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
index 451bc3b..9de9a70 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
@@ -313,6 +313,19 @@ public class TinkerGraphTest {
     }
 
     @Test
+    public void shouldSerializeTinkerGraphWithMultiPropertiesToGryo() throws Exception {
+        final TinkerGraph graph = TinkerFactory.createTheCrew();
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            graph.io(IoCore.gryo()).writer().create().writeObject(out, graph);
+            final byte[] b = out.toByteArray();
+            try (final ByteArrayInputStream inputStream = new ByteArrayInputStream(b)) {
+                final TinkerGraph target = graph.io(IoCore.gryo()).reader().create().readObject(inputStream, TinkerGraph.class);
+                IoTest.assertCrewGraph(target, false);
+            }
+        }
+    }
+
+    @Test
     public void shouldSerializeTinkerGraphToGraphSON() throws Exception {
         final TinkerGraph graph = TinkerFactory.createModern();
         try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
@@ -325,6 +338,18 @@ public class TinkerGraphTest {
     }
 
     @Test
+    public void shouldSerializeTinkerGraphWithMultiPropertiesToGraphSON() throws Exception {
+        final TinkerGraph graph = TinkerFactory.createTheCrew();
+        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            graph.io(IoCore.graphson()).writer().create().writeObject(out, graph);
+            try (final ByteArrayInputStream inputStream = new ByteArrayInputStream(out.toByteArray())) {
+                final TinkerGraph target = graph.io(IoCore.graphson()).reader().create().readObject(inputStream, TinkerGraph.class);
+                IoTest.assertCrewGraph(target, false);
+            }
+        }
+    }
+
+    @Test
     public void shouldSerializeTinkerGraphToGraphSONWithTypes() throws Exception {
         final TinkerGraph graph = TinkerFactory.createModern();
         final Mapper<ObjectMapper> mapper = graph.io(IoCore.graphson()).mapper().embedTypes(true).create();


[2/2] tinkerpop git commit: Merge branch 'tp32'

Posted by sp...@apache.org.
Merge branch 'tp32'


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

Branch: refs/heads/master
Commit: 59d0a6957b9b868d8c6ba0931108352732ee8275
Parents: 24ff9e8 cc918df
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Dec 29 05:39:48 2016 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Dec 29 05:39:48 2016 -0500

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../upgrade/release-3.2.x-incubating.asciidoc   | 14 +++++++++++
 .../tinkergraph/structure/TinkerIoRegistry.java | 10 ++++++--
 .../tinkergraph/structure/TinkerGraphTest.java  | 25 ++++++++++++++++++++
 4 files changed, 48 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59d0a695/CHANGELOG.asciidoc
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59d0a695/docs/src/upgrade/release-3.2.x-incubating.asciidoc
----------------------------------------------------------------------