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) {
+
+ }
}