Repository: tinkerpop Updated Branches: refs/heads/TRAVIS-TEST ed2366009 -> 9f289d989
foo Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/9f289d98 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/9f289d98 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/9f289d98 Branch: refs/heads/TRAVIS-TEST Commit: 9f289d989da7b0a976d93599f51b2102d16b822c Parents: ed23660 Author: Daniel Kuppitz <daniel_kupp...@hotmail.com> Authored: Tue Mar 13 12:46:12 2018 -0700 Committer: Daniel Kuppitz <daniel_kupp...@hotmail.com> Committed: Tue Mar 13 12:46:12 2018 -0700 ---------------------------------------------------------------------- .../remote/traversal/AbstractRemoteTraversal.java | 5 +++++ .../tinkerpop/gremlin/process/traversal/Traversal.java | 7 +++++-- .../traversal/lambda/AbstractLambdaTraversal.java | 7 +++++++ .../traversal/strategy/decoration/SubgraphStrategy.java | 12 ++++++------ .../process/traversal/util/DefaultTraversal.java | 2 +- .../traversal/util/DefaultTraversalStrategies.java | 4 ++-- 6 files changed, 26 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9f289d98/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/AbstractRemoteTraversal.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/AbstractRemoteTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/AbstractRemoteTraversal.java index 0c6a7aa..480d1fc 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/AbstractRemoteTraversal.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/AbstractRemoteTraversal.java @@ -88,6 +88,11 @@ public abstract class AbstractRemoteTraversal<S,E> implements RemoteTraversal<S, } @Override + public void invalidateTraverserRequirements() { + throw new UnsupportedOperationException("Remote traversals do not support this method"); + } + + @Override public void setSideEffects(final TraversalSideEffects sideEffects) { throw new UnsupportedOperationException("Remote traversals do not support this method"); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9f289d98/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 e4a3869..7a6ddce 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 @@ -425,8 +425,11 @@ public interface Traversal<S, E> extends Iterator<E>, Serializable, Cloneable, A */ public Set<TraverserRequirement> getTraverserRequirements(); - public default void resetTraverserRequirements() { - + /** + * Invalidates the set of all {@link TraverserRequirement}s for this traversal. + */ + public default void invalidateTraverserRequirements() { + }; /** http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9f289d98/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 8f910a0..84e1896 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 @@ -184,6 +184,13 @@ public abstract class AbstractLambdaTraversal<S, E> implements Traversal.Admin<S } @Override + public void invalidateTraverserRequirements() { + if (null != this.bypassTraversal) { + this.bypassTraversal.invalidateTraverserRequirements(); + } + } + + @Override public int hashCode() { return null == this.bypassTraversal ? this.getClass().hashCode() : this.bypassTraversal.hashCode(); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9f289d98/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 e5c783a..7968363 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 @@ -171,7 +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; + boolean invalidateTraverserRequirements = false; for (final VertexStep<?> step : vertexSteps) { if (step.returnsEdge()) continue; @@ -179,8 +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 boolean requiresPathRequirement; - final Step<Edge, Vertex> someVStep = (requiresPathRequirement = step.getDirection() == Direction.BOTH) ? + final boolean addsPathRequirement; + final Step<Edge, Vertex> someVStep = (addsPathRequirement = step.getDirection() == Direction.BOTH) ? new EdgeOtherVertexStep(traversal) : new EdgeVertexStep(traversal, step.getDirection().opposite()); @@ -193,12 +193,12 @@ public final class SubgraphStrategy extends AbstractTraversalStrategy<TraversalS if (null != this.vertexCriterion) TraversalHelper.insertAfterStep(new TraversalFilterStep<>(traversal, this.vertexCriterion.clone()), someVStep, traversal); - addPathRequirement |= requiresPathRequirement; + invalidateTraverserRequirements |= addsPathRequirement; } } - if (addPathRequirement) { - traversal.resetTraverserRequirements(); + if (invalidateTraverserRequirements) { + traversal.invalidateTraverserRequirements(); } // turn g.V().properties() to g.V().properties().xxx http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9f289d98/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 f045632..57c271b 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 @@ -166,7 +166,7 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> { } @Override - public void resetTraverserRequirements() { + public void invalidateTraverserRequirements() { this.requirements = null; } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9f289d98/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 91a49e2..74e84e2 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 (int i = 0; i < this.traversalStrategies.size(); i++) { - this.traversalStrategies.get(i).apply(traversal); + for (final TraversalStrategy<?> traversalStrategy : this.traversalStrategies) { + traversalStrategy.apply(traversal); } }