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/01 22:58:09 UTC

[1/2] incubator-tinkerpop git commit: Fix for TINKERPOP3-642 where ElementIdStrategy was not setting the id field directly if specified.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/master 54b25caec -> f4449db4a


Fix for TINKERPOP3-642 where ElementIdStrategy was not setting the id field directly if specified.


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

Branch: refs/heads/master
Commit: 03444f60d726f4dfcd3273c14ecfb518aa243cda
Parents: 54b25ca
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 1 16:55:56 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 1 16:55:56 2015 -0400

----------------------------------------------------------------------
 .../strategy/decoration/ElementIdStrategy.java  | 25 ++++++----
 .../ElementIdStrategyProcessTest.java           | 48 ++++++++++++++++++++
 2 files changed, 65 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/03444f60/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java
index 6a644a9..9128b46 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java
@@ -96,29 +96,38 @@ public final class ElementIdStrategy extends AbstractTraversalStrategy {
         TraversalHelper.getStepsOfAssignableClass(AddVertexStep.class, traversal).stream().forEach(s -> {
             if (ElementHelper.getIdValue(s.getKeyValues()).isPresent())
                 TraversalHelper.replaceStep(s, new AddVertexStep(traversal, ElementHelper.replaceKey(s.getKeyValues(), T.id, idPropertyKey)), traversal);
-            else
-                TraversalHelper.replaceStep(s, new AddVertexStep(traversal, ElementHelper.upsert(s.getKeyValues(), idPropertyKey, idMaker.get())), traversal);
+            else {
+                final Object[] kvs = ElementHelper.getKeys(s.getKeyValues()).contains(idPropertyKey) ? s.getKeyValues() : ElementHelper.upsert(s.getKeyValues(), idPropertyKey, idMaker.get());
+                TraversalHelper.replaceStep(s, new AddVertexStep(traversal, kvs), traversal);
+            }
         });
 
         TraversalHelper.getStepsOfAssignableClass(AddVertexStartStep.class, traversal).stream().forEach(s -> {
             if (ElementHelper.getIdValue(s.getKeyValues()).isPresent())
                 TraversalHelper.replaceStep(s, new AddVertexStartStep(traversal, ElementHelper.replaceKey(s.getKeyValues(), T.id, idPropertyKey)), traversal);
-            else
-                TraversalHelper.replaceStep(s, new AddVertexStartStep(traversal, ElementHelper.upsert(s.getKeyValues(), idPropertyKey, idMaker.get())), traversal);
+            else {
+                final Object[] kvs = ElementHelper.getKeys(s.getKeyValues()).contains(idPropertyKey) ? s.getKeyValues() : ElementHelper.upsert(s.getKeyValues(), idPropertyKey, idMaker.get());
+                TraversalHelper.replaceStep(s, new AddVertexStartStep(traversal, kvs), traversal);
+            }
+
         });
 
         TraversalHelper.getStepsOfAssignableClass(AddEdgeStep.class, traversal).stream().forEach(s -> {
             if (ElementHelper.getIdValue(s.getKeyValues()).isPresent())
                 TraversalHelper.replaceStep(s, new AddEdgeStep(traversal, s.getDirection(), s.getEdgeLabel(), s.getVertices().iterator(), ElementHelper.replaceKey(s.getKeyValues(), T.id, idPropertyKey)), traversal);
-            else
-                TraversalHelper.replaceStep(s, new AddEdgeStep(traversal, s.getDirection(), s.getEdgeLabel(), s.getVertices().iterator(), ElementHelper.upsert(s.getKeyValues(), idPropertyKey, idMaker.get())), traversal);
+            else {
+                final Object[] kvs = ElementHelper.getKeys(s.getKeyValues()).contains(idPropertyKey) ? s.getKeyValues() : ElementHelper.upsert(s.getKeyValues(), idPropertyKey, idMaker.get());
+                TraversalHelper.replaceStep(s, new AddEdgeStep(traversal, s.getDirection(), s.getEdgeLabel(), s.getVertices().iterator(), kvs), traversal);
+            }
         });
 
         TraversalHelper.getStepsOfAssignableClass(AddEdgeByPathStep.class, traversal).stream().forEach(s -> {
             if (ElementHelper.getIdValue(s.getKeyValues()).isPresent())
                 TraversalHelper.replaceStep(s, new AddEdgeByPathStep(traversal, s.getDirection(), s.getEdgeLabel(), s.getStepLabel(), ElementHelper.replaceKey(s.getKeyValues(), T.id, idPropertyKey)), traversal);
-            else
-                TraversalHelper.replaceStep(s, new AddEdgeByPathStep(traversal, s.getDirection(), s.getEdgeLabel(), s.getStepLabel(), ElementHelper.upsert(s.getKeyValues(), idPropertyKey, idMaker.get())), traversal);
+            else {
+                final Object[] kvs = ElementHelper.getKeys(s.getKeyValues()).contains(idPropertyKey) ? s.getKeyValues() : ElementHelper.upsert(s.getKeyValues(), idPropertyKey, idMaker.get());
+                TraversalHelper.replaceStep(s, new AddEdgeByPathStep(traversal, s.getDirection(), s.getEdgeLabel(), s.getStepLabel(), kvs), traversal);
+            }
         });
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/03444f60/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyProcessTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyProcessTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyProcessTest.java
index 175976a..591c1a1 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyProcessTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyProcessTest.java
@@ -76,6 +76,28 @@ public class ElementIdStrategyProcessTest extends AbstractGremlinProcessTest {
 
     @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
+    public void shouldSetIdOnAddVWithIdPropertyKeySpecifiedAndNameSuppliedAsProperty() throws Exception {
+        final ElementIdStrategy strategy = ElementIdStrategy.build().idPropertyKey("name").create();
+        final GraphTraversalSource sg = create(strategy);
+        final Vertex v = sg.addV("name", "stephen").next();
+        assertEquals("stephen", v.value("name"));
+        assertEquals("stephen", sg.V(v).id().next());
+        assertEquals("stephen", sg.V("stephen").id().next());
+    }
+
+    @Test
+    @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
+    public void shouldSetIdOnAddVWithIdPropertyKeySpecifiedAndIdSuppliedAsProperty() throws Exception {
+        final ElementIdStrategy strategy = ElementIdStrategy.build().idPropertyKey("name").create();
+        final GraphTraversalSource sg = create(strategy);
+        final Vertex v = sg.addV(T.id, "stephen").next();
+        assertEquals("stephen", v.value("name"));
+        assertEquals("stephen", sg.V(v).id().next());
+        assertEquals("stephen", sg.V("stephen").id().next());
+    }
+
+    @Test
+    @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     public void shouldGenerateDefaultIdOnGraphAddVWithSpecifiedId() throws Exception {
         final ElementIdStrategy strategy = ElementIdStrategy.build().create();
         final GraphTraversalSource sg = create(strategy);
@@ -155,6 +177,32 @@ public class ElementIdStrategyProcessTest extends AbstractGremlinProcessTest {
         assertNotNull(UUID.fromString(sg.E(e).id().next().toString()));
     }
 
+    @Test
+    @FeatureRequirementSet(FeatureRequirementSet.Package.SIMPLE)
+    public void shouldSetIdOnAddEWithIdPropertyKeySpecifiedAndNameSuppliedAsProperty() throws Exception {
+        final ElementIdStrategy strategy = ElementIdStrategy.build().idPropertyKey("name").create();
+        final GraphTraversalSource sg = create(strategy);
+        final Vertex v = sg.addV().next();
+        final Edge e = sg.V(v).addE(Direction.OUT, "self", v, "test", "value", T.id, "some-id").next();
+        assertEquals("value", e.value("test"));
+        assertEquals("some-id", e.value("name"));
+        assertEquals("some-id", sg.E(e).id().next());
+        assertEquals("some-id", sg.E("some-id").id().next());
+    }
+
+    @Test
+    @FeatureRequirementSet(FeatureRequirementSet.Package.SIMPLE)
+    public void shouldSetIdOnAddEWithNamePropertyKeySpecifiedAndNameSuppliedAsProperty() throws Exception {
+        final ElementIdStrategy strategy = ElementIdStrategy.build().idPropertyKey("name").create();
+        final GraphTraversalSource sg = create(strategy);
+        final Vertex v = sg.addV().next();
+        final Edge e = sg.V(v).addE(Direction.OUT, "self", v, "test", "value", "name", "some-id").next();
+        assertEquals("value", e.value("test"));
+        assertEquals("some-id", e.value("name"));
+        assertEquals("some-id", sg.E(e).id().next());
+        assertEquals("some-id", sg.E("some-id").id().next());
+    }
+
     private GraphTraversalSource create(final ElementIdStrategy strategy) {
         return graphProvider.traversal(graph, strategy);
     }


[2/2] incubator-tinkerpop git commit: Update changelog.

Posted by sp...@apache.org.
Update changelog.


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

Branch: refs/heads/master
Commit: f4449db4a897a2194967cf5677da4d4c02a3f855
Parents: 03444f6
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri May 1 16:57:58 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri May 1 16:57:58 2015 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/f4449db4/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index c4d6916..7af5087 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,7 @@ TinkerPop 3.0.0.M9 (NOT OFFICIALLY RELEASED YET)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 * Added `PersistResultGraphAware` interface which is used by `OutputFormats` to specify persistence possibilities for a Hadoop `GraphComputer`.
+* `ElementIdStrategy` now allows the identifier property to be set directly (and not only by specifying `T.id`).
 * `Path` and `Step` labels are ordered by the order in which the respective `addLabel()` calls were made.
 * A `Step` now has a `Set<String>` of labels. Updated `as()` to take a var args of labels.
 * Dropped `BatchGraph` from the code base - it will be replaced by bulk loader functionality over OLAP.