You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2018/06/20 15:25:19 UTC

tinkerpop git commit: TINKERPOP-1989 Enforce order of plugin load in Gremlin Console

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1989 [created] 6c75ceb25


TINKERPOP-1989 Enforce order of plugin load in Gremlin Console

Use the order presented in the configuration file to enforce the load order.


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

Branch: refs/heads/TINKERPOP-1989
Commit: 6c75ceb25d6a828489f29b883be99ae7739e09e0
Parents: 7c7dddb
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jun 20 11:24:34 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 20 11:24:34 2018 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                                  |  1 +
 .../apache/tinkerpop/gremlin/console/Console.groovy | 16 +++++++++-------
 2 files changed, 10 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6c75ceb2/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 05b74da..33fe5c4 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -31,6 +31,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 * Improved performance of `TraversalVertexProgram` and related infrastructure.
 * Added `createGratefulDead()`to `TinkerFactory` to help make it easier to try to instantiate that toy graph.
 * Added identifiers to edges in the Kitchen Sink toy graph.
+* Ordered the loading of plugins in the Gremlin Console by their position in the configuration file.
 * Refactored the Gremlin Server integration testing framework and streamlined that infrastructure.
 * Fixed bug in `GroovyTranslator` that didn't properly handle empty `Map` objects.
 * Added concrete configuration methods to `SparkGraphComputer` to make a more clear API for configuring it.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6c75ceb2/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Console.groovy
----------------------------------------------------------------------
diff --git a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Console.groovy b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Console.groovy
index 4e54a42..ad41d6c 100644
--- a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Console.groovy
+++ b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Console.groovy
@@ -127,7 +127,7 @@ class Console {
 
         GremlinLoader.load()
 
-        // check for available plugins.  if they are in the "active" plugins strategies then "activate" them
+        // check for available plugins on the path and track them by plugin class name
         def activePlugins = Mediator.readPluginState()
         def pluginClass = mediator.useV3d3 ? org.apache.tinkerpop.gremlin.jsr223.GremlinPlugin : GremlinPlugin
         ServiceLoader.load(pluginClass, groovy.getInterp().getClassLoader()).each { plugin ->
@@ -141,14 +141,16 @@ class Console {
                 }
 
                 mediator.availablePlugins.put(plugin.class.name, pluggedIn)
+            }
+        }
 
-                if (activePlugins.contains(plugin.class.name)) {
-                    pluggedIn.activate()
+        // if there are active plugins then initialize them in the order that they are listed
+        activePlugins.each { pluginName ->
+            def pluggedIn = mediator.availablePlugins[pluginName]
+            pluggedIn.activate()
 
-                    if (!io.quiet)
-                        io.out.println(Colorizer.render(Preferences.infoColor, "plugin activated: " + plugin.getName()))
-                }
-            }
+            if (!io.quiet)
+                io.out.println(Colorizer.render(Preferences.infoColor, "plugin activated: " + pluggedIn.getPlugin().getName()))
         }
 
         // remove any "uninstalled" plugins from plugin state as it means they were installed, activated, but not