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/11/23 23:27:30 UTC
incubator-tinkerpop git commit: added support for order().by('age').
If you don't provide a Comparator, Order.incr is assumed. Thus,
no more error message about OrderGlobalStep.addComparator(). Also,
the test case I added demonstrated that TINKERPOP3-979
Repository: incubator-tinkerpop
Updated Branches:
refs/heads/TINKERPOP3-941 [created] 5231a7195
added support for order().by('age'). If you don't provide a Comparator, Order.incr is assumed. Thus, no more error message about OrderGlobalStep.addComparator(). Also, the test case I added demonstrated that TINKERPOP3-979 passes with Spark... uh...thus, the ticket is invalid. I don't know what caused the Spark error I got. Will close that ticket.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/5231a719
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/5231a719
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/5231a719
Branch: refs/heads/TINKERPOP3-941
Commit: 5231a7195fc8bdcecff89e7c4e965cf173883c65
Parents: e946d69
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Nov 23 15:27:21 2015 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Nov 23 15:27:21 2015 -0700
----------------------------------------------------------------------
.../traversal/step/map/OrderGlobalStep.java | 10 ++----
.../traversal/step/map/OrderLocalStep.java | 17 ++++++++--
.../traversal/step/map/GroovyOrderTest.groovy | 10 ++++++
.../process/traversal/step/map/OrderTest.java | 34 ++++++++++++++++++++
4 files changed, 61 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5231a719/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
index 55aaf6e..e7101c2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStep.java
@@ -95,7 +95,7 @@ public final class OrderGlobalStep<S> extends CollectingBarrierStep<S> implement
@Override
public void addLocalChild(final Traversal.Admin<?, ?> localChildTraversal) {
- throw new UnsupportedOperationException("Use OrderGlobalStep.addComparator(" + TraversalComparator.class.getSimpleName() + ") to add a local child traversal:" + this);
+ this.addComparator(new TraversalComparator<>((Traversal.Admin) localChildTraversal, Order.incr));
}
@Override
@@ -103,17 +103,11 @@ public final class OrderGlobalStep<S> extends CollectingBarrierStep<S> implement
final OrderGlobalStep<S> clone = (OrderGlobalStep<S>) super.clone();
clone.comparators = new ArrayList<>();
for (final Comparator<S> comparator : this.comparators) {
- if (comparator instanceof TraversalComparator) {
- final TraversalComparator<S, ?> clonedTraversalComparator = ((TraversalComparator<S, ?>) comparator).clone();
- clone.integrateChild(clonedTraversalComparator.getTraversal());
- clone.comparators.add(clonedTraversalComparator);
- } else
- clone.comparators.add(comparator);
+ clone.addComparator(comparator instanceof TraversalComparator ? ((TraversalComparator) comparator).clone() : comparator);
}
return clone;
}
-
/////
private static class ComparatorTraverser<S> implements Comparator<Traverser<S>>, Serializable {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5231a719/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java
index 0ea9af2..a39d6da 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java
@@ -18,6 +18,7 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.step.map;
+import org.apache.tinkerpop.gremlin.process.traversal.Order;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.step.ComparatorHolder;
@@ -41,7 +42,7 @@ import java.util.stream.Collectors;
*/
public final class OrderLocalStep<S, M> extends MapStep<S, S> implements ComparatorHolder<M>, TraversalParent {
- private final List<Comparator<M>> comparators = new ArrayList<>();
+ private List<Comparator<M>> comparators = new ArrayList<>();
private Comparator<M> chainedComparator = null;
public OrderLocalStep(final Traversal.Admin traversal) {
@@ -62,6 +63,8 @@ public final class OrderLocalStep<S, M> extends MapStep<S, S> implements Compara
@Override
public void addComparator(final Comparator<M> comparator) {
this.comparators.add(comparator);
+ if (comparator instanceof TraversalComparator)
+ this.integrateChild(((TraversalComparator) comparator).getTraversal());
this.chainedComparator = this.comparators.stream().reduce((a, b) -> a.thenComparing(b)).get();
}
@@ -99,7 +102,17 @@ public final class OrderLocalStep<S, M> extends MapStep<S, S> implements Compara
@Override
public void addLocalChild(final Traversal.Admin<?, ?> localChildTraversal) {
- throw new UnsupportedOperationException("Use OrderLocalStep.addComparator(" + TraversalComparator.class.getSimpleName() + ") to add a local child traversal:" + this);
+ this.addComparator(new TraversalComparator<>((Traversal.Admin) localChildTraversal, Order.incr));
+ }
+
+ @Override
+ public OrderLocalStep<S,M> clone() {
+ final OrderLocalStep<S,M> clone = (OrderLocalStep<S,M>) super.clone();
+ clone.comparators = new ArrayList<>();
+ for(final Comparator<M> comparator : this.comparators) {
+ clone.addComparator(comparator instanceof TraversalComparator ? ((TraversalComparator) comparator).clone() : comparator);
+ }
+ return clone;
}
/////////////
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5231a719/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy
index 4b1168f..e9463bc 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy
@@ -96,5 +96,15 @@ public abstract class GroovyOrderTest {
public Traversal<Vertex, Map<String, Object>> get_g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_decrX() {
TraversalScriptHelper.compute("g.V.as('v').map(__.bothE.weight.fold).sum(local).as('s').select('v', 's').order.by(select('s'),decr)", g);
}
+
+ @Override
+ public Traversal<Vertex, Vertex> get_g_V_hasLabelXpersonX_order_byXageX() {
+ TraversalScriptHelper.compute("g.V.hasLabel('person').order.by('age')", g);
+ }
+
+ @Override
+ public Traversal<Vertex, List<Vertex>> get_g_V_hasLabelXpersonX_fold_orderXlocalX_byXageX() {
+ TraversalScriptHelper.compute("g.V.hasLabel('person').fold.order(local).by('age')", g)
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5231a719/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
index cb0674d..2eec7ac 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
@@ -74,6 +74,10 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Map<String, Object>> get_g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_decrX();
+ public abstract Traversal<Vertex, Vertex> get_g_V_hasLabelXpersonX_order_byXageX();
+
+ public abstract Traversal<Vertex, List<Vertex>> get_g_V_hasLabelXpersonX_fold_orderXlocalX_byXageX();
+
@Test
@LoadGraphWith(MODERN)
public void g_V_name_order() {
@@ -291,6 +295,26 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
assertEquals(0.2d, (Double) list.get(5).get("s"), 0.1d);
}
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_hasLabelXpersonX_order_byXageX() {
+ final Traversal<Vertex, Vertex> traversal = get_g_V_hasLabelXpersonX_order_byXageX();
+ printTraversalForm(traversal);
+ checkResults(Arrays.asList(convertToVertex(graph, "vadas"), convertToVertex(graph, "marko"), convertToVertex(graph, "josh"), convertToVertex(graph, "peter")), traversal);
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_hasLabelXpersonX_fold_orderXlocalX_byXageX() {
+ final Traversal<Vertex, List<Vertex>> traversal = get_g_V_hasLabelXpersonX_fold_orderXlocalX_byXageX();
+ printTraversalForm(traversal);
+ final List<Vertex> list = traversal.next();
+ assertEquals(convertToVertex(graph, "vadas"), list.get(0));
+ assertEquals(convertToVertex(graph, "marko"), list.get(1));
+ assertEquals(convertToVertex(graph, "josh"), list.get(2));
+ assertEquals(convertToVertex(graph, "peter"), list.get(3));
+ }
+
public static class Traversals extends OrderTest {
@Override
@@ -361,5 +385,15 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
public Traversal<Vertex, Map<String, Object>> get_g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_decrX() {
return g.V().as("v").map(__.bothE().<Double>values("weight").fold()).sum(Scope.local).as("s").select("v", "s").order().by(__.select("s"), Order.decr);
}
+
+ @Override
+ public Traversal<Vertex, Vertex> get_g_V_hasLabelXpersonX_order_byXageX() {
+ return g.V().hasLabel("person").order().by("age");
+ }
+
+ @Override
+ public Traversal<Vertex, List<Vertex>> get_g_V_hasLabelXpersonX_fold_orderXlocalX_byXageX() {
+ return g.V().hasLabel("person").fold().order(Scope.local).by("age");
+ }
}
}