You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2016/02/09 01:36:14 UTC
[3/4] incubator-tinkerpop git commit: The most brutal refactor. There
is no such thing as a TraversalSource.Builder anymore. All there are are
TraversalSources. These are simply a wrapper of a TraversalStrategy and a
Graph. There is no such thing as a Tr
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/EngineDependentStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/EngineDependentStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/EngineDependentStrategy.java
deleted file mode 100644
index 3da8566..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/EngineDependentStrategy.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine.Type;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.step.EngineDependent;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
-
-/**
- * A {@link Step} can extend {@link EngineDependent}. If it does, that means that the steps internal logic is
- * modulated by whether the execution is via {@link Type#STANDARD} or {@link Type#COMPUTER}.
- * {@code EngineDependentStrategy} simply locates all engine dependent steps and provides the respective
- * {@link TraversalEngine}.
- *
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class EngineDependentStrategy extends AbstractTraversalStrategy<TraversalStrategy.FinalizationStrategy>
- implements TraversalStrategy.FinalizationStrategy {
-
- private static final EngineDependentStrategy INSTANCE = new EngineDependentStrategy();
-
- private EngineDependentStrategy() {
- }
-
- @Override
- public void apply(final Traversal.Admin<?, ?> traversal) {
- for (Step step : traversal.getSteps()) {
- if (step instanceof EngineDependent) {
- ((EngineDependent) step).onEngine(traversal.getEngine());
- }
- }
- }
-
- public static EngineDependentStrategy instance() {
- return INSTANCE;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategy.java
index cb58762..c7cc700 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategy.java
@@ -24,10 +24,10 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.step.HasContainerHolder;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeVertexStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.CollectingBarrierStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.LambdaCollectingBarrierStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.CollectingBarrierStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.SupplyingBarrierStep;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
@@ -61,7 +61,7 @@ public final class LazyBarrierStrategy extends AbstractTraversalStrategy<Travers
@Override
public void apply(final Traversal.Admin<?, ?> traversal) {
- if (traversal.getEngine().isComputer())
+ if (traversal.getStrategies().onGraphComputer())
return;
if (traversal.getTraverserRequirements().contains(TraverserRequirement.PATH))
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/TraversalVertexProgramStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/TraversalVertexProgramStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/TraversalVertexProgramStrategy.java
new file mode 100644
index 0000000..76943a3
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/TraversalVertexProgramStrategy.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization;
+
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ComputerResultStep;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+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.step.EngineDependent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+import java.util.Collections;
+import java.util.Optional;
+import java.util.Set;
+import java.util.function.Function;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class TraversalVertexProgramStrategy extends AbstractTraversalStrategy<TraversalStrategy.FinalizationStrategy> implements TraversalStrategy.FinalizationStrategy {
+
+ private static final Set<Class<? extends FinalizationStrategy>> PRIORS = Collections.singleton(ProfileStrategy.class);
+ private transient Function<Graph, GraphComputer> graphComputerFunction;
+
+ private TraversalVertexProgramStrategy() {
+
+ }
+
+ public TraversalVertexProgramStrategy(final Function<Graph, GraphComputer> graphComputerFunction) {
+ this.graphComputerFunction = graphComputerFunction;
+ }
+
+
+ @Override
+ public void apply(final Traversal.Admin<?, ?> traversal) {
+ if (traversal.getParent() instanceof EmptyStep) {
+ traversal.addStep(new ComputerResultStep<>(traversal, null == this.graphComputerFunction ? null : this.graphComputerFunction.apply(traversal.getGraph().get()), true));
+ TraversalVertexProgramStrategy.onlyGlobalChildren(traversal);
+ }
+ }
+
+ private static void onlyGlobalChildren(final Traversal.Admin<?, ?> traversal) {
+ for (final Step step : traversal.getSteps()) {
+ if (step instanceof EngineDependent)
+ ((EngineDependent) step).onGraphComputer();
+ if (step instanceof TraversalParent) {
+ ((TraversalParent) step).getGlobalChildren().forEach(TraversalVertexProgramStrategy::onlyGlobalChildren);
+ }
+ }
+ }
+
+ @Override
+ public Set<Class<? extends FinalizationStrategy>> applyPrior() {
+ return PRIORS;
+ }
+
+ public static Optional<GraphComputer> getGraphComputer(final Graph graph, final TraversalStrategies strategies) {
+ final Optional<TraversalStrategy<?>> optional = strategies.toList().stream().filter(strategy -> strategy instanceof TraversalVertexProgramStrategy).findAny();
+ return optional.isPresent() ? Optional.of(((TraversalVertexProgramStrategy) optional.get()).graphComputerFunction.apply(graph)) : Optional.empty();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java
index 5a8a03a..c060ef6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java
@@ -80,7 +80,7 @@ public final class MatchPredicateStrategy extends AbstractTraversalStrategy<Trav
traversal.removeStep(nextStep);
matchStep.addGlobalChild(new DefaultTraversal<>().addStep(nextStep));
nextStep = matchStep.getNextStep();
- } else if (nextStep instanceof DedupGlobalStep && !((DedupGlobalStep) nextStep).getScopeKeys().isEmpty() && ((DedupGlobalStep) nextStep).getLocalChildren().isEmpty() && !traversal.getEngine().isComputer()) {
+ } else if (nextStep instanceof DedupGlobalStep && !((DedupGlobalStep) nextStep).getScopeKeys().isEmpty() && ((DedupGlobalStep) nextStep).getLocalChildren().isEmpty() && !traversal.getStrategies().onGraphComputer()) {
traversal.removeStep(nextStep);
matchStep.setDedupLabels(((DedupGlobalStep<?>) nextStep).getScopeKeys());
nextStep = matchStep.getNextStep();
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java
index bc8528c..2ecb634 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java
@@ -71,8 +71,6 @@ public final class ComputerVerificationStrategy extends AbstractTraversalStrateg
@Override
public void apply(final Traversal.Admin<?, ?> traversal) {
- if (traversal.getEngine().isStandard())
- return;
Step<?, ?> endStep = traversal.getEndStep();
while (endStep instanceof ComputerAwareStep.EndStep || endStep instanceof ComputerResultStep) {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
index 43fc692..b05089b 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
@@ -20,11 +20,9 @@ package org.apache.tinkerpop.gremlin.process.traversal.util;
import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
@@ -56,7 +54,6 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
protected TraversalParent traversalParent = EmptyStep.instance();
protected TraversalSideEffects sideEffects = new DefaultTraversalSideEffects();
protected TraversalStrategies strategies;
- protected TraversalEngine traversalEngine = StandardTraversalEngine.instance(); // necessary for strategies that need the engine in OLAP message passing (not so bueno)
protected boolean locked = false;
protected Set<TraverserRequirement> traverserRequirements = new HashSet<>();
@@ -86,13 +83,11 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
if (step instanceof TraversalParent) {
for (final Traversal.Admin<?, ?> globalChild : ((TraversalParent) step).getGlobalChildren()) {
globalChild.setStrategies(this.strategies);
- globalChild.setEngine(this.traversalEngine);
if (hasGraph) globalChild.setGraph(this.graph);
globalChild.applyStrategies();
}
for (final Traversal.Admin<?, ?> localChild : ((TraversalParent) step).getLocalChildren()) {
localChild.setStrategies(this.strategies);
- localChild.setEngine(StandardTraversalEngine.instance());
if (hasGraph) localChild.setGraph(this.graph);
localChild.applyStrategies();
}
@@ -103,16 +98,6 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
}
@Override
- public TraversalEngine getEngine() {
- return this.traversalEngine;
- }
-
- @Override
- public void setEngine(final TraversalEngine engine) {
- this.traversalEngine = engine;
- }
-
- @Override
public Set<TraverserRequirement> getTraverserRequirements() {
Set<TraverserRequirement> requirements = new HashSet<>();
for (Step step : this.getSteps()) {
@@ -124,7 +109,7 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
requirements.add(TraverserRequirement.SIDE_EFFECTS);
if (null != this.getSideEffects().getSackInitialValue())
requirements.add(TraverserRequirement.SACK);
- if (this.getEngine().isComputer())
+ if (this.strategies.onGraphComputer())
requirements.add(TraverserRequirement.BULK);
if (requirements.contains(TraverserRequirement.ONE_BULK))
requirements.remove(TraverserRequirement.BULK);
@@ -241,7 +226,7 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
@Override
public void setStrategies(final TraversalStrategies strategies) {
- this.strategies = strategies.clone();
+ this.strategies = strategies.clone(); // todo: why do we clone this?
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java
index f6fc97c..70c4900 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java
@@ -20,12 +20,10 @@ package org.apache.tinkerpop.gremlin.process.traversal.util;
import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
@@ -85,16 +83,6 @@ public class EmptyTraversal<S, E> implements Traversal.Admin<S, E> {
}
@Override
- public TraversalEngine getEngine() {
- return StandardTraversalEngine.instance();
- }
-
- @Override
- public void setEngine(final TraversalEngine engine) {
-
- }
-
- @Override
public void addStarts(final Iterator<Traverser<S>> starts) {
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
index 35e9991..7ab980d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
@@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.util;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSourceFactory;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.util.ScriptEngineCache;
@@ -34,13 +35,13 @@ import java.util.function.Function;
*/
public final class TraversalScriptFunction<S, E> implements Function<Graph, Traversal.Admin<S, E>>, Serializable {
- private final TraversalSource.Builder traversalSourceBuilder;
+ private final TraversalSourceFactory traversalSourceFactory;
private final String scriptEngineName;
private final String traversalScript;
private final Object[] bindings;
- public TraversalScriptFunction(final TraversalSource.Builder traversalSourceBuilder, final String scriptEngineName, final String traversalScript, final Object... bindings) {
- this.traversalSourceBuilder = traversalSourceBuilder;
+ public TraversalScriptFunction(final TraversalSource traversalSource, final String scriptEngineName, final String traversalScript, final Object... bindings) {
+ this.traversalSourceFactory = new TraversalSourceFactory<>(traversalSource);
this.scriptEngineName = scriptEngineName;
this.traversalScript = traversalScript;
this.bindings = bindings;
@@ -52,7 +53,7 @@ public final class TraversalScriptFunction<S, E> implements Function<Graph, Trav
try {
final ScriptEngine engine = ScriptEngineCache.get(this.scriptEngineName);
final Bindings engineBindings = engine.createBindings();
- engineBindings.put("g", this.traversalSourceBuilder.create(graph));
+ engineBindings.put("g", this.traversalSourceFactory.createTraversalSource(graph));
for (int i = 0; i < this.bindings.length; i = i + 2) {
engineBindings.put((String) this.bindings[i], this.bindings[i + 1]);
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
index 1998512..8636a06 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
@@ -18,8 +18,6 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.util;
-import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
@@ -35,25 +33,19 @@ public final class TraversalScriptHelper {
public static <S, E> Traversal.Admin<S, E> compute(
final Graph graph,
- final TraversalSource.Builder builder,
+ final TraversalSource traversalSource,
final String scriptEngineName,
final String traversalScript,
final Object... bindings) {
try {
- if (builder.create(graph).getGraphComputer().isPresent()) {
- final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(builder, scriptEngineName, traversalScript, bindings).create(graph);
- final ComputerResult result = builder.create(graph).getGraphComputer().get().program(program).submit().get();
- return program.computerResultTraversal(result);
- } else {
- return new TraversalScriptFunction<S, E>(builder, scriptEngineName, traversalScript, bindings).apply(graph);
- }
+ return new TraversalScriptFunction<S, E>(traversalSource, scriptEngineName, traversalScript, bindings).apply(graph);
} catch (final Exception e) {
throw new IllegalStateException(e.getMessage(), e);
}
}
public static <S, E> Traversal.Admin<S, E> compute(final String script, final GraphTraversalSource g, final Object... bindings) {
- return TraversalScriptHelper.compute(g.getGraph().get(), g.asBuilder(), "gremlin-groovy", script, bindings);
+ return TraversalScriptHelper.compute(g.getGraph(), g, "gremlin-groovy", script, bindings);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
index 6c834d3..93bd810 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
@@ -25,8 +25,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.ComputerTraversalEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
import org.apache.tinkerpop.gremlin.structure.io.Io;
import org.apache.tinkerpop.gremlin.structure.io.IoRegistry;
import org.apache.tinkerpop.gremlin.structure.util.FeatureDescriptor;
@@ -152,22 +150,36 @@ public interface Graph extends AutoCloseable, Host {
* provides methods for creating a {@link Traversal} given the context of {@link TraversalStrategy} implementations
* and a {@link GraphComputer}.
*
+ * @param traversalSource The traversal source to use
+ * @param <C> The traversal source class
+ */
+ public default <C extends TraversalSource> C traversal(final TraversalSource traversalSource) {
+ return (C) traversalSource; // make this a class
+ }
+
+
+ /*
+ * Generate a {@link TraversalSource} using the specified {@code TraversalSource.Builder}. The {@link TraversalSource}
+ * provides methods for creating a {@link Traversal} given the context of {@link TraversalStrategy} implementations
+ * and a {@link GraphComputer}.
+ *
* @param sourceBuilder The traversal source builder to use
* @param <C> The traversal source class
- */
+
public default <C extends TraversalSource> C traversal(final TraversalSource.Builder<C> sourceBuilder) {
return sourceBuilder.create(this);
}
+ *
/**
- * Generate a {@link GraphTraversalSource} instance using the {@link StandardTraversalEngine}. The
+ * Generate a {@link GraphTraversalSource} instance. The
* {@link TraversalSource} provides methods for creating a {@link Traversal} given the context of
* {@link TraversalStrategy} implementations and a {@link GraphComputer}.
*
* @return A standard graph traversal source
*/
public default GraphTraversalSource traversal() {
- return this.traversal(GraphTraversalSource.build().engine(StandardTraversalEngine.build()));
+ return this.traversal(new GraphTraversalSource(this));
}
/**
@@ -365,9 +377,9 @@ public interface Graph extends AutoCloseable, Host {
public static IllegalArgumentException variableValueCanNotBeNull() {
return new IllegalArgumentException("Graph variable value can not be null");
}
-
+
public static UnsupportedOperationException dataTypeOfVariableValueNotSupported(final Object val) {
- return dataTypeOfVariableValueNotSupported(val, null);
+ return dataTypeOfVariableValueNotSupported(val, null);
}
public static UnsupportedOperationException dataTypeOfVariableValueNotSupported(final Object val, final Exception rootCause) {
@@ -1143,15 +1155,15 @@ public interface Graph extends AutoCloseable, Host {
new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id null does not exist in the graph") :
new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id " + id + " of type " + id.getClass().getSimpleName() + " does not exist in the graph");
}
-
+
public static NoSuchElementException elementNotFound(final Class<? extends Element> elementClass, final Object id, final Exception rootCause) {
- NoSuchElementException elementNotFoundException;
- if(null == id)
- elementNotFoundException = new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id null does not exist in the graph");
- else
- elementNotFoundException = new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id " + id + " of type " + id.getClass().getSimpleName() + " does not exist in the graph");
- elementNotFoundException.initCause(rootCause);
- return elementNotFoundException;
+ NoSuchElementException elementNotFoundException;
+ if (null == id)
+ elementNotFoundException = new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id null does not exist in the graph");
+ else
+ elementNotFoundException = new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id " + id + " of type " + id.getClass().getSimpleName() + " does not exist in the graph");
+ elementNotFoundException.initCause(rootCause);
+ return elementNotFoundException;
}
}
@@ -1231,7 +1243,7 @@ public interface Graph extends AutoCloseable, Host {
* default, an empty array is assigned and it is thus assumed that all computers are excluded when an
* {@code OptOut} annotation is used, therefore this value must be overridden to be more specific.
*/
- public String[] computers() default { };
+ public String[] computers() default {};
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
index 9ae8116..87ec589 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
@@ -25,18 +25,17 @@ import org.apache.tinkerpop.gremlin.process.computer.Memory;
import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.TraversalVertexProgramStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalRing;
import org.apache.tinkerpop.gremlin.structure.Edge;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.structure.Property;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
import org.apache.tinkerpop.gremlin.util.function.FunctionUtils;
import org.javatuples.Pair;
@@ -45,6 +44,7 @@ import java.lang.reflect.Modifier;
import java.util.Collection;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@@ -137,14 +137,10 @@ public final class StringFactory {
return graphComputer.getClass().getSimpleName().toLowerCase();
}
- public static String traversalEngineString(final TraversalEngine traversalEngine) {
- return traversalEngine.getClass().getSimpleName().toLowerCase();
- }
-
public static String traversalSourceString(final TraversalSource traversalSource) {
- final String graphString = traversalSource.getGraph().orElse(EmptyGraph.instance()).toString();
- final String graphComputerString = traversalSource.getGraphComputer().isPresent() ? traversalSource.getGraphComputer().get().toString() : "standard";
- return traversalSource.getClass().getSimpleName().toLowerCase() + L_BRACKET + graphString + COMMA_SPACE + graphComputerString + R_BRACKET;
+ final String graphString = traversalSource.getGraph().toString();
+ final Optional<GraphComputer> optional = TraversalVertexProgramStrategy.getGraphComputer(traversalSource.getGraph(), traversalSource.getStrategies());
+ return traversalSource.getClass().getSimpleName().toLowerCase() + L_BRACKET + graphString + COMMA_SPACE + (optional.isPresent() ? optional.get().toString() : "standard") + R_BRACKET;
}
public static String featureString(final Graph.Features features) {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategyTest.java
index 348b2d0..47bee6a 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategyTest.java
@@ -19,165 +19,108 @@
package org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
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 static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
public class ConnectiveStrategyTest {
- @RunWith(Parameterized.class)
- public static class StandardTest extends AbstractConnectiveStrategyTest {
+ @Parameterized.Parameter(value = 0)
+ public Traversal original;
- @Parameterized.Parameters(name = "{0}")
- public static Iterable<Object[]> data() {
- return generateTestParameters();
- }
+ @Parameterized.Parameter(value = 1)
+ public Traversal optimized;
- @Parameterized.Parameter(value = 0)
- public Traversal original;
-
- @Parameterized.Parameter(value = 1)
- public Traversal optimized;
-
- @Before
- public void setup() {
- this.traversalEngine = mock(TraversalEngine.class);
- when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
- }
-
- @Test
- public void shouldApplyStrategy() {
- doTest(original, optimized);
- }
+ void applyConnectiveStrategy(final Traversal traversal) {
+ final TraversalStrategies strategies = new DefaultTraversalStrategies();
+ strategies.addStrategies(ConnectiveStrategy.instance());
+ traversal.asAdmin().setStrategies(strategies);
+ traversal.asAdmin().applyStrategies();
}
- @RunWith(Parameterized.class)
- public static class ComputerTest extends AbstractConnectiveStrategyTest {
-
- @Parameterized.Parameters(name = "{0}")
- public static Iterable<Object[]> data() {
- return generateTestParameters();
- }
-
- @Parameterized.Parameter(value = 0)
- public Traversal original;
-
- @Parameterized.Parameter(value = 1)
- public Traversal optimized;
-
- @Before
- public void setup() {
- this.traversalEngine = mock(TraversalEngine.class);
- when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
- }
-
- @Test
- public void shouldApplyStrategy() {
- doTest(original, optimized);
- }
+ @Test
+ public void doTest() {
+ applyConnectiveStrategy(original);
+ assertEquals(optimized, original);
}
- private static abstract class AbstractConnectiveStrategyTest {
-
- protected TraversalEngine traversalEngine;
-
- void applyMatchWhereStrategy(final Traversal traversal) {
- final TraversalStrategies strategies = new DefaultTraversalStrategies();
- strategies.addStrategies(ConnectiveStrategy.instance());
-
- traversal.asAdmin().setStrategies(strategies);
- traversal.asAdmin().applyStrategies();
- traversal.asAdmin().setEngine(traversalEngine);
- }
-
- public void doTest(final Traversal traversal, final Traversal optimized) {
- applyMatchWhereStrategy(traversal);
- assertEquals(optimized, traversal);
- }
-
- static Iterable<Object[]> generateTestParameters() {
-
- return Arrays.asList(new Traversal[][]{
- {__.has("name", "stephen").or().where(__.out("knows").has("name", "stephen")), __.or(__.has("name", "stephen"), __.where(__.out("knows").has("name", "stephen")))},
- {__.out("a").out("b").and().out("c").or().out("d"), __.or(__.and(__.out("a").out("b"), __.out("c")), __.out("d"))},
- {__.as("1").out("a").out("b").as("2").and().as("3").out("c").as("4").or().as("5").out("d").as("6"), __.or(__.and(__.as("1").out("a").out("b").as("2"), __.as("3").out("c").as("4")), __.as("5").out("d").as("6"))},
- {__.as("1").out("a").out("b").and().as("3").out("c").or().as("5").out("d"), __.or(__.and(__.as("1").out("a").out("b"), __.as("3").out("c")), __.as("5").out("d"))},
- {__.as("1").out("a").out("b").or().as("3").out("c").and().as("5").out("d"), __.or(__.as("1").out("a").out("b"), __.and(__.as("3").out("c"), __.as("5").out("d")))},
- {__.as("a").out().as("b").and().as("c").in().as("d"), __.and(__.as("a").out().as("b"), __.as("c").in().as("d"))},
- {__.union(__.as("a").out("l1").as("b").or().as("c").in("l2").as("d"), __.as("e").out("l3").as("f").and().as("g").in("l4").as("h")), __.union(__.or(__.as("a").out("l1").as("b"), __.as("c").in("l2").as("d")), __.and(__.as("e").out("l3").as("f"), __.as("g").in("l4").as("h")))},
- {__
- .as("a1").out("a").as("a2").or()
- .as("b1").out("b").as("b2").and()
- .as("c1").out("c").as("c2").or()
- .as("d1").out("d").as("d2").or()
- .as("e1").out("e").as("e2").and()
- .as("f1").out("f").as("f2").and()
- .as("g1").out("g").as("g2").or()
- .as("h1").out("h").as("h2").or(__
- .as("i1").out("i").as("i2").or()
- .as("j1").out("j").as("j2").and()
- .as("k1").out("k").as("k2")).and()
- .as("l1").out("l").as("l2").and()
- .as("m1").out("m").as("m2").and()
- .as("n1").out("n").as("n2"),
- // EXPECT:
- __.or(
- __.as("a1").out("a").as("a2"),
- __.or(
- __.and(
- __.as("b1").out("b").as("b2"),
- __.as("c1").out("c").as("c2")
- ),
- __.or(
- __.as("d1").out("d").as("d2"),
- __.or(
- __.and(
- __.as("e1").out("e").as("e2"),
- __.and(
- __.as("f1").out("f").as("f2"),
- __.as("g1").out("g").as("g2")
- )
- ),
- __.and(
- __.as("h1").out("h").as("h2").or(
- __.or(
- __.as("i1").out("i").as("i2"),
- __.and(
- __.as("j1").out("j").as("j2"),
- __.as("k1").out("k").as("k2")
- )
- )
- ),
- __.and(
- __.as("l1").out("l").as("l2"),
- __.and(
- __.as("m1").out("m").as("m2"),
- __.as("n1").out("n").as("n2")
- )
- )
- )
- )
- )
- )
- )
- }
- });
- }
+ @Parameterized.Parameters(name = "{0}")
+ public static Iterable<Object[]> generateTestParameters() {
+ return Arrays.asList(new Traversal[][]{
+ {__.has("name", "stephen").or().where(__.out("knows").has("name", "stephen")), __.or(__.has("name", "stephen"), __.where(__.out("knows").has("name", "stephen")))},
+ {__.out("a").out("b").and().out("c").or().out("d"), __.or(__.and(__.out("a").out("b"), __.out("c")), __.out("d"))},
+ {__.as("1").out("a").out("b").as("2").and().as("3").out("c").as("4").or().as("5").out("d").as("6"), __.or(__.and(__.as("1").out("a").out("b").as("2"), __.as("3").out("c").as("4")), __.as("5").out("d").as("6"))},
+ {__.as("1").out("a").out("b").and().as("3").out("c").or().as("5").out("d"), __.or(__.and(__.as("1").out("a").out("b"), __.as("3").out("c")), __.as("5").out("d"))},
+ {__.as("1").out("a").out("b").or().as("3").out("c").and().as("5").out("d"), __.or(__.as("1").out("a").out("b"), __.and(__.as("3").out("c"), __.as("5").out("d")))},
+ {__.as("a").out().as("b").and().as("c").in().as("d"), __.and(__.as("a").out().as("b"), __.as("c").in().as("d"))},
+ {__.union(__.as("a").out("l1").as("b").or().as("c").in("l2").as("d"), __.as("e").out("l3").as("f").and().as("g").in("l4").as("h")), __.union(__.or(__.as("a").out("l1").as("b"), __.as("c").in("l2").as("d")), __.and(__.as("e").out("l3").as("f"), __.as("g").in("l4").as("h")))},
+ {__
+ .as("a1").out("a").as("a2").or()
+ .as("b1").out("b").as("b2").and()
+ .as("c1").out("c").as("c2").or()
+ .as("d1").out("d").as("d2").or()
+ .as("e1").out("e").as("e2").and()
+ .as("f1").out("f").as("f2").and()
+ .as("g1").out("g").as("g2").or()
+ .as("h1").out("h").as("h2").or(__
+ .as("i1").out("i").as("i2").or()
+ .as("j1").out("j").as("j2").and()
+ .as("k1").out("k").as("k2")).and()
+ .as("l1").out("l").as("l2").and()
+ .as("m1").out("m").as("m2").and()
+ .as("n1").out("n").as("n2"),
+ // EXPECT:
+ __.or(
+ __.as("a1").out("a").as("a2"),
+ __.or(
+ __.and(
+ __.as("b1").out("b").as("b2"),
+ __.as("c1").out("c").as("c2")
+ ),
+ __.or(
+ __.as("d1").out("d").as("d2"),
+ __.or(
+ __.and(
+ __.as("e1").out("e").as("e2"),
+ __.and(
+ __.as("f1").out("f").as("f2"),
+ __.as("g1").out("g").as("g2")
+ )
+ ),
+ __.and(
+ __.as("h1").out("h").as("h2").or(
+ __.or(
+ __.as("i1").out("i").as("i2"),
+ __.and(
+ __.as("j1").out("j").as("j2"),
+ __.as("k1").out("k").as("k2")
+ )
+ )
+ ),
+ __.and(
+ __.as("l1").out("l").as("l2"),
+ __.and(
+ __.as("m1").out("m").as("m2"),
+ __.as("n1").out("n").as("n2")
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ }
+ });
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategyTest.java
index 40bf867..97f8c7f 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategyTest.java
@@ -19,82 +19,56 @@
package org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
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 static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
public class LazyBarrierStrategyTest {
- @RunWith(Parameterized.class)
- public static class StandardTest extends AbstractLazyBarrierStrategyTest {
-
- @Parameterized.Parameters(name = "{0}")
- public static Iterable<Object[]> data() {
- return generateTestParameters();
- }
-
- @Parameterized.Parameter(value = 0)
- public Traversal original;
-
- @Parameterized.Parameter(value = 1)
- public Traversal optimized;
-
- @Before
- public void setup() {
- this.traversalEngine = mock(TraversalEngine.class);
- when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
- }
-
- @Test
- public void shouldApplyStrategy() {
- doTest(original, optimized);
- }
+ @Parameterized.Parameters(name = "{0}")
+ public static Iterable<Object[]> data() {
+ return generateTestParameters();
}
- private static abstract class AbstractLazyBarrierStrategyTest {
+ @Parameterized.Parameter(value = 0)
+ public Traversal original;
- protected TraversalEngine traversalEngine;
+ @Parameterized.Parameter(value = 1)
+ public Traversal optimized;
- void applyAdjacentToIncidentStrategy(final Traversal traversal) {
- final TraversalStrategies strategies = new DefaultTraversalStrategies();
- strategies.addStrategies(LazyBarrierStrategy.instance());
-
- traversal.asAdmin().setStrategies(strategies);
- traversal.asAdmin().setEngine(this.traversalEngine);
- traversal.asAdmin().applyStrategies();
- }
-
- public void doTest(final Traversal traversal, final Traversal optimized) {
- applyAdjacentToIncidentStrategy(traversal);
- assertEquals(optimized, traversal);
- }
+ void applyAdjacentToIncidentStrategy(final Traversal traversal) {
+ final TraversalStrategies strategies = new DefaultTraversalStrategies();
+ strategies.addStrategies(LazyBarrierStrategy.instance());
+ traversal.asAdmin().setStrategies(strategies);
+ traversal.asAdmin().applyStrategies();
+ }
- static Iterable<Object[]> generateTestParameters() {
- final int size = LazyBarrierStrategy.MAX_BARRIER_SIZE;
- return Arrays.asList(new Traversal[][]{
- {__.out().count(), __.out().count()},
- {__.out().out().count(), __.out().out().count()},
- {__.out().out().out().count(), __.out().out().barrier(size).out().barrier(size).count()},
- {__.outE().inV().outE().inV().outE().inV().groupCount(), __.outE().inV().outE().inV().barrier(size).outE().inV().barrier(size).groupCount()},
- {__.out().out().has("age", 32).out().count(), __.out().out().barrier(size).has("age", 32).out().barrier(size).count()},
- });
- }
+ @Test
+ public void doTest() {
+ applyAdjacentToIncidentStrategy(original);
+ assertEquals(optimized, original);
}
+ @Parameterized.Parameters(name = "{0}")
+ public static Iterable<Object[]> generateTestParameters() {
+ final int size = LazyBarrierStrategy.MAX_BARRIER_SIZE;
+ return Arrays.asList(new Traversal[][]{
+ {__.out().count(), __.out().count()},
+ {__.out().out().count(), __.out().out().count()},
+ {__.out().out().out().count(), __.out().out().barrier(size).out().barrier(size).count()},
+ {__.outE().inV().outE().inV().outE().inV().groupCount(), __.outE().inV().outE().inV().barrier(size).outE().inV().barrier(size).groupCount()},
+ {__.out().out().has("age", 32).out().count(), __.out().out().barrier(size).has("age", 32).out().barrier(size).count()},
+ });
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategyTest.java
----------------------------------------------------------------------
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 cb3051a..f2668fd 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
@@ -19,116 +19,61 @@
package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
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 static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
/**
* @author Daniel Kuppitz (http://gremlin.guru)
*/
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
public class AdjacentToIncidentStrategyTest {
- @RunWith(Parameterized.class)
- public static class StandardTest extends AbstractAdjacentToIncidentStrategyTest {
+ @Parameterized.Parameter(value = 0)
+ public Traversal original;
- @Parameterized.Parameters(name = "{0}")
- public static Iterable<Object[]> data() {
- return generateTestParameters();
- }
+ @Parameterized.Parameter(value = 1)
+ public Traversal optimized;
- @Parameterized.Parameter(value = 0)
- public Traversal original;
- @Parameterized.Parameter(value = 1)
- public Traversal optimized;
-
- @Before
- public void setup() {
- this.traversalEngine = mock(TraversalEngine.class);
- when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
- }
-
- @Test
- public void shouldApplyStrategy() {
- doTest(original, optimized);
- }
+ void applyAdjacentToIncidentStrategy(final Traversal traversal) {
+ final TraversalStrategies strategies = new DefaultTraversalStrategies();
+ strategies.addStrategies(AdjacentToIncidentStrategy.instance());
+ traversal.asAdmin().setStrategies(strategies);
+ traversal.asAdmin().applyStrategies();
}
- @RunWith(Parameterized.class)
- public static class ComputerTest extends AbstractAdjacentToIncidentStrategyTest {
-
- @Parameterized.Parameters(name = "{0}")
- public static Iterable<Object[]> data() {
- return generateTestParameters();
- }
-
- @Parameterized.Parameter(value = 0)
- public Traversal original;
-
- @Parameterized.Parameter(value = 1)
- public Traversal optimized;
-
- @Before
- public void setup() {
- this.traversalEngine = mock(TraversalEngine.class);
- when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
- }
-
- @Test
- public void shouldApplyStrategy() {
- doTest(original, optimized);
- }
+ @Test
+ public void doTest() {
+ applyAdjacentToIncidentStrategy(original);
+ assertEquals(optimized, original);
}
- private static abstract class AbstractAdjacentToIncidentStrategyTest {
-
- protected TraversalEngine traversalEngine;
-
- void applyAdjacentToIncidentStrategy(final Traversal traversal) {
- final TraversalStrategies strategies = new DefaultTraversalStrategies();
- strategies.addStrategies(AdjacentToIncidentStrategy.instance());
-
- traversal.asAdmin().setStrategies(strategies);
- traversal.asAdmin().setEngine(this.traversalEngine);
- traversal.asAdmin().applyStrategies();
- }
-
- public void doTest(final Traversal traversal, final Traversal optimized) {
- applyAdjacentToIncidentStrategy(traversal);
- assertEquals(optimized, traversal);
- }
-
- static Iterable<Object[]> generateTestParameters() {
-
- return Arrays.asList(new Traversal[][]{
- {__.out().count(), __.outE().count()},
- {__.in().count(), __.inE().count()},
- {__.both().count(), __.bothE().count()},
- {__.out("knows").count(), __.outE("knows").count()},
- {__.out("knows", "likes").count(), __.outE("knows", "likes").count()},
- {__.filter(__.out()), __.filter(__.outE())},
- {__.where(__.not(__.out())), __.where(__.not(__.outE()))},
- {__.where(__.out("knows")), __.where(__.outE("knows"))},
- {__.values().count(), __.properties().count()},
- {__.values("name").count(), __.properties("name").count()},
- {__.where(__.values()), __.where(__.properties())},
- {__.and(__.out(), __.in()), __.and(__.outE(), __.inE())},
- {__.or(__.out(), __.in()), __.or(__.outE(), __.inE())},
- {__.out().as("a").count(),__.outE().count()}, // TODO: is this good?
- {__.where(__.as("a").out("knows").as("b")), __.where(__.as("a").out("knows").as("b"))}});
- }
+ @Parameterized.Parameters(name = "{0}")
+ public static Iterable<Object[]> generateTestParameters() {
+
+ return Arrays.asList(new Traversal[][]{
+ {__.out().count(), __.outE().count()},
+ {__.in().count(), __.inE().count()},
+ {__.both().count(), __.bothE().count()},
+ {__.out("knows").count(), __.outE("knows").count()},
+ {__.out("knows", "likes").count(), __.outE("knows", "likes").count()},
+ {__.filter(__.out()), __.filter(__.outE())},
+ {__.where(__.not(__.out())), __.where(__.not(__.outE()))},
+ {__.where(__.out("knows")), __.where(__.outE("knows"))},
+ {__.values().count(), __.properties().count()},
+ {__.values("name").count(), __.properties("name").count()},
+ {__.where(__.values()), __.where(__.properties())},
+ {__.and(__.out(), __.in()), __.and(__.outE(), __.inE())},
+ {__.or(__.out(), __.in()), __.or(__.outE(), __.inE())},
+ {__.out().as("a").count(), __.outE().count()}, // TODO: is this good?
+ {__.where(__.as("a").out("knows").as("b")), __.where(__.as("a").out("knows").as("b"))}});
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java
----------------------------------------------------------------------
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 9be49a3..2a57185 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
@@ -19,112 +19,63 @@
package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
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 static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
public class FilterRankingStrategyTest {
- @RunWith(Parameterized.class)
- public static class StandardTest extends AbstractDedupBijectionStrategyTest {
- @Parameterized.Parameters(name = "{0}")
- public static Iterable<Object[]> data() {
- return generateTestParameters();
- }
-
- @Parameterized.Parameter(value = 0)
- public Traversal original;
-
- @Parameterized.Parameter(value = 1)
- public Traversal optimized;
-
- @Before
- public void setup() {
- this.traversalEngine = mock(TraversalEngine.class);
- when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
- }
-
- @Test
- public void shouldApplyStrategy() {
- doTest(original, optimized);
- }
+ public static Iterable<Object[]> data() {
+ return generateTestParameters();
}
- @RunWith(Parameterized.class)
- public static class ComputerTest extends AbstractDedupBijectionStrategyTest {
+ @Parameterized.Parameter(value = 0)
+ public Traversal original;
- @Parameterized.Parameters(name = "{0}")
- public static Iterable<Object[]> data() {
- return generateTestParameters();
- }
+ @Parameterized.Parameter(value = 1)
+ public Traversal optimized;
- @Parameterized.Parameter(value = 0)
- public Traversal original;
- @Parameterized.Parameter(value = 1)
- public Traversal optimized;
-
- @Before
- public void setup() {
- this.traversalEngine = mock(TraversalEngine.class);
- when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
- }
-
- @Test
- public void shouldApplyStrategy() {
- doTest(original, optimized);
- }
+ void applyFilterRankingStrategy(final Traversal traversal) {
+ final TraversalStrategies strategies = new DefaultTraversalStrategies();
+ strategies.addStrategies(FilterRankingStrategy.instance(), IdentityRemovalStrategy.instance());
+ traversal.asAdmin().setStrategies(strategies);
+ traversal.asAdmin().applyStrategies();
}
- private static abstract class AbstractDedupBijectionStrategyTest {
-
- protected TraversalEngine traversalEngine;
-
- void applyDedupBijectionStrategy(final Traversal traversal) {
- final TraversalStrategies strategies = new DefaultTraversalStrategies();
- strategies.addStrategies(FilterRankingStrategy.instance(), IdentityRemovalStrategy.instance());
-
- traversal.asAdmin().setStrategies(strategies);
- traversal.asAdmin().setEngine(this.traversalEngine);
- traversal.asAdmin().applyStrategies();
- }
-
- public void doTest(final Traversal traversal, final Traversal optimized) {
- applyDedupBijectionStrategy(traversal);
- assertEquals(optimized, traversal);
- }
-
- static Iterable<Object[]> generateTestParameters() {
+ @Test
+ public void doTest() {
+ applyFilterRankingStrategy(original);
+ assertEquals(optimized, original);
+ }
- return Arrays.asList(new Traversal[][]{
- {__.dedup().order(), __.dedup().order()},
- {__.order().dedup(), __.dedup().order()},
- {__.identity().order().dedup(), __.dedup().order()},
- {__.order().identity().dedup(), __.dedup().order()},
- {__.order().out().dedup(), __.order().out().dedup()},
- {__.has("value", 0).filter(__.out()).dedup(), __.has("value", 0).filter(__.out()).dedup()},
- {__.dedup().filter(__.out()).has("value", 0), __.has("value", 0).filter(__.out()).dedup()},
- {__.filter(__.out()).dedup().has("value", 0), __.has("value", 0).filter(__.out()).dedup()},
- {__.has("value", 0).filter(__.out()).dedup(), __.has("value", 0).filter(__.out()).dedup()},
- });
- }
+ @Parameterized.Parameters(name = "{0}")
+ public static Iterable<Object[]> generateTestParameters() {
+
+ return Arrays.asList(new Traversal[][]{
+ {__.dedup().order(), __.dedup().order()},
+ {__.order().dedup(), __.dedup().order()},
+ {__.identity().order().dedup(), __.dedup().order()},
+ {__.order().identity().dedup(), __.dedup().order()},
+ {__.order().out().dedup(), __.order().out().dedup()},
+ {__.has("value", 0).filter(__.out()).dedup(), __.has("value", 0).filter(__.out()).dedup()},
+ {__.dedup().filter(__.out()).has("value", 0), __.has("value", 0).filter(__.out()).dedup()},
+ {__.filter(__.out()).dedup().has("value", 0), __.has("value", 0).filter(__.out()).dedup()},
+ {__.has("value", 0).filter(__.out()).dedup(), __.has("value", 0).filter(__.out()).dedup()},
+ });
}
}
+
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IdentityRemovalStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IdentityRemovalStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IdentityRemovalStrategyTest.java
index e7d76d9..fd1ec2b 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IdentityRemovalStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IdentityRemovalStrategyTest.java
@@ -19,110 +19,55 @@
package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
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 static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
public class IdentityRemovalStrategyTest {
- @RunWith(Parameterized.class)
- public static class StandardTest extends AbstractIdentityRemovalStrategyTest {
+ @Parameterized.Parameter(value = 0)
+ public Traversal original;
- @Parameterized.Parameters(name = "{0}")
- public static Iterable<Object[]> data() {
- return generateTestParameters();
- }
+ @Parameterized.Parameter(value = 1)
+ public Traversal optimized;
- @Parameterized.Parameter(value = 0)
- public Traversal original;
- @Parameterized.Parameter(value = 1)
- public Traversal optimized;
+ void applyIdentityRemovalStrategy(final Traversal traversal) {
+ final TraversalStrategies strategies = new DefaultTraversalStrategies();
+ strategies.addStrategies(IdentityRemovalStrategy.instance());
+ traversal.asAdmin().setStrategies(strategies);
+ traversal.asAdmin().applyStrategies();
- @Before
- public void setup() {
- this.traversalEngine = mock(TraversalEngine.class);
- when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
- }
-
- @Test
- public void shouldApplyStrategy() {
- doTest(original, optimized);
- }
}
- @RunWith(Parameterized.class)
- public static class ComputerTest extends AbstractIdentityRemovalStrategyTest {
-
- @Parameterized.Parameters(name = "{0}")
- public static Iterable<Object[]> data() {
- return generateTestParameters();
- }
-
- @Parameterized.Parameter(value = 0)
- public Traversal original;
-
- @Parameterized.Parameter(value = 1)
- public Traversal optimized;
-
- @Before
- public void setup() {
- this.traversalEngine = mock(TraversalEngine.class);
- when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
- }
-
- @Test
- public void shouldApplyStrategy() {
- doTest(original, optimized);
- }
+ @Test
+ public void doTest() {
+ applyIdentityRemovalStrategy(original);
+ assertEquals(optimized, original);
}
- private static abstract class AbstractIdentityRemovalStrategyTest {
-
- protected TraversalEngine traversalEngine;
-
- void applyMatchWhereStrategy(final Traversal traversal) {
- final TraversalStrategies strategies = new DefaultTraversalStrategies();
- strategies.addStrategies(IdentityRemovalStrategy.instance());
-
- traversal.asAdmin().setStrategies(strategies);
- traversal.asAdmin().setEngine(this.traversalEngine);
- traversal.asAdmin().applyStrategies();
-
- }
-
- public void doTest(final Traversal traversal, final Traversal optimized) {
- applyMatchWhereStrategy(traversal);
- assertEquals(optimized, traversal);
- }
-
- static Iterable<Object[]> generateTestParameters() {
-
- return Arrays.asList(new Traversal[][]{
- {__.identity(), __.identity()},
- {__.identity().out(), __.out()},
- {__.identity().out().identity(), __.out()},
- {__.identity().as("a").out().identity(), __.identity().as("a").out()},
- {__.identity().as("a").out().identity().as("b"), __.identity().as("a").out().as("b")},
- {__.identity().as("a").out().in().identity().identity().as("b").identity().out(), __.identity().as("a").out().in().as("b").out()},
- {__.out().identity().as("a").out().in().identity().identity().as("b").identity().out(), __.out().as("a").out().in().as("b").out()},
- });
- }
+ @Parameterized.Parameters(name = "{0}")
+ public static Iterable<Object[]> generateTestParameters() {
+
+ return Arrays.asList(new Traversal[][]{
+ {__.identity(), __.identity()},
+ {__.identity().out(), __.out()},
+ {__.identity().out().identity(), __.out()},
+ {__.identity().as("a").out().identity(), __.identity().as("a").out()},
+ {__.identity().as("a").out().identity().as("b"), __.identity().as("a").out().as("b")},
+ {__.identity().as("a").out().in().identity().identity().as("b").identity().out(), __.identity().as("a").out().in().as("b").out()},
+ {__.out().identity().as("a").out().in().identity().identity().as("b").identity().out(), __.out().as("a").out().in().as("b").out()},
+ });
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategyTest.java
----------------------------------------------------------------------
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 45f583e..7139f7b 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
@@ -19,15 +19,12 @@
package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.junit.Before;
import org.junit.Test;
-import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -35,103 +32,51 @@ import java.util.Arrays;
import java.util.function.Function;
import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
/**
* @author Daniel Kuppitz (http://gremlin.guru)
*/
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
public class IncidentToAdjacentStrategyTest {
- @RunWith(Parameterized.class)
- public static class StandardTest extends AbstractIncidentToAdjacentStrategyTest {
- @Parameterized.Parameters(name = "{0}")
- public static Iterable<Object[]> data() {
- return generateTestParameters();
- }
+ @Parameterized.Parameter(value = 0)
+ public Traversal original;
- @Parameterized.Parameter(value = 0)
- public Traversal original;
+ @Parameterized.Parameter(value = 1)
+ public Traversal optimized;
- @Parameterized.Parameter(value = 1)
- public Traversal optimized;
-
- @Before
- public void setup() {
- this.traversalEngine = mock(TraversalEngine.class);
- when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
- }
-
- @Test
- public void shouldApplyStrategy() {
- doTest(original, optimized);
- }
+ void applyIncidentToAdjacentStrategy(final Traversal traversal) {
+ final TraversalStrategies strategies = new DefaultTraversalStrategies();
+ strategies.addStrategies(IncidentToAdjacentStrategy.instance());
+ traversal.asAdmin().setStrategies(strategies);
+ traversal.asAdmin().applyStrategies();
}
- @RunWith(Parameterized.class)
- public static class ComputerTest extends AbstractIncidentToAdjacentStrategyTest {
-
- @Parameterized.Parameters(name = "{0}")
- public static Iterable<Object[]> data() {
- return generateTestParameters();
- }
-
- @Parameterized.Parameter(value = 0)
- public Traversal original;
-
- @Parameterized.Parameter(value = 1)
- public Traversal optimized;
-
- @Before
- public void setup() {
- this.traversalEngine = mock(TraversalEngine.class);
- when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
- }
-
- @Test
- public void shouldApplyStrategy() {
- doTest(original, optimized);
- }
+ @Test
+ public void doTest() {
+ applyIncidentToAdjacentStrategy(original);
+ assertEquals(optimized, original);
}
- private static abstract class AbstractIncidentToAdjacentStrategyTest {
-
- protected TraversalEngine traversalEngine;
-
- void applyIncidentToAdjacentStrategy(final Traversal traversal) {
- final TraversalStrategies strategies = new DefaultTraversalStrategies();
- strategies.addStrategies(IncidentToAdjacentStrategy.instance());
-
- traversal.asAdmin().setStrategies(strategies);
- traversal.asAdmin().setEngine(this.traversalEngine);
- traversal.asAdmin().applyStrategies();
-
- }
-
- public void doTest(final Traversal traversal, final Traversal optimized) {
- applyIncidentToAdjacentStrategy(traversal);
- assertEquals(optimized, traversal);
- }
-
- static Iterable<Object[]> generateTestParameters() {
-
- Function<Traverser<Vertex>, Vertex> lambda = Traverser::get; // to ensure same hashCode
- return Arrays.asList(new Traversal[][]{
- {__.outE().inV(), __.out()},
- {__.inE().outV(), __.in()},
- {__.bothE().otherV(), __.both()},
- {__.outE().outV(), __.outE().outV()},
- {__.inE().inV(), __.inE().inV()},
- {__.bothE().bothV(), __.bothE().bothV()},
- {__.bothE().inV(), __.bothE().inV()},
- {__.bothE().outV(), __.bothE().outV()},
- {__.outE().as("a").inV(), __.outE().as("a").inV()}, // todo: this can be optimized, but requires a lot more checks
- {__.outE().inV().path(), __.outE().inV().path()},
- {__.outE().inV().map(lambda), __.outE().inV().map(lambda)},
- {__.union(__.outE().inV(), __.inE().outV()).path(), __.union(__.outE().inV(), __.inE().outV()).path()},
- {__.as("a").outE().inV().as("b"), __.as("a").out().as("b")}});
- }
+ @Parameterized.Parameters(name = "{0}")
+ public static Iterable<Object[]> generateTestParameters() {
+
+ Function<Traverser<Vertex>, Vertex> lambda = Traverser::get; // to ensure same hashCode
+ return Arrays.asList(new Traversal[][]{
+ {__.outE().inV(), __.out()},
+ {__.inE().outV(), __.in()},
+ {__.bothE().otherV(), __.both()},
+ {__.outE().outV(), __.outE().outV()},
+ {__.inE().inV(), __.inE().inV()},
+ {__.bothE().bothV(), __.bothE().bothV()},
+ {__.bothE().inV(), __.bothE().inV()},
+ {__.bothE().outV(), __.bothE().outV()},
+ {__.outE().as("a").inV(), __.outE().as("a").inV()}, // todo: this can be optimized, but requires a lot more checks
+ {__.outE().inV().path(), __.outE().inV().path()},
+ {__.outE().inV().map(lambda), __.outE().inV().map(lambda)},
+ {__.union(__.outE().inV(), __.inE().outV()).path(), __.union(__.outE().inV(), __.inE().outV()).path()},
+ {__.as("a").outE().inV().as("b"), __.as("a").out().as("b")}});
}
}
+
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java
index a51d8d9..41d3525 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java
@@ -103,7 +103,7 @@ public class MatchPredicateStrategyTest {
final TraversalStrategies strategies = new DefaultTraversalStrategies();
strategies.addStrategies(MatchPredicateStrategy.instance(), IdentityRemovalStrategy.instance());
traversal.asAdmin().setStrategies(strategies);
- traversal.asAdmin().setEngine(this.traversalEngine);
+ //traversal.asAdmin().setEngine(this.traversalEngine);
traversal.asAdmin().applyStrategies();
}