GitHub user spmallette opened a pull request: https://github.com/apache/tinkerpop/pull/510
TINKERPOP-1562 Migrate ScriptEngine-related code to gremlin-core https://issues.apache.org/jira/browse/TINKERPOP-1562 Apologies in advance - this is a fat, nasty PR and I doubt there would have been a way to break this up into smaller bits of work. Every change I made ended up creating new branches of stuff that needed to be touched. As it turns out `ScriptEngine` stuff was deeply nested into all areas of the code base and unraveling it all into a way that was non-breaking for 3.2.x was non-trivial. The core of this work focuses on: * Moving `ScriptEngine` and `GremlinPlugin` related stuff out of gremlin-groovy down to gremlin-core. * Given the above change that meant: ** Taking each existing gremlin-groovy based `GremlinPlugin` (hadoop, giraph, gephi, etc) and developing a parallel plugin based on gremlin-core. ** Making it so that gremlin server/console could utilize either plugin type (gremlin-server does this through a separate configuration option in gremlin-server.yaml and the console does this through a system variable that you could add to gremlin.sh (`-Dplugins=v3d3`) ** Deprecating lots of odds and ends to allow me to move classes around. The deprecation approach was more tedious and leads to some dead code, but it was a nice way to evolve this change more slowly and intelligently. It also taught me that we should be more watchful of "public class" scope. If just a fraction of these classes that I deprecated (which no one probably uses anyway) had been package scope this work would have been much easier. The testing for this body of work involved: * `mvn clean install` with integration tests * `docker/build.sh -t -i -n` * `process-docs.sh` * manual testing: ** every plugin in both versions ** specific testing of the dependency grabber via `:install` for the console and `-i` in gremlin server For the most part I didn't provide a lot of docs for this because I don't think we need to publish this for 3.2.x. These changes essentially just set the stage for use to use them in full in 3.3.0. I'll do some separate smaller PRs for 3.3.0 work around this that will include doc updates as I remove the deprecated code I've created here. VOTE +1 You can merge this pull request into a Git repository by running: $ git pull https://github.com/apache/tinkerpop TINKERPOP-1562 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/tinkerpop/pull/510.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #510 ---- commit aca81c011c1d6e2df9be8a0b4085db6987a1839a Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-17T21:47:31Z TINKERPOP-1562 Initial effort to deprecate ScriptEngines. This opens up some options for how to move plugins up to gremlin-core (or deprecate them completely - not surehow that will flow yet). Anyway, this is a wip commit and a nice stop point. commit d14005e8826f556882b0f0db64bec5ef4130e6e3 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-18T10:34:00Z TINKERPOP-1562 More deprecation around methods on building GremlinExecutor that used ScriptEngines. commit 4943f1217eaed23030f88a5bdf225eeda7baa1ff Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-21T12:36:40Z TINKERPOP-1562 Add GreminServerGremlinModule for Gremlin Server specific imports Allow use of instance() as a way for GremlinModules to be instantiated. commit 8c7fada64e6d4d53b56ade84a0f4eb0acb49ecf8 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-21T12:54:35Z TINKERPOP-1562 Add GremlinModule for Giraph. commit f8fd64a650b4124eae89857ae1d7e66c05e00d5d Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-21T12:55:27Z TINKERPOP-1562 Moved GremlinServerGremlinModule to standard directory structure commit c182d1d47839c196a7592224fd83195b6a0a2993 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-21T15:56:21Z TINKERPOP-1562 Deprecated GiraphGremlinPlugin. commit a5f7daaf0ca90d4f3631c990720fbfd441e2e054 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-21T18:13:30Z TINKERPOP-1562 Move RemoteAcceptor related stuff to gremlin-core. commit 052f19f94a8534581226c9cdb6caebcc295d6820 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-21T18:15:02Z TINKERPOP-1562 Renamed GremlinModule to GremlinPlugin in gremlin-core commit d09cf9ce4ed42bc4da5d52438e896777ea5a667f Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-21T18:34:27Z TINKERPOP-1562 Bring back GremlinModule and deprecate it. GremlinModule was introduced in 3.2.3. Wasn't sure if GremlinModule was equal to a GremlinPlugin so I had named it differently. It was never promoted as a replacement for GremlinPlugin and it was never used in core infrastructure like Gremlin Console or Gremlin Server, but I figured it better to avoid breaking change and simply deprecate it for removal later. commit a28100fd1d0adcb3837aed99a177a3191d54d7cd Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-21T22:15:53Z TINKERPOP-1562 Start getting Console working with new plugin stuff Built adapters to get new RemoteAcceptor to behave as the old RemoteAcceptor and to get new GremlinPlugin to work as the old GremlinPlugin. Deprecated some classes and undeprecated others - still a pretty big WIP commit at this point but nothing appears to be broken. commit 11f57acf6d69ba0105e1ba2d3315e8aa3436d877 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-22T11:33:22Z TINKERPOP-1562 ImportCustomizer has become an interface This is a breaking change unfortunately, but this was not a feature that was published or used in 3.2.3 so I don't expect wide usage. commit 2fdd4b111c437f4ad9c8d293ae36ffad256da8b0 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-22T11:49:14Z TINKERPOP-1562 Change ScriptCustomizer to an interface. This class had been added as part of this branch so recasting it as an interface is non-breaking. Get PluggedIn to process the ScriptCustomizer. commit 32275a94952b6fbdb7f97f309b60155d799521bb Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-22T11:59:49Z TINKERPOP-1562 Rename "modules" as "plugin" commit 1c052e69046c6691d65649cc54f19bfa0ef5094f Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-22T14:39:37Z TINKERPOP-1562 Fixed problems related to loading new/old plugins Tested in Gremlin Console and it looks like the flag that will tell it to load one plugin version or the other is working properly. commit 05727e2c8de06aa01459e8c7ea51246a7d021dc4 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-22T14:42:12Z TINKERPOP-1562 Deprecated TinkerGraphGremlinPlugin. commit f88af07abd131e9973887d9945a438de985906c0 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-22T15:57:32Z TINKERPOP-1562 Added SparkGremlinPlugin SparkGremlinPlugin required binding injections so a BindingCustomizer was added along with two implementations - one for direct assignment and one for lazy assignment. commit 458c34111c078780be5393e901f85ee35e64145a Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-22T16:15:57Z TINKERPOP-1562 Add new Neo4j GremlinPlugin and deprecated old one commit a229885d74e953d0950f978b735f7896fbefb146 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-22T18:41:58Z TINKERPOP-1562 Add new HadoopGremlinPlugin and deprecated the old. Had to add some capabilities to plugin system to allow for passing of console environment bits (like groovysh for example). commit e57a240800097aeaa0bd82d60a97527d3fe7d653 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-22T19:20:11Z TINKERPOP-1562 Added new plugins for gremlin-groovy to replace deprecated ones. Specifically did SugarGremlinPlugin and CredentialsGrpahGremlinPlugin. commit 47a24d590c45fb74bb739215a324c44507377d18 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-22T21:35:16Z TINKERPOP-1562 Added gremlin-console plugins under the new model. Had to rework the PluggedIn adapters a bit so that they could better handle Console environment variable.s commit 469787a6c9b05fc88ca3d724ad314682078828f5 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-23T16:31:06Z TINKERPOP-1562 Minor changes to javadocs. Also, moved a public static field back to ImportCustomizer (after it became a interface). commit bea343e7d5e1fc0a865b45f29230c7e831735524 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-23T19:37:26Z TINKERPOP-1562 Added more tests for plugins/customizers commit daad833fbf7dc9d1173af380476b6f2cc5333807 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-23T20:36:13Z TINKERPOP-1562 Added more tests for the GremlnPluginAdapter commit 30a76e69af749223b2dc7b9a9b05030cde3a03b2 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-23T22:10:13Z TINKERPOP-1562 Abstracted groovysh/io to GremlinShellEnvironment The GremlinShellEnvironment provides a way to abstract groovysh and io classes (i.e. groovy specific classes) so that plugins don't need to depend on gremlin-groovy at all. commit 46ece9636b9f1a0a43726ebcd9222caed5f885d9 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-23T22:22:58Z TINKERPOP-1562 Added JSR-223 packages in gremin-core to core javadoc commit 6e6dd1b4c6a462ae97732553852cc98dbd486df4 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-24T13:11:35Z TINKERPOP-1562 Hooked up GremlinJythonScriptEngine to Customizers GremlnJythonScriptEngine is now initialized the same way that GremlinGroovyScriptEngine is. commit d6fcb927a79d1e6af637377f5ae7b5c66c98caf4 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-26T12:37:28Z TINKERPOP-1562 Get customizers for both python and jython. The customizers are combined to a set and therefore should only apply once. Presumably there wouldn't be a different set of customizers for one versus the other. If there were and you wanted them separate I guess you'd have to build two separate script engine instances. commit 9d0d1abe044e25e256ae3a852cf1452144abcfd7 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-28T21:51:12Z 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. commit ce4d96cb92afa6095a1e2da8e6d0af789c5bcd46 Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-29T14:21:49Z TINKERPOP-1562 Deprecated plugin exceptions. These are needed anymore under the revised plugin model in gremlin-core. commit 57ea73881076a6fb106d444f63f284c478714f1e Author: Stephen Mallette <sp...@genoprime.com> Date: 2016-11-29T14:39:10Z TINKERPOP-1562 Deprecated Artifact Moved it to a new home as the hole plugin package is going to go away in 3.3.0 ---- --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---