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/06/03 06:17:51 UTC
incubator-tinkerpop git commit: Added Scoping.getScope() and moved
the getScopeValueByKey() to Scoping which has a default that leverages
Scoping.getScope().
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/master cf96f646b -> 31643e67e
Added Scoping.getScope() and moved the getScopeValueByKey() to Scoping which has a default that leverages Scoping.getScope().
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/31643e67
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/31643e67
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/31643e67
Branch: refs/heads/master
Commit: 31643e67e874b87668b196db9fb479397e9baf6d
Parents: cf96f64
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jun 2 22:17:46 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Jun 2 22:17:46 2015 -0600
----------------------------------------------------------------------
.../gremlin/process/traversal/Scope.java | 11 -----------
.../gremlin/process/traversal/step/Scoping.java | 18 ++++++++++++++++++
.../process/traversal/step/filter/WhereStep.java | 13 +++++++++----
.../process/traversal/step/map/AddEdgeStep.java | 5 +++--
.../process/traversal/step/map/SelectOneStep.java | 8 ++++++--
.../process/traversal/step/map/SelectStep.java | 7 ++++++-
.../traversal/step/map/match/MatchStep.java | 5 +++++
.../gremlin/neo4j/process/traversal/LabelP.java | 2 +-
.../step/sideEffect/CypherStartStep.java | 7 ++++++-
9 files changed, 54 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/31643e67/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Scope.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Scope.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Scope.java
index d3cdbf1..1cce1e0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Scope.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Scope.java
@@ -35,15 +35,4 @@ public enum Scope {
return global.equals(this) ? local : global;
}
- public static <S> S getScopeValueByKey(final Scope scope, final String key, final Traverser<?> traverser) {
- if (local == scope) {
- final S s = ((Map<String, S>) traverser.get()).get(key);
- if (null == s)
- throw new IllegalArgumentException("The provided map does not have a " + key + "-key: " + traverser);
- return s;
- } else {
- final Path path = traverser.path();
- return path.hasLabel(key) ? path.get(key) : traverser.sideEffects(key);
- }
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/31643e67/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
index bb086e6..8946720 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
@@ -21,13 +21,31 @@
package org.apache.tinkerpop.gremlin.process.traversal.step;
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
import org.apache.tinkerpop.gremlin.process.traversal.Scope;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+
+import java.util.Map;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
public interface Scoping {
+ public default <S> S getScopeValueByKey(final String key, final Traverser<?> traverser) {
+ if (Scope.local == this.getScope()) {
+ final S s = ((Map<String, S>) traverser.get()).get(key);
+ if (null == s)
+ throw new IllegalArgumentException("The provided map does not have a " + key + "-key: " + traverser);
+ return s;
+ } else {
+ final Path path = traverser.path();
+ return path.hasLabel(key) ? path.get(key) : traverser.sideEffects(key);
+ }
+ }
+
+ public Scope getScope();
+
public Scope recommendNextScope();
public void setScope(final Scope scope);
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/31643e67/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
index 8293867..eaeeeac 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
@@ -119,6 +119,11 @@ public final class WhereStep<S> extends FilterStep<S> implements TraversalParent
}
@Override
+ public Scope getScope() {
+ return this.scope;
+ }
+
+ @Override
public Scope recommendNextScope() {
return this.scope;
}
@@ -136,8 +141,8 @@ public final class WhereStep<S> extends FilterStep<S> implements TraversalParent
return this.predicate.getBiPredicate().test(getStartObject(traverser), null);
} else {
return this.predicate.getBiPredicate().test(
- null == this.startKey ? getStartObject(traverser) : Scope.getScopeValueByKey(this.scope, this.startKey, traverser),
- null == this.endKey ? null : Scope.getScopeValueByKey(this.scope, this.endKey, traverser));
+ null == this.startKey ? getStartObject(traverser) : this.getScopeValueByKey(this.startKey, traverser),
+ null == this.endKey ? null : this.getScopeValueByKey(this.endKey, traverser));
}
}
@@ -149,11 +154,11 @@ public final class WhereStep<S> extends FilterStep<S> implements TraversalParent
startObjects.add(traverser.get());
else {
for (final String startKey : this.startKeys) {
- startObjects.add(Scope.getScopeValueByKey(this.scope, startKey, traverser));
+ startObjects.add(this.getScopeValueByKey(startKey, traverser));
}
}
for (final String endKey : this.endKeys) {
- endObjects.add(Scope.getScopeValueByKey(this.scope, endKey, traverser));
+ endObjects.add(this.getScopeValueByKey(endKey, traverser));
}
return this.predicate.getBiPredicate().test(new TraversalUtil.Multiple<>(startObjects), endObjects.isEmpty() ? null : new TraversalUtil.Multiple<>(endObjects));
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/31643e67/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
index a3966ae..17af371 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
@@ -89,8 +89,8 @@ public final class AddEdgeStep<S> extends FlatMapStep<S, Edge> implements Scopin
@Override
protected Iterator<Edge> flatMap(final Traverser.Admin<S> traverser) {
- final Object firstVertex = null == this.firstVertexKey ? (Vertex) traverser.get() : Scope.getScopeValueByKey(this.scope, this.firstVertexKey, traverser);
- final Object secondVertex = null == this.secondVertexKey ? (Vertex) traverser.get() : Scope.getScopeValueByKey(this.scope, this.secondVertexKey, traverser);
+ final Object firstVertex = null == this.firstVertexKey ? (Vertex) traverser.get() : this.getScopeValueByKey(this.firstVertexKey, traverser);
+ final Object secondVertex = null == this.secondVertexKey ? (Vertex) traverser.get() : this.getScopeValueByKey(this.secondVertexKey, traverser);
final Object finalFirstVertex = firstVertex instanceof Iterable ? ((Iterable) firstVertex).iterator() : firstVertex;
final Object finalSecondVertex = secondVertex instanceof Iterable ? ((Iterable) secondVertex).iterator() : secondVertex;
@@ -169,6 +169,7 @@ public final class AddEdgeStep<S> extends FlatMapStep<S, Edge> implements Scopin
return this.scope;
}
+ @Override
public Scope getScope() {
return this.scope;
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/31643e67/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStep.java
index 21ef76c..20ddad0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStep.java
@@ -31,7 +31,6 @@ import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
import java.util.Collections;
import java.util.List;
-import java.util.Map;
import java.util.Set;
/**
@@ -51,7 +50,7 @@ public final class SelectOneStep<S, E> extends MapStep<S, E> implements Traversa
@Override
protected E map(final Traverser.Admin<S> traverser) {
- return (E) TraversalUtil.apply(Scope.local == this.scope ? ((Map) traverser.get()).get(this.selectLabel) : traverser.path().<Object>get(this.selectLabel), this.selectTraversal);
+ return (E) TraversalUtil.apply((Object) this.getScopeValueByKey(this.selectLabel, traverser), this.selectTraversal);
}
@Override
@@ -95,6 +94,11 @@ public final class SelectOneStep<S, E> extends MapStep<S, E> implements Traversa
public Scope recommendNextScope() {
return Scope.global;
}
+
+ @Override
+ public Scope getScope() {
+ return this.scope;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/31643e67/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 dbac25c..f2c2828 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
@@ -64,7 +64,7 @@ public final class SelectStep<S, E> extends MapStep<S, Map<String, E>> implement
path.labels().stream().flatMap(Set::stream).distinct().forEach(label -> bindings.put(label, (E) TraversalUtil.apply(path.<Object>get(label), this.traversalRing.next())));
}
} else
- this.selectLabels.forEach(label -> bindings.put(label, (E) TraversalUtil.apply((Object) Scope.getScopeValueByKey(this.scope, label, traverser), this.traversalRing.next())));
+ this.selectLabels.forEach(label -> bindings.put(label, (E) TraversalUtil.apply((Object) this.getScopeValueByKey(label, traverser), this.traversalRing.next())));
this.traversalRing.reset();
return bindings;
@@ -119,6 +119,11 @@ public final class SelectStep<S, E> extends MapStep<S, Map<String, E>> implement
}
@Override
+ public Scope getScope() {
+ return this.scope;
+ }
+
+ @Override
public Scope recommendNextScope() {
return this.scope.opposite();
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/31643e67/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/match/MatchStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/match/MatchStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/match/MatchStep.java
index 831e28f..d4971c2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/match/MatchStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/match/MatchStep.java
@@ -416,6 +416,11 @@ public final class MatchStep<S, E> extends AbstractStep<S, Map<String, E>> imple
}
+ @Override
+ public Scope getScope() {
+ return Scope.local;
+ }
+
/**
* A wrapper for a traversal in a query which maintains statistics about the traversal as
* it consumes inputs and produces outputs.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/31643e67/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/LabelP.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/LabelP.java b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/LabelP.java
index 57bb11a..7c3414c 100644
--- a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/LabelP.java
+++ b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/LabelP.java
@@ -48,7 +48,7 @@ public final class LabelP extends P<String> {
@Override
public boolean test(final String labels, final String checkLabel) {
- return labels.contains(checkLabel);
+ return labels.contains(checkLabel); // TODO: contains may be bad -- use :: reg-ex parsing?
}
public static LabelBiPredicate instance() {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/31643e67/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/CypherStartStep.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/CypherStartStep.java b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/CypherStartStep.java
index 2579c77..6cecb2d 100644
--- a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/CypherStartStep.java
+++ b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/CypherStartStep.java
@@ -53,7 +53,12 @@ public final class CypherStartStep extends StartStep<Map<String, Object>> implem
}
@Override
+ public Scope getScope() {
+ return Scope.local;
+ }
+
+ @Override
public String toString() {
- return StringFactory.stepString(this,this.query);
+ return StringFactory.stepString(this, this.query);
}
}