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 2015/03/11 19:26:50 UTC

[34/50] [abbrv] incubator-tinkerpop git commit: Builders for Context and Engine is now solid.

Builders for Context and Engine is now solid.


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

Branch: refs/heads/master
Commit: c25b5a5aa2bb5eb9107e799abbd37c7274b10439
Parents: 7db4bf8
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Mar 10 09:05:50 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Mar 10 09:05:50 2015 -0600

----------------------------------------------------------------------
 .../gremlin/process/TraversalContext.java       |  2 +-
 .../gremlin/process/TraversalEngine.java        |  4 +++
 .../graph/traversal/GraphTraversalContext.java  | 12 ++++----
 .../engine/ComputerTraversalEngine.java         | 29 ++++++++++++--------
 .../engine/StandardTraversalEngine.java         | 19 +++++++++++--
 .../tinkerpop/gremlin/structure/Graph.java      |  3 +-
 .../step/branch/GroovyUnionTest.groovy          |  3 +-
 .../tinkergraph/structure/TinkerGraphTest.java  |  2 +-
 8 files changed, 48 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c25b5a5a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalContext.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalContext.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalContext.java
index 6b11324..1514b3e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalContext.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalContext.java
@@ -27,7 +27,7 @@ public interface TraversalContext {
 
     public interface Builder<C extends TraversalContext> {
 
-        public Builder engine(final TraversalEngine engine);
+        public Builder engine(final TraversalEngine.Builder engine);
 
         public Builder strategy(final TraversalStrategy strategy);
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c25b5a5a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalEngine.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalEngine.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalEngine.java
index 6148aa4..98d17f0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalEngine.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalEngine.java
@@ -40,4 +40,8 @@ public interface TraversalEngine extends Serializable {
     public default boolean isComputer() {
         return this.getType().equals(Type.COMPUTER);
     }
+
+    public interface Builder extends Serializable {
+        public TraversalEngine create(final Graph graph);
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c25b5a5a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversalContext.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversalContext.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversalContext.java
index ad03fc4..b4eca49 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversalContext.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversalContext.java
@@ -38,10 +38,10 @@ import java.util.List;
 public class GraphTraversalContext implements TraversalContext {
 
     private final Graph graph;
-    private final TraversalEngine engine;
+    private final TraversalEngine.Builder engine;
     private final TraversalStrategies strategies;
 
-    public GraphTraversalContext(final Graph graph, final TraversalEngine engine, final TraversalStrategy... strategies) {
+    public GraphTraversalContext(final Graph graph, final TraversalEngine.Builder engine, final TraversalStrategy... strategies) {
         this.graph = graph;
         this.engine = engine;
         this.strategies = TraversalStrategies.GlobalCache.getStrategies(this.graph.getClass()).addStrategies(strategies);
@@ -49,14 +49,14 @@ public class GraphTraversalContext implements TraversalContext {
 
     public GraphTraversal<Vertex, Vertex> V(final Object... vertexIds) {
         final GraphTraversal.Admin<Vertex, Vertex> traversal = new DefaultGraphTraversal<>(this);
-        traversal.setEngine(this.engine);
+        traversal.setEngine(this.engine.create(this.graph));
         traversal.setStrategies(this.strategies);
         return traversal.addStep(new GraphStep<>(traversal, this.graph, Vertex.class, vertexIds));
     }
 
     public GraphTraversal<Edge, Edge> E(final Object... edgesIds) {
         final GraphTraversal.Admin<Edge, Edge> traversal = new DefaultGraphTraversal<>(this);
-        traversal.setEngine(this.engine);
+        traversal.setEngine(this.engine.create(this.graph));
         traversal.setStrategies(this.strategies);
         return traversal.addStep(new GraphStep<>(traversal, this.graph, Edge.class, edgesIds));
     }
@@ -73,10 +73,10 @@ public class GraphTraversalContext implements TraversalContext {
 
     public static class Builder implements TraversalContext.Builder<GraphTraversalContext> {
 
-        private TraversalEngine engine = StandardTraversalEngine.instance();
+        private TraversalEngine.Builder engine = StandardTraversalEngine.builder();
         private List<TraversalStrategy> strategies = new ArrayList<>();
 
-        public Builder engine(final TraversalEngine engine) {
+        public Builder engine(final TraversalEngine.Builder engine) {
             this.engine = engine;
             return this;
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c25b5a5a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/ComputerTraversalEngine.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/ComputerTraversalEngine.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/ComputerTraversalEngine.java
index 63edc24..966ba6a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/ComputerTraversalEngine.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/ComputerTraversalEngine.java
@@ -26,23 +26,23 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.EmptyStep;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
+import java.io.Serializable;
+
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public final class ComputerTraversalEngine implements TraversalEngine {
 
-    private final transient Graph graph;
-    private Class<? extends GraphComputer> graphComputerClass;
+    private final GraphComputer graphComputer;
 
-    private ComputerTraversalEngine(final Graph graph, final Class<? extends GraphComputer> graphComputerClass) {
-        this.graph = graph;
-        this.graphComputerClass = graphComputerClass;
+    private ComputerTraversalEngine(final GraphComputer graphComputer) {
+        this.graphComputer = graphComputer;
     }
 
     @Override
     public void processTraversal(final Traversal.Admin<?, ?> traversal) {
         if (traversal.getParent() instanceof EmptyStep)
-            traversal.addStep(new ComputerResultStep<>(traversal, this.graph.compute(this.graphComputerClass), true));
+            traversal.addStep(new ComputerResultStep<>(traversal, this.graphComputer, true));
     }
 
     @Override
@@ -55,23 +55,28 @@ public final class ComputerTraversalEngine implements TraversalEngine {
         return StringFactory.traversalEngineString(this);
     }
 
-    public static class Builder {
+    public static Builder build() {
+        return new Builder();
+    }
+
+
+    public static class Builder implements TraversalEngine.Builder, Serializable {
 
         private Class<? extends GraphComputer> graphComputerClass;
-        private Graph graph;
+        private GraphComputer.Isolation isolation = GraphComputer.Isolation.BSP;
 
         public Builder computer(final Class<? extends GraphComputer> graphComputerClass) {
             this.graphComputerClass = graphComputerClass;
             return this;
         }
 
-        public Builder graph(final Graph graph) {
-            this.graph = graph;
+        public Builder isolation(final GraphComputer.Isolation isolation) {
+            this.isolation = isolation;
             return this;
         }
 
-        public ComputerTraversalEngine create() {
-            return new ComputerTraversalEngine(this.graph, this.graphComputerClass);
+        public ComputerTraversalEngine create(final Graph graph) {
+            return new ComputerTraversalEngine(graph.compute(this.graphComputerClass).isolation(this.isolation));
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c25b5a5a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/StandardTraversalEngine.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/StandardTraversalEngine.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/StandardTraversalEngine.java
index 8be5fc4..ce0d97a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/StandardTraversalEngine.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/StandardTraversalEngine.java
@@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.engine;
 
 import org.apache.tinkerpop.gremlin.process.Traversal;
 import org.apache.tinkerpop.gremlin.process.TraversalEngine;
+import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 /**
@@ -27,7 +28,7 @@ import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
  */
 public final class StandardTraversalEngine implements TraversalEngine {
 
-    private static final StandardTraversalEngine standard = new StandardTraversalEngine();
+    private static final StandardTraversalEngine INSTANCE = new StandardTraversalEngine();
 
     private StandardTraversalEngine() {
 
@@ -43,12 +44,26 @@ public final class StandardTraversalEngine implements TraversalEngine {
         return Type.STANDARD;
     }
 
+    public static Builder builder() {
+        return Builder.INSTANCE;
+    }
+
     public static StandardTraversalEngine instance() {
-        return standard;
+        return INSTANCE;
     }
 
     @Override
     public String toString() {
         return StringFactory.traversalEngineString(this);
     }
+
+    public static class Builder implements TraversalEngine.Builder {
+
+        private static final Builder INSTANCE = new Builder();
+
+        @Override
+        public TraversalEngine create(final Graph graph) {
+            return StandardTraversalEngine.INSTANCE;
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c25b5a5a/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 5ac6a27..a7e3d37 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
@@ -23,7 +23,6 @@ import org.apache.tinkerpop.gremlin.process.T;
 import org.apache.tinkerpop.gremlin.process.TraversalContext;
 import org.apache.tinkerpop.gremlin.process.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.graph.traversal.GraphTraversalContext;
 import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
 import org.apache.tinkerpop.gremlin.structure.io.DefaultIo;
@@ -149,7 +148,7 @@ public interface Graph extends AutoCloseable {
     }
 
     public default GraphTraversalContext traversal() {
-        return this.traversal(GraphTraversalContext.of().engine(StandardTraversalEngine.instance()));
+        return this.traversal(GraphTraversalContext.of().engine(StandardTraversalEngine.builder()));
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c25b5a5a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/branch/GroovyUnionTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/branch/GroovyUnionTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/branch/GroovyUnionTest.groovy
index f129ad9..12d125d 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/branch/GroovyUnionTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/graph/traversal/step/branch/GroovyUnionTest.groovy
@@ -23,7 +23,6 @@ import org.apache.tinkerpop.gremlin.process.Traversal
 import org.apache.tinkerpop.gremlin.process.TraversalEngine
 import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.process.graph.traversal.__
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.branch.UnionTest
 import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -105,7 +104,7 @@ public abstract class GroovyUnionTest {
         @Override
         public Traversal<Vertex, Number> get_g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX(
                 final Object v1Id, final Object v2Id) {
-            g.engine(StandardTraversalEngine.standard);
+            g.engine(StandardTraversalEngine.INSTANCE);
             g.V(v1Id, v2Id).union(outE().count, inE().count, outE().weight.sum);
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/c25b5a5a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
index 1cc0a10..7e28640 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
@@ -146,7 +146,7 @@ public class TinkerGraphTest {
     @Ignore
     public void testPlay3() throws Exception {
         Graph graph = TinkerFactory.createModern();
-        GraphTraversalContext g = graph.traversal(GraphTraversalContext.of().engine(StandardTraversalEngine.instance()));
+        GraphTraversalContext g = graph.traversal(GraphTraversalContext.of().engine(StandardTraversalEngine.builder()));
         g.V().out().out().values("name").forEachRemaining(System.out::println);
     }