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 2016/11/16 12:48:42 UTC

[21/29] tinkerpop git commit: first push on 'left-append' of has() containers.

first push on 'left-append' of has() containers.


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

Branch: refs/heads/TINKERPOP-1502
Commit: 8c1391cfb83cce58246dbd20dec559a71f4e76c8
Parents: 265f39b
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Nov 14 12:54:07 2016 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed Nov 16 05:43:45 2016 -0700

----------------------------------------------------------------------
 .../traversal/dsl/graph/GraphTraversal.java     | 57 ++++++++++++++------
 1 file changed, 41 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8c1391cf/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index 088a4de..e875513 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -36,6 +36,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.lambda.LoopTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.lambda.PredicateTraverser;
 import org.apache.tinkerpop.gremlin.process.traversal.lambda.TrueTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.HasContainerHolder;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TimesModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent;
@@ -905,12 +906,20 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
 
     public default GraphTraversal<S, E> has(final String propertyKey, final P<?> predicate) {
         this.asAdmin().getBytecode().addStep(Symbols.has, propertyKey, predicate);
-        return this.asAdmin().addStep(new HasStep(this.asAdmin(), HasContainer.makeHasContainers(propertyKey, predicate)));
+        if (this.asAdmin().getEndStep() instanceof HasContainerHolder) {
+            ((HasContainerHolder) this.asAdmin().getEndStep()).addHasContainer(new HasContainer(propertyKey, predicate));
+            return this;
+        } else
+            return this.asAdmin().addStep(new HasStep(this.asAdmin(), HasContainer.makeHasContainers(propertyKey, predicate)));
     }
 
     public default GraphTraversal<S, E> has(final T accessor, final P<?> predicate) {
         this.asAdmin().getBytecode().addStep(Symbols.has, accessor, predicate);
-        return this.asAdmin().addStep(new HasStep(this.asAdmin(), HasContainer.makeHasContainers(accessor.getAccessor(), predicate)));
+        if (this.asAdmin().getEndStep() instanceof HasContainerHolder) {
+            ((HasContainerHolder) this.asAdmin().getEndStep()).addHasContainer(new HasContainer(accessor.getAccessor(), predicate));
+            return this;
+        } else
+            return this.asAdmin().addStep(new HasStep(this.asAdmin(), HasContainer.makeHasContainers(accessor.getAccessor(), predicate)));
     }
 
     public default GraphTraversal<S, E> has(final String propertyKey, final Object value) {
@@ -918,29 +927,47 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
             return this.has(propertyKey, (P) value);
         else if (value instanceof Traversal)
             return this.has(propertyKey, (Traversal) value);
-        else
-            return this.has(propertyKey, P.eq(value));
+        else {
+            this.asAdmin().getBytecode().addStep(Symbols.has, propertyKey, value);
+            if (this.asAdmin().getEndStep() instanceof HasContainerHolder) {
+                ((HasContainerHolder) this.asAdmin().getEndStep()).addHasContainer(new HasContainer(propertyKey, P.eq(value)));
+                return this;
+            } else
+                return this.asAdmin().addStep(new HasStep(this.asAdmin(), new HasContainer(propertyKey, P.eq(value))));
+        }
     }
 
     public default GraphTraversal<S, E> has(final T accessor, final Object value) {
         this.asAdmin().getBytecode().addStep(Symbols.has, accessor, value);
-        return value instanceof P ?
-                this.asAdmin().addStep(new HasStep(this.asAdmin(), HasContainer.makeHasContainers(accessor.getAccessor(), (P) value))) :
-                this.asAdmin().addStep(new HasStep(this.asAdmin(), HasContainer.makeHasContainers(accessor.getAccessor(), P.eq(value))));
+        if (this.asAdmin().getEndStep() instanceof HasContainerHolder) {
+            ((HasContainerHolder) this.asAdmin().getEndStep()).addHasContainer(new HasContainer(accessor.getAccessor(), value instanceof P ? (P) value : P.eq(value)));
+            return this;
+        } else
+            return this.asAdmin().addStep(new HasStep(this.asAdmin(), HasContainer.makeHasContainers(accessor.getAccessor(), value instanceof P ? (P) value : P.eq(value))));
     }
 
     public default GraphTraversal<S, E> has(final String label, final String propertyKey, final P<?> predicate) {
         this.asAdmin().getBytecode().addStep(Symbols.has, label, propertyKey, predicate);
-        this.asAdmin().addStep(new HasStep(this.asAdmin(), HasContainer.makeHasContainers(T.label.getAccessor(), P.eq(label))));
-        return this.asAdmin().addStep(new HasStep(this.asAdmin(), HasContainer.makeHasContainers(propertyKey, predicate)));
+        if (this.asAdmin().getEndStep() instanceof HasContainerHolder) {
+            ((HasContainerHolder) this.asAdmin().getEndStep()).addHasContainer(new HasContainer(T.label.getAccessor(), P.eq(label)));
+            ((HasContainerHolder) this.asAdmin().getEndStep()).addHasContainer(new HasContainer(propertyKey, predicate));
+            return this;
+        } else {
+            this.asAdmin().addStep(new HasStep(this.asAdmin(), new HasContainer(T.label.getAccessor(), P.eq(label))));
+            return this.asAdmin().addStep(new HasStep(this.asAdmin(), HasContainer.makeHasContainers(propertyKey, predicate)));
+        }
     }
 
     public default GraphTraversal<S, E> has(final String label, final String propertyKey, final Object value) {
         this.asAdmin().getBytecode().addStep(Symbols.has, label, propertyKey, value);
-        this.asAdmin().addStep(new HasStep(this.asAdmin(), HasContainer.makeHasContainers(T.label.getAccessor(), P.eq(label))));
-        return value instanceof P ?
-                this.asAdmin().addStep(new HasStep(this.asAdmin(), HasContainer.makeHasContainers(propertyKey, (P) value))) :
-                this.asAdmin().addStep(new HasStep(this.asAdmin(), HasContainer.makeHasContainers(propertyKey, P.eq(value))));
+        if (this.asAdmin().getEndStep() instanceof HasContainerHolder) {
+            ((HasContainerHolder) this.asAdmin().getEndStep()).addHasContainer(new HasContainer(T.label.getAccessor(), P.eq(label)));
+            ((HasContainerHolder) this.asAdmin().getEndStep()).addHasContainer(new HasContainer(propertyKey, value instanceof P ? (P) value : P.eq(value)));
+            return this;
+        } else {
+            this.asAdmin().addStep(new HasStep(this.asAdmin(), new HasContainer(T.label.getAccessor(), P.eq(label))));
+            return this.asAdmin().addStep(new HasStep(this.asAdmin(), HasContainer.makeHasContainers(propertyKey, value instanceof P ? (P) value : P.eq(value))));
+        }
     }
 
     public default GraphTraversal<S, E> has(final T accessor, final Traversal<?, ?> propertyTraversal) {
@@ -1014,9 +1041,7 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
      */
     public default GraphTraversal<S, E> is(final Object value) {
         this.asAdmin().getBytecode().addStep(Symbols.is, value);
-        return value instanceof P ?
-                this.asAdmin().addStep(new IsStep<>(this.asAdmin(), (P<E>) value)) :
-                this.asAdmin().addStep(new IsStep<>(this.asAdmin(), P.eq((E) value)));
+        return this.asAdmin().addStep(new IsStep<>(this.asAdmin(), value instanceof P ? (P<E>) value : P.eq((E) value)));
     }
 
     public default GraphTraversal<S, E> not(final Traversal<?, ?> notTraversal) {