TINKERPOP=1562 Loaded "gremlin" imports in the scriptengines

Rather than load them in the DefaultGremlinScriptEngineManager it seemed better 
to get them loaded in the engines themselves that way if someone opted to 
construct the GremlinScriptEngine directly the imports would be present.


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

Branch: refs/heads/TINKERPOP-1562
Commit: 9d0d1abe044e25e256ae3a852cf1452144abcfd7
Parents: d6fcb92
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Nov 28 16:51:12 2016 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Dec 1 06:41:43 2016 -0500

----------------------------------------------------------------------
 .../tinkerpop/gremlin/jsr223/CoreGremlinPlugin.java      |  3 ++-
 .../jsr223/DefaultGremlinScriptEngineManager.java        |  3 ---
 .../gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java |  8 ++++++--
 .../gremlin/python/jsr223/GremlinJythonScriptEngine.java | 11 ++++++-----
 .../gremlin/jsr223/GremlinEnabledScriptEngineTest.java   |  5 ++---
 5 files changed, 16 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9d0d1abe/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreGremlinPlugin.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreGremlinPlugin.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreGremlinPlugin.java
index d579691..a3063cf 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreGremlinPlugin.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreGremlinPlugin.java
@@ -24,7 +24,8 @@ import java.util.Optional;
 
 /**
  * This module is required for a {@code ScriptEngine} to be Gremlin-enabled. 
This {@link GremlinPlugin} is not enabled
- * for the {@code ServiceLoader}. It is designed to be instantiated manually.
+ * for the {@code ServiceLoader}. It is designed to be instantiated manually 
and compliant {@link GremlinScriptEngine}
+ * instances will automatically install it by default when created.
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9d0d1abe/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 1484f90..34ef995 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
@@ -404,9 +404,6 @@ public class DefaultGremlinScriptEngineManager implements 
GremlinScriptEngineMan
     }
 
     private void initEngines(final ClassLoader loader) {
-        // always need this module for a scriptengine to be "Gremlin-enabled"
-        plugins.add(CoreGremlinPlugin.instance());
-
         Iterator<GremlinScriptEngineFactory> itty;
         try {
             final ServiceLoader<GremlinScriptEngineFactory> sl = 
AccessController.doPrivileged(

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9d0d1abe/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 3ce400e..264587a 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,7 @@ import 
org.apache.tinkerpop.gremlin.groovy.loaders.GremlinLoader;
 import org.apache.tinkerpop.gremlin.groovy.plugin.Artifact;
 import org.apache.tinkerpop.gremlin.groovy.plugin.GremlinPlugin;
 import org.apache.tinkerpop.gremlin.groovy.plugin.GremlinPluginException;
+import org.apache.tinkerpop.gremlin.jsr223.CoreGremlinPlugin;
 import org.apache.tinkerpop.gremlin.jsr223.Customizer;
 import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngine;
 import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineFactory;
@@ -184,7 +185,7 @@ public class GremlinGroovyScriptEngine extends 
GroovyScriptEngineImpl
      * Creates a new instance using the {@link 
DefaultImportCustomizerProvider}.
      */
     public GremlinGroovyScriptEngine() {
-        this((CompilerCustomizerProvider) new 
DefaultImportCustomizerProvider());
+        this(new Customizer[0]);
     }
 
     /**
@@ -196,7 +197,10 @@ public class GremlinGroovyScriptEngine extends 
GroovyScriptEngineImpl
     }
 
     public GremlinGroovyScriptEngine(final Customizer... customizers) {
-        final List<Customizer> listOfCustomizers = Arrays.asList(customizers);
+        final List<Customizer> listOfCustomizers = new 
ArrayList<>(Arrays.asList(customizers));
+
+        // always need this plugin for a scriptengine to be "Gremlin-enabled"
+        
CoreGremlinPlugin.instance().getCustomizers("gremlin-groovy").ifPresent(c -> 
listOfCustomizers.addAll(Arrays.asList(c)));
 
         GremlinLoader.load();
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9d0d1abe/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 1b95a02..1a4b57a 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,7 @@
 
 package org.apache.tinkerpop.gremlin.python.jsr223;
 
+import org.apache.tinkerpop.gremlin.jsr223.CoreGremlinPlugin;
 import org.apache.tinkerpop.gremlin.jsr223.Customizer;
 import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngine;
 import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineFactory;
@@ -27,7 +28,6 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
-import 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.util.CoreImports;
 import org.python.jsr223.PyScriptEngine;
 import org.python.jsr223.PyScriptEngineFactory;
@@ -37,12 +37,10 @@ import javax.script.ScriptContext;
 import javax.script.ScriptException;
 import java.io.Reader;
 import java.lang.reflect.Method;
+import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -82,7 +80,10 @@ public class GremlinJythonScriptEngine implements 
GremlinScriptEngine {
 
     public GremlinJythonScriptEngine(final Customizer... customizers) {
         this.pyScriptEngine = (PyScriptEngine) new 
PyScriptEngineFactory().getScriptEngine();
-        final List<Customizer> listOfCustomizers = Arrays.asList(customizers);
+        final List<Customizer> listOfCustomizers = new 
ArrayList<>(Arrays.asList(customizers));
+
+        // always need this plugin for a scriptengine to be "Gremlin-enabled"
+        
CoreGremlinPlugin.instance().getCustomizers("gremlin-groovy").ifPresent(c -> 
listOfCustomizers.addAll(Arrays.asList(c)));
 
         final List<ImportCustomizer> importCustomizers = 
listOfCustomizers.stream()
                 .filter(p -> p instanceof ImportCustomizer)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9d0d1abe/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinEnabledScriptEngineTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinEnabledScriptEngineTest.java
 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinEnabledScriptEngineTest.java
index 8fa70b0..5a880f8 100644
--- 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinEnabledScriptEngineTest.java
+++ 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinEnabledScriptEngineTest.java
@@ -82,12 +82,11 @@ public class GremlinEnabledScriptEngineTest {
     }
 
     @Test
-    public void shouldReturnOneCustomizers() {
-        // just returns the core plugin as the other assigned plugin doesn't 
match the tested engine
+    public void shouldReturnNoCustomizers() {
         final GremlinScriptEngineManager mgr = new 
DefaultGremlinScriptEngineManager();
         mgr.addPlugin(ImportGremlinPlugin.build()
                 .classImports(java.awt.Color.class)
                 
.appliesTo(Collections.singletonList("fake-script-engine")).create());
-        assertEquals(1, mgr.getCustomizers(ENGINE_TO_TEST).size());
+        assertEquals(0, mgr.getCustomizers(ENGINE_TO_TEST).size());
     }
 }

Reply via email to