You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by dk...@apache.org on 2015/06/04 12:15:31 UTC

[17/43] incubator-tinkerpop git commit: Added Scoping.getScope() and moved the getScopeValueByKey() to Scoping which has a default that leverages Scoping.getScope().

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/preprocessor
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);
     }
 }