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));
+ }
}