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 2016/10/03 14:09:26 UTC

tinkerpop git commit: made the recommended changes from @dkuppitz.

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1470 1389cd369 -> 7f04ebeed


made the recommended changes from @dkuppitz.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/7f04ebee
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/7f04ebee
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/7f04ebee

Branch: refs/heads/TINKERPOP-1470
Commit: 7f04ebeede121395ba389047ca98266dc5879289
Parents: 1389cd3
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Oct 3 08:09:19 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Oct 3 08:09:19 2016 -0600

----------------------------------------------------------------------
 .../optimization/InlineFilterStrategy.java      | 29 ++++++++------------
 1 file changed, 12 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7f04ebee/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java
index 820143a..8072ca0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategy.java
@@ -42,6 +42,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
@@ -75,24 +76,18 @@ public final class InlineFilterStrategy extends AbstractTraversalStrategy<Traver
         boolean changed = true; // recursively walk child traversals trying to inline them into the current traversal line.
         while (changed) {
             changed = false;
-            for (final FilterStep<?> step : TraversalHelper.getStepsOfAssignableClass(FilterStep.class, traversal)) {
-                if (step instanceof HasStep && InlineFilterStrategy.processHasStep((HasStep) step, traversal))
-                    // has(a,b).has(c) --> has(a,b,c)
-                    changed = true;
-                else if (step instanceof TraversalFilterStep && InlineFilterStrategy.processTraversalFilterStep((TraversalFilterStep) step, traversal))
-                    // filter(x.y) --> x.y
-                    changed = true;
-                else if (step instanceof OrStep && InlineFilterStrategy.processOrStep((OrStep) step, traversal))
-                    // or(has(x,y),has(x,z)) --> has(x,y.or(z))
-                    changed = true;
-                else if (step instanceof AndStep && InlineFilterStrategy.processAndStep((AndStep) step, traversal))
-                    // and(x,y) --> x.y
-                    changed = true;
+            final Iterator<FilterStep> filterStepIterator = TraversalHelper.getStepsOfAssignableClass(FilterStep.class, traversal).iterator();
+            while (!changed && filterStepIterator.hasNext()) {
+                final FilterStep<?> step = filterStepIterator.next();
+                changed = step instanceof HasStep && InlineFilterStrategy.processHasStep((HasStep) step, traversal) ||
+                        step instanceof TraversalFilterStep && InlineFilterStrategy.processTraversalFilterStep((TraversalFilterStep) step, traversal) ||
+                        step instanceof OrStep && InlineFilterStrategy.processOrStep((OrStep) step, traversal) ||
+                        step instanceof AndStep && InlineFilterStrategy.processAndStep((AndStep) step, traversal);
             }
-            // match(as('a').has(key,value),...) --> as('a').has(key,value).match(...)
-            if (traversal.getParent() instanceof EmptyStep) {
-                for (final MatchStep<?, ?> step : TraversalHelper.getStepsOfClass(MatchStep.class, traversal)) {
-                    if (InlineFilterStrategy.processMatchStep(step, traversal))
+            if (!changed && traversal.getParent() instanceof EmptyStep) {
+                final Iterator<MatchStep> matchStepIterator = TraversalHelper.getStepsOfClass(MatchStep.class, traversal).iterator();
+                while (!changed && matchStepIterator.hasNext()) {
+                    if (InlineFilterStrategy.processMatchStep(matchStepIterator.next(), traversal))
                         changed = true;
                 }
             }