Repository: tinkerpop
Updated Branches:
  refs/heads/master 4030a7156 -> 20d2cbd48


fixed a bug in until(predicate) which was actually calling emit(predicate). 
Added a test case to verify bug and demonstrate that fix fixes bug.


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

Branch: refs/heads/master
Commit: 8695b15c1c91411465b8416fec20b628b7fba045
Parents: 8812f85
Author: Marko A. Rodriguez <okramma...@gmail.com>
Authored: Fri May 26 08:27:00 2017 -0600
Committer: Marko A. Rodriguez <okramma...@gmail.com>
Committed: Fri May 26 08:27:00 2017 -0600

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../traversal/dsl/graph/GraphTraversal.java     |  2 +-
 .../step/branch/GroovyRepeatTest.groovy         |  7 +++++++
 .../traversal/step/branch/RepeatTest.java       | 22 ++++++++++++++++++++
 4 files changed, 31 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8695b15c/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 31a4064..3380dad 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,7 @@ 
image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 TinkerPop 3.2.5 (Release Date: NOT OFFICIALLY RELEASED YET)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+* Fixed a bug in `until(predicate)` where it was actually calling 
`emit(predicate)`.
 * Improved error messaging on the `g.addV(Object...)` when passing an invalid 
arguments.
 * Reduced memory usage for TinkerGraph deserialization in GraphSON by 
streaming vertices and edges.
 * Now using Groovy `[...]` map notation in `GroovyTranslator` instead of `new 
LinkedHashMap(){{ }}`.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8695b15c/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 afa23d7..29412b8 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
@@ -2335,7 +2335,7 @@ public interface GraphTraversal<S, E> extends 
Traversal<S, E> {
      */
     public default GraphTraversal<S, E> until(final Predicate<Traverser<E>> 
untilPredicate) {
         this.asAdmin().getBytecode().addStep(Symbols.until, untilPredicate);
-        return RepeatStep.addEmitToTraversal(this, (Traversal.Admin<E, ?>) 
__.filter(untilPredicate));
+        return RepeatStep.addUntilToTraversal(this, (Traversal.Admin<E, ?>) 
__.filter(untilPredicate));
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8695b15c/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
----------------------------------------------------------------------
diff --git 
a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
 
b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
index 88dce37..b45c191 100644
--- 
a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
+++ 
b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
@@ -23,6 +23,8 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.both
+
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
@@ -90,5 +92,10 @@ public abstract class GroovyRepeatTest {
                 final Object v1Id) {
             new ScriptTraversal<>(g, "gremlin-groovy", 
"g.V(v1Id).repeat(groupCount('m').by(loops()).out()).times(3).cap('m')", 
"v1Id", v1Id)
         }
+
+        @Override
+        public Traversal<Vertex, Map<String, Long>> 
get_g_V_repeatXbothX_untilXname_eq_marko_or_loops_gt_1X_groupCount_byXnameX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", 
"g.V.repeat(both()).until{it.get().value('name').equals('lop') || it.loops() > 
1}.groupCount.by('name')")
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8695b15c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
index 56acd2b..90d7d07 100644
--- 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
+++ 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
@@ -87,6 +87,8 @@ public abstract class RepeatTest extends 
AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, String> 
get_g_VX1X_repeatXoutX_untilXoutE_count_isX0XX_name(final Object v1Id);
 
+    public abstract Traversal<Vertex, Map<String, Long>> 
get_g_V_repeatXbothX_untilXname_eq_marko_or_loops_gt_1X_groupCount_byXnameX();
+
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_repeatXoutX_timesX2X_emit_path() {
@@ -259,6 +261,21 @@ public abstract class RepeatTest extends 
AbstractGremlinProcessTest {
         assertEquals(2L, map.get(2).longValue());
     }
 
+    @Test
+    @LoadGraphWith(MODERN)
+    public void 
g_V_repeatXbothX_untilXname_eq_marko_or_loops_gt_1X_groupCount_byXnameX() {
+        final Traversal<Vertex, Map<String, Long>> traversal = 
get_g_V_repeatXbothX_untilXname_eq_marko_or_loops_gt_1X_groupCount_byXnameX();
+        printTraversalForm(traversal);
+        final Map<String, Long> map = traversal.next();
+        assertFalse(traversal.hasNext());
+        assertEquals(5, map.size());
+        assertEquals(3L, map.get("ripple").longValue());
+        assertEquals(3L, map.get("vadas").longValue());
+        assertEquals(4L, map.get("josh").longValue());
+        assertEquals(10L, map.get("lop").longValue());
+        assertEquals(4L, map.get("marko").longValue());
+    }
+
     public static class Traversals extends RepeatTest {
 
         @Override
@@ -320,5 +337,10 @@ public abstract class RepeatTest extends 
AbstractGremlinProcessTest {
         public Traversal<Vertex, Map<Integer, Long>> 
get_g_VX1X_repeatXgroupCountXmX_byXloopsX_outX_timesX3X_capXmX(final Object 
v1Id) {
             return 
g.V(v1Id).repeat(groupCount("m").by(loops()).out()).times(3).cap("m");
         }
+
+        @Override
+        public Traversal<Vertex, Map<String, Long>> 
get_g_V_repeatXbothX_untilXname_eq_marko_or_loops_gt_1X_groupCount_byXnameX() {
+            return g.V().repeat(both()).until(t -> 
t.get().value("name").equals("lop") || t.loops() > 
1).<String>groupCount().by("name");
+        }
     }
 }
\ No newline at end of file

Reply via email to