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;