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/08 23:17:22 UTC

incubator-tinkerpop git commit: fixed a bug in GraphTraversal API around ambiguous method call.

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/master 81d348d8c -> ab407da9e


fixed a bug in GraphTraversal API around ambiguous method call.


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

Branch: refs/heads/master
Commit: ab407da9e0f87b9306e786bd8e521d2036844836
Parents: 81d348d
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri May 8 15:17:08 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri May 8 15:17:08 2015 -0600

----------------------------------------------------------------------
 .../process/traversal/dsl/graph/GraphTraversal.java      | 11 ++++++++---
 .../process/traversal/step/util/HasContainer.java        |  6 ++++--
 .../java/org/apache/tinkerpop/gremlin/structure/P.java   | 11 +++++++++++
 3 files changed, 23 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ab407da9/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 665c028..4b866aa 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
@@ -129,6 +129,7 @@ import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
+import org.javatuples.Pair;
 
 import java.util.Arrays;
 import java.util.Collection;
@@ -488,7 +489,11 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
     }
 
     public default GraphTraversal<S, E> has(final String key, final Object value) {
-        return this.has(key, value instanceof P ? (P) value : P.eq(value), new P[0]);
+        if (value instanceof P[]) {
+            final Pair<P, P[]> split = P.splitForAPI((P[]) value);
+            return this.has(key, split.getValue0(), split.getValue1());
+        } else
+            return this.has(key, value instanceof P ? (P) value : P.eq(value), new P[0]);
     }
 
     public default GraphTraversal<S, E> has(final T accessor, final Object value) {
@@ -500,7 +505,7 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
     }
 
     public default GraphTraversal<S, E> has(final String label, final String key, final Object value) {
-        return this.has(label, key, value instanceof P ? (P) value : P.eq(value), new P[0]);
+        return this.has(T.label, label).has(key, value);
     }
 
     public default GraphTraversal<S, E> has(final String key) {
@@ -532,7 +537,7 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
     }
 
     public default GraphTraversal<S, E> is(final Object value) {
-        return this.is(value instanceof P ? (P<E>) value : P.eq((E)value), new P[0]);
+        return this.is(value instanceof P ? (P<E>) value : P.eq((E) value), new P[0]);
     }
 
     public default GraphTraversal<S, E> coin(final double probability) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ab407da9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
index 215acc2..c95e776 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
@@ -121,8 +121,10 @@ public final class HasContainer implements Serializable {
     public static HasContainer[] makeHasContainers(final String key, final P<?> predicate, final P<?>... predicates) {
         final HasContainer[] hasContainers = new HasContainer[predicates.length + 1];
         hasContainers[0] = new HasContainer(key, predicate.getBiPredicate(), predicate.getValue());
-        for (int i = 1; i < predicates.length + 1; i++) {
-            hasContainers[i] = new HasContainer(key, predicates[i].getBiPredicate(), predicates[i].getValue());
+        if (predicates.length > 0) {
+            for (int i = 1; i < predicates.length + 1; i++) {
+                hasContainers[i] = new HasContainer(key, predicates[i-1].getBiPredicate(), predicates[i-1].getValue());
+            }
         }
         return hasContainers;
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/ab407da9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
index a745cbd..fac60ee 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
@@ -21,6 +21,8 @@
 
 package org.apache.tinkerpop.gremlin.structure;
 
+import org.javatuples.Pair;
+
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Collection;
@@ -127,4 +129,13 @@ public class P<V> implements Predicate<V>, Serializable {
     public static P test(final BiPredicate biPredicate, final Object value) {
         return new P(biPredicate, value);
     }
+
+    public static Pair<P, P[]> splitForAPI(final P[] pArray) {
+        if (pArray.length == 0)
+            throw new IllegalArgumentException("The P[] is not splittable cause its length is 0: " + pArray);
+        else if (pArray.length == 1)
+            return new Pair<>(pArray[0], new P[0]);
+        else
+            return new Pair<>(pArray[0], Arrays.copyOfRange(pArray, 1, pArray.length));
+    }
 }