You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2016/08/27 00:54:37 UTC
[22/50] [abbrv] tinkerpop git commit: Added "set" as an option to
aggregateTo
Added "set" as an option to aggregateTo
This allowed more tests to pass when using GraphSON 2.0 with the java driver
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/711d2401
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/711d2401
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/711d2401
Branch: refs/heads/master
Commit: 711d24017773106f6d6c415897009ba289f2cce3
Parents: d299cbc
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Aug 25 11:45:19 2016 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Aug 25 11:45:19 2016 -0400
----------------------------------------------------------------------
docs/src/dev/provider/index.asciidoc | 2 +-
.../tinkerpop/gremlin/driver/ResultQueue.java | 7 ++++++
.../apache/tinkerpop/gremlin/driver/Tokens.java | 1 +
.../DriverRemoteTraversalSideEffects.java | 6 ++++-
.../gremlin/driver/ResultQueueTest.java | 25 ++++++++++++++++++++
.../gremlin/server/util/SideEffectIterator.java | 3 +++
.../driver/remote/RemoteGraphProvider.java | 4 ++++
.../gremlin/server/ServerTestHelper.java | 3 ---
8 files changed, 46 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/711d2401/docs/src/dev/provider/index.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/provider/index.asciidoc b/docs/src/dev/provider/index.asciidoc
index aaa039f..09dd9fb 100644
--- a/docs/src/dev/provider/index.asciidoc
+++ b/docs/src/dev/provider/index.asciidoc
@@ -1013,7 +1013,7 @@ When using "gather" it is important to note the metadata that is returned on the
"sideEffectKey" that was requested as well as a value keyed as "aggregateTo". The "aggregateTo" field describes how the
streamed side-effect data should be treated on the client. It provides a hint as to whether or not the data should be
rolled back up into a single object or simply left as-is. There are four values for "aggregateTo": `bulkset`, `list`,
-`map` and `none`.
+`map`, `set` and `none`.
'`keys` operation arguments'
[width="100%",cols="2,2,9",options="header"]
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/711d2401/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ResultQueue.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ResultQueue.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ResultQueue.java
index dcde3fe..d47810c 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ResultQueue.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ResultQueue.java
@@ -27,9 +27,11 @@ import org.javatuples.Pair;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Queue;
+import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.LinkedBlockingQueue;
@@ -95,6 +97,11 @@ final class ResultQueue {
final List<Object> list = validate(aggregateTo, List.class);
list.add(sideEffectValue);
break;
+ case Tokens.VAL_AGGREGATE_TO_SET:
+ if (null == aggregatedResult) aggregatedResult = new HashSet();
+ final Set<Object> set = validate(aggregateTo, Set.class);
+ set.add(sideEffectValue);
+ break;
case Tokens.VAL_AGGREGATE_TO_MAP:
if (!(sideEffectValue instanceof Map.Entry) && !(sideEffectValue instanceof Map))
throw new IllegalStateException(String.format("Side-effect value %s is a %s which does not aggregate to %s",
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/711d2401/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Tokens.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Tokens.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Tokens.java
index 2d0f192..25c79af 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Tokens.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Tokens.java
@@ -151,6 +151,7 @@ public final class Tokens {
public static final String VAL_AGGREGATE_TO_LIST = "list";
public static final String VAL_AGGREGATE_TO_MAP = "map";
public static final String VAL_AGGREGATE_TO_NONE = "none";
+ public static final String VAL_AGGREGATE_TO_SET = "set";
public static final String VAL_TRAVERSAL_SOURCE_ALIAS = "g";
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/711d2401/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
index d8adcc6..bd51e67 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteTraversalSideEffects.java
@@ -65,7 +65,11 @@ public class DriverRemoteTraversalSideEffects extends AbstractRemoteTraversalSid
final Result result = client.submitAsync(msg).get().one();
sideEffects.put(key, null == result ? null : result.getObject());
} catch (Exception ex) {
- throw new RuntimeException("Could not get cache value", ex);
+ final Throwable root = ExceptionUtils.getRootCause(ex);
+ if (root.getMessage().equals("Could not find side-effects for " + serverSideEffect + "."))
+ sideEffects.put(key, null);
+ else
+ throw new RuntimeException("Could not get keys", root);
}
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/711d2401/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultQueueTest.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultQueueTest.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultQueueTest.java
index c96d832..67bbc48 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultQueueTest.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultQueueTest.java
@@ -25,8 +25,10 @@ import org.junit.Test;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -339,6 +341,29 @@ public class ResultQueueTest extends AbstractResultQueueTest {
}
@Test
+ public void shouldHandleSetSideEffects() throws Exception {
+ final CompletableFuture<List<Result>> o = resultQueue.await(1);
+ assertThat(o.isDone(), is(false));
+
+ resultQueue.addSideEffect(Tokens.VAL_AGGREGATE_TO_SET, "stephen");
+ assertThat(o.isDone(), is(false));
+
+ resultQueue.addSideEffect(Tokens.VAL_AGGREGATE_TO_SET, "daniel");
+ assertThat(o.isDone(), is(false));
+
+ resultQueue.addSideEffect(Tokens.VAL_AGGREGATE_TO_SET, "dave");
+ assertThat(o.isDone(), is(false));
+
+ resultQueue.markComplete();
+
+ assertThat(o.isDone(), is(true));
+ final Set<String> set = o.get().get(0).get(HashSet.class);
+ assertThat(set.contains("stephen"), is(true));
+ assertThat(set.contains("daniel"), is(true));
+ assertThat(set.contains("dave"), is(true));
+ }
+
+ @Test
public void shouldHandleMapSideEffects() throws Exception {
final CompletableFuture<List<Result>> o = resultQueue.await(1);
assertThat(o.isDone(), is(false));
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/711d2401/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/SideEffectIterator.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/SideEffectIterator.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/SideEffectIterator.java
index 5649c19..2544634 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/SideEffectIterator.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/SideEffectIterator.java
@@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
import java.util.Iterator;
import java.util.Map;
+import java.util.Set;
/**
* @author Stephen Mallette (http://stephen.genoprime.com)
@@ -64,6 +65,8 @@ public class SideEffectIterator implements Iterator<Object> {
private String getAggregatorType(final Object o) {
if (o instanceof BulkSet)
return Tokens.VAL_AGGREGATE_TO_BULKSET;
+ else if (o instanceof Set)
+ return Tokens.VAL_AGGREGATE_TO_SET;
else if (o instanceof Iterable || o instanceof Iterator)
return Tokens.VAL_AGGREGATE_TO_LIST;
else if (o instanceof Map)
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/711d2401/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/RemoteGraphProvider.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/RemoteGraphProvider.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/RemoteGraphProvider.java
index 8b68c35..eae229a 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/RemoteGraphProvider.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/RemoteGraphProvider.java
@@ -114,6 +114,10 @@ public class RemoteGraphProvider extends AbstractGraphProvider {
final InputStream stream = RemoteGraphProvider.class.getResourceAsStream("gremlin-server-integration.yaml");
final Settings settings = Settings.read(stream);
ServerTestHelper.rewritePathsInGremlinServerSettings(settings);
+
+ settings.maxContentLength = 1024000;
+ settings.maxChunkSize =1024000;
+
server = new GremlinServer(settings);
server.start().join();
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/711d2401/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/ServerTestHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/ServerTestHelper.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/ServerTestHelper.java
index 3a82537..e846673 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/ServerTestHelper.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/ServerTestHelper.java
@@ -45,8 +45,5 @@ public class ServerTestHelper {
kv.setValue(homeDir + File.separator + kv.getValue());
return kv;
}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
-
- overridenSettings.maxContentLength = 1024000;
- overridenSettings.maxChunkSize =1024000;
}
}