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/05/19 18:33:14 UTC
incubator-tinkerpop git commit: TraversalRing is now cloneable and
this makes PathStep, SelectStep, and TreeStep clone() simpler.
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/master 0be19a1ef -> 9eeb0d32e
TraversalRing is now cloneable and this makes PathStep, SelectStep, and TreeStep clone() simpler.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/9eeb0d32
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/9eeb0d32
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/9eeb0d32
Branch: refs/heads/master
Commit: 9eeb0d32e3085d3519134e7c27103fbd5dc5922d
Parents: 0be19a1
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue May 19 10:33:23 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue May 19 10:33:23 2015 -0600
----------------------------------------------------------------------
.../process/traversal/step/map/PathStep.java | 9 +++------
.../process/traversal/step/map/SelectStep.java | 6 ++----
.../process/traversal/step/map/TreeStep.java | 12 ++++++++----
.../step/sideEffect/TreeSideEffectStep.java | 6 ++----
.../process/traversal/util/TraversalRing.java | 18 ++++++++++++++++--
.../tinkergraph/structure/TinkerGraphTest.java | 2 +-
6 files changed, 32 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/9eeb0d32/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PathStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PathStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PathStep.java
index ee30ba1..a244da2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PathStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PathStep.java
@@ -29,7 +29,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalRing;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
-import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -61,10 +60,8 @@ public final class PathStep<S> extends MapStep<S, Path> implements TraversalPare
@Override
public PathStep<S> clone() {
final PathStep<S> clone = (PathStep<S>) super.clone();
- clone.traversalRing = new TraversalRing<>();
- for (final Traversal.Admin<Object, Object> traversal : this.traversalRing.getTraversals()) {
- clone.traversalRing.addTraversal(clone.integrateChild(traversal.clone()));
- }
+ clone.traversalRing = this.traversalRing.clone();
+ clone.getLocalChildren().forEach(clone::integrateChild);
return clone;
}
@@ -91,6 +88,6 @@ public final class PathStep<S> extends MapStep<S, Path> implements TraversalPare
@Override
public Set<TraverserRequirement> getRequirements() {
- return Collections.singleton(TraverserRequirement.PATH);
+ return this.getSelfAndChildRequirements(TraverserRequirement.PATH);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/9eeb0d32/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStep.java
index 5040f03..5f6d4f2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStep.java
@@ -87,10 +87,8 @@ public final class SelectStep<S, E> extends MapStep<S, Map<String, E>> implement
@Override
public SelectStep<S, E> clone() {
final SelectStep<S, E> clone = (SelectStep<S, E>) super.clone();
- clone.traversalRing = new TraversalRing<>();
- for (final Traversal.Admin<Object, Object> traversal : this.traversalRing.getTraversals()) {
- clone.traversalRing.addTraversal(clone.integrateChild(traversal.clone()));
- }
+ clone.traversalRing = this.traversalRing.clone();
+ clone.getLocalChildren().forEach(clone::integrateChild);
return clone;
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/9eeb0d32/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TreeStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TreeStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TreeStep.java
index bd1c503..0816f6d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TreeStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TreeStep.java
@@ -82,10 +82,8 @@ public final class TreeStep<S> extends ReducingBarrierStep<S, Tree> implements M
@Override
public TreeStep<S> clone() {
final TreeStep<S> clone = (TreeStep<S>) super.clone();
- clone.traversalRing = new TraversalRing<>();
- for (final Traversal.Admin<Object, Object> traversal : this.traversalRing.getTraversals()) {
- clone.traversalRing.addTraversal(clone.integrateChild(traversal.clone()));
- }
+ clone.traversalRing = this.traversalRing.clone();
+ clone.getLocalChildren().forEach(clone::integrateChild);
return clone;
}
@@ -104,6 +102,12 @@ public final class TreeStep<S> extends ReducingBarrierStep<S, Tree> implements M
return StringFactory.stepString(this, this.traversalRing);
}
+ @Override
+ public void reset() {
+ super.reset();
+ this.traversalRing.reset();
+ }
+
///////////
private class TreeBiFunction implements BiFunction<Tree, Traverser<S>, Tree>, Serializable {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/9eeb0d32/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TreeSideEffectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TreeSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TreeSideEffectStep.java
index 3f33796..3e9d0ba 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TreeSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TreeSideEffectStep.java
@@ -94,10 +94,8 @@ public final class TreeSideEffectStep<S> extends SideEffectStep<S> implements Si
@Override
public TreeSideEffectStep<S> clone() {
final TreeSideEffectStep<S> clone = (TreeSideEffectStep<S>) super.clone();
- clone.traversalRing = new TraversalRing<>();
- for (final Traversal.Admin<Object, Object> traversal : this.traversalRing.getTraversals()) {
- clone.traversalRing.addTraversal(clone.integrateChild(traversal.clone()));
- }
+ clone.traversalRing = this.traversalRing.clone();
+ clone.getLocalChildren().forEach(clone::integrateChild);
return clone;
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/9eeb0d32/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalRing.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalRing.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalRing.java
index 2d16fab..4e50b18 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalRing.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalRing.java
@@ -30,14 +30,14 @@ import java.util.List;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public final class TraversalRing<A, B> implements Serializable {
+public final class TraversalRing<A, B> implements Serializable, Cloneable {
private final IdentityTraversal<A, B> identityTraversal = new IdentityTraversal<>();
private List<Traversal.Admin<A, B>> traversals = new ArrayList<>();
private int currentTraversal = -1;
- public TraversalRing(final Traversal.Admin<A,B>... traversals) {
+ public TraversalRing(final Traversal.Admin<A, B>... traversals) {
this.traversals = new ArrayList<>(Arrays.asList(traversals));
}
@@ -74,4 +74,18 @@ public final class TraversalRing<A, B> implements Serializable {
public String toString() {
return this.traversals.toString();
}
+
+ @Override
+ public TraversalRing<A, B> clone() {
+ try {
+ final TraversalRing<A, B> clone = (TraversalRing<A, B>) super.clone();
+ clone.traversals = new ArrayList<>();
+ for(final Traversal.Admin<A,B> traversal : this.traversals) {
+ clone.addTraversal(traversal.clone());
+ }
+ return clone;
+ } catch (final CloneNotSupportedException e) {
+ throw new IllegalStateException(e.getMessage(), e);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/9eeb0d32/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 57c755f..1ac31b7 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
@@ -164,7 +164,7 @@ public class TinkerGraphTest {
//g.V().label().groupCount().as("x").select().forEachRemaining(System.out::println);
//g.V().choose(__.outE().count().is(0L), __.as("x"), __.as("y")).select("x", "y").forEachRemaining(System.out::println);
// g.V().hasLabel("person").values("age").is(P.lt(27).or(P.gt(29))).forEachRemaining(System.out::println);
- System.out.println(g.V().has("age", eq(27).or(not(eq(32)))).values("name"));
+ g.V().as("a").out("knows").as("b").where("a",lt("b")).by("age").select().by("name").forEachRemaining(System.out::println);
}
@Test