TINKERPOP-1670 Maintain Traversal type information in promise()

Adds start and end step generic type information in the Traversal type
that is input to the Function given to Traversal.promise().

Also updates test to use full type information to ensure this change
maintains the type information.


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

Branch: refs/heads/TINKERPOP-786
Commit: 3de9423a5ce2644affbbe4d84bf4815a191fe0b4
Parents: f228c91
Author: Andrew Tolbert <[email protected]>
Authored: Wed Apr 26 12:54:00 2017 -0500
Committer: Stephen Mallette <[email protected]>
Committed: Mon May 8 14:36:31 2017 -0400

----------------------------------------------------------------------
 .../tinkerpop/gremlin/process/traversal/Traversal.java       | 2 +-
 .../tinkerpop/gremlin/server/GremlinServerIntegrateTest.java | 8 +++++---
 2 files changed, 6 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3de9423a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
index 988e4ea..c085dc7 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
@@ -149,7 +149,7 @@ public interface Traversal<S, E> extends Iterator<E>, 
Serializable, Cloneable, A
      * {@link TraversalSource#withRemote(Configuration)}. Calling this method 
otherwise will yield an
      * {@code IllegalStateException}.
      */
-    public default <T> CompletableFuture<T> promise(final Function<Traversal, 
T> traversalFunction) {
+    public default <T> CompletableFuture<T> promise(final 
Function<Traversal<S,E>, T> traversalFunction) {
         // apply strategies to see if RemoteStrategy has any effect (i.e. add 
RemoteStep)
         if (!this.asAdmin().isLocked()) this.asAdmin().applyStrategies();
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3de9423a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
 
b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
index 9c3ba66..96ec17c 100644
--- 
a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
+++ 
b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
@@ -57,6 +57,7 @@ import 
org.apache.tinkerpop.gremlin.server.op.standard.StandardOpProcessor;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.server.channel.NioChannelizer;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
 import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
 import org.apache.tinkerpop.gremlin.util.Log4jRecordingAppender;
@@ -1150,9 +1151,10 @@ public class GremlinServerIntegrateTest extends 
AbstractGremlinServerIntegration
         assertEquals(50L, 
g.V().hasLabel("person").map(Lambda.function("it.get().value('age') + 
10")).sum().promise(t -> t.next()).join());
         g.addV("person").property("age", 
20).promise(Traversal::iterate).join();
 
-        final Traversal traversal = g.V().hasLabel("person").has("age", 
20).values("age");
-        assertEquals(20, traversal.promise(t -> ((Traversal) 
t).next(1).get(0)).join());
-        assertEquals(20, traversal.next());
+        final Traversal<Vertex,Integer> traversal = 
g.V().hasLabel("person").has("age", 20).values("age");
+        int age = traversal.promise(t -> t.next(1).get(0)).join();
+        assertEquals(20, age);
+        assertEquals(20, (int)traversal.next());
         assertThat(traversal.hasNext(), is(false));
 
         final Traversal traversalCloned = g.V().hasLabel("person").has("age", 
20).values("age");

Reply via email to