You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2017/04/06 11:33:45 UTC
[18/50] tinkerpop git commit: Add a slight optimization to
ScopingStrategy that will not compute step labels if no Scoping steps are
defined. Also added JavaDoc and comments accordingly.
Add a slight optimization to ScopingStrategy that will not compute step labels if no Scoping steps are defined. Also added JavaDoc and comments accordingly.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/5711ee26
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/5711ee26
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/5711ee26
Branch: refs/heads/TINKERPOP-1443
Commit: 5711ee26c89f02896d404b47eebe7ca75ea71e94
Parents: b49c5be
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Mar 6 08:07:39 2017 -0700
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Mar 29 11:20:44 2017 -0400
----------------------------------------------------------------------
.../gremlin/process/traversal/step/Scoping.java | 5 +++++
.../strategy/finalization/ScopingStrategy.java | 12 ++++++++++--
2 files changed, 15 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5711ee26/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
index 68655e4..fae52d7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
@@ -69,6 +69,11 @@ public interface Scoping {
return null;
}
+ /**
+ * Get the labels that this scoping step will access during the traversal
+ *
+ * @return the accessed labels of the scoping step
+ */
public Set<String> getScopeKeys();
/**
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5711ee26/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ScopingStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ScopingStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ScopingStrategy.java
index ce66da4..073f45e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ScopingStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ScopingStrategy.java
@@ -19,6 +19,7 @@
package org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
@@ -29,6 +30,10 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import java.util.Set;
/**
+ * ScopingStrategy will analyze the traversal for step labels (e.g. as()) and provide {@link Scoping} steps that information.
+ * This enables Scoping steps to avoid having to generate step label data at {@link Step#getRequirements()} and thus,
+ * may significantly reduce compilation times.
+ *
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
public final class ScopingStrategy extends AbstractTraversalStrategy<TraversalStrategy.FinalizationStrategy> implements TraversalStrategy.FinalizationStrategy {
@@ -41,11 +46,14 @@ public final class ScopingStrategy extends AbstractTraversalStrategy<TraversalSt
@Override
public void apply(final Traversal.Admin<?, ?> traversal) {
- // only operate on the root traversal and apply global step labels recursively
- if (!(traversal.getParent() instanceof EmptyStep))
+ // only operate on the root traversal and only if it contains scoping steps
+ if (!(traversal.getParent() instanceof EmptyStep) ||
+ !TraversalHelper.hasStepOfAssignableClassRecursively(Scoping.class, traversal))
return;
+ // get the labels associated with the traveral
final Set<String> labels = TraversalHelper.getLabels(traversal);
+ // tell all scoping steps what those labels are
for (final Scoping scoping : TraversalHelper.getStepsOfAssignableClassRecursively(Scoping.class, traversal)) {
scoping.setPathLabels(labels);
}