This is an automated email from the ASF dual-hosted git repository.

spmallette pushed a commit to branch TINKERPOP-2311
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 1e06e3067f3abb01f10bab124bdf92e4de33a759
Author: stephen <[email protected]>
AuthorDate: Wed Nov 6 19:27:48 2019 -0500

    TINKERPOP-2311 Implemented Iterable on TraversalStrategies
    
    Minor refactoring to polish up toList() usage a bit in favor of foreach and 
Iterator usage where sensible.
---
 CHANGELOG.asciidoc                                      |  1 +
 .../computer/traversal/TraversalVertexProgram.java      |  2 +-
 .../traversal/step/map/TraversalVertexProgramStep.java  |  2 +-
 .../strategy/decoration/VertexProgramStrategy.java      |  4 ++--
 .../gremlin/process/traversal/TraversalStrategies.java  | 17 +++++++++++------
 .../strategy/decoration/RequirementsStrategy.java       |  2 +-
 .../strategy/decoration/SideEffectStrategy.java         |  2 +-
 .../verification/StandardVerificationStrategy.java      |  4 ++--
 .../process/traversal/util/DefaultTraversal.java        |  2 +-
 .../traversal/util/DefaultTraversalStrategies.java      |  2 +-
 .../traversal/util/EmptyTraversalStrategies.java        |  2 +-
 .../process/traversal/util/TraversalExplanation.java    |  2 +-
 .../gremlin/process/traversal/util/TraversalHelper.java |  2 +-
 .../gremlin/process/TraversalStrategiesTest.java        | 17 +++++++++--------
 .../gremlin/process/traversal/step/map/ProfileTest.java | 11 +++++------
 .../optimization/EarlyLimitStrategyProcessTest.java     |  2 +-
 .../interceptor/SparkStarBarrierInterceptor.java        |  2 +-
 .../optimization/SparkInterceptorStrategyTest.java      |  8 ++++----
 .../optimization/SparkSingleIterationStrategyTest.java  | 12 ++++++------
 19 files changed, 51 insertions(+), 45 deletions(-)

diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 50fa442..11a097b 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -30,6 +30,7 @@ This release also includes changes from <<release-3-4-3, 
3.4.3>>.
 * Renamed `StoreStep` to `AggregateLocalStep`.
 * Renamed `AggregateStep` to `AggregateGlobalStep`.
 * Renamed `SERVER_ERROR_SCRIPT_EVALUATION` to `SERVER_ERROR_EVALUATION` given 
that this response code applies to remote traversals as well as scripts.
+* Refactored `TraversalStrategies` to implement `Iterable`.
 * Configured GraphBinary as the default binary serialization format for the 
Java Driver.
 * Configured GraphSON 3.0 as the default text serialization format when no 
serializer can be determined.
 * Upgraded to Neo4j 3.4.11.
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
index 4cc7238..a5f9dfe 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
@@ -178,7 +178,7 @@ public final class TraversalVertexProgram implements 
VertexProgram<TraverserSet<
                                 
this.traversal.get().getParent().asStep().getNextStep().getNextStep() 
instanceof ComputerResultStep));
 
         // determine how to store halted traversers
-        final Iterator<?> itty = 
IteratorUtils.filter(this.traversal.get().getStrategies().toList(), strategy -> 
strategy instanceof HaltedTraverserStrategy).iterator();
+        final Iterator<?> itty = 
IteratorUtils.filter(this.traversal.get().getStrategies(), strategy -> strategy 
instanceof HaltedTraverserStrategy).iterator();
         this.haltedTraverserStrategy = itty.hasNext() ? 
(HaltedTraverserStrategy) itty.next() : HaltedTraverserStrategy.reference();
 
         // register traversal side-effects in memory
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
index 30cfee5..3fa36a9 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
@@ -74,7 +74,7 @@ public final class TraversalVertexProgramStep extends 
VertexProgramStep implemen
         final Traversal.Admin<?, ?> computerSpecificTraversal = 
this.computerTraversal.getPure();
         final TraversalStrategies computerSpecificStrategies = 
this.getTraversal().getStrategies().clone();
 
-        
IteratorUtils.filter(TraversalStrategies.GlobalCache.getStrategies(graph.getClass()).toList(),
+        
IteratorUtils.filter(TraversalStrategies.GlobalCache.getStrategies(graph.getClass()),
                 s -> s instanceof 
TraversalStrategy.ProviderOptimizationStrategy).forEach(computerSpecificStrategies::addStrategies);
 
         computerSpecificTraversal.setStrategies(computerSpecificStrategies);
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java
index 2d63510..8c2e28a 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java
@@ -162,8 +162,8 @@ public final class VertexProgramStrategy extends 
AbstractTraversalStrategy<Trave
     }
 
     public static Optional<Computer> getComputer(final TraversalStrategies 
strategies) {
-        final Optional<TraversalStrategy<?>> optional = 
strategies.toList().stream().filter(strategy -> strategy instanceof 
VertexProgramStrategy).findAny();
-        return optional.isPresent() ? Optional.of(((VertexProgramStrategy) 
optional.get()).computer) : Optional.empty();
+        final Optional<VertexProgramStrategy> optional = 
strategies.getStrategy(VertexProgramStrategy.class);
+        return optional.isPresent() ? Optional.of(optional.get().computer) : 
Optional.empty();
     }
 
     public void addGraphComputerStrategies(final TraversalSource 
traversalSource) {
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
index 0689bc8..f336908 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
@@ -41,6 +41,7 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.Stan
 import 
org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.apache.tinkerpop.gremlin.util.tools.MultiMap;
 
 import java.io.Serializable;
@@ -65,19 +66,22 @@ import java.util.stream.Collectors;
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Matthias Broecheler ([email protected])
  */
-public interface TraversalStrategies extends Serializable, Cloneable {
+public interface TraversalStrategies extends Serializable, Cloneable, 
Iterable<TraversalStrategy<?>> {
 
     static List<Class<? extends TraversalStrategy>> STRATEGY_CATEGORIES = 
Collections.unmodifiableList(Arrays.asList(TraversalStrategy.DecorationStrategy.class,
 TraversalStrategy.OptimizationStrategy.class, 
TraversalStrategy.ProviderOptimizationStrategy.class, 
TraversalStrategy.FinalizationStrategy.class, 
TraversalStrategy.VerificationStrategy.class));
 
     /**
-     * Return all the {@link TraversalStrategy} instances associated with this 
{@link TraversalStrategies}.
+     * Return an immutable list of the {@link TraversalStrategy} instances.
      */
-    public List<TraversalStrategy<?>> toList();
+    public default List<TraversalStrategy<?>> toList() {
+        return Collections.unmodifiableList(IteratorUtils.list(iterator()));
+    }
 
     /**
-     * Return all the {@link TraversalStrategy} instances associated with this 
{@link TraversalStrategies}.
+     * Return an {@code Iterator} of the {@link TraversalStrategy} instances.
      */
-    public Iterator<TraversalStrategy<?>> toIterator();
+    @Override
+    public Iterator<TraversalStrategy<?>> iterator();
 
     /**
      * Return the {@link TraversalStrategy} instance associated with the 
provided class.
@@ -87,7 +91,8 @@ public interface TraversalStrategies extends Serializable, 
Cloneable {
      * @return an optional containing the strategy instance or not
      */
     public default <T extends TraversalStrategy> Optional<T> getStrategy(final 
Class<T> traversalStrategyClass) {
-        return (Optional) toList().stream().filter(s -> 
traversalStrategyClass.isAssignableFrom(s.getClass())).findAny();
+        return (Optional<T>) IteratorUtils.stream(iterator()).
+                filter(s -> 
traversalStrategyClass.isAssignableFrom(s.getClass())).findAny();
     }
 
     /**
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/RequirementsStrategy.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/RequirementsStrategy.java
index 09d1806..cd9d663 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/RequirementsStrategy.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/RequirementsStrategy.java
@@ -49,7 +49,7 @@ public final class RequirementsStrategy extends 
AbstractTraversalStrategy<Traver
     }
 
     public static void addRequirements(final TraversalStrategies 
traversalStrategies, final TraverserRequirement... requirements) {
-        RequirementsStrategy strategy = (RequirementsStrategy) 
traversalStrategies.toList().stream().filter(s -> s instanceof 
RequirementsStrategy).findAny().orElse(null);
+        RequirementsStrategy strategy = (RequirementsStrategy) 
traversalStrategies.getStrategy(RequirementsStrategy.class).orElse(null);
         if (null == strategy) {
             strategy = new RequirementsStrategy();
             traversalStrategies.addStrategies(strategy);
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SideEffectStrategy.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SideEffectStrategy.java
index f3f5d4b..6be1cb4 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SideEffectStrategy.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SideEffectStrategy.java
@@ -50,7 +50,7 @@ public final class SideEffectStrategy extends 
AbstractTraversalStrategy<Traversa
     }
 
     public static <A> void addSideEffect(final TraversalStrategies 
traversalStrategies, final String key, final A value, final BinaryOperator<A> 
reducer) {
-        SideEffectStrategy strategy = (SideEffectStrategy) 
traversalStrategies.toList().stream().filter(s -> s instanceof 
SideEffectStrategy).findAny().orElse(null);
+        SideEffectStrategy strategy = 
traversalStrategies.getStrategy(SideEffectStrategy.class).orElse(null);
         if (null == strategy) {
             strategy = new SideEffectStrategy();
             traversalStrategies.addStrategies(strategy);
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java
index fc33c69..5a41c92 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java
@@ -51,8 +51,8 @@ public final class StandardVerificationStrategy extends 
AbstractTraversalStrateg
 
     @Override
     public void apply(final Traversal.Admin<?, ?> traversal) {
-        if 
(!traversal.getStrategies().toList().contains(ComputerFinalizationStrategy.instance())
 &&
-                
!traversal.getStrategies().toList().contains(ComputerVerificationStrategy.instance()))
 {
+        if 
(!traversal.getStrategies().getStrategy(ComputerFinalizationStrategy.class).isPresent()
 &&
+                
!traversal.getStrategies().getStrategy(ComputerVerificationStrategy.class).isPresent())
 {
             if 
(!TraversalHelper.getStepsOfAssignableClass(VertexComputing.class, 
traversal).isEmpty())
                 throw new VerificationException("VertexComputing steps must be 
executed with a GraphComputer: " + 
TraversalHelper.getStepsOfAssignableClass(VertexComputing.class, traversal), 
traversal);
         }
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 592f46c..78b49eb 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
@@ -138,7 +138,7 @@ public class DefaultTraversal<S, E> implements 
Traversal.Admin<S, E> {
             // moving side-effect setting after actual recursive strategy 
application we save a loop and by
             // consequence also fix a problem where strategies might reset 
something in sideeffects which seems to
             // happen in TranslationStrategy.
-            final Iterator<TraversalStrategy<?>> strategyIterator = 
this.strategies.toIterator();
+            final Iterator<TraversalStrategy<?>> strategyIterator = 
this.strategies.iterator();
             while (strategyIterator.hasNext()) {
                 final TraversalStrategy<?> strategy = strategyIterator.next();
                 TraversalHelper.applyTraversalRecursively(strategy::apply, 
this);
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 e41762a..3e39d1b 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
@@ -70,7 +70,7 @@ public class DefaultTraversalStrategies implements 
TraversalStrategies {
     }
 
     @Override
-    public Iterator<TraversalStrategy<?>> toIterator() {
+    public Iterator<TraversalStrategy<?>> iterator() {
         return this.traversalStrategies.iterator();
     }
 
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversalStrategies.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversalStrategies.java
index f9e1e62..f99d4bc 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversalStrategies.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversalStrategies.java
@@ -42,7 +42,7 @@ public final class EmptyTraversalStrategies implements 
TraversalStrategies {
 
 
     @Override
-    public Iterator<TraversalStrategy<?>> toIterator() {
+    public Iterator<TraversalStrategy<?>> iterator() {
         return toList().iterator();
     }
 
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanation.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanation.java
index 1ef5e97..c793a95 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanation.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanation.java
@@ -52,7 +52,7 @@ public class TraversalExplanation extends AbstractExplanation 
implements Seriali
     public TraversalExplanation(final Traversal.Admin<?, ?> traversal) {
         this.traversal = traversal.clone();
         final TraversalStrategies mutatingStrategies = new 
DefaultTraversalStrategies();
-        for (final TraversalStrategy strategy : 
this.traversal.getStrategies().toList()) {
+        for (final TraversalStrategy strategy : 
this.traversal.getStrategies()) {
             final Traversal.Admin<?, ?> mutatingTraversal = 
this.traversal.clone();
             mutatingStrategies.addStrategies(strategy);
             mutatingTraversal.setStrategies(mutatingStrategies);
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
index c406ee8..120b2ec 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
@@ -687,7 +687,7 @@ public final class TraversalHelper {
         childTraversal.setStrategies(parentTraversal.getStrategies());
         childTraversal.setSideEffects(parentTraversal.getSideEffects());
         parentTraversal.getGraph().ifPresent(childTraversal::setGraph);
-        for (final TraversalStrategy<?> strategy : 
parentTraversal.getStrategies().toList()) {
+        for (final TraversalStrategy<?> strategy : 
parentTraversal.getStrategies()) {
             strategy.apply(childTraversal);
             if (null != stopAfterStrategy && 
stopAfterStrategy.isInstance(strategy))
                 break;
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/TraversalStrategiesTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/TraversalStrategiesTest.java
index e2d625c..1247986 100644
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/TraversalStrategiesTest.java
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/TraversalStrategiesTest.java
@@ -66,10 +66,11 @@ public class TraversalStrategiesTest {
         TestGraph graph = new TestGraph();
         TraversalStrategies strategies = graph.traversal().getStrategies();
         
assertFalse(TraversalStrategies.GlobalCache.getStrategies(Graph.class).toList().isEmpty());
-        for (final TraversalStrategy strategy : 
TraversalStrategies.GlobalCache.getStrategies(Graph.class).toList()) {
+        
assertTrue(TraversalStrategies.GlobalCache.getStrategies(Graph.class).iterator().hasNext());
+        for (final TraversalStrategy strategy : 
TraversalStrategies.GlobalCache.getStrategies(Graph.class)) {
             
assertTrue(strategies.getStrategy(strategy.getClass()).isPresent());
         }
-        for (final TraversalStrategy strategy : 
TraversalStrategies.GlobalCache.getStrategies(TestGraphComputer.class).toList())
 {
+        for (final TraversalStrategy strategy : 
TraversalStrategies.GlobalCache.getStrategies(TestGraphComputer.class)) {
             
assertFalse(strategies.getStrategy(strategy.getClass()).isPresent());
         }
         assertTrue(strategies.getStrategy(StrategyA.class).isPresent());
@@ -83,10 +84,10 @@ public class TraversalStrategiesTest {
         ///
         graph = new TestGraph();
         strategies = graph.traversal().getStrategies();
-        for (final TraversalStrategy strategy : 
TraversalStrategies.GlobalCache.getStrategies(Graph.class).toList()) {
+        for (final TraversalStrategy strategy : 
TraversalStrategies.GlobalCache.getStrategies(Graph.class)) {
             
assertTrue(strategies.getStrategy(strategy.getClass()).isPresent());
         }
-        for (final TraversalStrategy strategy : 
TraversalStrategies.GlobalCache.getStrategies(TestGraphComputer.class).toList())
 {
+        for (final TraversalStrategy strategy : 
TraversalStrategies.GlobalCache.getStrategies(TestGraphComputer.class)) {
             
assertFalse(strategies.getStrategy(strategy.getClass()).isPresent());
         }
         assertFalse(strategies.getStrategy(StrategyA.class).isPresent());
@@ -98,10 +99,10 @@ public class TraversalStrategiesTest {
         //////////////////////
         strategies = 
TraversalStrategies.GlobalCache.getStrategies(TestGraphComputer.class);
         
assertFalse(TraversalStrategies.GlobalCache.getStrategies(GraphComputer.class).toList().isEmpty());
-        for (final TraversalStrategy strategy : 
TraversalStrategies.GlobalCache.getStrategies(GraphComputer.class).toList()) {
+        for (final TraversalStrategy strategy : 
TraversalStrategies.GlobalCache.getStrategies(GraphComputer.class)) {
             
assertTrue(strategies.getStrategy(strategy.getClass()).isPresent());
         }
-        for (final TraversalStrategy strategy : 
TraversalStrategies.GlobalCache.getStrategies(TestGraph.class).toList()) {
+        for (final TraversalStrategy strategy : 
TraversalStrategies.GlobalCache.getStrategies(TestGraph.class)) {
             
assertFalse(strategies.getStrategy(strategy.getClass()).isPresent());
         }
         assertFalse(strategies.getStrategy(StrategyA.class).isPresent());
@@ -112,10 +113,10 @@ public class TraversalStrategiesTest {
         //
         strategies = 
TraversalStrategies.GlobalCache.getStrategies(TestGraphComputer.class);
         
assertFalse(TraversalStrategies.GlobalCache.getStrategies(GraphComputer.class).toList().isEmpty());
-        for (final TraversalStrategy strategy : 
TraversalStrategies.GlobalCache.getStrategies(GraphComputer.class).toList()) {
+        for (final TraversalStrategy strategy : 
TraversalStrategies.GlobalCache.getStrategies(GraphComputer.class)) {
             
assertTrue(strategies.getStrategy(strategy.getClass()).isPresent());
         }
-        for (final TraversalStrategy strategy : 
TraversalStrategies.GlobalCache.getStrategies(TestGraph.class).toList()) {
+        for (final TraversalStrategy strategy : 
TraversalStrategies.GlobalCache.getStrategies(TestGraph.class)) {
             
assertFalse(strategies.getStrategy(strategy.getClass()).isPresent());
         }
         assertFalse(strategies.getStrategy(StrategyA.class).isPresent());
diff --git 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java
 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java
index ae8df07..839b47d 100644
--- 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java
+++ 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java
@@ -55,7 +55,6 @@ import static 
org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL;
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.both;
 import static org.hamcrest.core.IsEqual.equalTo;
-import static org.hamcrest.core.IsInstanceOf.instanceOf;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotEquals;
@@ -258,8 +257,8 @@ public abstract class ProfileTest extends 
AbstractGremlinProcessTest {
 
         final TraversalMetrics traversalMetrics = traversal.next();
         validate_g_V_repeat_both_modern_profile(traversalMetrics,
-                
traversal.asAdmin().getStrategies().toList().contains(RepeatUnrollStrategy.instance())
 &&
-                        
!traversal.asAdmin().getStrategies().toList().contains(ComputerVerificationStrategy.instance()));
+                
traversal.asAdmin().getStrategies().getStrategy(RepeatUnrollStrategy.class).isPresent()
 &&
+                        
!traversal.asAdmin().getStrategies().getStrategy(ComputerVerificationStrategy.class).isPresent());
     }
 
     @Test
@@ -270,8 +269,8 @@ public abstract class ProfileTest extends 
AbstractGremlinProcessTest {
         traversal.iterate();
         final TraversalMetrics traversalMetrics = 
traversal.asAdmin().getSideEffects().get(METRICS_KEY);
         validate_g_V_repeat_both_modern_profile(traversalMetrics,
-                
traversal.asAdmin().getStrategies().toList().contains(RepeatUnrollStrategy.instance())
 &&
-                        
!traversal.asAdmin().getStrategies().toList().contains(ComputerVerificationStrategy.instance()));
+                
traversal.asAdmin().getStrategies().getStrategy(RepeatUnrollStrategy.class).isPresent()
 &&
+                        
!traversal.asAdmin().getStrategies().getStrategy(ComputerVerificationStrategy.class).isPresent());
     }
 
     private void validate_g_V_repeat_both_modern_profile(final 
TraversalMetrics traversalMetrics, final boolean withRepeatUnrollStrategy) {
@@ -326,7 +325,7 @@ public abstract class ProfileTest extends 
AbstractGremlinProcessTest {
         assertEquals(1, 
metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
         assertEquals(1, 
metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
 
-        if (traversal.asAdmin().getStrategies().toList().stream().anyMatch(s 
-> s instanceof CountStrategy)) {
+        if 
(traversal.asAdmin().getStrategies().getStrategy(CountStrategy.class).isPresent())
 {
             assertEquals("Metrics 1 should have 4 nested metrics.", 4, 
metrics.getNested().size());
         } else {
             assertEquals("Metrics 1 should have 3 nested metrics.", 3, 
metrics.getNested().size());
diff --git 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/EarlyLimitStrategyProcessTest.java
 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/EarlyLimitStrategyProcessTest.java
index 8a640e2..33d18c1 100644
--- 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/EarlyLimitStrategyProcessTest.java
+++ 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/EarlyLimitStrategyProcessTest.java
@@ -90,7 +90,7 @@ public class EarlyLimitStrategyProcessTest extends 
AbstractGremlinProcessTest {
         assumeTrue("The following assertions apply to TinkerGraph only as 
provider strategies can alter the " +
                         "steps to not comply with expectations", 
graph.getClass().getSimpleName().equals("TinkerGraph"));
 
-        if (t.asAdmin().getStrategies().toList().stream().anyMatch(s -> s 
instanceof EarlyLimitStrategy)) {
+        if 
(t.asAdmin().getStrategies().getStrategy(EarlyLimitStrategy.class).isPresent()) 
{
             assertEquals(10, metrics.getMetrics().size());
             assertTrue(metrics.getMetrics(5).getName().endsWith("@[d]"));
             assertEquals("RangeGlobalStep(0,1)", 
metrics.getMetrics(6).getName());
diff --git 
a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java
 
b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java
index de42525..7eb12d4 100644
--- 
a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java
+++ 
b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java
@@ -163,7 +163,7 @@ public final class SparkStarBarrierInterceptor implements 
SparkVertexProgramInte
         final Step<?, ?> startStep = traversal.getStartStep();
         final Step<?, ?> endStep = traversal.getEndStep();
         // right now this is not supported because of how the 
SparkStarBarrierInterceptor mutates the traversal prior to local evaluation
-        if (traversal.getStrategies().toList().stream().filter(strategy -> 
strategy instanceof SubgraphStrategy).findAny().isPresent())
+        if 
(traversal.getStrategies().getStrategy(SubgraphStrategy.class).isPresent())
             return false;
         if (!startStep.getClass().equals(GraphStep.class) || ((GraphStep) 
startStep).returnsEdge())
             return false;
diff --git 
a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkInterceptorStrategyTest.java
 
b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkInterceptorStrategyTest.java
index 302c8f9..b1d58a6 100644
--- 
a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkInterceptorStrategyTest.java
+++ 
b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkInterceptorStrategyTest.java
@@ -69,9 +69,9 @@ public class SparkInterceptorStrategyTest extends 
AbstractSparkTest {
         ///
         Graph graph = GraphFactory.open(configuration);
         GraphTraversalSource g = 
graph.traversal().withComputer().withoutStrategies(SparkSingleIterationStrategy.class);
-        
assertFalse(g.getStrategies().toList().contains(SparkSingleIterationStrategy.instance()));
+        
assertFalse(g.getStrategies().getStrategy(SparkSingleIterationStrategy.class).isPresent());
         
assertFalse(g.V().count().explain().toString().contains(SparkSingleIterationStrategy.class.getSimpleName()));
-        
assertTrue(g.getStrategies().toList().contains(SparkInterceptorStrategy.instance()));
+        
assertTrue(g.getStrategies().getStrategy(SparkInterceptorStrategy.class).isPresent());
         
assertTrue(g.V().count().explain().toString().contains(SparkInterceptorStrategy.class.getSimpleName()));
         /// groupCount(m)-test
         Traversal.Admin<Vertex, Long> traversal = 
g.V().groupCount("m").by(T.label).count().asAdmin();
@@ -97,9 +97,9 @@ public class SparkInterceptorStrategyTest extends 
AbstractSparkTest {
         ///
         Graph graph = GraphFactory.open(configuration);
         GraphTraversalSource g = 
graph.traversal().withComputer().withoutStrategies(SparkSingleIterationStrategy.class);
-        
assertFalse(g.getStrategies().toList().contains(SparkSingleIterationStrategy.instance()));
+        
assertFalse(g.getStrategies().getStrategy(SparkSingleIterationStrategy.class).isPresent());
         
assertFalse(g.V().count().explain().toString().contains(SparkSingleIterationStrategy.class.getSimpleName()));
-        
assertTrue(g.getStrategies().toList().contains(SparkInterceptorStrategy.instance()));
+        
assertTrue(g.getStrategies().getStrategy(SparkInterceptorStrategy.class).isPresent());
         
assertTrue(g.V().count().explain().toString().contains(SparkInterceptorStrategy.class.getSimpleName()));
         /// SparkCountInterceptor matches
         test(SparkStarBarrierInterceptor.class, 6l, g.V().count());
diff --git 
a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkSingleIterationStrategyTest.java
 
b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkSingleIterationStrategyTest.java
index df15a19..6202f33 100644
--- 
a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkSingleIterationStrategyTest.java
+++ 
b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkSingleIterationStrategyTest.java
@@ -88,11 +88,11 @@ public class SparkSingleIterationStrategyTest extends 
AbstractSparkTest {
 
         Graph graph = GraphFactory.open(configuration);
         GraphTraversalSource g = 
graph.traversal().withComputer().withoutStrategies(SparkInterceptorStrategy.class,
 MessagePassingReductionStrategy.class);
-        
assertFalse(g.getStrategies().toList().contains(SparkInterceptorStrategy.instance()));
+        
assertFalse(g.getStrategies().getStrategy(SparkInterceptorStrategy.class).isPresent());
         
assertFalse(g.V().count().explain().getStrategyTraversals().stream().filter(pair
 -> pair.getValue0() instanceof 
SparkInterceptorStrategy).findAny().isPresent());
-        
assertFalse(g.getStrategies().toList().contains(MessagePassingReductionStrategy.instance()));
+        
assertFalse(g.getStrategies().getStrategy(MessagePassingReductionStrategy.class).isPresent());
         
assertFalse(g.V().count().explain().getStrategyTraversals().stream().filter(pair
 -> pair.getValue0() instanceof 
MessagePassingReductionStrategy).findAny().isPresent());
-        
assertTrue(g.getStrategies().toList().contains(SparkSingleIterationStrategy.instance()));
+        
assertTrue(g.getStrategies().getStrategy(SparkSingleIterationStrategy.class).isPresent());
         
assertTrue(g.V().count().explain().getStrategyTraversals().stream().filter(pair 
-> pair.getValue0() instanceof 
SparkSingleIterationStrategy).findAny().isPresent());
 
         test(true, g.V().limit(10));
@@ -116,11 +116,11 @@ public class SparkSingleIterationStrategyTest extends 
AbstractSparkTest {
 
         graph = GraphFactory.open(configuration);
         g = 
graph.traversal().withComputer().withoutStrategies(SparkInterceptorStrategy.class).withStrategies(MessagePassingReductionStrategy.instance());
-        
assertFalse(g.getStrategies().toList().contains(SparkInterceptorStrategy.instance()));
+        
assertFalse(g.getStrategies().getStrategy(SparkInterceptorStrategy.class).isPresent());
         
assertFalse(g.V().count().explain().getStrategyTraversals().stream().filter(pair
 -> pair.getValue0() instanceof 
SparkInterceptorStrategy).findAny().isPresent());
-        
assertTrue(g.getStrategies().toList().contains(MessagePassingReductionStrategy.instance()));
+        
assertTrue(g.getStrategies().getStrategy(MessagePassingReductionStrategy.class).isPresent());
         
assertTrue(g.V().count().explain().getStrategyTraversals().stream().filter(pair 
-> pair.getValue0() instanceof 
MessagePassingReductionStrategy).findAny().isPresent());
-        
assertTrue(g.getStrategies().toList().contains(SparkSingleIterationStrategy.instance()));
+        
assertTrue(g.getStrategies().getStrategy(SparkSingleIterationStrategy.class).isPresent());
         
assertTrue(g.V().count().explain().getStrategyTraversals().stream().filter(pair 
-> pair.getValue0() instanceof 
SparkSingleIterationStrategy).findAny().isPresent());
 
         test(true, g.V().limit(10));

Reply via email to