You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by dk...@apache.org on 2018/03/13 18:33:56 UTC
[30/31] tinkerpop git commit: foo
foo
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/16c0172a
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/16c0172a
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/16c0172a
Branch: refs/heads/TRAVIS-TEST
Commit: 16c0172a00c2c39ee67bc1f30968582cb75cb864
Parents: 6e0ccd8
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Tue Mar 13 11:33:06 2018 -0700
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Tue Mar 13 11:33:06 2018 -0700
----------------------------------------------------------------------
.../traversal/strategy/decoration/SubgraphStrategy.java | 12 +++++++++++-
.../traversal/util/DefaultTraversalStrategies.java | 4 ++--
2 files changed, 13 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/16c0172a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategy.java
index e0d260f..f19e83b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategy.java
@@ -43,6 +43,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.apache.tinkerpop.gremlin.structure.Direction;
@@ -170,6 +171,7 @@ public final class SubgraphStrategy extends AbstractTraversalStrategy<TraversalS
}
// turn g.V().out() to g.V().outE().inV() only if there is an edge predicate otherwise
+ boolean addPathRequirement = false;
for (final VertexStep<?> step : vertexSteps) {
if (step.returnsEdge())
continue;
@@ -177,7 +179,8 @@ public final class SubgraphStrategy extends AbstractTraversalStrategy<TraversalS
TraversalHelper.insertAfterStep(new TraversalFilterStep<>(traversal, (Traversal) this.vertexCriterion.clone()), step, traversal);
} else {
final VertexStep<Edge> someEStep = new VertexStep<>(traversal, Edge.class, step.getDirection(), step.getEdgeLabels());
- final Step<Edge, Vertex> someVStep = step.getDirection() == Direction.BOTH ?
+ final boolean requiresPathRequirement;
+ final Step<Edge, Vertex> someVStep = (requiresPathRequirement = step.getDirection() == Direction.BOTH) ?
new EdgeOtherVertexStep(traversal) :
new EdgeVertexStep(traversal, step.getDirection().opposite());
@@ -189,9 +192,16 @@ public final class SubgraphStrategy extends AbstractTraversalStrategy<TraversalS
TraversalHelper.insertAfterStep(new TraversalFilterStep<>(traversal, this.edgeCriterion.clone()), someEStep, traversal);
if (null != this.vertexCriterion)
TraversalHelper.insertAfterStep(new TraversalFilterStep<>(traversal, this.vertexCriterion.clone()), someVStep, traversal);
+
+ addPathRequirement |= requiresPathRequirement;
}
}
+ if (addPathRequirement) {
+ final Traversal.Admin rootTraversal = TraversalHelper.getRootTraversal(traversal);
+ RequirementsStrategy.addRequirements(rootTraversal.getStrategies(), TraverserRequirement.PATH);
+ }
+
// turn g.V().properties() to g.V().properties().xxx
// turn g.V().values() to g.V().properties().xxx.value()
if (null != this.vertexPropertyCriterion) {
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/16c0172a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategies.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategies.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategies.java
index 74e84e2..91a49e2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategies.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategies.java
@@ -82,8 +82,8 @@ public class DefaultTraversalStrategies implements TraversalStrategies {
@Override
public void applyStrategies(final Traversal.Admin<?, ?> traversal) {
- for (final TraversalStrategy<?> traversalStrategy : this.traversalStrategies) {
- traversalStrategy.apply(traversal);
+ for (int i = 0; i < this.traversalStrategies.size(); i++) {
+ this.traversalStrategies.get(i).apply(traversal);
}
}