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 2015/03/23 19:20:26 UTC

incubator-tinkerpop git commit: TINKERPOP3-598 #close -- was a instanceof bug in Neo4jGraphStepStrategy. Copied the TinkerGraphStepStrategy form.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/master d4130d84b -> dea347b3d


TINKERPOP3-598 #close -- was a instanceof bug in Neo4jGraphStepStrategy. Copied the TinkerGraphStepStrategy form.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/dea347b3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/dea347b3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/dea347b3

Branch: refs/heads/master
Commit: dea347b3d0e69ef5806e086e7ea07a9471466a6d
Parents: d4130d8
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Mar 23 12:20:23 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Mar 23 12:20:23 2015 -0600

----------------------------------------------------------------------
 .../traversal/dsl/graph/GraphTraversalSource.java    | 15 +++++++++++----
 .../traversal/step/sideEffect/Neo4jGraphStep.java    |  6 ++++--
 .../optimization/Neo4jGraphStepStrategy.java         | 12 ++++++++++--
 3 files changed, 25 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/dea347b3/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
index 8a577a0..5354f28 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
@@ -34,6 +34,7 @@ import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 
@@ -70,7 +71,9 @@ public class GraphTraversalSource implements TraversalSource {
         final TraversalStrategies tempStrategies = TraversalStrategies.GlobalCache.getStrategies(this.graph.getClass());
         this.strategies = withStrategies.isEmpty() && withoutStrategies.isEmpty() ?
                 tempStrategies :
-                tempStrategies.clone().addStrategies(withStrategies.toArray(new TraversalStrategy[withStrategies.size()])).removeStrategies(withoutStrategies.toArray(new Class[withoutStrategies.size()]));
+                tempStrategies.clone()
+                        .addStrategies(withStrategies.toArray(new TraversalStrategy[withStrategies.size()]))
+                        .removeStrategies(withoutStrategies.toArray(new Class[withoutStrategies.size()]));
     }
 
     public GraphTraversal<Vertex, Vertex> addV(final Object... keyValues) {
@@ -131,8 +134,8 @@ public class GraphTraversalSource implements TraversalSource {
     public static class Builder implements TraversalSource.Builder<GraphTraversalSource> {
 
         private TraversalEngine.Builder engineBuilder = StandardTraversalEngine.build();
-        private List<TraversalStrategy> withStrategies = new ArrayList<>();
-        private List<Class<? extends TraversalStrategy>> withoutStrategies = new ArrayList<>();
+        private List<TraversalStrategy> withStrategies = null;
+        private List<Class<? extends TraversalStrategy>> withoutStrategies = null;
 
         @Override
         public Builder engine(final TraversalEngine.Builder engineBuilder) {
@@ -142,19 +145,23 @@ public class GraphTraversalSource implements TraversalSource {
 
         @Override
         public Builder with(final TraversalStrategy strategy) {
+            if (null == this.withStrategies) this.withStrategies = new ArrayList<>();
             this.withStrategies.add(strategy);
             return this;
         }
 
         @Override
         public TraversalSource.Builder without(Class<? extends TraversalStrategy> strategyClass) {
+            if (null == this.withoutStrategies) this.withoutStrategies = new ArrayList<>();
             this.withoutStrategies.add(strategyClass);
             return this;
         }
 
         @Override
         public GraphTraversalSource create(final Graph graph) {
-            return new GraphTraversalSource(graph, this.engineBuilder, this.withStrategies, this.withoutStrategies);
+            return new GraphTraversalSource(graph, this.engineBuilder,
+                    null == this.withStrategies ? Collections.emptyList() : this.withStrategies,
+                    null == this.withoutStrategies ? Collections.emptyList() : this.withoutStrategies);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/dea347b3/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java
index c89058b..e7227ef 100644
--- a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java
+++ b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java
@@ -61,8 +61,10 @@ public class Neo4jGraphStep<S extends Element> extends GraphStep<S> {
 
     public final List<HasContainer> hasContainers = new ArrayList<>();
 
-    public Neo4jGraphStep(final Traversal.Admin traversal, final Class<S> returnClass, final Object... ids) {
-        super(traversal, returnClass, ids);
+    public Neo4jGraphStep(final GraphStep<S> originalGraphStep) {
+        super(originalGraphStep.getTraversal(), originalGraphStep.getReturnClass(), originalGraphStep.getIds());
+        if (originalGraphStep.getLabel().isPresent())
+            this.setLabel(originalGraphStep.getLabel().get());
         this.setIteratorSupplier(() -> (Iterator<S>) (Vertex.class.isAssignableFrom(this.returnClass) ? this.vertices() : this.edges()));
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/dea347b3/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/strategy/optimization/Neo4jGraphStepStrategy.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/strategy/optimization/Neo4jGraphStepStrategy.java b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/strategy/optimization/Neo4jGraphStepStrategy.java
index e16e34c..2ecb24a 100644
--- a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/strategy/optimization/Neo4jGraphStepStrategy.java
+++ b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/strategy/optimization/Neo4jGraphStepStrategy.java
@@ -22,6 +22,7 @@ import org.apache.tinkerpop.gremlin.neo4j.process.traversal.step.sideEffect.Neo4
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.HasContainerHolder;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GraphStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IdentityStep;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
@@ -39,8 +40,15 @@ public class Neo4jGraphStepStrategy extends AbstractTraversalStrategy {
 
     @Override
     public void apply(final Traversal.Admin<?, ?> traversal) {
-        if (traversal.getStartStep() instanceof Neo4jGraphStep) {
-            final Neo4jGraphStep neo4jGraphStep = (Neo4jGraphStep) traversal.getStartStep();
+        if (traversal.getEngine().isComputer())
+            return;
+
+        final Step<?, ?> startStep = traversal.getStartStep();
+        if (startStep instanceof GraphStep) {
+            final GraphStep<?> originalGraphStep = (GraphStep) startStep;
+            final Neo4jGraphStep<?> neo4jGraphStep = new Neo4jGraphStep<>(originalGraphStep);
+            TraversalHelper.replaceStep(startStep, (Step) neo4jGraphStep, traversal);
+
             Step<?, ?> currentStep = neo4jGraphStep.getNextStep();
             while (true) {
                 if (currentStep instanceof HasContainerHolder) {