Merge remote-tracking branch 'origin/tp31'
Conflicts:
gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e5cbe53e
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e5cbe53e
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e5cbe53e
Branch: refs/heads/TINKERPOP-1254
Commit: e5cbe53e4a339151782e0723f60be43423202e06
Parents: 88f3da5 6836f2f
Author: Stephen Mallette <[email protected]>
Authored: Wed Jul 6 11:45:52 2016 -0400
Committer: Stephen Mallette <[email protected]>
Committed: Wed Jul 6 11:45:52 2016 -0400
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
.../upgrade/release-3.1.x-incubating.asciidoc | 12 ++++
.../gremlin/process/traversal/Scope.java | 2 -
.../server/op/AbstractEvalOpProcessor.java | 59 +++++++++++++++++---
.../server/GremlinServerIntegrateTest.java | 20 +++++++
5 files changed, 83 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e5cbe53e/CHANGELOG.asciidoc
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e5cbe53e/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
----------------------------------------------------------------------
diff --cc
gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
index c8371f3,f712b44..813174c
---
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
+++
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
@@@ -24,9 -25,18 +24,17 @@@ import org.apache.tinkerpop.gremlin.dri
import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
-import org.apache.tinkerpop.gremlin.driver.ser.MessageTextSerializer;
import org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor;
import
org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.TimedInterruptTimeoutException;
+ import org.apache.tinkerpop.gremlin.process.traversal.Operator;
+ import org.apache.tinkerpop.gremlin.process.traversal.Order;
+ import org.apache.tinkerpop.gremlin.process.traversal.Pop;
+ import org.apache.tinkerpop.gremlin.process.traversal.Scope;
+ import org.apache.tinkerpop.gremlin.server.GraphManager;
+ import org.apache.tinkerpop.gremlin.server.handler.Frame;
import
org.apache.tinkerpop.gremlin.server.handler.GremlinResponseFrameEncoder;
+ import org.apache.tinkerpop.gremlin.server.handler.StateKey;
+ import org.apache.tinkerpop.gremlin.structure.Column;
import org.apache.tinkerpop.gremlin.structure.T;
import org.apache.tinkerpop.gremlin.server.Context;
import org.apache.tinkerpop.gremlin.server.GremlinServer;
@@@ -45,7 -59,9 +53,8 @@@ import java.util.Iterator
import java.util.List;
import java.util.Map;
import java.util.Optional;
+ import java.util.Set;
import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Supplier;
import java.util.regex.Pattern;
@@@ -85,15 -107,42 +100,40 @@@ public abstract class AbstractEvalOpPro
* Use of {@code toUpperCase()} on the accessor values of {@link T}
solves an issue where the {@code ScriptEngine}
* ignores private scope on {@link T} and imports static fields.
*/
- private static final List<String> invalidBindingsKeys = Arrays.asList(
- T.id.getAccessor(), T.key.getAccessor(),
- T.label.getAccessor(), T.value.getAccessor(),
- T.id.getAccessor().toUpperCase(),
T.key.getAccessor().toUpperCase(),
- T.label.getAccessor().toUpperCase(),
T.value.getAccessor().toUpperCase());
- private static final String invalidBindingKeysJoined = String.join(",",
invalidBindingsKeys);
+ protected static final Set<String> INVALID_BINDINGS_KEYS = new
HashSet<>();
+
+ static {
+ INVALID_BINDINGS_KEYS.addAll(Arrays.asList(
+ T.id.name(), T.key.name(),
+ T.label.name(), T.value.name(),
+ T.id.getAccessor(), T.key.getAccessor(),
+ T.label.getAccessor(), T.value.getAccessor(),
+ T.id.getAccessor().toUpperCase(),
T.key.getAccessor().toUpperCase(),
+ T.label.getAccessor().toUpperCase(),
T.value.getAccessor().toUpperCase()));
+
+ for (Column enumItem : Column.values()) {
+ INVALID_BINDINGS_KEYS.add(enumItem.name());
+ }
+
+ for (Order enumItem : Order.values()) {
+ INVALID_BINDINGS_KEYS.add(enumItem.name());
+ }
+
+ for (Operator enumItem : Operator.values()) {
+ INVALID_BINDINGS_KEYS.add(enumItem.name());
+ }
+
+ for (Scope enumItem : Scope.values()) {
+ INVALID_BINDINGS_KEYS.add(enumItem.name());
+ }
+
+ for (Pop enumItem : Pop.values()) {
+ INVALID_BINDINGS_KEYS.add(enumItem.name());
+ }
+ }
- protected final boolean manageTransactions;
-
protected AbstractEvalOpProcessor(final boolean manageTransactions) {
- this.manageTransactions = manageTransactions;
+ super(manageTransactions);
}
/**
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e5cbe53e/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
----------------------------------------------------------------------
diff --cc
gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
index a2b415d,2f091d9..37c310f
---
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
@@@ -440,8 -409,28 +440,28 @@@ public class GremlinServerIntegrateTes
if (!latch.await(3000, TimeUnit.MILLISECONDS))
fail("Request should have returned error, but instead timed
out");
- assertTrue(pass.get());
+ assertThat(pass.get(), is(true));
}
+
+ try (SimpleClient client = new WebSocketClient()) {
+ final Map<String, Object> bindings = new HashMap<>();
+ bindings.put("id", "123");
+ final RequestMessage request =
RequestMessage.build(Tokens.OPS_EVAL)
+ .addArg(Tokens.ARGS_GREMLIN, "[1,2,3,4,5,6,7,8,9,0]")
+ .addArg(Tokens.ARGS_BINDINGS, bindings).create();
+ final CountDownLatch latch = new CountDownLatch(1);
+ final AtomicBoolean pass = new AtomicBoolean(false);
+ client.submit(request, result -> {
+ if (result.getStatus().getCode() !=
ResponseStatusCode.PARTIAL_CONTENT) {
+
pass.set(ResponseStatusCode.REQUEST_ERROR_INVALID_REQUEST_ARGUMENTS ==
result.getStatus().getCode());
+ latch.countDown();
+ }
+ });
+
+ if (!latch.await(3000, TimeUnit.MILLISECONDS))
+ fail("Request should have returned error, but instead timed
out");
+ assertTrue(pass.get());
+ }
}
@Test