Allowed "imports" to be assigned to GremlinScriptEngine.

This commit made some wide reaching changes and is basically the initial 
integration of GremlinScriptEngine implementations into the wider code base. 
Note that the notion of a ScriptEngine in TinkerPop now only refers to a 
"gremlin-enabled" ScriptEngine and not just any ScriptEngine. In other words, 
it is not possible to just load a vanilla Nashorn or Jython ScriptEngine 
implementation. GremlinScriptEngine instances are also no longer registered as 
ScriptEngine implementations to be loaded under the standard 
ScriptEngineManager. We could likely still allow that but I'm not seeing where 
it is useful to do so. As a result, references to pure "jython" or "nashorn" 
and usage of raw vanilla ScriptEngine instances have been removed.

Added a basic method for handling imports in a generic way. The Customizer 
interface is central to that. Basically the ScriptEngineManager provides a list 
of Customizer implementations to each GremlinScriptEngineFactory. When the 
factory creates a new GremlinScriptEngine it passes those Customizer 
implementations to it on construction. The GremlinScriptEngine implementation 
must then decide how to use those Customizers to do its "setup".  This is a 
fairly close match to the CompilerCustomizerProvider approach that already 
exists in gremlin-groovy, but Customizer is a bit more generalized to 
gremlin-core. Ultimately, we will want to deprecate the 
CompilerCustomizerProvider in favor of the gremlin-core Customizer.


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

Branch: refs/heads/TINKERPOP-1278
Commit: b93feb4774262a605c590f4da243785d488e31c5
Parents: 6840262
Author: Stephen Mallette <[email protected]>
Authored: Fri Jul 8 13:57:17 2016 -0400
Committer: Stephen Mallette <[email protected]>
Committed: Fri Jul 8 13:57:17 2016 -0400

----------------------------------------------------------------------
 .../tinkerpop/gremlin/jsr223/Customizer.java    |  27 +++++
 .../gremlin/jsr223/CustomizerManager.java       |  28 +++++
 .../DefaultGremlinScriptEngineManager.java      |  29 ++---
 .../gremlin/jsr223/GremlinScriptEngine.java     |   6 --
 .../jsr223/GremlinScriptEngineFactory.java      |   2 +
 .../gremlin/jsr223/ImportCustomizer.java        | 107 +++++++++++++++++++
 .../SingleGremlinScriptEngineManager.java       |  32 ++++++
 .../tinkerpop/gremlin/util/CoreImports.java     |   2 +-
 .../gremlin/util/ScriptEngineCache.java         |   5 +-
 .../gremlin/util/ScriptEngineCacheTest.java     |   1 +
 .../util/function/ScriptEngineLambdaTest.java   |   1 +
 .../traversal/step/filter/GroovyHasTest.groovy  |   2 +-
 .../step/filter/GroovyWhereTest.groovy          |   6 +-
 .../gremlin/groovy/engine/ScriptEngines.java    |   4 +-
 .../jsr223/GremlinGroovyScriptEngine.java       |  59 +++++++++-
 .../GremlinGroovyScriptEngineFactory.java       |  26 +++--
 ...op.gremlin.jsr223.GremlinScriptEngineFactory |   1 +
 .../groovy/engine/GremlinExecutorTest.java      |   3 +
 .../util/function/ScriptEngineLambdaTest.java   |   1 +
 gremlin-python/pom.xml                          |   2 +-
 .../jsr223/GremlinJythonScriptEngine.java       |  15 ++-
 .../GremlinJythonScriptEngineFactory.java       |  22 ++--
 ...op.gremlin.jsr223.GremlinScriptEngineFactory |   1 +
 .../translator/PythonTranslatorProvider.java    |   3 +-
 .../groovy/PythonGroovyTranslator.java          |   3 +-
 .../jython/PythonJythonTranslator.java          |   3 +-
 .../python/driver/RESTRemoteConnectionTest.java |   3 +-
 .../jsr223/GremlinJythonScriptEngineTest.java   |  10 +-
 .../python/jsr223/JythonScriptEngineSetup.java  |   3 +-
 .../services/javax.script.ScriptEngineFactory   |   2 -
 gremlin-server/conf/gremlin-server-neo4j.yaml   |   5 +-
 gremlin-server/conf/gremlin-server-spark.yaml   |   5 +-
 gremlin-server/conf/gremlin-server.yaml         |   5 +-
 .../remote/gremlin-server-integration.yaml      |   5 +-
 .../server/gremlin-server-integration.yaml      |   5 +-
 .../server/gremlin-server-performance.yaml      |   5 +-
 36 files changed, 355 insertions(+), 84 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/Customizer.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/Customizer.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/Customizer.java
new file mode 100644
index 0000000..5c587e7
--- /dev/null
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/Customizer.java
@@ -0,0 +1,27 @@
+/*
+ * 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.jsr223;
+
+/**
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public interface Customizer {
+
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CustomizerManager.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CustomizerManager.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CustomizerManager.java
new file mode 100644
index 0000000..6511e4a
--- /dev/null
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CustomizerManager.java
@@ -0,0 +1,28 @@
+/*
+ * 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.jsr223;
+
+import java.util.Optional;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public interface CustomizerManager {
+    public Optional<Customizer[]> getCustomizers();
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultGremlinScriptEngineManager.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultGremlinScriptEngineManager.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultGremlinScriptEngineManager.java
index e53f505..2d0ba93 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultGremlinScriptEngineManager.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultGremlinScriptEngineManager.java
@@ -31,8 +31,10 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Optional;
 import java.util.ServiceConfigurationError;
 import java.util.ServiceLoader;
+import java.util.stream.Collectors;
 
 /**
  * The {@code ScriptEngineManager} implements a discovery, instantiation and 
configuration mechanism for
@@ -60,7 +62,7 @@ import java.util.ServiceLoader;
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public class DefaultGremlinScriptEngineManager implements 
GremlinScriptEngineManager {
+public class DefaultGremlinScriptEngineManager implements 
GremlinScriptEngineManager, CustomizerManager {
 
     private static final boolean DEBUG = false;
 
@@ -108,6 +110,11 @@ public class DefaultGremlinScriptEngineManager implements 
GremlinScriptEngineMan
         initEngines(loader);
     }
 
+    @Override
+    public Optional<Customizer[]> getCustomizers() {
+        return Optional.of(new Customizer[] { ImportCustomizer.GREMLIN_CORE });
+    }
+
     /**
      * Stores the specified {@code Bindings} as a global for all {@link 
GremlinScriptEngine} objects created by it.
      *
@@ -298,9 +305,7 @@ public class DefaultGremlinScriptEngineManager implements 
GremlinScriptEngineMan
     @Override
     public List<GremlinScriptEngineFactory> getEngineFactories() {
         final List<GremlinScriptEngineFactory> res = new 
ArrayList<>(engineSpis.size());
-        for (GremlinScriptEngineFactory spi : engineSpis) {
-            res.add(spi);
-        }
+        res.addAll(engineSpis.stream().collect(Collectors.toList()));
         return Collections.unmodifiableList(res);
     }
 
@@ -355,11 +360,11 @@ public class DefaultGremlinScriptEngineManager implements 
GremlinScriptEngineMan
     }
 
     private void initEngines(final ClassLoader loader) {
-        Iterator<GremlinScriptEngineFactory> itr;
+        Iterator<GremlinScriptEngineFactory> itty;
         try {
             final ServiceLoader<GremlinScriptEngineFactory> sl = 
AccessController.doPrivileged(
                     
(PrivilegedAction<ServiceLoader<GremlinScriptEngineFactory>>) () -> 
getServiceLoader(loader));
-            itr = sl.iterator();
+            itty = sl.iterator();
         } catch (ServiceConfigurationError err) {
             System.err.println("Can't find GremlinScriptEngineFactory 
providers: " +
                     err.getMessage());
@@ -371,9 +376,11 @@ public class DefaultGremlinScriptEngineManager implements 
GremlinScriptEngineMan
         }
 
         try {
-            while (itr.hasNext()) {
+            while (itty.hasNext()) {
                 try {
-                    engineSpis.add(itr.next());
+                    final GremlinScriptEngineFactory factory = itty.next();
+                    factory.setCustomizerManager(this);
+                    engineSpis.add(factory);
                 } catch (ServiceConfigurationError err) {
                     System.err.println("GremlinScriptEngineManager 
providers.next(): "
                             + err.getMessage());
@@ -392,12 +399,6 @@ public class DefaultGremlinScriptEngineManager implements 
GremlinScriptEngineMan
     private GremlinScriptEngine createGremlinScriptEngine(final 
GremlinScriptEngineFactory spi) {
         final GremlinScriptEngine engine = spi.getScriptEngine();
         engine.setBindings(getBindings(), ScriptContext.GLOBAL_SCOPE);
-
-        // these are standard imports from gremlin-core that are applied to 
all GremlinScriptEngine instances
-        CoreImports.getClassImports().forEach(engine::addClassImport);
-        CoreImports.getMethodImports().forEach(engine::addMethodImport);
-        CoreImports.getEnumImports().forEach(engine::addEnumImport);
-
         return engine;
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinScriptEngine.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinScriptEngine.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinScriptEngine.java
index 916c2a6..5229c2c 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinScriptEngine.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinScriptEngine.java
@@ -36,10 +36,4 @@ public interface GremlinScriptEngine extends ScriptEngine {
     GremlinScriptEngineFactory getFactory();
 
     Traversal.Admin eval(final Bytecode bytes, final Bindings bindings);
-
-    void addClassImport(final Class clazz);
-
-    void addEnumImport(final Enum e);
-
-    void addMethodImport(final Method method);
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinScriptEngineFactory.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinScriptEngineFactory.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinScriptEngineFactory.java
index 0723bba..d627a91 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinScriptEngineFactory.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinScriptEngineFactory.java
@@ -26,4 +26,6 @@ import javax.script.ScriptEngineFactory;
 public interface GremlinScriptEngineFactory extends ScriptEngineFactory {
     @Override
     GremlinScriptEngine getScriptEngine();
+
+    void setCustomizerManager(final CustomizerManager manager);
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportCustomizer.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportCustomizer.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportCustomizer.java
new file mode 100644
index 0000000..39caa39
--- /dev/null
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportCustomizer.java
@@ -0,0 +1,107 @@
+/*
+ * 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.jsr223;
+
+import org.apache.tinkerpop.gremlin.util.CoreImports;
+
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class ImportCustomizer implements Customizer {
+
+    public static final ImportCustomizer GREMLIN_CORE = 
ImportCustomizer.build()
+            .addClassImports(CoreImports.getClassImports())
+            .addEnumImports(CoreImports.getEnumImports())
+            .addMethodImports(CoreImports.getMethodImports()).create();
+
+    private final Set<Class> classImports;
+    private final Set<Method> methodImports;
+    private final Set<Enum> enumImports;
+
+    private ImportCustomizer(final Builder builder) {
+        classImports = builder.classImports;
+        methodImports = builder.methodImports;
+        enumImports = builder.enumImports;
+    }
+
+    public Set<Class> getClassImports() {
+        return Collections.unmodifiableSet(classImports);
+    }
+
+    public Set<Method> getMethodImports() {
+        return Collections.unmodifiableSet(methodImports);
+    }
+
+    public Set<Enum> getEnumImports() {
+        return Collections.unmodifiableSet(enumImports);
+    }
+
+    public static Builder build() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private Set<Class> classImports = new HashSet<>();
+        private Set<Method> methodImports = new HashSet<>();
+        private Set<Enum> enumImports = new HashSet<>();
+
+        private Builder() {}
+
+        public Builder addClassImports(final Class... clazz) {
+            classImports.addAll(Arrays.asList(clazz));
+            return this;
+        }
+
+        public Builder addClassImports(final Collection<Class> classes) {
+            classImports.addAll(classes);
+            return this;
+        }
+
+        public Builder addMethodImports(final Method... method) {
+            methodImports.addAll(Arrays.asList(method));
+            return this;
+        }
+
+        public Builder addMethodImports(final Collection<Method> methods) {
+            methodImports.addAll(methods);
+            return this;
+        }
+
+        public Builder addEnumImports(final Enum... e) {
+            enumImports.addAll(Arrays.asList(e));
+            return this;
+        }
+
+        public Builder addEnumImports(final Collection<Enum> enums) {
+            enumImports.addAll(enums);
+            return this;
+        }
+
+        public ImportCustomizer create() {
+            return new ImportCustomizer(this);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/SingleGremlinScriptEngineManager.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/SingleGremlinScriptEngineManager.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/SingleGremlinScriptEngineManager.java
new file mode 100644
index 0000000..be8fb87
--- /dev/null
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/SingleGremlinScriptEngineManager.java
@@ -0,0 +1,32 @@
+/*
+ * 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.jsr223;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class SingleGremlinScriptEngineManager {
+    private static final GremlinScriptEngineManager cached = new 
CachedGremlinScriptEngineManager();
+
+    private SingleGremlinScriptEngineManager() {}
+
+    public static GremlinScriptEngineManager getInstance(){
+        return cached;
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/CoreImports.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/CoreImports.java 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/CoreImports.java
index 81a680f..41edffa 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/CoreImports.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/CoreImports.java
@@ -112,6 +112,7 @@ public final class CoreImports {
         CLASS_IMPORTS.add(Vertex.class);
         CLASS_IMPORTS.add(VertexProperty.class);
         // tokens
+        CLASS_IMPORTS.add(SackFunctions.class);
         CLASS_IMPORTS.add(SackFunctions.Barrier.class);
         CLASS_IMPORTS.add(VertexProperty.Cardinality.class);
         CLASS_IMPORTS.add(Column.class);
@@ -217,6 +218,5 @@ public final class CoreImports {
 
     public static Set<Enum> getEnumImports() {
         return Collections.unmodifiableSet(ENUM_IMPORTS);
-
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/ScriptEngineCache.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/ScriptEngineCache.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/ScriptEngineCache.java
index 13bb2d1..70be8af 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/ScriptEngineCache.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/ScriptEngineCache.java
@@ -18,6 +18,9 @@
  */
 package org.apache.tinkerpop.gremlin.util;
 
+import org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager;
+import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineManager;
+
 import javax.script.ScriptEngine;
 import javax.script.ScriptEngineManager;
 import java.util.Map;
@@ -32,7 +35,7 @@ public final class ScriptEngineCache {
 
     public final static String DEFAULT_SCRIPT_ENGINE = "gremlin-groovy";
 
-    private final static ScriptEngineManager SCRIPT_ENGINE_MANAGER = new 
ScriptEngineManager();
+    private final static GremlinScriptEngineManager SCRIPT_ENGINE_MANAGER = 
new DefaultGremlinScriptEngineManager();
     private final static Map<String, ScriptEngine> CACHED_ENGINES = new 
ConcurrentHashMap<>();
 
     public static ScriptEngine get(final String engineName) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/ScriptEngineCacheTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/ScriptEngineCacheTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/ScriptEngineCacheTest.java
index d8306c8..a50c0f9 100644
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/ScriptEngineCacheTest.java
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/ScriptEngineCacheTest.java
@@ -26,6 +26,7 @@ import static org.junit.Assert.assertSame;
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
[email protected]
 public class ScriptEngineCacheTest {
 
     @Test

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambdaTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambdaTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambdaTest.java
index a609ee0..cd5e915 100644
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambdaTest.java
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambdaTest.java
@@ -27,6 +27,7 @@ import static org.junit.Assert.assertEquals;
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
[email protected]
 public class ScriptEngineLambdaTest {
 
     @Test

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
----------------------------------------------------------------------
diff --git 
a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
 
b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
index a692618..de8d128 100644
--- 
a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
+++ 
b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
@@ -157,7 +157,7 @@ public abstract class GroovyHasTest {
 
         @Override
         public Traversal<Vertex, String> 
get_g_V_hasLabelXpersonX_hasXage_notXlteX10X_andXnotXbetweenX11_20XXXX_andXltX29X_orXeqX35XXXX_name()
 {
-            new ScriptTraversal<>(g, "gremlin-groovy", 
"g.V.hasLabel('person').has('age', 
not(lte(10).and(not(between(11,20)))).and(lt(29).or(eq(35)))).name")
+            new ScriptTraversal<>(g, "gremlin-groovy", 
"g.V.hasLabel('person').has('age', 
P.not(lte(10).and(P.not(between(11,20)))).and(lt(29).or(eq(35)))).name")
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
----------------------------------------------------------------------
diff --git 
a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
 
b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
index 83d9b6c..fc0aca9 100644
--- 
a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
+++ 
b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
@@ -82,7 +82,7 @@ public abstract class GroovyWhereTest {
 
         @Override
         public Traversal<Vertex, Vertex> 
get_g_VX1X_out_aggregateXxX_out_whereXnotXwithinXaXXX(final Object v1Id) {
-            new ScriptTraversal<>(g, "gremlin-groovy", 
"g.V(v1Id).out.aggregate('x').out.where(not(within('x')))", "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", 
"g.V(v1Id).out.aggregate('x').out.where(P.not(within('x')))", "v1Id", v1Id)
         }
 
         @Override
@@ -108,7 +108,7 @@ public abstract class GroovyWhereTest {
 
         @Override
         public Traversal<Vertex, Map<String, Object>> 
get_g_V_asXaX_out_asXbX_whereXandXasXaX_outXknowsX_asXbX__orXasXbX_outXcreatedX_hasXname_rippleX__asXbX_inXknowsX_count_isXnotXeqX0XXXXX_selectXa_bX()
 {
-            new ScriptTraversal<>(g, "gremlin-groovy", 
"g.V.as('a').out.as('b').where(and(__.as('a').out('knows').as('b'),or(__.as('b').out('created').has('name','ripple'),__.as('b').in('knows').count.is(not(eq(0)))))).select('a','b')")
+            new ScriptTraversal<>(g, "gremlin-groovy", 
"g.V.as('a').out.as('b').where(and(__.as('a').out('knows').as('b'),or(__.as('b').out('created').has('name','ripple'),__.as('b').in('knows').count.is(P.not(eq(0)))))).select('a','b')")
         }
 
         @Override
@@ -124,7 +124,7 @@ public abstract class GroovyWhereTest {
 
         @Override
         public Traversal<Vertex, Map<String, Object>> 
get_g_V_asXaX_outXcreatedX_asXbX_inXcreatedX_asXcX_bothXknowsX_bothXknowsX_asXdX_whereXc__notXeqXaX_orXeqXdXXXX_selectXa_b_c_dX()
 {
-            new ScriptTraversal<>(g, "gremlin-groovy", 
"g.V.as('a').out('created').as('b').in('created').as('c').both('knows').both('knows').as('d').where('c',not(eq('a').or(eq('d')))).select('a','b','c','d')")
+            new ScriptTraversal<>(g, "gremlin-groovy", 
"g.V.as('a').out('created').as('b').in('created').as('c').both('knows').both('knows').as('d').where('c',P.not(eq('a').or(eq('d')))).select('a','b','c','d')")
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/ScriptEngines.java
----------------------------------------------------------------------
diff --git 
a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/ScriptEngines.java
 
b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/ScriptEngines.java
index 5d144ba..7b00df3 100644
--- 
a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/ScriptEngines.java
+++ 
b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/ScriptEngines.java
@@ -26,6 +26,8 @@ import 
org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngineFacto
 import 
org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.ConfigurationCustomizerProvider;
 import org.apache.tinkerpop.gremlin.groovy.plugin.GremlinPlugin;
 import org.apache.tinkerpop.gremlin.groovy.plugin.IllegalEnvironmentException;
+import org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager;
+import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -64,7 +66,7 @@ import java.util.stream.Stream;
 public class ScriptEngines implements AutoCloseable {
     private static final Logger logger = 
LoggerFactory.getLogger(ScriptEngines.class);
 
-    private final static ScriptEngineManager SCRIPT_ENGINE_MANAGER = new 
ScriptEngineManager();
+    private final static GremlinScriptEngineManager SCRIPT_ENGINE_MANAGER = 
new DefaultGremlinScriptEngineManager();
     private static final GremlinGroovyScriptEngineFactory 
gremlinGroovyScriptEngineFactory = new GremlinGroovyScriptEngineFactory();
 
     /**

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
----------------------------------------------------------------------
diff --git 
a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
 
b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
index 0069103..ddc6b2a 100644
--- 
a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
+++ 
b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
@@ -38,6 +38,12 @@ import groovy.lang.MissingMethodException;
 import groovy.lang.MissingPropertyException;
 import groovy.lang.Script;
 import groovy.lang.Tuple;
+import org.apache.tinkerpop.gremlin.jsr223.Customizer;
+import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngine;
+import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineFactory;
+import org.apache.tinkerpop.gremlin.jsr223.ImportCustomizer;
+import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.codehaus.groovy.ast.ClassHelper;
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.control.CompilationFailedException;
@@ -53,7 +59,6 @@ import org.codehaus.groovy.util.ReferenceBundle;
 import javax.script.Bindings;
 import javax.script.CompiledScript;
 import javax.script.ScriptContext;
-import javax.script.ScriptEngineFactory;
 import javax.script.ScriptException;
 import javax.script.SimpleBindings;
 import java.io.IOException;
@@ -64,6 +69,7 @@ import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -84,7 +90,8 @@ import java.util.stream.Collectors;
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl 
implements DependencyManager, AutoCloseable {
+public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl
+        implements DependencyManager, AutoCloseable, GremlinScriptEngine {
 
     /**
      * An "internal" key for sandboxing the script engine - technically not 
for public use.
@@ -189,6 +196,47 @@ public class GremlinGroovyScriptEngine extends 
GroovyScriptEngineImpl implements
         this((CompilerCustomizerProvider) importCustomizerProvider);
     }
 
+    public GremlinGroovyScriptEngine(final Customizer... customizers) {
+        final List<Customizer> listOfCustomizers = Arrays.asList(customizers);
+
+        GremlinLoader.load();
+
+        final List<ImportCustomizer> importCustomizers = 
listOfCustomizers.stream()
+                .filter(p -> p instanceof ImportCustomizer)
+                .map(p -> (ImportCustomizer) p)
+                .collect(Collectors.toList());
+        if (importCustomizers.isEmpty()) {
+            importCustomizerProvider = NoImportCustomizerProvider.INSTANCE;
+        } else {
+            final Set<String> imports = new HashSet<>();
+            final Set<String> staticImports = new HashSet<>();
+            importCustomizers.forEach(ic -> {
+                ic.getClassImports().forEach(c -> {
+                    final String importStatement = c.getName();
+                    imports.add(importStatement);
+                });
+
+                ic.getEnumImports().forEach(e -> {
+                    final String importStatement = 
e.getDeclaringClass().getCanonicalName() + ".*";
+                    staticImports.add(importStatement);
+                });
+
+                ic.getMethodImports().forEach(m -> {
+                    final String importStatement = 
m.getDeclaringClass().getCanonicalName() + ".*";
+                    staticImports.add(importStatement);
+                });
+            });
+
+            importCustomizerProvider = new 
EmptyImportCustomizerProvider(imports, staticImports);
+        }
+
+        interpreterModeEnabled = false;
+
+        customizerProviders = Collections.emptyList();
+
+        createClassLoader();
+    }
+
     /**
      * Creates a new instance with the specified {@link 
CompilerCustomizerProvider} objects.
      */
@@ -321,6 +369,11 @@ public class GremlinGroovyScriptEngine extends 
GroovyScriptEngineImpl implements
     }
 
     @Override
+    public Traversal.Admin eval(final Bytecode bytes, final Bindings bindings) 
{
+        return null;
+    }
+
+    @Override
     public void close() throws Exception {
     }
 
@@ -405,7 +458,7 @@ public class GremlinGroovyScriptEngine extends 
GroovyScriptEngineImpl implements
      * {@inheritDoc}
      */
     @Override
-    public ScriptEngineFactory getFactory() {
+    public GremlinScriptEngineFactory getFactory() {
         if (factory == null) {
             synchronized (this) {
                 if (factory == null) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFactory.java
----------------------------------------------------------------------
diff --git 
a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFactory.java
 
b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFactory.java
index 5eda4e6..b59beb2 100644
--- 
a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFactory.java
+++ 
b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFactory.java
@@ -18,22 +18,31 @@
  */
 package org.apache.tinkerpop.gremlin.groovy.jsr223;
 
+import org.apache.tinkerpop.gremlin.jsr223.CustomizerManager;
+import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngine;
+import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineFactory;
 import org.apache.tinkerpop.gremlin.util.Gremlin;
 
 import javax.script.ScriptEngine;
-import javax.script.ScriptEngineFactory;
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class GremlinGroovyScriptEngineFactory implements ScriptEngineFactory {
+public class GremlinGroovyScriptEngineFactory implements 
GremlinScriptEngineFactory {
 
     private static final String ENGINE_NAME = "gremlin-groovy";
     private static final String LANGUAGE_NAME = "gremlin-groovy";
     private static final String PLAIN = "plain";
-    private static final List<String> EXTENSIONS = Arrays.asList("groovy");
+    private static final List<String> EXTENSIONS = 
Collections.singletonList("groovy");
+
+    private CustomizerManager manager;
+
+    @Override
+    public void setCustomizerManager(final CustomizerManager manager) {
+        this.manager = manager;
+    }
 
     @Override
     public String getEngineName() {
@@ -67,12 +76,12 @@ public class GremlinGroovyScriptEngineFactory implements 
ScriptEngineFactory {
 
     @Override
     public List<String> getMimeTypes() {
-        return Arrays.asList(PLAIN);
+        return Collections.singletonList(PLAIN);
     }
 
     @Override
     public List<String> getNames() {
-        return Arrays.asList(LANGUAGE_NAME);
+        return Collections.singletonList(LANGUAGE_NAME);
     }
 
     @Override
@@ -108,7 +117,8 @@ public class GremlinGroovyScriptEngineFactory implements 
ScriptEngineFactory {
     }
 
     @Override
-    public ScriptEngine getScriptEngine() {
-        return new GremlinGroovyScriptEngine();
+    public GremlinScriptEngine getScriptEngine() {
+        return manager.getCustomizers().isPresent() ?
+                new GremlinGroovyScriptEngine(manager.getCustomizers().get()) 
: new GremlinGroovyScriptEngine();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-groovy/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineFactory
----------------------------------------------------------------------
diff --git 
a/gremlin-groovy/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineFactory
 
b/gremlin-groovy/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineFactory
new file mode 100644
index 0000000..74b951c
--- /dev/null
+++ 
b/gremlin-groovy/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineFactory
@@ -0,0 +1 @@
+org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngineFactory
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorTest.java
 
b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorTest.java
index 387f0a1..2abff40 100644
--- 
a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorTest.java
+++ 
b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorTest.java
@@ -164,6 +164,7 @@ public class GremlinExecutorTest {
     }
 
     @Test
+    @org.junit.Ignore
     public void shouldEvalScriptWithMapBindingsAndLanguage() throws Exception {
         final GremlinExecutor gremlinExecutor = GremlinExecutor.build()
                 .addEngineSettings("nashorn", Collections.emptyList(), 
Collections.emptyList(), Collections.emptyList(), 
Collections.emptyMap()).create();
@@ -174,6 +175,7 @@ public class GremlinExecutorTest {
     }
 
     @Test
+    @org.junit.Ignore
     public void shouldEvalScriptWithMapBindingsAndLanguageThenTransform() 
throws Exception {
         final GremlinExecutor gremlinExecutor = GremlinExecutor.build()
                 .addEngineSettings("nashorn", Collections.emptyList(), 
Collections.emptyList(), Collections.emptyList(), 
Collections.emptyMap()).create();
@@ -184,6 +186,7 @@ public class GremlinExecutorTest {
     }
 
     @Test
+    @org.junit.Ignore
     public void shouldEvalScriptWithMapBindingsAndLanguageThenConsume() throws 
Exception {
         final GremlinExecutor gremlinExecutor = GremlinExecutor.build()
                 .addEngineSettings("nashorn", Collections.emptyList(), 
Collections.emptyList(), Collections.emptyList(), 
Collections.emptyMap()).create();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambdaTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambdaTest.java
 
b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambdaTest.java
index 5b5b616..9701f90 100644
--- 
a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambdaTest.java
+++ 
b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/util/function/ScriptEngineLambdaTest.java
@@ -33,6 +33,7 @@ import static org.junit.Assert.*;
 /**
  * @author Matt Frantz ([email protected])
  */
[email protected]
 public class ScriptEngineLambdaTest {
 
     private final static String GROOVY_SCRIPT_ENGINE_NAME = "Groovy";

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-python/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-python/pom.xml b/gremlin-python/pom.xml
index cdc5741..92f1c2f 100644
--- a/gremlin-python/pom.xml
+++ b/gremlin-python/pom.xml
@@ -76,7 +76,7 @@
         <finalName>${project.artifactId}-${project.version}</finalName>
         <resources>
             <resource>
-                <directory>${basedir}/src/main/resources
+                <directory>src/main/resources
                 </directory>
             </resource>
         </resources>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngine.java
----------------------------------------------------------------------
diff --git 
a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngine.java
 
b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngine.java
index c3251b5..4f4ecf2 100644
--- 
a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngine.java
+++ 
b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngine.java
@@ -19,6 +19,10 @@
 
 package org.apache.tinkerpop.gremlin.python.jsr223;
 
+import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngine;
+import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineFactory;
+import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.python.util.SymbolHelper;
 import org.apache.tinkerpop.gremlin.util.CoreImports;
@@ -27,8 +31,6 @@ import org.python.jsr223.PyScriptEngineFactory;
 
 import javax.script.Bindings;
 import javax.script.ScriptContext;
-import javax.script.ScriptEngine;
-import javax.script.ScriptEngineFactory;
 import javax.script.ScriptException;
 import java.io.Reader;
 import java.lang.reflect.Method;
@@ -36,7 +38,7 @@ import java.lang.reflect.Method;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class GremlinJythonScriptEngine implements ScriptEngine {
+public class GremlinJythonScriptEngine implements GremlinScriptEngine {
 
     private final PyScriptEngine pyScriptEngine;
 
@@ -115,6 +117,11 @@ public class GremlinJythonScriptEngine implements 
ScriptEngine {
     }
 
     @Override
+    public Traversal.Admin eval(final Bytecode bytes, final Bindings bindings) 
{
+        return null;
+    }
+
+    @Override
     public Object eval(final String script, final ScriptContext context) 
throws ScriptException {
         return this.pyScriptEngine.eval(script, context);
     }
@@ -182,7 +189,7 @@ public class GremlinJythonScriptEngine implements 
ScriptEngine {
     }
 
     @Override
-    public ScriptEngineFactory getFactory() {
+    public GremlinScriptEngineFactory getFactory() {
         return new GremlinJythonScriptEngineFactory();
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineFactory.java
----------------------------------------------------------------------
diff --git 
a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineFactory.java
 
b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineFactory.java
index 4150af5..0554063 100644
--- 
a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineFactory.java
+++ 
b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineFactory.java
@@ -19,22 +19,32 @@
 
 package org.apache.tinkerpop.gremlin.python.jsr223;
 
+import org.apache.tinkerpop.gremlin.jsr223.CustomizerManager;
+import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngine;
+import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineFactory;
 import org.apache.tinkerpop.gremlin.util.Gremlin;
 import org.python.jsr223.PyScriptEngineFactory;
 
 import javax.script.ScriptEngine;
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class GremlinJythonScriptEngineFactory extends PyScriptEngineFactory {
+public class GremlinJythonScriptEngineFactory extends PyScriptEngineFactory 
implements GremlinScriptEngineFactory {
 
     private static final String ENGINE_NAME = "gremlin-jython";
     private static final String LANGUAGE_NAME = "gremlin-jython";
     private static final String PLAIN = "plain";
-    private static final List<String> EXTENSIONS = Arrays.asList("py");
+    private static final List<String> EXTENSIONS = 
Collections.singletonList("py");
+
+    private CustomizerManager manager;
+
+    @Override
+    public void setCustomizerManager(final CustomizerManager manager) {
+        this.manager = manager;
+    }
 
     @Override
     public String getEngineName() {
@@ -63,12 +73,12 @@ public class GremlinJythonScriptEngineFactory extends 
PyScriptEngineFactory {
 
     @Override
     public List<String> getMimeTypes() {
-        return Arrays.asList(PLAIN);
+        return Collections.singletonList(PLAIN);
     }
 
     @Override
     public List<String> getNames() {
-        return Arrays.asList(LANGUAGE_NAME);
+        return Collections.singletonList(LANGUAGE_NAME);
     }
 
     @Override
@@ -88,7 +98,7 @@ public class GremlinJythonScriptEngineFactory extends 
PyScriptEngineFactory {
     }
 
     @Override
-    public ScriptEngine getScriptEngine() {
+    public GremlinScriptEngine getScriptEngine() {
         return new GremlinJythonScriptEngine();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-python/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineFactory
----------------------------------------------------------------------
diff --git 
a/gremlin-python/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineFactory
 
b/gremlin-python/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineFactory
new file mode 100644
index 0000000..92f4825
--- /dev/null
+++ 
b/gremlin-python/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineFactory
@@ -0,0 +1 @@
+org.apache.tinkerpop.gremlin.python.jsr223.GremlinJythonScriptEngineFactory
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/PythonTranslatorProvider.java
----------------------------------------------------------------------
diff --git 
a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/PythonTranslatorProvider.java
 
b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/PythonTranslatorProvider.java
index bbcafda..985e8bc 100644
--- 
a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/PythonTranslatorProvider.java
+++ 
b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/PythonTranslatorProvider.java
@@ -22,6 +22,7 @@ package org.apache.tinkerpop.gremlin.java.translator;
 import org.apache.commons.configuration.Configuration;
 import org.apache.tinkerpop.gremlin.AbstractGraphProvider;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.jsr223.SingleGremlinScriptEngineManager;
 import 
org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionComputerTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
@@ -138,7 +139,7 @@ public abstract class PythonTranslatorProvider extends 
AbstractGraphProvider {
             //throw new VerificationException("This test current does not work 
with Gremlin-Python", EmptyTraversal.instance());
         else {
             try {
-                ScriptEngineCache.get("jython").eval(IMPORT_STATICS ?
+                
SingleGremlinScriptEngineManager.getInstance().getEngineByName("gremlin-jython").eval(IMPORT_STATICS
 ?
                         "statics.load_statics(globals())" :
                         "statics.unload_statics(globals())");
             } catch (final ScriptException e) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/groovy/PythonGroovyTranslator.java
----------------------------------------------------------------------
diff --git 
a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/groovy/PythonGroovyTranslator.java
 
b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/groovy/PythonGroovyTranslator.java
index cd2c85c..eb11f7e 100644
--- 
a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/groovy/PythonGroovyTranslator.java
+++ 
b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/groovy/PythonGroovyTranslator.java
@@ -20,6 +20,7 @@
 package org.apache.tinkerpop.gremlin.java.translator.groovy;
 
 import org.apache.tinkerpop.gremlin.java.translator.PythonTranslator;
+import org.apache.tinkerpop.gremlin.jsr223.SingleGremlinScriptEngineManager;
 import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.ScriptEngineCache;
@@ -54,7 +55,7 @@ public class PythonGroovyTranslator extends PythonTranslator {
     public String translate(final Bytecode bytecode) {
         final String traversal = super.translate(bytecode);
         try {
-            final ScriptEngine jythonEngine = ScriptEngineCache.get("jython");
+            final ScriptEngine jythonEngine = 
SingleGremlinScriptEngineManager.getInstance().getEngineByName("gremlin-jython");
             jythonEngine.getBindings(ScriptContext.ENGINE_SCOPE)
                     .put(this.traversalSource, 
jythonEngine.eval("RemoteGraph(GroovyTranslator(\"" + this.traversalSource + 
"\"), None).traversal()"));
             return jythonEngine.eval(traversal).toString();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/jython/PythonJythonTranslator.java
----------------------------------------------------------------------
diff --git 
a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/jython/PythonJythonTranslator.java
 
b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/jython/PythonJythonTranslator.java
index 6637a2b..0b7d5b8 100644
--- 
a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/jython/PythonJythonTranslator.java
+++ 
b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/java/translator/jython/PythonJythonTranslator.java
@@ -20,6 +20,7 @@
 package org.apache.tinkerpop.gremlin.java.translator.jython;
 
 import org.apache.tinkerpop.gremlin.java.translator.PythonTranslator;
+import org.apache.tinkerpop.gremlin.jsr223.SingleGremlinScriptEngineManager;
 import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.ScriptEngineCache;
@@ -54,7 +55,7 @@ public class PythonJythonTranslator extends PythonTranslator {
     public String translate(final Bytecode bytecode) {
         final String traversal = super.translate(bytecode);
         try {
-            final ScriptEngine jythonEngine = ScriptEngineCache.get("jython");
+            final ScriptEngine jythonEngine = 
SingleGremlinScriptEngineManager.getInstance().getEngineByName("gremlin-jython");
             jythonEngine.getBindings(ScriptContext.ENGINE_SCOPE)
                     .put(this.traversalSource, 
jythonEngine.eval("RemoteGraph(JythonTranslator(\"" + this.traversalSource + 
"\"), None).traversal()"));
             return jythonEngine.eval(traversal).toString();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/driver/RESTRemoteConnectionTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/driver/RESTRemoteConnectionTest.java
 
b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/driver/RESTRemoteConnectionTest.java
index 640e5ef..056c1a6 100644
--- 
a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/driver/RESTRemoteConnectionTest.java
+++ 
b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/driver/RESTRemoteConnectionTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.tinkerpop.gremlin.python.driver;
 
+import org.apache.tinkerpop.gremlin.jsr223.SingleGremlinScriptEngineManager;
 import org.apache.tinkerpop.gremlin.python.jsr223.JythonScriptEngineSetup;
 import org.apache.tinkerpop.gremlin.server.GremlinServer;
 import org.apache.tinkerpop.gremlin.server.Settings;
@@ -40,7 +41,7 @@ import static org.junit.Assert.assertTrue;
  */
 public class RESTRemoteConnectionTest {
 
-    private static final ScriptEngine jython = ScriptEngineCache.get("jython");
+    private static final ScriptEngine jython = 
SingleGremlinScriptEngineManager.getInstance().getEngineByName("gremlin-jython");
 
     private final List<String> aliases = Arrays.asList("g", "j");
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineTest.java
 
b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineTest.java
index 28b407b..8bc60a5 100644
--- 
a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineTest.java
+++ 
b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngineTest.java
@@ -19,6 +19,8 @@
 
 package org.apache.tinkerpop.gremlin.python.jsr223;
 
+import org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager;
+import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineManager;
 import org.apache.tinkerpop.gremlin.process.traversal.SackFunctions;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.structure.Column;
@@ -45,7 +47,7 @@ public class GremlinJythonScriptEngineTest {
 
     @Test
     public void shouldGetEngineByName() throws Exception {
-        final ScriptEngine engine = new 
ScriptEngineManager().getEngineByName("gremlin-jython");
+        final ScriptEngine engine = new 
DefaultGremlinScriptEngineManager().getEngineByName("gremlin-jython");
         assertNotNull(engine);
         assertTrue(engine instanceof GremlinJythonScriptEngine);
         assertEquals(3, engine.eval("1+2"));
@@ -53,7 +55,7 @@ public class GremlinJythonScriptEngineTest {
 
     @Test
     public void shouldHaveCoreImports() throws Exception {
-        final ScriptEngine engine = new 
ScriptEngineManager().getEngineByName("gremlin-jython");
+        final ScriptEngine engine = new 
DefaultGremlinScriptEngineManager().getEngineByName("gremlin-jython");
         assertTrue(engine.eval("Graph") instanceof Class);
         assertTrue(engine.eval("__") instanceof Class);
         assertTrue(engine.eval("T") instanceof Class);
@@ -74,7 +76,7 @@ public class GremlinJythonScriptEngineTest {
 
     @Test
     public void shouldSupportJavaBasedGraphTraversal() throws Exception {
-        final ScriptEngine engine = new 
ScriptEngineManager().getEngineByName("gremlin-jython");
+        final ScriptEngine engine = new 
DefaultGremlinScriptEngineManager().getEngineByName("gremlin-jython");
         engine.getBindings(ScriptContext.ENGINE_SCOPE).put("graph", 
TinkerFactory.createModern());
         engine.eval("g = graph.traversal()");
         assertEquals(new HashSet<>(Arrays.asList("ripple", "lop")), 
engine.eval("g.V().repeat(out()).times(2).values('name').toSet()"));
@@ -87,7 +89,7 @@ public class GremlinJythonScriptEngineTest {
 
     @Test
     public void shouldSupportSugarMethods() throws Exception {
-        final ScriptEngine engine = new 
ScriptEngineManager().getEngineByName("gremlin-jython");
+        final ScriptEngine engine = new 
DefaultGremlinScriptEngineManager().getEngineByName("gremlin-jython");
         engine.getBindings(ScriptContext.ENGINE_SCOPE).put("graph", 
TinkerFactory.createModern());
         engine.eval("g = graph.traversal()");
         assertEquals(new HashSet<>(Arrays.asList("ripple", "lop")), 
engine.eval("g.V().repeat(__.out()).times(2)[0:2].name.toSet()"));

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/JythonScriptEngineSetup.java
----------------------------------------------------------------------
diff --git 
a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/JythonScriptEngineSetup.java
 
b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/JythonScriptEngineSetup.java
index 8fe0c72..abe9dc9 100644
--- 
a/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/JythonScriptEngineSetup.java
+++ 
b/gremlin-python/src/test/java/org/apache/tinkerpop/gremlin/python/jsr223/JythonScriptEngineSetup.java
@@ -19,6 +19,7 @@
 
 package org.apache.tinkerpop.gremlin.python.jsr223;
 
+import org.apache.tinkerpop.gremlin.jsr223.SingleGremlinScriptEngineManager;
 import org.apache.tinkerpop.gremlin.util.ScriptEngineCache;
 
 import javax.script.ScriptEngine;
@@ -34,7 +35,7 @@ public class JythonScriptEngineSetup {
 
     public static void setup() {
         try {
-            final ScriptEngine jythonEngine = ScriptEngineCache.get("jython");
+            final ScriptEngine jythonEngine = 
SingleGremlinScriptEngineManager.getInstance().getEngineByName("gremlin-jython");
             jythonEngine.eval("import gremlin_python.statics");
             jythonEngine.eval("from gremlin_python.process.traversal import 
*");
             jythonEngine.eval("from gremlin_python.process.graph_traversal 
import *");

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-python/src/test/resources/META-INF/services/javax.script.ScriptEngineFactory
----------------------------------------------------------------------
diff --git 
a/gremlin-python/src/test/resources/META-INF/services/javax.script.ScriptEngineFactory
 
b/gremlin-python/src/test/resources/META-INF/services/javax.script.ScriptEngineFactory
deleted file mode 100644
index 910facc..0000000
--- 
a/gremlin-python/src/test/resources/META-INF/services/javax.script.ScriptEngineFactory
+++ /dev/null
@@ -1,2 +0,0 @@
-org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngineFactory
-org.apache.tinkerpop.gremlin.python.jsr223.GremlinJythonScriptEngineFactory
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-server/conf/gremlin-server-neo4j.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-neo4j.yaml 
b/gremlin-server/conf/gremlin-server-neo4j.yaml
index 55aa170..54395b2 100644
--- a/gremlin-server/conf/gremlin-server-neo4j.yaml
+++ b/gremlin-server/conf/gremlin-server-neo4j.yaml
@@ -39,10 +39,7 @@ scriptEngines: {
   gremlin-groovy: {
     imports: [java.lang.Math],
     staticImports: [java.lang.Math.PI],
-    scripts: [scripts/empty-sample.groovy]},
-  nashorn: {
-      imports: [java.lang.Math],
-      staticImports: [java.lang.Math.PI]}}
+    scripts: [scripts/empty-sample.groovy]}}
 serializers:
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { 
useMapperFromGraph: graph }}            # application/vnd.gremlin-v1.0+gryo
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: 
{ useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-server/conf/gremlin-server-spark.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-spark.yaml 
b/gremlin-server/conf/gremlin-server-spark.yaml
index 9340611..a485dfa 100644
--- a/gremlin-server/conf/gremlin-server-spark.yaml
+++ b/gremlin-server/conf/gremlin-server-spark.yaml
@@ -52,10 +52,7 @@ scriptEngines: {
   gremlin-groovy: {
     imports: [java.lang.Math],
     staticImports: [java.lang.Math.PI],
-    scripts: [scripts/spark.groovy]},
-  nashorn: {
-      imports: [java.lang.Math],
-      staticImports: [java.lang.Math.PI]}}
+    scripts: [scripts/spark.groovy]}}
 serializers:
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { 
useMapperFromGraph: graph }}            # application/vnd.gremlin-v1.0+gryo
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: 
{ useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-server/conf/gremlin-server.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server.yaml 
b/gremlin-server/conf/gremlin-server.yaml
index c05ac27..307a1b5 100644
--- a/gremlin-server/conf/gremlin-server.yaml
+++ b/gremlin-server/conf/gremlin-server.yaml
@@ -29,10 +29,7 @@ scriptEngines: {
   gremlin-groovy: {
     imports: [java.lang.Math],
     staticImports: [java.lang.Math.PI],
-    scripts: [scripts/empty-sample.groovy]},
-  nashorn: {
-      imports: [java.lang.Math],
-      staticImports: [java.lang.Math.PI]}}
+    scripts: [scripts/empty-sample.groovy]}}
 serializers:
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { 
useMapperFromGraph: graph }}            # application/vnd.gremlin-v1.0+gryo
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: 
{ useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
----------------------------------------------------------------------
diff --git 
a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
 
b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
index 86245b5..1a85d0c 100644
--- 
a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
+++ 
b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
@@ -32,10 +32,7 @@ scriptEngines: {
   gremlin-groovy: {
     imports: [java.lang.Math],
     staticImports: [java.lang.Math.PI],
-    scripts: [scripts/generate-all.groovy]},
-  nashorn: {
-      imports: [java.lang.Math],
-      staticImports: [java.lang.Math.PI]}}
+    scripts: [scripts/generate-all.groovy]}}
 serializers:
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { 
useMapperFromGraph: graph, custom: 
[groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: 
{ useMapperFromGraph: graph, custom: 
[groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
----------------------------------------------------------------------
diff --git 
a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
 
b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
index c1a5214..a8ac64c 100644
--- 
a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
+++ 
b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
@@ -28,10 +28,7 @@ scriptEngines: {
   gremlin-groovy: {
     imports: [java.lang.Math],
     staticImports: [java.lang.Math.PI],
-    scripts: [scripts/empty-sample.groovy]},
-  nashorn: {
-      imports: [java.lang.Math],
-      staticImports: [java.lang.Math.PI]}}
+    scripts: [scripts/empty-sample.groovy]}}
 serializers:
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { 
useMapperFromGraph: graph, custom: 
[groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: 
{ useMapperFromGraph: graph, custom: 
[groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b93feb47/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
----------------------------------------------------------------------
diff --git 
a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
 
b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
index bdd89ed..8816859 100644
--- 
a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
+++ 
b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
@@ -28,10 +28,7 @@ scriptEngines: {
   gremlin-groovy: {
     imports: [java.lang.Math],
     staticImports: [java.lang.Math.PI],
-    scripts: [scripts/load-sample.groovy]},
-  nashorn: {
-      imports: [java.lang.Math],
-      staticImports: [java.lang.Math.PI]}}
+    scripts: [scripts/load-sample.groovy]}}
 serializers:
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { 
useMapperFromGraph: graph }}
   - { className: 
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0 }

Reply via email to