You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2018/08/16 15:40:17 UTC
[29/50] tinkerpop git commit: TINKERPOP-1878 Used just inject() step
to hold sparql
TINKERPOP-1878 Used just inject() step to hold sparql
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/2fbae88f
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/2fbae88f
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/2fbae88f
Branch: refs/heads/TINKERPOP-1913
Commit: 2fbae88f1bcf8d39b22ae81e1edc8ca6f3bf475f
Parents: 30c2033
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Aug 13 13:07:34 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Aug 13 14:39:24 2018 -0400
----------------------------------------------------------------------
.../traversal/dsl/sparql/SparqlTraversalSource.java | 12 +++---------
.../process/traversal/strategy/SparqlStrategy.java | 15 ++++++++-------
...bstractTinkerGraphGraphSONTranslatorProvider.java | 4 ----
3 files changed, 11 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2fbae88f/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSource.java
----------------------------------------------------------------------
diff --git a/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSource.java b/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSource.java
index f78708b..d96f427 100644
--- a/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSource.java
+++ b/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSource.java
@@ -127,16 +127,10 @@ public class SparqlTraversalSource implements TraversalSource {
final SparqlTraversalSource clone = this.clone();
clone.getStrategies().addStrategies(SparqlStrategy.instance());
- // this is a bit of a hack to get remote traversals to work cleanly. on the remote side, we'd expect a
- // GraphTraversalSource not a SparqlTraversalSource (given that sparql-gremlin is to be implemented in the
- // DSL pattern). Instead of just sending the constant() step with the sparql query we also include an
- // inject() step which will be recognized by a GraphTraversalSource on the remote side. Since SparqlStrategy
- // wholly replaces both of these steps, the traversal bytecode can be read properly.
- clone.bytecode.addStep(GraphTraversal.Symbols.inject);
- clone.bytecode.addStep(GraphTraversal.Symbols.constant, query);
+ // the inject() holds the sparql which the SparqlStrategy then detects and converts to a traversal
+ clone.bytecode.addStep(GraphTraversal.Symbols.inject, query);
final SparqlTraversal.Admin<S, S> traversal = new DefaultSparqlTraversal<>(clone);
- traversal.addStep(new InjectStep<S>(traversal));
- return traversal.addStep(new ConstantStep<S,String>(traversal, query));
+ return traversal.addStep(new InjectStep<>(traversal, query));
}
public Transaction tx() {
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2fbae88f/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/strategy/SparqlStrategy.java
----------------------------------------------------------------------
diff --git a/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/strategy/SparqlStrategy.java b/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/strategy/SparqlStrategy.java
index b21c348..38956f8 100644
--- a/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/strategy/SparqlStrategy.java
+++ b/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/strategy/SparqlStrategy.java
@@ -22,6 +22,7 @@ import org.apache.tinkerpop.gremlin.process.remote.traversal.strategy.decoration
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.ConstantStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectStep;
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;
@@ -63,22 +64,22 @@ public class SparqlStrategy extends AbstractTraversalStrategy<TraversalStrategy.
if (!(traversal.getParent() instanceof EmptyStep))
return;
- if (traversal.getSteps().size() == 2 && traversal.getEndStep() instanceof ConstantStep) {
- final ConstantStep stepWithSparql = (ConstantStep) traversal.getEndStep();
- final Object constant = stepWithSparql.getConstant();
- if (constant instanceof String) {
- final String sparql = (String) constant;
+ if (traversal.getSteps().size() == 1 && traversal.getEndStep() instanceof InjectStep) {
+ final InjectStep stepWithSparql = (InjectStep) traversal.getEndStep();
+ final Object[] injections = stepWithSparql.getInjections();
+ if (injections.length == 1 && injections[0] instanceof String) {
+ final String sparql = (String) injections[0];
final Traversal<Vertex, ?> sparqlTraversal = SparqlToGremlinCompiler.transpile(
traversal.getGraph().get(), sparql);
TraversalHelper.removeAllSteps(traversal);
sparqlTraversal.asAdmin().getSteps().forEach(s -> traversal.addStep(s));
} else {
// The ConstantStep expects a string value
- throw new IllegalStateException("SparqlStrategy cannot be applied to a traversal that does not consist of a single ConstantStep<?,String>");
+ throw new IllegalStateException("SparqlStrategy cannot be applied to a traversal that does not consist of a single InjectStep<String> with one injection");
}
} else {
// SparqlStrategy requires that there be one step and it be a ConstantStep that contains some SPARQL
- throw new IllegalStateException("SparqlStrategy cannot be applied to a traversal that does not consist of a single ConstantStep<?,String>");
+ throw new IllegalStateException("SparqlStrategy cannot be applied to a traversal that does not consist of a single InjectStep<String> with one injection");
}
}
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2fbae88f/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/io/graphson/AbstractTinkerGraphGraphSONTranslatorProvider.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/io/graphson/AbstractTinkerGraphGraphSONTranslatorProvider.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/io/graphson/AbstractTinkerGraphGraphSONTranslatorProvider.java
index 8462781..223f4d2 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/io/graphson/AbstractTinkerGraphGraphSONTranslatorProvider.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/io/graphson/AbstractTinkerGraphGraphSONTranslatorProvider.java
@@ -22,18 +22,14 @@ package org.apache.tinkerpop.gremlin.tinkergraph.structure.io.graphson;
import org.apache.tinkerpop.gremlin.GraphProvider;
import org.apache.tinkerpop.gremlin.LoadGraphWith;
import org.apache.tinkerpop.gremlin.jsr223.JavaTranslator;
-import org.apache.tinkerpop.gremlin.process.traversal.CoreTraversalTest;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionComputerTest;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionTest;
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.map.PageRankTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProgramTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.ReadTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.WriteTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategyProcessTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategyProcessTest;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategyProcessTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategy;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONVersion;