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 2015/05/06 19:26:18 UTC

incubator-tinkerpop git commit: Traversal now propagates the graph object to nested traversals -- didnt see the sitution where a strategy needed a graph instance. @BrynCooke.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/master e1642e44f -> 26c9605ef


Traversal now propagates the graph object to nested traversals -- didnt see the sitution where a strategy needed a graph instance. @BrynCooke.


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

Branch: refs/heads/master
Commit: 26c9605ef254774ede761a2abb893bea14c2976a
Parents: e1642e4
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed May 6 11:26:14 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed May 6 11:26:14 2015 -0600

----------------------------------------------------------------------
 CHANGELOG.asciidoc                                      |  2 ++
 .../tinkerpop/gremlin/process/traversal/Traversal.java  |  2 ++
 .../traversal/lambda/AbstractLambdaTraversal.java       | 12 +++++++++---
 .../process/traversal/lambda/HasNextTraversal.java      | 10 +++++++---
 .../process/traversal/util/DefaultTraversal.java        |  9 ++++++++-
 .../gremlin/process/traversal/util/EmptyTraversal.java  |  7 ++++++-
 6 files changed, 34 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/26c9605e/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 4203262..f1e142b 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -25,6 +25,8 @@ image::http://www.tinkerpop.com/docs/current/images/gremlin-hindu.png[width=225]
 TinkerPop 3.0.0.M9 (NOT OFFICIALLY RELEASED YET)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+* Added `Traversal.Admin.setGraph(Graph)` as strategies that need reference to the graph, need it across all nested traversals.
+* `AbstractLambdaTraversal` is now smart about `TraversalParent` and `TraversalStrategies`.
 * Fixed bug in `GraphML` reader that was not allowing `<edge>` elements to come before `<node>` elements as allowable by the GraphML specification.
 * Added `VertexFeature.getCardinality`.
 * Added `AdjacentToIncidentStrategy` which rewrites `out().count()` to `outE().count()` (and similar such patterns).

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/26c9605e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
index fbdcee5..f687aa2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
@@ -419,6 +419,8 @@ public interface Traversal<S, E> extends Iterator<E>, Serializable, Cloneable {
 
         public Optional<Graph> getGraph();
 
+        public void setGraph(final Graph graph);
+
     }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/26c9605e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java
index 883c144..4d4d6f2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java
@@ -43,6 +43,7 @@ import java.util.Optional;
 public abstract class AbstractLambdaTraversal<S, E> implements Traversal.Admin<S, E> {
 
     private TraversalStrategies traversalStrategies = EmptyTraversalStrategies.instance();
+    private TraversalParent traversalParent = (TraversalParent) EmptyStep.instance();
 
     public List<Step> getSteps() {
         return Collections.emptyList();
@@ -95,17 +96,17 @@ public abstract class AbstractLambdaTraversal<S, E> implements Traversal.Admin<S
 
     @Override
     public TraversalStrategies getStrategies() {
-        return EmptyTraversalStrategies.instance();
+        return this.traversalStrategies;
     }
 
     @Override
     public void setParent(final TraversalParent step) {
-
+        this.traversalParent = step;
     }
 
     @Override
     public TraversalParent getParent() {
-        return (TraversalParent) EmptyStep.instance();
+        return this.traversalParent;
     }
 
     @Override
@@ -146,4 +147,9 @@ public abstract class AbstractLambdaTraversal<S, E> implements Traversal.Admin<S
         return Optional.empty();
     }
 
+    @Override
+    public void setGraph(final Graph graph) {
+
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/26c9605e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/HasNextTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/HasNextTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/HasNextTraversal.java
index 4b51ceb..b12e1bf 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/HasNextTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/HasNextTraversal.java
@@ -26,7 +26,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 
 import java.util.Collections;
@@ -43,6 +42,7 @@ public final class HasNextTraversal<S> implements Traversal.Admin<S, Boolean>, T
 
     public HasNextTraversal(final Admin<S, ?> hasNextTraversal) {
         this.hasNextTraversal = hasNextTraversal;
+        this.hasNextTraversal.setParent(this);
     }
 
     @Override
@@ -153,7 +153,12 @@ public final class HasNextTraversal<S> implements Traversal.Admin<S, Boolean>, T
 
     @Override
     public Optional<Graph> getGraph() {
-        return Optional.empty();
+        return this.hasNextTraversal.getGraph();
+    }
+
+    @Override
+    public void setGraph(final Graph graph) {
+        this.hasNextTraversal.setGraph(graph);
     }
 
     @Override
@@ -162,5 +167,4 @@ public final class HasNextTraversal<S> implements Traversal.Admin<S, Boolean>, T
     }
 
 
-
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/26c9605e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
index 0d18e89..3917622 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
@@ -45,7 +45,7 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
     private Step<?, E> finalEndStep = EmptyStep.instance();
     private final StepPosition stepPosition = new StepPosition();
 
-    protected final transient Graph graph;
+    protected transient Graph graph;
 
     protected List<Step> steps = new ArrayList<>();
     protected TraversalSideEffects sideEffects = new DefaultTraversalSideEffects();
@@ -78,11 +78,13 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
                 for (final Traversal.Admin<?, ?> globalChild : ((TraversalParent) step).getGlobalChildren()) {
                     globalChild.setStrategies(this.strategies);
                     globalChild.setEngine(this.traversalEngine);
+                    globalChild.setGraph(this.graph);
                     globalChild.applyStrategies();
                 }
                 for (final Traversal.Admin<?, ?> localChild : ((TraversalParent) step).getLocalChildren()) {
                     localChild.setStrategies(this.strategies);
                     localChild.setEngine(StandardTraversalEngine.instance());
+                    localChild.setGraph(this.graph);
                     localChild.applyStrategies();
                 }
             }
@@ -253,4 +255,9 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
         return Optional.ofNullable(this.graph);
     }
 
+    @Override
+    public void setGraph(final Graph graph) {
+        this.graph = graph;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/26c9605e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java
index 8098d68..6b8da5b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java
@@ -26,8 +26,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
 import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 
@@ -177,4 +177,9 @@ public class EmptyTraversal<S, E> implements Traversal.Admin<S, E> {
     public Optional<Graph> getGraph() {
         return Optional.empty();
     }
+
+    @Override
+    public void setGraph(final Graph graph) {
+
+    }
 }