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