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);
         }
     }