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/15 22:07:48 UTC
incubator-tinkerpop git commit: No more P[]. Now there is AndP which
is a P. This makes the method signatures of has() and is() much simpler.
Moreover, IsStep is extremely simple.
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/master ef198085a -> d72666766
No more P[]. Now there is AndP which is a P. This makes the method signatures of has() and is() much simpler. Moreover, IsStep is extremely simple.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/d7266676
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/d7266676
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/d7266676
Branch: refs/heads/master
Commit: d72666766dc689e9cfef201b25eb3b87d37c901c
Parents: ef19808
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri May 15 14:07:28 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri May 15 14:07:41 2015 -0600
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
.../traversal/dsl/graph/GraphTraversal.java | 32 +++-----
.../gremlin/process/traversal/dsl/graph/__.java | 20 ++---
.../process/traversal/step/filter/HasStep.java | 2 +-
.../process/traversal/step/filter/IsStep.java | 25 ++----
.../traversal/step/util/HasContainer.java | 17 ++--
.../optimization/RangeByIsCountStrategy.java | 10 ++-
.../apache/tinkerpop/gremlin/structure/P.java | 39 ++++------
.../tinkerpop/gremlin/structure/util/AndP.java | 82 ++++++++++++++++++++
.../RangeByIsCountStrategyTest.java | 10 +--
.../step/filter/GroovyHasNotTest.groovy | 41 ----------
.../process/GroovyProcessComputerSuite.java | 50 ++++++++++--
.../process/GroovyProcessStandardSuite.java | 2 -
.../gremlin/process/ProcessComputerSuite.java | 51 ++++++++++--
.../gremlin/process/ProcessStandardSuite.java | 6 --
.../traversal/step/filter/HasNotTest.java | 79 -------------------
16 files changed, 235 insertions(+), 232 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d7266676/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 5285672..7a38c36 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -25,6 +25,7 @@ image::http://www.tinkerpop.com/docs/current/images/gremlin-hindu.png[width=225]
TinkerPop 3.0.0.M9 (NOT OFFICIALLY RELEASED YET)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+* Added `AndP` which allows for the `and()`-ing of `P` predicates.
* `Order.opposite()` is now `reversed()` as that is a `Comparator` interface method with the same semantics.
* `Compare/Contains/P.opposite()` are now `negate()` as that is a `BiPredicate` interface method with the same semantics.
* `has(traversal)` is replaced by `where(traversal)` and `has(key,traversal)`. `HasXXX` is always with respects to an element property.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d7266676/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 6414e7f..9139263 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
@@ -474,28 +474,24 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
return this.asAdmin().addStep(new HasTraversalStep(this.asAdmin(), key, hasNotNextTraversal.asAdmin(), true));
}
- public default GraphTraversal<S, E> has(final String key, final P<?> predicate, final P<?>... predicates) {
- return this.asAdmin().addStep(new HasStep(this.asAdmin(), HasContainer.makeHasContainers(key, predicate, predicates)));
+ public default GraphTraversal<S, E> has(final String key, final P<?> predicate) {
+ return this.asAdmin().addStep(new HasStep(this.asAdmin(), HasContainer.makeHasContainers(key, predicate)));
}
- public default GraphTraversal<S, E> has(final T accessor, final P<?> predicate, final P<?>... predicates) {
- return this.has(accessor.getAccessor(), predicate, predicates);
+ public default GraphTraversal<S, E> has(final T accessor, final P<?> predicate) {
+ return this.has(accessor.getAccessor(), predicate);
}
public default GraphTraversal<S, E> has(final String key, final Object value) {
- 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]);
+ return this.has(key, value instanceof P ? (P) value : P.eq(value));
}
public default GraphTraversal<S, E> has(final T accessor, final Object value) {
return this.has(accessor.getAccessor(), value);
}
- public default GraphTraversal<S, E> has(final String label, final String key, final P<?> predicate, final P<?>... predicates) {
- return this.has(T.label, label).has(key, predicate, predicates);
+ public default GraphTraversal<S, E> has(final String label, final String key, final P<?> predicate) {
+ return this.has(T.label, label).has(key, predicate);
}
public default GraphTraversal<S, E> has(final String label, final String key, final Object value) {
@@ -506,10 +502,6 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
return this.has(key, P.within());
}
- public default GraphTraversal<S, E> hasNot(final String key) {
- return this.has(key, P.without());
- }
-
public default GraphTraversal<S, E> hasLabel(final String... labels) {
return labels.length == 1 ? this.has(T.label, labels[0]) : this.has(T.label, P.within(labels));
}
@@ -526,16 +518,12 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
return values.length == 1 ? this.has(T.value, values[0]) : this.has(T.value, P.within(values));
}
- public default GraphTraversal<S, E> is(final P<E> predicate, final P<E>... predicates) {
- return this.asAdmin().addStep(new IsStep<>(this.asAdmin(), predicate, predicates));
+ public default GraphTraversal<S, E> is(final P<E> predicate) {
+ return this.asAdmin().addStep(new IsStep<>(this.asAdmin(), predicate));
}
public default GraphTraversal<S, E> is(final Object value) {
- if (value instanceof P[]) {
- final Pair<P, P[]> split = P.splitForAPI((P[]) value);
- return this.is(split.getValue0(), split.getValue1());
- } else
- 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));
}
public default GraphTraversal<S, E> coin(final double probability) {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d7266676/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
index 5658be3..da5c07d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
@@ -310,12 +310,12 @@ public class __ {
return __.<A>start().hasNot(key, hasNotNextTraversal);
}
- public static <A> GraphTraversal<A, A> has(final String key, final P<?> predicate, final P<?>... predicates) {
- return __.<A>start().has(key, predicate, predicates);
+ public static <A> GraphTraversal<A, A> has(final String key, final P<?> predicate) {
+ return __.<A>start().has(key, predicate);
}
- public static <A> GraphTraversal<A, A> has(final T accessor, final P<?> predicate, final P<?>... predicates) {
- return __.<A>start().has(accessor, predicate, predicates);
+ public static <A> GraphTraversal<A, A> has(final T accessor, final P<?> predicate) {
+ return __.<A>start().has(accessor, predicate);
}
public static <A> GraphTraversal<A, A> has(final String key, final Object value) {
@@ -330,18 +330,14 @@ public class __ {
return __.<A>start().has(label, key, value);
}
- public static <A> GraphTraversal<A, A> has(final String label, final String key, final P<?> predicate, final P<?>... predicates) {
- return __.<A>start().has(label, key, predicate, predicates);
+ public static <A> GraphTraversal<A, A> has(final String label, final String key, final P<?> predicate) {
+ return __.<A>start().has(label, key, predicate);
}
public static <A> GraphTraversal<A, A> has(final String key) {
return __.<A>start().has(key);
}
- public static <A> GraphTraversal<A, A> hasNot(final String key) {
- return __.<A>start().hasNot(key);
- }
-
public static <A> GraphTraversal<A, A> hasLabel(final String... labels) {
return __.<A>start().hasLabel(labels);
}
@@ -382,8 +378,8 @@ public class __ {
return __.<A>start().where(whereTraversal);
}
- public static <A> GraphTraversal<A, A> is(final P<A> predicate, final P<A>... predicates) {
- return __.<A>start().is(predicate, predicates);
+ public static <A> GraphTraversal<A, A> is(final P<A> predicate) {
+ return __.<A>start().is(predicate);
}
public static <A> GraphTraversal<A, A> is(final Object value) {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d7266676/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasStep.java
index c45ba04..184384b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasStep.java
@@ -34,7 +34,7 @@ import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public class HasStep<S extends Element> extends FilterStep<S> implements HasContainerHolder { // TODO: make final when graph strategies are fixed up
+public class HasStep<S extends Element> extends FilterStep<S> implements HasContainerHolder {
private final List<HasContainer> hasContainers;
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d7266676/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsStep.java
index 46223cc..4f7da24 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsStep.java
@@ -24,10 +24,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequire
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.apache.tinkerpop.gremlin.structure.P;
-import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
-import java.util.List;
import java.util.Set;
/**
@@ -35,29 +32,21 @@ import java.util.Set;
*/
public final class IsStep<S> extends FilterStep<S> {
- private final List<P<S>> predicates = new ArrayList<>();
- // todo: boolean isSizeOne for optimization
+ private final P<S> predicate;
- public IsStep(final Traversal.Admin traversal, final P<S> predicate, final P<S>... predicates) {
+ public IsStep(final Traversal.Admin traversal, final P<S> predicate) {
super(traversal);
- this.predicates.add(predicate);
- if (predicates.length > 0)
- this.predicates.addAll(Arrays.asList(predicates));
+ this.predicate = predicate;
}
@Override
protected boolean filter(final Traverser.Admin<S> traverser) {
- final S s = traverser.get();
- for (final P<S> predicate : this.predicates) {
- if (!predicate.test(s))
- return false;
- }
- return true;
+ return this.predicate.test(traverser.get());
}
@Override
public String toString() {
- return TraversalHelper.makeStepString(this, this.predicates);
+ return TraversalHelper.makeStepString(this, this.predicate);
}
@Override
@@ -65,7 +54,7 @@ public final class IsStep<S> extends FilterStep<S> {
return Collections.singleton(TraverserRequirement.OBJECT);
}
- public List<P<S>> getPredicates() {
- return this.predicates;
+ public P<S> getPredicate() {
+ return this.predicate;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d7266676/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 c95e776..0b47001 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
@@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.structure.Property;
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.structure.util.AndP;
import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
import java.io.Serializable;
@@ -118,14 +119,16 @@ 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());
- 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());
+ public static HasContainer[] makeHasContainers(final String key, final P<?> predicate) {
+ if (predicate instanceof AndP) {
+ final List<P<?>> predicates = ((AndP) predicate).getPredicates();
+ final HasContainer[] hasContainers = new HasContainer[predicates.size()];
+ for (int i = 0; i < predicates.size(); i++) {
+ hasContainers[i] = new HasContainer(key, predicates.get(i).getBiPredicate(), predicates.get(i).getValue());
}
+ return hasContainers;
+ } else {
+ return new HasContainer[]{new HasContainer(key, predicate.getBiPredicate(), predicate.getValue())};
}
- return hasContainers;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d7266676/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategy.java
index 8e0adf4..5b59d25 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategy.java
@@ -29,8 +29,14 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.apache.tinkerpop.gremlin.structure.Compare;
import org.apache.tinkerpop.gremlin.structure.Contains;
import org.apache.tinkerpop.gremlin.structure.P;
+import org.apache.tinkerpop.gremlin.structure.util.AndP;
-import java.util.*;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
import java.util.function.BiPredicate;
/**
@@ -71,7 +77,7 @@ public final class RangeByIsCountStrategy extends AbstractTraversalStrategy<Trav
if (next instanceof IsStep && !(prev instanceof RangeGlobalStep)) { // if a RangeStep was provided, assume that the user knows what he's doing
final IsStep isStep = (IsStep) next;
Long highRange = null;
- for (P p : (Iterable<P>) isStep.getPredicates()) {
+ for (P p : isStep.getPredicate() instanceof AndP ? ((AndP<?>) isStep.getPredicate()).getPredicates() : Collections.singletonList(isStep.getPredicate())) {
final Object value = p.getValue();
final BiPredicate predicate = p.getBiPredicate();
if (value instanceof Number) {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d7266676/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 6dd3fc9..f793159 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
@@ -23,7 +23,7 @@ package org.apache.tinkerpop.gremlin.structure;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.lambda.TraversalBiPredicate;
-import org.javatuples.Pair;
+import org.apache.tinkerpop.gremlin.structure.util.AndP;
import java.io.Serializable;
import java.util.Arrays;
@@ -79,6 +79,13 @@ public class P<V> implements Predicate<V>, Serializable {
return new P<>(this.biPredicate.negate(), this.value);
}
+ @Override
+ public P<V> and(final Predicate<? super V> predicate) {
+ if (!(predicate instanceof P))
+ throw new IllegalArgumentException("Only P predicates can be and'd together");
+ return new AndP<>(this, (P<V>) predicate);
+ }
+
//////////////// statics
public static <V> P<V> eq(final V value) {
@@ -105,16 +112,16 @@ public class P<V> implements Predicate<V>, Serializable {
return new P(Compare.gte, value);
}
- public static <V> P<V>[] inside(final V first, final V second) {
- return new P[]{new P(Compare.gt, first), new P(Compare.lt, second)};
+ public static <V> P<V> inside(final V first, final V second) {
+ return new AndP<>(new P(Compare.gt, first), new P(Compare.lt, second));
}
- public static <V> P<V>[] outside(final V first, final V second) {
- return new P[]{new P(Compare.lt, first), new P(Compare.gt, second)};
+ public static <V> P<V> outside(final V first, final V second) {
+ return new AndP<>(new P(Compare.lt, first), new P(Compare.gt, second));
}
- public static <V> P<V>[] between(final V first, final V second) {
- return new P[]{new P(Compare.gte, first), new P(Compare.lt, second)};
+ public static <V> P<V> between(final V first, final V second) {
+ return new AndP<>(new P(Compare.gte, first), new P(Compare.lt, second));
}
public static <V> P<V> within(final V... values) {
@@ -145,21 +152,7 @@ public class P<V> implements Predicate<V>, Serializable {
return new P(biPredicate, value);
}
- public static <V> P<V>[] not(final P<V> predicate, final P<V>... predicates) {
- final P[] temp = new P[predicates.length + 1];
- temp[0] = predicate.negate();
- for (int i = 1; i < predicates.length; i++) {
- temp[i] = predicates[i - 1].negate();
- }
- return temp;
- }
-
- public static Pair<P, P[]> splitForAPI(final P[] pArray) {
- if (pArray.length == 0)
- throw new IllegalArgumentException("The P[] is not splittable because 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));
+ public static <V> P<V> not(final P<V> predicate) {
+ return predicate.negate();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d7266676/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AndP.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AndP.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AndP.java
new file mode 100644
index 0000000..b096621
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AndP.java
@@ -0,0 +1,82 @@
+/*
+ *
+ * * Licensed to the Apache Software Foundation (ASF) under one
+ * * or more contributor license agreements. See the NOTICE file
+ * * distributed with this work for additional information
+ * * regarding copyright ownership. The ASF licenses this file
+ * * to you under the Apache License, Version 2.0 (the
+ * * "License"); you may not use this file except in compliance
+ * * with the License. You may obtain a copy of the License at
+ * *
+ * * http://www.apache.org/licenses/LICENSE-2.0
+ * *
+ * * Unless required by applicable law or agreed to in writing,
+ * * software distributed under the License is distributed on an
+ * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * * KIND, either express or implied. See the License for the
+ * * specific language governing permissions and limitations
+ * * under the License.
+ *
+ */
+
+package org.apache.tinkerpop.gremlin.structure.util;
+
+import org.apache.tinkerpop.gremlin.structure.P;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.function.Predicate;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class AndP<V> extends P<V> {
+
+ private List<P<V>> predicates;
+
+ public AndP(final P<V> predicate, final P<V>... predicates) {
+ super(null, null);
+ this.predicates = new ArrayList<>();
+ this.predicates.add(predicate);
+ for (final P<V> p : predicates) {
+ this.predicates.add(p);
+ }
+ }
+
+ public List<P<V>> getPredicates() {
+ return Collections.unmodifiableList(this.predicates);
+ }
+
+ public void addPredicate(final P<V> predicate) {
+ this.predicates.add(predicate);
+ }
+
+ @Override
+ public boolean test(final V v) {
+ for (final P<V> predicate : this.predicates) {
+ if (!predicate.test(v))
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public P<V> and(final Predicate<? super V> predicate) {
+ if (!(predicate instanceof P))
+ throw new IllegalArgumentException("Only P predicates can be and'd together");
+ this.predicates.add((P<V>) predicate);
+ return this;
+ }
+
+ @Override
+ public P<V> negate() {
+ final List<P<V>> negated = new ArrayList<>();
+ for (final P<V> predicate : this.predicates) {
+ negated.add(predicate.negate());
+ }
+ this.predicates = negated;
+ return this;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d7266676/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategyTest.java
index 5d47d6d..a18b622 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategyTest.java
@@ -22,12 +22,10 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasTraversalStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeGlobalStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereStep;
import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.structure.P;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
@@ -148,12 +146,8 @@ public class RangeByIsCountStrategyTest {
public void doTest(final Object predicate, final long expectedHighRange) {
final AtomicInteger counter = new AtomicInteger(0);
- final Traversal traversal;
- if (predicate instanceof P[]) {
- traversal = __.out().count().is(((P[])predicate)[0],(P[])predicate);
- } else {
- traversal = __.out().count().is(predicate);
- }
+ final Traversal traversal = __.out().count().is(predicate);
+
applyRangeByIsCountStrategy(traversal);
final List<RangeGlobalStep> steps = TraversalHelper.getStepsOfClass(RangeGlobalStep.class, traversal.asAdmin());
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d7266676/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasNotTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasNotTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasNotTest.groovy
deleted file mode 100644
index 345a2df..0000000
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasNotTest.groovy
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.filter
-
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.structure.Vertex
-
-/**
- * @author Joshua Shinavier (http://fortytwo.net)
- */
-public abstract class GroovyHasNotTest {
-
- public static class Traversals extends HasNotTest {
- @Override
- public Traversal<Vertex, Vertex> get_g_VX1X_hasNotXprop(final Object v1Id, final String propertyKey) {
- TraversalScriptHelper.compute("g.V(v1Id).hasNot('${propertyKey}')", g, "v1Id", v1Id);
- }
-
- @Override
- public Traversal<Vertex, Vertex> get_g_V_hasNotXprop(final String propertyKey) {
- TraversalScriptHelper.compute("g.V.hasNot('${propertyKey}')", g);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d7266676/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
index 5e3df10..a4ee9e7 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
@@ -24,10 +24,51 @@ import org.apache.tinkerpop.gremlin.groovy.loaders.SugarLoader;
import org.apache.tinkerpop.gremlin.groovy.util.SugarTestHelper;
import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
import org.apache.tinkerpop.gremlin.process.computer.ranking.PageRankVertexProgramTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.branch.*;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.*;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.*;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.*;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyBranchTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyChooseTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyLocalTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyRepeatTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyUnionTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyAndTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyCoinTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyCyclicPathTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyDedupTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyFilterTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyHasTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyIsTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyOrTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyRangeTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovySampleTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovySimplePathTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyWhereTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyAddEdgeTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCoalesceTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyFoldTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMapTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMaxTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMeanTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMinTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyOrderTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyPathTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyPropertiesTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovySelectTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovySumTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyUnfoldTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyValueMapTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyVertexTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyAggregateTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupCountTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyInjectTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyProfileTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovySackTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovySideEffectCapTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovySideEffectTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyStoreTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovySubgraphTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyTreeTest;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.structure.StructureStandardSuite;
import org.junit.runners.model.InitializationError;
@@ -65,7 +106,6 @@ public class GroovyProcessComputerSuite extends ProcessComputerSuite {
GroovyCyclicPathTest.Traversals.class,
GroovyDedupTest.Traversals.class,
GroovyFilterTest.Traversals.class,
- GroovyHasNotTest.Traversals.class,
GroovyHasTest.Traversals.class,
GroovyIsTest.Traversals.class,
GroovyOrTest.Traversals.class,
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d7266676/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
index b67d6e1..a12ee68 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
@@ -35,7 +35,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyCyclicPa
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyDedupTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyDropTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyFilterTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyHasNotTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyHasTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyIsTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.GroovyOrTest;
@@ -106,7 +105,6 @@ public class GroovyProcessStandardSuite extends ProcessStandardSuite {
GroovyDedupTest.Traversals.class,
GroovyDropTest.Traversals.class,
GroovyFilterTest.Traversals.class,
- GroovyHasNotTest.Traversals.class,
GroovyHasTest.Traversals.class,
GroovyIsTest.Traversals.class,
GroovyOrTest.Traversals.class,
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d7266676/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
index 64b8c4d..85a92d4 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
@@ -23,10 +23,51 @@ import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
import org.apache.tinkerpop.gremlin.process.computer.GraphComputerTest;
import org.apache.tinkerpop.gremlin.process.computer.ranking.PageRankVertexProgramTest;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.step.branch.*;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.*;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.*;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.*;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.BranchTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.ChooseTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.LocalTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.UnionTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.AndTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.CoinTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.CyclicPathTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DedupTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.IsTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.OrTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.SampleTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.SimplePathTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.CoalesceTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.FoldTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MapTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MaxTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MeanTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MinTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PathTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SumTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.UnfoldTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.ValueMapTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AggregateTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupCountTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SackTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectCapTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StoreTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SubgraphTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.TreeTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategyProcessTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategyProcessTest;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategyProcessTest;
@@ -69,7 +110,6 @@ public class ProcessComputerSuite extends AbstractGremlinSuite {
CyclicPathTest.Traversals.class,
DedupTest.Traversals.class,
FilterTest.Traversals.class,
- HasNotTest.Traversals.class,
HasTest.Traversals.class,
IsTest.Traversals.class,
OrTest.Traversals.class,
@@ -138,7 +178,6 @@ public class ProcessComputerSuite extends AbstractGremlinSuite {
CyclicPathTest.class,
DedupTest.class,
FilterTest.class,
- HasNotTest.class,
HasTest.class,
IsTest.class,
OrTest.class,
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d7266676/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
index 763a4bc..4fa12c1 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
@@ -19,7 +19,6 @@
package org.apache.tinkerpop.gremlin.process;
import org.apache.tinkerpop.gremlin.AbstractGremlinSuite;
-import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
import org.apache.tinkerpop.gremlin.process.traversal.CoreTraversalTest;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffectsTest;
@@ -34,7 +33,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.CyclicPathTest
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DedupTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DropTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasNotTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.IsTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.OrTest;
@@ -81,8 +79,6 @@ import org.apache.tinkerpop.gremlin.structure.StructureStandardSuite;
import org.junit.runners.model.InitializationError;
import org.junit.runners.model.RunnerBuilder;
-import java.util.stream.Stream;
-
/**
* The {@code ProcessStandardSuite} is a JUnit test runner that executes the Gremlin Test Suite over a
* {@link Graph} implementation. This test suite covers traversal operations and should be implemented by vendors
@@ -112,7 +108,6 @@ public class ProcessStandardSuite extends AbstractGremlinSuite {
DedupTest.Traversals.class,
DropTest.Traversals.class,
FilterTest.Traversals.class,
- HasNotTest.Traversals.class,
HasTest.Traversals.class,
IsTest.Traversals.class,
OrTest.Traversals.class,
@@ -193,7 +188,6 @@ public class ProcessStandardSuite extends AbstractGremlinSuite {
DedupTest.class,
DropTest.class,
FilterTest.class,
- HasNotTest.class,
HasTest.class,
IsTest.class,
OrTest.class,
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d7266676/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasNotTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasNotTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasNotTest.java
deleted file mode 100644
index ff87ce4..0000000
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasNotTest.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
-
-import org.apache.tinkerpop.gremlin.LoadGraphWith;
-import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
-import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.List;
-
-import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-/**
- * @author Joshua Shinavier (http://fortytwo.net)
- */
-@RunWith(GremlinProcessRunner.class)
-public abstract class HasNotTest extends AbstractGremlinProcessTest {
-
- public abstract Traversal<Vertex, Vertex> get_g_VX1X_hasNotXprop(final Object v1Id, final String propertyKey);
-
- public abstract Traversal<Vertex, Vertex> get_g_V_hasNotXprop(final String propertyKey);
-
- @Test
- @LoadGraphWith(MODERN)
- public void g_VX1X_hasNotXprop() {
- Traversal<Vertex, Vertex> traversal = get_g_VX1X_hasNotXprop(convertToVertexId("marko"), "circumference");
- printTraversalForm(traversal);
- assertEquals("marko", traversal.next().<String>value("name"));
- assertFalse(traversal.hasNext());
- traversal = get_g_VX1X_hasNotXprop(convertToVertexId("marko"), "name");
- printTraversalForm(traversal);
- assertFalse(traversal.hasNext());
- }
-
- @Test
- @LoadGraphWith(MODERN)
- public void g_V_hasNotXprop() {
- final Traversal<Vertex, Vertex> traversal = get_g_V_hasNotXprop("circumference");
- printTraversalForm(traversal);
- final List<Vertex> list = traversal.toList();
- assertEquals(6, list.size());
- }
-
-
- public static class Traversals extends HasNotTest {
-
- @Override
- public Traversal<Vertex, Vertex> get_g_VX1X_hasNotXprop(final Object v1Id, final String propertyKey) {
- return g.V(v1Id).hasNot(propertyKey);
- }
-
- @Override
- public Traversal<Vertex, Vertex> get_g_V_hasNotXprop(final String propertyKey) {
- return g.V().hasNot(propertyKey);
- }
- }
-}
\ No newline at end of file