This is an automated email from the ASF dual-hosted git repository.
colegreer pushed a commit to branch GValue-3.8
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/GValue-3.8 by this push:
new fcf02cc13c strategy cleanup
fcf02cc13c is described below
commit fcf02cc13ca78d9079b0cfd10fc72a7e2fa2cdd2
Author: Cole-Greer <[email protected]>
AuthorDate: Mon Aug 18 19:27:24 2025 -0700
strategy cleanup
---
.../strategy/decoration/ConnectiveStrategy.java | 7 ++--
.../strategy/decoration/SubgraphStrategy.java | 4 ---
.../finalization/GValueReductionStrategy.java | 3 --
.../optimization/AdjacentToIncidentStrategy.java | 9 +++--
.../strategy/optimization/CountStrategy.java | 8 ++---
.../strategy/optimization/EarlyLimitStrategy.java | 11 ++----
.../optimization/FilterRankingStrategy.java | 4 ++-
.../optimization/IncidentToAdjacentStrategy.java | 17 +++++----
.../optimization/InlineFilterStrategy.java | 8 -----
.../optimization/PathProcessorStrategy.java | 26 +++-----------
.../ReservedKeysVerificationStrategy.java | 8 -----
.../traversal/strategy/GValueManagerVerifier.java | 41 +++++++++++++++-------
.../decoration/ElementIdStrategyTraverseTest.java | 3 --
.../strategy/decoration/PartitionStrategyTest.java | 7 ----
.../strategy/decoration/SubgraphStrategyTest.java | 7 ----
.../AdjacentToIncidentStrategyTest.java | 35 +++++++++---------
.../ByModulatorOptimizationStrategyTest.java | 4 ---
.../strategy/optimization/CountStrategyTest.java | 9 -----
.../optimization/EarlyLimitStrategyTest.java | 15 +++-----
.../optimization/FilterRankingStrategyTest.java | 6 ----
.../IncidentToAdjacentStrategyTest.java | 35 +++++++++---------
.../optimization/InlineFilterStrategyTest.java | 2 --
.../optimization/OrderLimitStrategyTest.java | 2 --
.../optimization/PathProcessorStrategyTest.java | 4 ---
.../optimization/RepeatUnrollStrategyTest.java | 5 ---
25 files changed, 100 insertions(+), 180 deletions(-)
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategy.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategy.java
index b749a1cb2e..d314b4d65c 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategy.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategy.java
@@ -34,6 +34,7 @@ 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.util.TraversalHelper;
+import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -76,6 +77,7 @@ public final class ConnectiveStrategy extends
AbstractTraversalStrategy<Traversa
}
private static void processConjunctionMarker(final Class<? extends
ConnectiveStep> markerClass, final Traversal.Admin<?, ?> traversal) {
+
final List<Step> steps = traversal.getSteps();
for (int i = 0; i < steps.size(); i++) {
final Step step = steps.get(i);
@@ -87,7 +89,6 @@ public final class ConnectiveStrategy extends
AbstractTraversalStrategy<Traversa
for (int j = i - 1; j >= 0; i--, j--) {
final Step previousStep = steps.get(j);
if (legalCurrentStep(previousStep)) {
- // step is moving from one traversal to another.
GValue state is unchanged so retain it
connectiveTraversal.addStep(0, previousStep);
traversal.removeStep(previousStep);
} else break;
@@ -98,13 +99,13 @@ public final class ConnectiveStrategy extends
AbstractTraversalStrategy<Traversa
while (i < steps.size()) {
final Step nextStep = steps.get(i);
if (legalCurrentStep(nextStep)) {
- if (nextStep.getClass().equals(markerClass) &&
((ConnectiveStep) nextStep).getLocalChildren().isEmpty()) {
+ if (nextStep.getClass().equals(markerClass) &&
+ ((ConnectiveStep)
nextStep).getLocalChildren().isEmpty()) {
final ConnectiveStep<?> nextConnectiveStep =
(ConnectiveStep<?>) nextStep;
currentStep.addLocalChild(connectiveTraversal
= connectiveTraversal(connectiveTraversal, nextConnectiveStep));
} else {
connectiveTraversal.addStep(nextStep);
}
- // step is moving from one traversal to another.
GValue state is unchanged so retain it
traversal.removeStep(nextStep);
} else break;
}
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 35ceec06cc..7d7ec63398 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
@@ -29,12 +29,8 @@ import
org.apache.tinkerpop.gremlin.process.traversal.step.filter.ClassFilterSte
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.OrStep;
import
org.apache.tinkerpop.gremlin.process.traversal.step.filter.TraversalFilterStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeStep;
-import
org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStartStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStep;
import
org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeOtherVertexStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeVertexStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertyMapStep;
import
org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertyValueStep;
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/GValueReductionStrategy.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/GValueReductionStrategy.java
index 9388a13218..6b775d56bf 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/GValueReductionStrategy.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/GValueReductionStrategy.java
@@ -23,13 +23,10 @@ import
org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.step.GValueHolder;
import
org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.util.StepPosition;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import java.util.List;
-//TODO migrate outside of strategies
-
public final class GValueReductionStrategy extends
AbstractTraversalStrategy<TraversalStrategy.FinalizationStrategy> implements
TraversalStrategy.FinalizationStrategy {
private static final GValueReductionStrategy INSTANCE = new
GValueReductionStrategy();
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategy.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategy.java
index 0d207cfe6f..0addb9f4d7 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategy.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategy.java
@@ -30,6 +30,7 @@ import
org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTraversal
import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountGlobalStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
+import
org.apache.tinkerpop.gremlin.process.traversal.step.stepContract.VertexStepInterface;
import
org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -116,18 +117,16 @@ public final class AdjacentToIncidentStrategy extends
AbstractTraversalStrategy<
*/
private static void optimizeStep(final Traversal.Admin traversal, final
Step step) {
final Step newStep;
- if (step instanceof VertexStep) {
- final VertexStep vs = (VertexStep) step;
+ if (step instanceof VertexStepInterface) {
+ final VertexStepInterface vs = (VertexStepInterface) step;
newStep = new VertexStep<>(traversal, Edge.class,
vs.getDirection(), vs.getEdgeLabels());
+ // TODO:: preserve GValue and leave unpinned if vs is a
GValueHolder
} else if (step instanceof PropertiesStep) {
final PropertiesStep ps = (PropertiesStep) step;
newStep = new PropertiesStep(traversal, PropertyType.PROPERTY,
ps.getPropertyKeys());
} else {
return;
}
-
- // the newStep assumes the StepContract of original step
- // TODO:: traversal.getGValueManager().copyRegistryState(step,
newStep);
TraversalHelper.replaceStep(step, newStep, traversal);
}
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/CountStrategy.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/CountStrategy.java
index cf84511b5c..78c18d5260 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/CountStrategy.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/CountStrategy.java
@@ -149,11 +149,10 @@ public final class CountStrategy extends
AbstractTraversalStrategy<TraversalStra
}
}
}
-
if (highRange != null) {
if (useNotStep || dismissCountIs) {
- TraversalHelper.removeStep(isStep, traversal); //
IsStep
- TraversalHelper.removeStep(curr, traversal); //
CountStep
+ traversal.asAdmin().removeStep(isStep); // IsStep
+ traversal.asAdmin().removeStep(curr); // CountStep
size -= 2;
if (!dismissCountIs) {
if (parent instanceof ConnectiveStep) {
@@ -176,14 +175,13 @@ public final class CountStrategy extends
AbstractTraversalStrategy<TraversalStra
inner.addStep(0, prev);
if (pp instanceof EmptyStep || pp
instanceof GraphStep ||
!(prev instanceof FilterStep
|| prev instanceof SideEffectStep)) break;
- TraversalHelper.removeStep(prev,
traversal);
+ traversal.removeStep(prev);
prev = pp;
size--;
}
} else {
inner = __.identity().asAdmin();
}
-
if (prev != null)
TraversalHelper.replaceStep(prev, new
NotStep<>(traversal, inner), traversal);
else
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/EarlyLimitStrategy.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/EarlyLimitStrategy.java
index 5e17a6411b..1d73db22ea 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/EarlyLimitStrategy.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/EarlyLimitStrategy.java
@@ -131,12 +131,9 @@ public final class EarlyLimitStrategy
rangeStep = high > low ? new RangeGlobalStep(traversal, low,
high) : new DiscardStep<>(traversal);
}
remove = merge;
-
- final Step stepToRemove = merge ? insertAfter : step;
- TraversalHelper.replaceStep(stepToRemove, rangeStep, traversal);
+ TraversalHelper.replaceStep(merge ? insertAfter : step, rangeStep,
traversal);
} else if (!step.getPreviousStep().equals(insertAfter, true)) {
- // move the RangeStep behind the earliest possible map- or
sideEffect-step.
- // todo: reconsider clone() b/c it destroys the GValue - any
reason to not just move the step?
+ // move the RangeStep behind the earliest possible map- or
sideEffect-step
rangeStep = step.clone();
TraversalHelper.insertAfterStep(rangeStep, insertAfter, traversal);
} else {
@@ -144,9 +141,7 @@ public final class EarlyLimitStrategy
// already the current step's previous step
return step;
}
- if (remove) {
- traversal.removeStep(step);
- }
+ if (remove) traversal.removeStep(step);
return rangeStep;
}
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategy.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategy.java
index 10d7de081f..96630be526 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategy.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategy.java
@@ -38,6 +38,7 @@ import
org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTraversal
import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
import
org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import
org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IdentityRemovalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.javatuples.Pair;
@@ -123,7 +124,8 @@ public final class FilterRankingStrategy extends
AbstractTraversalStrategy<Trave
modified = true;
}
if (stepRanking.computeIfAbsent(step,
FilterRankingStrategy::getStepRank) > nextRank) {
- TraversalHelper.moveStep(nextStep, i, t);
+ t.removeStep(nextStep);
+ t.addStep(i, nextStep);
modified = true;
}
}
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java
index 1c9193e05d..c73071f8e4 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java
@@ -31,6 +31,7 @@ import
org.apache.tinkerpop.gremlin.process.traversal.step.map.PathStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.TreeStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
import
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.TreeSideEffectStep;
+import
org.apache.tinkerpop.gremlin.process.traversal.step.stepContract.VertexStepInterface;
import
org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.apache.tinkerpop.gremlin.structure.Direction;
@@ -89,8 +90,8 @@ public final class IncidentToAdjacentStrategy extends
AbstractTraversalStrategy<
* otherwise <code>false</code>
*/
private static boolean isOptimizable(final Step step1, final Step step2) {
- if (step1 instanceof VertexStep && ((VertexStep) step1).returnsEdge()
&& step1.getLabels().isEmpty()) {
- final Direction step1Dir = ((VertexStep) step1).getDirection();
+ if (step1 instanceof VertexStepInterface && ((VertexStepInterface)
step1).returnsEdge() && step1.getLabels().isEmpty()) {
+ final Direction step1Dir = ((VertexStepInterface)
step1).getDirection();
if (step1Dir.equals(Direction.BOTH)) {
return step2 instanceof EdgeOtherVertexStep;
}
@@ -108,14 +109,12 @@ public final class IncidentToAdjacentStrategy extends
AbstractTraversalStrategy<
* @param step1 the edge-emitting step to replace
* @param step2 the vertex-emitting step to replace
*/
- private static void optimizeSteps(final Traversal.Admin traversal, final
VertexStep step1, final Step step2) {
+ private static void optimizeSteps(final Traversal.Admin traversal, final
VertexStepInterface step1, final Step step2) {
final Step newStep = new VertexStep(traversal, Vertex.class,
step1.getDirection(), step1.getEdgeLabels());
+ //TODO:: preserve GValue and leave unpinned if step1 is a GValueHolder
for (final String label : (Iterable<String>) step2.getLabels()) {
newStep.addLabel(label);
}
-
- // the newStep assumes the StepContract of original step
- // TODO:: traversal.getGValueManager().copyRegistryState(step1,
newStep);
TraversalHelper.replaceStep(step1, newStep, traversal);
traversal.removeStep(step2);
}
@@ -135,7 +134,7 @@ public final class IncidentToAdjacentStrategy extends
AbstractTraversalStrategy<
return;
}
////////////////////////////////////////////////////////////////////////////
- final Collection<Pair<VertexStep, Step>> stepsToReplace = new
ArrayList<>();
+ final Collection<Pair<VertexStepInterface, Step>> stepsToReplace = new
ArrayList<>();
Step prev = null;
for (final Step curr : traversal.getSteps()) {
if (curr instanceof TraversalParent) {
@@ -143,12 +142,12 @@ public final class IncidentToAdjacentStrategy extends
AbstractTraversalStrategy<
((TraversalParent)
curr).getGlobalChildren().forEach(this::apply);
}
if (isOptimizable(prev, curr)) {
- stepsToReplace.add(Pair.with((VertexStep) prev, curr));
+ stepsToReplace.add(Pair.with((VertexStepInterface) prev,
curr));
}
prev = curr;
}
if (!stepsToReplace.isEmpty()) {
- for (final Pair<VertexStep, Step> pair : stepsToReplace) {
+ for (final Pair<VertexStepInterface, Step> pair : stepsToReplace) {
optimizeSteps(traversal, pair.getValue0(), pair.getValue1());
}
}
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 f397ee7e11..f09c3d01fb 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
@@ -139,7 +139,6 @@ public final class InlineFilterStrategy extends
AbstractTraversalStrategy<Traver
hasContainer.getPredicate().getGValues().iterator().next() :
GValue.ofString((String)
hasContainer.getValue()));
step.removeHasContainer(hasContainer);
-
} else if (hasContainer.getBiPredicate() ==
Contains.within &&
hasContainer.getValue() instanceof Collection &&
((Collection)
hasContainer.getValue()).containsAll(Arrays.asList(GValue.resolveToValues(edgeLabelGValues.toArray()))))
{
@@ -214,7 +213,6 @@ public final class InlineFilterStrategy extends
AbstractTraversalStrategy<Traver
String key = null;
P predicate = null;
final List<String> labels = new ArrayList<>();
- final List<Step> stepsToRemoveFromManager = new ArrayList<>();
for (final Traversal.Admin<?, ?> childTraversal :
step.getLocalChildren()) {
InlineFilterStrategy.instance().apply(childTraversal);
for (final Step<?, ?> childStep : childTraversal.getSteps()) {
@@ -235,7 +233,6 @@ public final class InlineFilterStrategy extends
AbstractTraversalStrategy<Traver
predicate = null == predicate ? p : predicate.or(p);
}
labels.addAll(childStep.getLabels());
- stepsToRemoveFromManager.add(childStep);
} else {
process = false;
break;
@@ -247,11 +244,6 @@ public final class InlineFilterStrategy extends
AbstractTraversalStrategy<Traver
if (process) {
final HasStep hasStep = new HasStep<>(traversal, new
HasContainer(key, predicate));
TraversalHelper.replaceStep(step, hasStep, traversal);
- stepsToRemoveFromManager.forEach(s -> {
- if (s instanceof GValueHolder) {
- traversal.getGValueManager().pinGValues(((GValueHolder<?,
?>) s).getGValues()); //TODO
- }
- });
TraversalHelper.copyLabels(step, hasStep, false);
for (final String label : labels) {
hasStep.addLabel(label);
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathProcessorStrategy.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathProcessorStrategy.java
index 36461c3968..dc1fd53771 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathProcessorStrategy.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathProcessorStrategy.java
@@ -20,7 +20,6 @@
package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
import
org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.VertexProgramStep;
-import org.apache.tinkerpop.gremlin.process.traversal.GValueManager;
import org.apache.tinkerpop.gremlin.process.traversal.Pop;
import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
@@ -99,8 +98,6 @@ public final class PathProcessorStrategy extends
AbstractTraversalStrategy<Trave
return;
}
- final GValueManager manager = traversal.getGValueManager();
-
// process where(as("a").out()...) => select("a").where(out()...)
final List<WhereTraversalStep> whereTraversalSteps =
TraversalHelper.getStepsOfClass(WhereTraversalStep.class, traversal);
for (final WhereTraversalStep<?> whereTraversalStep :
whereTraversalSteps) {
@@ -113,7 +110,8 @@ public final class PathProcessorStrategy extends
AbstractTraversalStrategy<Trave
final int index =
TraversalHelper.stepIndex(whereTraversalStep, traversal);
if (whereTraversalStep.getPreviousStep() instanceof
SelectStep) {
done = false;
- TraversalHelper.moveStep(whereTraversalStep, index -
1, traversal);
+ traversal.removeStep(index);
+ traversal.addStep(index - 1, whereTraversalStep);
}
}
final WhereTraversalStep.WhereStartStep<?> whereStartStep =
(WhereTraversalStep.WhereStartStep<?>) localChild.getStartStep();
@@ -130,9 +128,9 @@ public final class PathProcessorStrategy extends
AbstractTraversalStrategy<Trave
whereStartStep.removeScopeKey();
// process where(as("a").out()) =>
as('xyz').select("a").filter(out()).select('xyz')
if (!(localChild.getEndStep() instanceof
WhereTraversalStep.WhereEndStep)) {
- TraversalHelper.removeStep(localChild.getStartStep(),
localChild);
+ localChild.removeStep(localChild.getStartStep());
traversal.addStep(index + 1, new
TraversalFilterStep<>(traversal, localChild));
- TraversalHelper.removeStep(whereTraversalStep,
traversal.asAdmin());
+ traversal.removeStep(whereTraversalStep);
}
}
}
@@ -181,22 +179,8 @@ public final class PathProcessorStrategy extends
AbstractTraversalStrategy<Trave
labelCount(selectOneStep.getScopeKeys().iterator().next(),
TraversalHelper.getRootTraversal(traversal)) <= 1) {
final int index = TraversalHelper.stepIndex(selectOneStep,
traversal);
final Traversal.Admin<?, ?> localChild =
selectOneStep.getLocalChildren().get(0);
-
- final Traversal.Admin<?, ?> localChildClone =
localChild.clone();
- final List<Step> localChildSteps =
TraversalHelper.getStepsOfAssignableClassRecursively(Step.class, localChild);
- for (int ix = 0; ix < localChildSteps.size(); ix++) {
- // TODO::
manager.copyRegistryState(localChildSteps.get(ix),
localChildClone.getSteps().get(ix));
-
- // todo: look at cases where we clone() traversal more
carefully. so much to think about in these cases
- // TODO:: manager.pinGValues(localChildSteps.get(ix));
- // TODO:: manager.remove(localChildSteps.get(ix));
- // TODO::
localChildClone.getGValueManager().pinGValues(localChildSteps.get(ix));
- // TODO::
localChildClone.getGValueManager().remove(localChildSteps.get(ix));
- }
-
selectOneStep.removeLocalChild(localChild);
-
- final TraversalMapStep<?, ?> mapStep = new
TraversalMapStep<>(traversal, localChildClone);
+ final TraversalMapStep<?, ?> mapStep = new
TraversalMapStep<>(traversal, localChild.clone());
traversal.addStep(index + 1, mapStep);
}
}
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReservedKeysVerificationStrategy.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReservedKeysVerificationStrategy.java
index b28d53f762..8cc8d700ed 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReservedKeysVerificationStrategy.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReservedKeysVerificationStrategy.java
@@ -21,15 +21,7 @@ package
org.apache.tinkerpop.gremlin.process.traversal.strategy.verification;
import org.apache.commons.configuration2.Configuration;
import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.step.Parameterizing;
-import
org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeStartStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeStep;
-import
org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStartStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertyAdding;
-import
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AddPropertyStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
-import org.apache.tinkerpop.gremlin.structure.Property;
import java.util.Arrays;
import java.util.LinkedHashSet;
diff --git
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/GValueManagerVerifier.java
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/GValueManagerVerifier.java
index 4cd523a929..5e67971317 100644
---
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/GValueManagerVerifier.java
+++
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/GValueManagerVerifier.java
@@ -18,6 +18,7 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.strategy;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.tinkerpop.gremlin.process.traversal.GValueManager;
import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
@@ -27,6 +28,7 @@ import
org.apache.tinkerpop.gremlin.process.traversal.step.GValue;
import org.apache.tinkerpop.gremlin.process.traversal.step.GValueHolder;
import org.apache.tinkerpop.gremlin.process.traversal.step.HasContainerHolder;
import
org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeStepPlaceholder.RangeGlobalStepPlaceholder;
+import
org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStepPlaceholder;
import
org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.apache.tinkerpop.gremlin.util.CollectionUtil;
@@ -295,19 +297,18 @@ public class GValueManagerVerifier {
}
/**
- * Verifies that specific steps have been cleared from GValueManager
+ * Verifies whether steps are parameterized
*/
public T stepsAreParameterized(final boolean isParameterized, final
Step... steps) {
assertThat("At least one step must be provided", steps.length > 0,
is(true));
for (Step step : steps) {
- final GValueManager manager =
step.getTraversal().getGValueManager();
assertThat("Step should not be parameterized", step instanceof
GValueHolder && ((GValueHolder<?, ?>) step).isParameterized(),
is(isParameterized));
}
return self();
}
/**
- * Verifies that all steps of a certain class are not parameterized
+ * Verifies whether all steps of a certain class are parameterized
*/
public <U extends Step> T stepsOfClassAreParameterized(final boolean
isParameterized, final Class<U> stepClass) {
final List<U> steps =
TraversalHelper.getStepsOfAssignableClassRecursively(stepClass, traversal);
@@ -315,18 +316,34 @@ public class GValueManagerVerifier {
}
/**
- * Verifies that a RangeContract is properly set up
- */ //TODO rename
- public T isRangeGlobalGValueContract(final Step step, final long
expectedLow, final long expectedHigh,
- final String lowName, final
String highName) {
+ * Verifies that a RangeGlobalStepPlaceholder is properly set up
+ */
+ public T isRangeGlobalStepPlaceholder(final Step step, final long
expectedLow, final long expectedHigh,
+ final String lowName, final
String highName) {
assertThat("Step should be parameterized", step instanceof
RangeGlobalStepPlaceholder && ((RangeGlobalStepPlaceholder<?>)
step).isParameterized(), is(true));
- RangeGlobalStepPlaceholder<?> rangeGValueContract =
(RangeGlobalStepPlaceholder<?>) step;
+ RangeGlobalStepPlaceholder<?> rangeGlobalStepPlaceholder =
(RangeGlobalStepPlaceholder<?>) step;
+
+ assertEquals("Low range should match", expectedLow,
rangeGlobalStepPlaceholder.getLowRangeGValueSafe());
+ assertEquals("High range should match", expectedHigh,
rangeGlobalStepPlaceholder.getHighRangeGValueSafe());
+ assertEquals("Low range name should match", lowName,
rangeGlobalStepPlaceholder.getLowName());
+ assertEquals("High range name should match", highName,
rangeGlobalStepPlaceholder.getHighName());
+
+ return self();
+ }
+
+ /**
+ * Verifies that a VertexStepPlaceholder is properly set up
+ */
+ public T isVertexStepPlaceholder(final Step step, final int
expectedLabelCount, final Set<String> expectedNames,
+ final Set<String>
expectedValues) {
+ assertThat("Step should be parameterized", step instanceof
VertexStepPlaceholder && ((VertexStepPlaceholder<?>) step).isParameterized(),
is(true));
+
+ VertexStepPlaceholder<?> vertexStepPlaceholder =
(VertexStepPlaceholder<?>) step;
- assertEquals("Low range should match", expectedLow,
rangeGValueContract.getLowRangeGValueSafe());
- assertEquals("High range should match", expectedHigh,
rangeGValueContract.getHighRangeGValueSafe());
- assertEquals("Low range name should match", lowName,
rangeGValueContract.getLowName());
- assertEquals("High range name should match", highName,
rangeGValueContract.getHighName());
+ assertEquals("Label count should match", expectedLabelCount,
vertexStepPlaceholder.getEdgeLabelsGValueSafe().length);
+ assertTrue("Expected names should match",
CollectionUtils.isEqualCollection(expectedNames,
vertexStepPlaceholder.getGValues().stream().map(GValue::getName).collect(Collectors.toSet())));
+ assertTrue("Expected values should match",
CollectionUtils.isEqualCollection(expectedValues,
Set.of(vertexStepPlaceholder.getEdgeLabelsGValueSafe())));
return self();
}
diff --git
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyTraverseTest.java
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyTraverseTest.java
index 819d4db63d..1e4b0640b0 100644
---
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyTraverseTest.java
+++
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategyTraverseTest.java
@@ -23,9 +23,6 @@ import
org.apache.tinkerpop.gremlin.process.traversal.Translator;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeStep;
-import
org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStartStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
import
org.apache.tinkerpop.gremlin.process.traversal.step.stepContract.AddEdgeStepInterface;
diff --git
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyTest.java
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyTest.java
index a5bfa592fb..607ce40723 100644
---
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyTest.java
+++
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategyTest.java
@@ -24,12 +24,8 @@ import
org.apache.tinkerpop.gremlin.process.traversal.Translator;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.step.GValue;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeStep;
-import
org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStartStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
import
org.apache.tinkerpop.gremlin.process.traversal.step.stepContract.AddEdgeStepInterface;
import
org.apache.tinkerpop.gremlin.process.traversal.step.stepContract.AddVertexStepInterface;
@@ -37,10 +33,8 @@ import
org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer;
import
org.apache.tinkerpop.gremlin.process.traversal.strategy.GValueManagerVerifier;
import
org.apache.tinkerpop.gremlin.process.traversal.translator.GroovyTranslator;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.structure.Edge;
import org.apache.tinkerpop.gremlin.structure.Element;
import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.T;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.structure.VertexProperty;
import org.junit.Test;
@@ -57,7 +51,6 @@ import java.util.Set;
import static org.hamcrest.core.IsInstanceOf.instanceOf;
import static org.hamcrest.core.IsIterableContaining.hasItem;
import static org.hamcrest.core.IsNot.not;
-import static org.hamcrest.core.IsIterableContaining.hasItem;
import static org.junit.Assert.assertEquals;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.fail;
diff --git
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategyTest.java
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategyTest.java
index 4726d76a1e..60d05810b7 100644
---
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategyTest.java
+++
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategyTest.java
@@ -24,15 +24,11 @@ import
org.apache.tinkerpop.gremlin.process.traversal.Translator;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
import
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
import
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.step.GValue;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.AndStep;
import
org.apache.tinkerpop.gremlin.process.traversal.step.filter.TraversalFilterStep;
-import
org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStartStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeVertexStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
import
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IdentityStep;
import
org.apache.tinkerpop.gremlin.process.traversal.strategy.GValueManagerVerifier;
@@ -41,7 +37,6 @@ import
org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.Stan
import
org.apache.tinkerpop.gremlin.process.traversal.translator.GroovyTranslator;
import
org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.structure.VertexProperty;
import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
@@ -55,7 +50,6 @@ import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import java.util.stream.Collectors;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.has;
import static
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.hasLabel;
@@ -68,7 +62,6 @@ import static
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.values
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
/**
* @author Stephen Mallette (http://stephen.genoprime.com)
diff --git
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategyTest.java
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategyTest.java
index f785ce1997..109a34086f 100644
---
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategyTest.java
+++
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategyTest.java
@@ -31,6 +31,7 @@ import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.util.Arrays;
+import java.util.Set;
import static org.junit.Assert.assertEquals;
@@ -97,10 +98,10 @@ public class AdjacentToIncidentStrategyTest {
public int expectedLabelCount;
@Parameterized.Parameter(value = 2)
- public String[] expectedNames;
+ public Set<String> expectedNames;
@Parameterized.Parameter(value = 3)
- public String[] expectedValues;
+ public Set<String> expectedValues;
@Parameterized.Parameters(name = "{0}")
public static Iterable<Object[]> generateTestParameters() {
@@ -108,38 +109,38 @@ public class AdjacentToIncidentStrategyTest {
{
__.out(GValue.of("x", "link")).count().asAdmin(),
1,
- new String[]{"x"},
- new String[]{"link"}
+ Set.of("x"),
+ Set.of("link")
},
{
__.out(GValue.of("x", "link"), GValue.of("y",
"knows"), GValue.of("z", "created")).count().asAdmin(),
3,
- new String[]{"x", "y", "z"},
- new String[]{"link", "knows", "created"}
+ Set.of("x", "y", "z"),
+ Set.of("link", "knows", "created")
},
{
__.in(GValue.of("x", "link")).count().asAdmin(),
1,
- new String[]{"x"},
- new String[]{"link"}
+ Set.of("x"),
+ Set.of("link")
},
{
__.in(GValue.of("x", "link"), GValue.of("y", "knows"),
GValue.of("z", "created")).count().asAdmin(),
3,
- new String[]{"x", "y", "z"},
- new String[]{"link", "knows", "created"}
+ Set.of("x", "y", "z"),
+ Set.of("link", "knows", "created")
},
{
__.both(GValue.of("x", "link")).count().asAdmin(),
1,
- new String[]{"x"},
- new String[]{"link"}
+ Set.of("x"),
+ Set.of("link")
},
{
__.both(GValue.of("x", "link"), GValue.of("y",
"knows"), GValue.of("z", "created")).count().asAdmin(),
3,
- new String[]{"x", "y", "z"},
- new String[]{"link", "knows", "created"}
+ Set.of("x", "y", "z"),
+ Set.of("link", "knows", "created")
}
});
}
@@ -152,11 +153,11 @@ public class AdjacentToIncidentStrategyTest {
GValueManagerVerifier.verify(traversal,
AdjacentToIncidentStrategy.instance()).
beforeApplying().
hasVariables(expectedNames).
- //TODO:: edgeLabelContractIsValid(step,
expectedLabelCount, expectedNames, expectedValues).
+ isVertexStepPlaceholder(step, expectedLabelCount,
expectedNames, expectedValues).
afterApplying().
hasVariables(expectedNames).
- variablesArePreserved();
- //TODO:: edgeLabelContractIsValid(traversal.getStartStep(),
expectedLabelCount, expectedNames, expectedValues);
+ variablesArePreserved().
+ isVertexStepPlaceholder(traversal.getStartStep(),
expectedLabelCount, expectedNames, expectedValues);
}
}
}
diff --git
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/ByModulatorOptimizationStrategyTest.java
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/ByModulatorOptimizationStrategyTest.java
index f97b3e7f6b..6d60205f8d 100644
---
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/ByModulatorOptimizationStrategyTest.java
+++
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/ByModulatorOptimizationStrategyTest.java
@@ -22,12 +22,10 @@ import org.apache.tinkerpop.gremlin.process.traversal.P;
import org.apache.tinkerpop.gremlin.process.traversal.Scope;
import org.apache.tinkerpop.gremlin.process.traversal.Translator;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import
org.apache.tinkerpop.gremlin.process.traversal.strategy.GValueManagerVerifier;
import
org.apache.tinkerpop.gremlin.process.traversal.translator.GroovyTranslator;
-import
org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
import org.apache.tinkerpop.gremlin.structure.T;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -38,8 +36,6 @@ import java.util.List;
import static org.apache.tinkerpop.gremlin.process.traversal.Operator.assign;
import static
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.values;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertEquals;
/**
diff --git
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/CountStrategyTest.java
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/CountStrategyTest.java
index 01a8ba7706..3b7791a96d 100644
---
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/CountStrategyTest.java
+++
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/CountStrategyTest.java
@@ -22,25 +22,18 @@ import
org.apache.tinkerpop.gremlin.process.traversal.GValueManager;
import org.apache.tinkerpop.gremlin.process.traversal.P;
import org.apache.tinkerpop.gremlin.process.traversal.Translator;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.step.GValue;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.IsStep;
import
org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeGlobalStep;
import
org.apache.tinkerpop.gremlin.process.traversal.step.stepContract.IsStepInterface;
import
org.apache.tinkerpop.gremlin.process.traversal.strategy.GValueManagerVerifier;
import
org.apache.tinkerpop.gremlin.process.traversal.translator.GroovyTranslator;
-import
org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.util.CollectionUtil;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.util.Arrays;
-import java.util.List;
-import java.util.Set;
import static org.apache.tinkerpop.gremlin.process.traversal.P.eq;
import static org.apache.tinkerpop.gremlin.process.traversal.P.gt;
@@ -52,8 +45,6 @@ import static
org.apache.tinkerpop.gremlin.process.traversal.P.neq;
import static org.apache.tinkerpop.gremlin.process.traversal.P.outside;
import static org.apache.tinkerpop.gremlin.process.traversal.P.within;
import static org.apache.tinkerpop.gremlin.process.traversal.P.without;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertEquals;
/**
diff --git
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/EarlyLimitStrategyTest.java
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/EarlyLimitStrategyTest.java
index 5825e642f3..35d7d674af 100644
---
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/EarlyLimitStrategyTest.java
+++
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/EarlyLimitStrategyTest.java
@@ -51,11 +51,6 @@ import java.util.Set;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
/**
* @author Daniel Kuppitz (http://gremlin.guru)
@@ -205,12 +200,12 @@ public class EarlyLimitStrategyTest {
// Use GValueManagerVerifier to verify the state before and after
applying the strategy
GValueManagerVerifier.verify(traversal,
EarlyLimitStrategy.instance()).
beforeApplying().
- isRangeGlobalGValueContract(originalRangeGlobalStep,
expectedLowRange, expectedHighRange, expectedNames[0], expectedNames[1]).
+ isRangeGlobalStepPlaceholder(originalRangeGlobalStep,
expectedLowRange, expectedHighRange, expectedNames[0], expectedNames[1]).
afterApplying().
- isRangeGlobalGValueContract(
+ isRangeGlobalStepPlaceholder(
TraversalHelper.getFirstStepOfAssignableClass(RangeGlobalStepInterface.class,
traversal).get(),
expectedLowRange, expectedHighRange,
expectedNames[0], expectedNames[1]).
-
hasVariables(CollectionUtil.asSet(Arrays.stream(expectedNames).filter(Objects::nonNull).toArray(String[]::new)));
+
hasVariables(CollectionUtil.asSet(Arrays.stream(expectedNames).filter(Objects::nonNull).toArray(String[]::new)));
}
}
@@ -269,9 +264,9 @@ public class EarlyLimitStrategyTest {
// Use GValueManagerVerifier to verify the state before and after
applying the strategy
GValueManagerVerifier.verify(traversal,
EarlyLimitStrategy.instance()).
beforeApplying().
- isRangeGlobalGValueContract(originalRangeGlobalStep,
expectedLowRange, expectedHighRange, expectedNames[0], expectedNames[1]).
+ isRangeGlobalStepPlaceholder(originalRangeGlobalStep,
expectedLowRange, expectedHighRange, expectedNames[0], expectedNames[1]).
afterApplying().
-
isRangeGlobalGValueContract(TraversalHelper.getFirstStepOfAssignableClass(RangeGlobalStepInterface.class,
traversal).get(),expectedLowRange, expectedHighRange, expectedNames[0],
expectedNames[1]).
+
isRangeGlobalStepPlaceholder(TraversalHelper.getFirstStepOfAssignableClass(RangeGlobalStepInterface.class,
traversal).get(),expectedLowRange, expectedHighRange, expectedNames[0],
expectedNames[1]).
hasVariables(CollectionUtil.asSet(Arrays.stream(expectedNames).filter(Objects::nonNull).toArray(String[]::new)));
}
}
diff --git
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java
index 6329122414..5054ca6415 100644
---
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java
+++
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java
@@ -28,7 +28,6 @@ import
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.step.GValue;
import
org.apache.tinkerpop.gremlin.process.traversal.strategy.GValueManagerVerifier;
import
org.apache.tinkerpop.gremlin.process.traversal.translator.GroovyTranslator;
-import
org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.util.CollectionUtil;
import org.apache.tinkerpop.gremlin.util.function.Lambda;
@@ -37,12 +36,9 @@ import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
import java.util.Set;
import java.util.function.Predicate;
@@ -57,8 +53,6 @@ import static
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.or;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
import static
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.properties;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertEquals;
/**
diff --git
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategyTest.java
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategyTest.java
index 4c102844ae..0fc14f396d 100644
---
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategyTest.java
+++
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategyTest.java
@@ -33,6 +33,7 @@ import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.util.Arrays;
+import java.util.Set;
import java.util.function.Function;
import static org.junit.Assert.assertEquals;
@@ -103,10 +104,10 @@ public class IncidentToAdjacentStrategyTest {
public int expectedLabelCount;
@Parameterized.Parameter(value = 2)
- public String[] expectedNames;
+ public Set<String> expectedNames;
@Parameterized.Parameter(value = 3)
- public String[] expectedValues;
+ public Set<String> expectedValues;
@Parameterized.Parameters(name = "{0}")
public static Iterable<Object[]> generateTestParameters() {
@@ -114,38 +115,38 @@ public class IncidentToAdjacentStrategyTest {
{
__.outE(GValue.of("x", "link")).inV().asAdmin(),
1,
- new String[]{"x"},
- new String[]{"link"}
+ Set.of("x"),
+ Set.of("link")
},
{
__.outE(GValue.of("x", "link"), GValue.of("y",
"knows"), GValue.of("z", "created")).inV().asAdmin(),
3,
- new String[]{"x", "y", "z"},
- new String[]{"link", "knows", "created"}
+ Set.of("x", "y", "z"),
+ Set.of("link", "knows", "created")
},
{
__.inE(GValue.of("x", "link")).outV().asAdmin(),
1,
- new String[]{"x"},
- new String[]{"link"}
+ Set.of("x"),
+ Set.of("link")
},
{
__.inE(GValue.of("x", "link"), GValue.of("y",
"knows"), GValue.of("z", "created")).outV().asAdmin(),
3,
- new String[]{"x", "y", "z"},
- new String[]{"link", "knows", "created"}
+ Set.of("x", "y", "z"),
+ Set.of("link", "knows", "created")
},
{
__.bothE(GValue.of("x", "link")).otherV().asAdmin(),
1,
- new String[]{"x"},
- new String[]{"link"}
+ Set.of("x"),
+ Set.of("link")
},
{
__.bothE(GValue.of("x", "link"), GValue.of("y",
"knows"), GValue.of("z", "created")).otherV().asAdmin(),
3,
- new String[]{"x", "y", "z"},
- new String[]{"link", "knows", "created"}
+ Set.of("x", "y", "z"),
+ Set.of("link", "knows", "created")
}
});
}
@@ -158,11 +159,11 @@ public class IncidentToAdjacentStrategyTest {
GValueManagerVerifier.verify(traversal,
AdjacentToIncidentStrategy.instance()).
beforeApplying().
hasVariables(expectedNames).
- // TODO:: edgeLabelContractIsValid(step,
expectedLabelCount, expectedNames, expectedValues).
+ isVertexStepPlaceholder(step, expectedLabelCount,
expectedNames, expectedValues).
afterApplying().
hasVariables(expectedNames).
- variablesArePreserved();
- // TODO:: edgeLabelContractIsValid(traversal.getStartStep(),
expectedLabelCount, expectedNames, expectedValues);
+ variablesArePreserved().
+ isVertexStepPlaceholder(traversal.getStartStep(),
expectedLabelCount, expectedNames, expectedValues);
}
}
}
diff --git
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategyTest.java
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategyTest.java
index 7e9b8fb236..bf9d853bd9 100644
---
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategyTest.java
+++
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/InlineFilterStrategyTest.java
@@ -33,8 +33,6 @@ import
org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer;
import
org.apache.tinkerpop.gremlin.process.traversal.strategy.GValueManagerVerifier;
import
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy;
import
org.apache.tinkerpop.gremlin.process.traversal.translator.GroovyTranslator;
-import
org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversal;
import org.apache.tinkerpop.gremlin.structure.T;
import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
import org.junit.Test;
diff --git
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/OrderLimitStrategyTest.java
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/OrderLimitStrategyTest.java
index 4c0737d97e..14bfa64ee8 100644
---
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/OrderLimitStrategyTest.java
+++
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/OrderLimitStrategyTest.java
@@ -22,14 +22,12 @@ package
org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
import
org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
import org.apache.tinkerpop.gremlin.process.traversal.Translator;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.step.GValue;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
import
org.apache.tinkerpop.gremlin.process.traversal.strategy.GValueManagerVerifier;
import
org.apache.tinkerpop.gremlin.process.traversal.translator.GroovyTranslator;
-import
org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.junit.Test;
diff --git
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathProcessorStrategyTest.java
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathProcessorStrategyTest.java
index 6318ea2d2c..2c6b61a4c1 100644
---
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathProcessorStrategyTest.java
+++
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathProcessorStrategyTest.java
@@ -20,7 +20,6 @@
package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
import
org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
-import org.apache.tinkerpop.gremlin.process.traversal.GValueManager;
import org.apache.tinkerpop.gremlin.process.traversal.P;
import org.apache.tinkerpop.gremlin.process.traversal.Pop;
import org.apache.tinkerpop.gremlin.process.traversal.Translator;
@@ -50,10 +49,7 @@ import java.util.stream.Collectors;
import java.util.stream.Stream;
import static
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.coalesce;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
diff --git
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategyTest.java
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategyTest.java
index bf4b960723..32cf92aa37 100644
---
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategyTest.java
+++
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategyTest.java
@@ -19,8 +19,6 @@
package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
-import org.apache.tinkerpop.gremlin.process.traversal.GValueManager;
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Translator;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
@@ -47,10 +45,7 @@ import java.util.function.Predicate;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.in;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.path;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)