You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2017/01/04 13:58:26 UTC
[08/50] [abbrv] tinkerpop git commit: TINKERPOP-1587 TinkerGraph
serialization supports multiproperties
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/TINKERPOP-1564
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();