You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by rd...@apache.org on 2017/04/26 02:21:45 UTC
[1/4] tinkerpop git commit: Supply test
Repository: tinkerpop
Updated Branches:
refs/heads/master d5a74b905 -> 0e1ebe99c
Supply test
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/c423d101
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/c423d101
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/c423d101
Branch: refs/heads/master
Commit: c423d101f4bc09c6c3593b1bad10d9b4d8b53fea
Parents: 9bdef4d
Author: dpitera <dp...@us.ibm.com>
Authored: Thu Apr 6 13:53:18 2017 -0400
Committer: dpitera <dp...@us.ibm.com>
Committed: Mon Apr 17 14:31:41 2017 -0400
----------------------------------------------------------------------
...remlinGroovyScriptEngineFileSandboxTest.java | 12 +++++
.../sandbox-empty-static-variable-types.yaml | 56 ++++++++++++++++++++
2 files changed, 68 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c423d101/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFileSandboxTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFileSandboxTest.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFileSandboxTest.java
index 3ee1306..a998aba 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFileSandboxTest.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFileSandboxTest.java
@@ -61,6 +61,18 @@ public class GremlinGroovyScriptEngineFileSandboxTest extends AbstractGremlinTes
}
@Test
+ public void shouldSuccessfullyInstantiateGroovyScriptEngineWithEmptyStaticVariableTyping() throws Exception {
+ final File f = TestHelper.generateTempFileFromResource(graph.getClass(), GremlinGroovyScriptEngineFileSandboxTest.class, "sandbox-empty-static-variable-types.yaml", ".yaml");
+ System.setProperty(FileSandboxExtension.GREMLIN_SERVER_SANDBOX, f.getAbsolutePath());
+ final CompilerCustomizerProvider standardSandbox = new CompileStaticCustomizerProvider(FileSandboxExtension.class.getName());
+ try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox)) {
+ assertEquals(123, engine.eval("java.lang.Math.abs(-123)"));
+ assertThat(engine.eval("new Boolean(true)"), is(true));
+ assertThat(engine.eval("new Boolean(true).toString()"), is("true"));
+ }
+ }
+
+ @Test
public void shouldEvalAsTheMethodIsWhiteListed() throws Exception {
final CompilerCustomizerProvider standardSandbox = new CompileStaticCustomizerProvider(FileSandboxExtension.class.getName());
try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox)) {
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c423d101/gremlin-groovy-test/src/main/resources/org/apache/tinkerpop/gremlin/groovy/jsr223/sandbox-empty-static-variable-types.yaml
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/resources/org/apache/tinkerpop/gremlin/groovy/jsr223/sandbox-empty-static-variable-types.yaml b/gremlin-groovy-test/src/main/resources/org/apache/tinkerpop/gremlin/groovy/jsr223/sandbox-empty-static-variable-types.yaml
new file mode 100644
index 0000000..8fe108e
--- /dev/null
+++ b/gremlin-groovy-test/src/main/resources/org/apache/tinkerpop/gremlin/groovy/jsr223/sandbox-empty-static-variable-types.yaml
@@ -0,0 +1,56 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# This is an example configuration for the FileSandboxExtension.
+
+autoTypeUnknown: true
+methodWhiteList:
+ - java\.lang\.Boolean.*
+ - java\.lang\.Byte.*
+ - java\.lang\.Character.*
+ - java\.lang\.Double.*
+ - java\.lang\.Enum.*
+ - java\.lang\.Float.*
+ - java\.lang\.Integer.*
+ - java\.lang\.Long.*
+ - java\.lang\.Math.*
+ - java\.lang\.Number.*
+ - java\.lang\.Object.*
+ - java\.lang\.Short.*
+ - java\.lang\.String.*
+ - java\.lang\.StringBuffer.*
+ - java\.lang\.System#currentTimeMillis\(\)
+ - java\.lang\.System#nanoTime\(\)
+ - java\.lang\.Throwable.*
+ - java\.lang\.Void.*
+ - java\.util\..*
+ - org\.codehaus\.groovy\.runtime\.DefaultGroovyMethods.*
+ - org\.codehaus\.groovy\.runtime\.InvokerHelper#runScript\(java\.lang\.Class,java\.lang\.String\[\]\)
+ - org\.codehaus\.groovy\.runtime\.StringGroovyMethods.*
+ - groovy\.lang\.Script#<init>\(groovy.lang.Binding\)
+ - org\.apache\.tinkerpop\.gremlin\.structure\..*
+ - org\.apache\.tinkerpop\.gremlin\.process\..*
+ - org\.apache\.tinkerpop\.gremlin\.process\.computer\..*
+ - org\.apache\.tinkerpop\.gremlin\.process\.computer\.bulkloading\..*
+ - org\.apache\.tinkerpop\.gremlin\.process\.computer\.clustering\.peerpressure\.*
+ - org\.apache\.tinkerpop\.gremlin\.process\.computer\.ranking\.pagerank\.*
+ - org\.apache\.tinkerpop\.gremlin\.process\.computer\.traversal\..*
+ - org\.apache\.tinkerpop\.gremlin\.process\.traversal\..*
+ - org\.apache\.tinkerpop\.gremlin\.process\.traversal\.dsl\.graph\..*
+ - org\.apache\.tinkerpop\.gremlin\.process\.traversal\.engine\..*
+ - org\.apache\.tinkerpop\.gremlin\.server\.util\.LifeCycleHook.*
+staticVariableTypes:
[4/4] tinkerpop git commit: Merge branch 'tp32'
Posted by rd...@apache.org.
Merge branch 'tp32'
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/0e1ebe99
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/0e1ebe99
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/0e1ebe99
Branch: refs/heads/master
Commit: 0e1ebe99c81c79e27ff0c0aeda489bd70b70843d
Parents: d5a74b9 ea2ea71
Author: Robert Dale <ro...@gmail.com>
Authored: Tue Apr 25 22:21:03 2017 -0400
Committer: Robert Dale <ro...@gmail.com>
Committed: Tue Apr 25 22:21:03 2017 -0400
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
.../sandbox-empty-static-variable-types.yaml | 56 ++++++++++++++++++++
.../customizer/AbstractSandboxExtension.groovy | 4 +-
.../customizer/FileSandboxExtension.groovy | 16 +++---
...remlinGroovyScriptEngineFileSandboxTest.java | 12 +++++
5 files changed, 81 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0e1ebe99/CHANGELOG.asciidoc
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0e1ebe99/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFileSandboxTest.java
----------------------------------------------------------------------
diff --cc gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFileSandboxTest.java
index 2b27dd0,0000000..951ea55
mode 100644,000000..100644
--- a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFileSandboxTest.java
+++ b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFileSandboxTest.java
@@@ -1,134 -1,0 +1,146 @@@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.groovy.jsr223;
+
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.TestHelper;
+import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.FileSandboxExtension;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
+import org.codehaus.groovy.control.MultipleCompilationErrorsException;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.script.Bindings;
+import java.io.File;
+import java.util.Arrays;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.Matchers.containsString;
+import static org.hamcrest.Matchers.greaterThan;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.fail;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class GremlinGroovyScriptEngineFileSandboxTest {
+
+ private Graph graph;
+ private GraphTraversalSource g;
+
+ @Before
+ public void setup() throws Exception {
+ graph = TinkerFactory.createModern();
+ g = graph.traversal();
+ if (System.getProperty(FileSandboxExtension.GREMLIN_SERVER_SANDBOX) == null) {
+ final File f = TestHelper.generateTempFileFromResource(TinkerGraph.class, GremlinGroovyScriptEngineFileSandboxTest.class, "sandbox.yaml", ".yaml");
+ System.setProperty(FileSandboxExtension.GREMLIN_SERVER_SANDBOX, f.getAbsolutePath());
+ }
+ }
+
+ @AfterClass
+ public static void destroy() {
+ System.clearProperty(FileSandboxExtension.GREMLIN_SERVER_SANDBOX);
+ }
+
+ @Test
++ public void shouldSuccessfullyInstantiateGroovyScriptEngineWithEmptyStaticVariableTyping() throws Exception {
++ final File f = TestHelper.generateTempFileFromResource(graph.getClass(), GremlinGroovyScriptEngineFileSandboxTest.class, "sandbox-empty-static-variable-types.yaml", ".yaml");
++ System.setProperty(FileSandboxExtension.GREMLIN_SERVER_SANDBOX, f.getAbsolutePath());
++ final CompilerCustomizerProvider standardSandbox = new CompileStaticCustomizerProvider(FileSandboxExtension.class.getName());
++ try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox)) {
++ assertEquals(123, engine.eval("java.lang.Math.abs(-123)"));
++ assertThat(engine.eval("new Boolean(true)"), is(true));
++ assertThat(engine.eval("new Boolean(true).toString()"), is("true"));
++ }
++ }
++
++ @Test
+ public void shouldEvalAsTheMethodIsWhiteListed() throws Exception {
+ final CompileStaticGroovyCustomizer standardSandbox = new CompileStaticGroovyCustomizer(FileSandboxExtension.class.getName());
+ try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox)) {
+ assertEquals(123, engine.eval("java.lang.Math.abs(-123)"));
+ assertThat(engine.eval("new Boolean(true)"), is(true));
+ assertThat(engine.eval("new Boolean(true).toString()"), is("true"));
+ }
+ }
+
+ @Test
+ public void shouldEvalAsGroovyPropertiesWhenWhiteListed() throws Exception {
+ final CompileStaticGroovyCustomizer standardSandbox = new CompileStaticGroovyCustomizer(FileSandboxExtension.class.getName());
+ try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox)) {
+ assertThat(Arrays.equals("test".getBytes(), (byte[]) engine.eval("'test'.bytes")), is(true));
+ }
+ }
+
+ @Test
+ public void shouldPreventMaliciousStuffWithSystemButAllowSomeMethodsOnSystem() throws Exception {
+ final CompileStaticGroovyCustomizer standardSandbox = new CompileStaticGroovyCustomizer(FileSandboxExtension.class.getName());
+ try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox)) {
+ assertThat((long) engine.eval("System.currentTimeMillis()"), greaterThan(0L));
+ assertThat((long) engine.eval("System.nanoTime()"), greaterThan(0L));
+
+ engine.eval("System.exit(0)");
+ fail("Should have a compile error because class/method is not white listed");
+ } catch (Exception ex) {
+ assertEquals(MultipleCompilationErrorsException.class, ex.getCause().getClass());
+ assertThat(ex.getCause().getMessage(), containsString("Not authorized to call this method"));
+ }
+ }
+
+ @Test
+ public void shouldPreventMaliciousStuffWithFile() throws Exception {
+ final CompileStaticGroovyCustomizer standardSandbox = new CompileStaticGroovyCustomizer(FileSandboxExtension.class.getName());
+ try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox)) {
+ engine.eval("java.nio.file.FileSystems.getDefault()");
+ fail("Should have a compile error because class/method is not white listed");
+ } catch (Exception ex) {
+ assertEquals(MultipleCompilationErrorsException.class, ex.getCause().getClass());
+ assertThat(ex.getCause().getMessage(), containsString("Not authorized to call this method"));
+ }
+ }
+
+ @Test
+ @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+ public void shouldEvalOnGAsTheMethodIsWhiteListed() throws Exception {
+ final CompileStaticGroovyCustomizer standardSandbox = new CompileStaticGroovyCustomizer(FileSandboxExtension.class.getName());
+ try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox)) {
+ final Bindings bindings = engine.createBindings();
+ bindings.put("g", g);
+ bindings.put("marko", convertToVertexId(graph, "marko"));
+ assertEquals(g.V(convertToVertexId(graph, "marko")).next(), engine.eval("g.V(marko).next()", bindings));
+ assertEquals(g.V(convertToVertexId(graph, "marko")).out("created").count().next(), engine.eval("g.V(marko).out(\"created\").count().next()", bindings));
+ }
+ }
+
+ private Object convertToVertexId(final Graph graph, final String vertexName) {
+ return convertToVertex(graph, vertexName).id();
+ }
+
+ private Vertex convertToVertex(final Graph graph, final String vertexName) {
+ // all test graphs have "name" as a unique id which makes it easy to hardcode this...works for now
+ return graph.traversal().V().has("name", vertexName).next();
+ }
+}
[2/4] tinkerpop git commit: Check if variable is null to avoid NPE
Posted by rd...@apache.org.
Check if variable is null to avoid NPE
If staticVariableTypes is an empty list in the YAML file, then we throw
an NPE by trying to run collectEntries() on a null object or trying to
run containsKey() on a null object.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/9bdef4d8
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/9bdef4d8
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/9bdef4d8
Branch: refs/heads/master
Commit: 9bdef4d86c3065b02c402a6d44dbf0329a0e2ddc
Parents: 1e349c8
Author: dpitera <dp...@us.ibm.com>
Authored: Thu Apr 6 12:16:59 2017 -0400
Committer: dpitera <dp...@us.ibm.com>
Committed: Mon Apr 17 14:31:41 2017 -0400
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
.../customizer/AbstractSandboxExtension.groovy | 4 ++--
.../jsr223/customizer/FileSandboxExtension.groovy | 16 ++++++++++------
3 files changed, 13 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9bdef4d8/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 40819af..6923a84 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -73,6 +73,7 @@ TinkerPop 3.2.5 (Release Date: NOT OFFICIALLY RELEASED YET)
* Implemented `DefaultGraphManager` to include previous `GraphManager` functionality and adhere to updated interface.
* Deprecated `GraphManager.getGraphs()` and added `GraphManager.getGraphNames()`.
* Deprecated `GraphManager.getTraversalSources()` and added `GraphManager.getTraversalSourceNames()`.
+* Fixed a bug so now users can supply a YAML with an empty `staticVariableTypes` to be used by the `FileSandboxExtension`
[[release-3-2-4]]
TinkerPop 3.2.4 (Release Date: February 8, 2017)
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9bdef4d8/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/AbstractSandboxExtension.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/AbstractSandboxExtension.groovy b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/AbstractSandboxExtension.groovy
index 699e250..9685607 100644
--- a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/AbstractSandboxExtension.groovy
+++ b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/AbstractSandboxExtension.groovy
@@ -51,7 +51,7 @@ abstract class AbstractSandboxExtension extends GroovyTypeCheckingExtensionSuppo
def boolean autoTypeUnknown = allowAutoTypeOfUnknown()
unresolvedVariable { var ->
- if (staticVariableTyping.containsKey(var.name)) {
+ if ((null != staticVariableTyping) && (staticVariableTyping.containsKey(var.name))) {
storeType(var, classNodeFor(staticVariableTyping[var.name]))
handled = true
return
@@ -87,4 +87,4 @@ abstract class AbstractSandboxExtension extends GroovyTypeCheckingExtensionSuppo
visitor.visitMethod(methodNode)
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9bdef4d8/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/FileSandboxExtension.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/FileSandboxExtension.groovy b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/FileSandboxExtension.groovy
index 30e440b..6e9e374 100644
--- a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/FileSandboxExtension.groovy
+++ b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/FileSandboxExtension.groovy
@@ -63,12 +63,16 @@ class FileSandboxExtension extends AbstractSandboxExtension {
autoTypeUnknown = settings.autoTypeUnknown
methodWhiteList = settings.methodWhiteList
- staticVariableTypes = settings.staticVariableTypes.collectEntries { kv ->
- try {
- return [(kv.key): Class.forName(kv.value)]
- } catch (Exception ex) {
- logger.error("Could not convert ${kv.value} to a Class for variable ${kv.key}", ex)
- throw ex
+ if (null == settings.staticVariableTypes) {
+ staticVariableTypes = null
+ } else {
+ staticVariableTypes = settings.staticVariableTypes.collectEntries { kv ->
+ try {
+ return [(kv.key): Class.forName(kv.value)]
+ } catch (Exception ex) {
+ logger.error("Could not convert ${kv.value} to a Class for variable ${kv.key}", ex)
+ throw ex
+ }
}
}
}
[3/4] tinkerpop git commit: Merge branch 'TINKERPOP-1666' into tp32
Posted by rd...@apache.org.
Merge branch 'TINKERPOP-1666' into tp32
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ea2ea711
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ea2ea711
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ea2ea711
Branch: refs/heads/master
Commit: ea2ea7116f2d407619e8c5beee7201877fd423c3
Parents: a4e6015 c423d10
Author: Robert Dale <ro...@gmail.com>
Authored: Tue Apr 25 22:19:41 2017 -0400
Committer: Robert Dale <ro...@gmail.com>
Committed: Tue Apr 25 22:19:41 2017 -0400
----------------------------------------------------------------------
CHANGELOG.asciidoc | 1 +
...remlinGroovyScriptEngineFileSandboxTest.java | 12 +++++
.../sandbox-empty-static-variable-types.yaml | 56 ++++++++++++++++++++
.../customizer/AbstractSandboxExtension.groovy | 4 +-
.../customizer/FileSandboxExtension.groovy | 16 +++---
5 files changed, 81 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ea2ea711/CHANGELOG.asciidoc
----------------------------------------------------------------------