Repository: tinkerpop Updated Branches: refs/heads/master 2e64a9521 -> 28b3139ed
Deprecated some old plugin infrastructure code Moved PluggedIn out of plugins package as that package is basically being deleted in 3.3.0. CTR Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ec8f81e6 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ec8f81e6 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ec8f81e6 Branch: refs/heads/master Commit: ec8f81e687e086940a10d4d2e4ed0ee624bbaa7e Parents: de38c6d Author: Stephen Mallette <sp...@genoprime.com> Authored: Mon Feb 27 10:43:19 2017 -0500 Committer: Stephen Mallette <sp...@genoprime.com> Committed: Mon Feb 27 10:43:19 2017 -0500 ---------------------------------------------------------------------- CHANGELOG.asciidoc | 1 + .../tinkerpop/gremlin/console/Console.groovy | 1 - .../tinkerpop/gremlin/console/Mediator.groovy | 1 - .../tinkerpop/gremlin/console/PluggedIn.groovy | 166 +++++++++++++++++++ .../console/commands/InstallCommand.groovy | 2 +- .../console/plugin/ConsolePluginAcceptor.groovy | 2 + .../gremlin/console/plugin/PluggedIn.groovy | 2 + .../groovy/plugin/GremlinPluginAdapterTest.java | 2 +- .../jsr223/UtilitiesGremlinPluginTest.java | 2 +- .../gremlin/jsr223/console/PluginAcceptor.java | 2 + 10 files changed, 176 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ec8f81e6/CHANGELOG.asciidoc ---------------------------------------------------------------------- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 34d74d4..7998974 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -28,6 +28,7 @@ TinkerPop 3.2.5 (Release Date: NOT OFFICIALLY RELEASED YET) * Removed `HasTest.g_V_hasId_compilationEquality` from process test suite as it makes too many assumptions about provider compilation. * Deprecated `CustomizerProvider` infrastructure. +* Deprecated `PluginAcceptor` infrastructure. * Improved consistency of the application of bindings to `GremlinScriptEngine` implementations in the `BindingsGremlinPlugin`. * Fixed a bug in OLAP `ComputerAwareStep` where end-step labels were not being appended to the traverser correctly. * Refactor `SparkContext` handler to support external kill and stop operations. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ec8f81e6/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 be71cb0..651d6f3 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 @@ -28,7 +28,6 @@ import org.apache.tinkerpop.gremlin.console.commands.PluginCommand import org.apache.tinkerpop.gremlin.console.commands.RemoteCommand import org.apache.tinkerpop.gremlin.console.commands.SubmitCommand import org.apache.tinkerpop.gremlin.console.commands.UninstallCommand -import org.apache.tinkerpop.gremlin.console.plugin.PluggedIn import org.apache.tinkerpop.gremlin.groovy.loaders.GremlinLoader import org.apache.tinkerpop.gremlin.groovy.plugin.GremlinPlugin import org.apache.tinkerpop.gremlin.jsr223.CoreGremlinPlugin http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ec8f81e6/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Mediator.groovy ---------------------------------------------------------------------- diff --git a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Mediator.groovy b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Mediator.groovy index 74f956d..2f5b827 100644 --- a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Mediator.groovy +++ b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Mediator.groovy @@ -18,7 +18,6 @@ */ package org.apache.tinkerpop.gremlin.console -import org.apache.tinkerpop.gremlin.console.plugin.PluggedIn import org.apache.tinkerpop.gremlin.groovy.plugin.RemoteAcceptor /** http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ec8f81e6/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/PluggedIn.groovy ---------------------------------------------------------------------- diff --git a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/PluggedIn.groovy b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/PluggedIn.groovy new file mode 100644 index 0000000..a1e1ee7 --- /dev/null +++ b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/PluggedIn.groovy @@ -0,0 +1,166 @@ +/* + * 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.console + +import org.apache.tinkerpop.gremlin.console.plugin.ConsolePluginAcceptor +import org.apache.tinkerpop.gremlin.groovy.plugin.* +import org.apache.tinkerpop.gremlin.jsr223.BindingsCustomizer +import org.apache.tinkerpop.gremlin.jsr223.ImportCustomizer +import org.apache.tinkerpop.gremlin.jsr223.ScriptCustomizer +import org.apache.tinkerpop.gremlin.jsr223.console.ConsoleCustomizer +import org.apache.tinkerpop.gremlin.jsr223.console.GremlinShellEnvironment +import org.codehaus.groovy.tools.shell.Groovysh +import org.codehaus.groovy.tools.shell.IO + +/** + * @author Stephen Mallette (http://stephen.genoprime.com) + */ +class PluggedIn { + private static final String LINE_SEPARATOR = System.getProperty("line.separator") + private final GremlinPlugin plugin + private boolean activated = false + + private final Groovysh shell + private final IO io + + public PluggedIn(final GremlinPlugin plugin, final Groovysh shell, final IO io, final boolean activated) { + this.plugin = plugin + this.activated = activated + this.shell = shell + this.io = io + } + + GremlinPlugin getPlugin() { + return plugin + } + + boolean getActivated() { + return activated + } + + void activate() { + plugin.pluginTo(new ConsolePluginAcceptor(shell, io)) + this.activated = true + } + + void deactivate() { + this.activated = false + } + + public static class GremlinPluginAdapter implements GremlinPlugin { + org.apache.tinkerpop.gremlin.jsr223.GremlinPlugin corePlugin + private final Groovysh shell + private final IO io + + public GremlinPluginAdapter(final org.apache.tinkerpop.gremlin.jsr223.GremlinPlugin corePlugin, final Groovysh shell, final IO io) { + this.corePlugin = corePlugin + this.shell = shell + this.io = io + } + + @Override + String getName() { + return corePlugin.getName() + } + + @Override + void pluginTo(final PluginAcceptor pluginAcceptor) throws IllegalEnvironmentException, PluginInitializationException { + corePlugin.getCustomizers("gremlin-groovy").get().each { + if (it instanceof ImportCustomizer) { + def imports = [] as Set + it.getClassPackages().collect {Mediator.IMPORT_SPACE + it.getName() + Mediator.IMPORT_WILDCARD }.each { imports.add(it) } + it.getMethodClasses().collect {Mediator.IMPORT_STATIC_SPACE + it.getCanonicalName() + Mediator.IMPORT_WILDCARD}.each {imports.add(it)} + it.getEnumClasses().collect {Mediator.IMPORT_STATIC_SPACE + it.getCanonicalName() + Mediator.IMPORT_WILDCARD}.each {imports.add(it)} + pluginAcceptor.addImports(imports) + } else if (it instanceof ScriptCustomizer) { + it.getScripts().collect { it.join(LINE_SEPARATOR) }.each { pluginAcceptor.eval(it) } + } else if (it instanceof BindingsCustomizer) { + it.bindings.entrySet().each { kv -> pluginAcceptor.addBinding(kv.key, kv.value) } + } + } + } + + @Override + boolean requireRestart() { + return corePlugin.requireRestart() + } + + @Override + Optional<RemoteAcceptor> remoteAcceptor() { + // find a consoleCustomizer if available + if (!corePlugin.getCustomizers("gremlin-groovy").isPresent() || !corePlugin.getCustomizers("gremlin-groovy").get().any{ it instanceof ConsoleCustomizer }) + return Optional.empty() + + ConsoleCustomizer customizer = (ConsoleCustomizer) corePlugin.getCustomizers("gremlin-groovy").get().find{ it instanceof ConsoleCustomizer } + return Optional.of(new RemoteAcceptorAdapter(customizer.getRemoteAcceptor(new GroovyGremlinShellEnvironment()))) + } + + public class GroovyGremlinShellEnvironment implements GremlinShellEnvironment { + + @Override + def <T> T getVariable(final String variableName) { + return (T) shell.interp.context.getVariable(variableName) + } + + @Override + def <T> void setVariable(final String variableName, final T variableValue) { + shell.interp.context.setVariable(variableName, variableValue) + } + + @Override + void println(final String line) { + io.println(line) + } + + @Override + def <T> T execute(final String line) { + return (T) shell.execute(line) + } + } + } + + public static class RemoteAcceptorAdapter implements RemoteAcceptor { + + private org.apache.tinkerpop.gremlin.jsr223.console.RemoteAcceptor remoteAcceptor + + public RemoteAcceptorAdapter(org.apache.tinkerpop.gremlin.jsr223.console.RemoteAcceptor remoteAcceptor) { + this.remoteAcceptor = remoteAcceptor + } + + @Override + Object connect(final List<String> args) throws RemoteException { + return remoteAcceptor.connect(args) + } + + @Override + Object configure(final List<String> args) throws RemoteException { + return remoteAcceptor.configure(args) + } + + @Override + Object submit(final List<String> args) throws RemoteException { + return remoteAcceptor.submit(args) + } + + @Override + void close() throws IOException { + remoteAcceptor.close() + } + } +} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ec8f81e6/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/commands/InstallCommand.groovy ---------------------------------------------------------------------- diff --git a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/commands/InstallCommand.groovy b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/commands/InstallCommand.groovy index c8a49df..5386e89 100644 --- a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/commands/InstallCommand.groovy +++ b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/commands/InstallCommand.groovy @@ -20,7 +20,7 @@ package org.apache.tinkerpop.gremlin.console.commands import org.apache.tinkerpop.gremlin.console.ConsoleFs import org.apache.tinkerpop.gremlin.console.Mediator -import org.apache.tinkerpop.gremlin.console.plugin.PluggedIn +import org.apache.tinkerpop.gremlin.console.PluggedIn import org.apache.tinkerpop.gremlin.groovy.plugin.GremlinPlugin import groovy.grape.Grape import org.apache.tinkerpop.gremlin.groovy.util.Artifact http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ec8f81e6/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/ConsolePluginAcceptor.groovy ---------------------------------------------------------------------- diff --git a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/ConsolePluginAcceptor.groovy b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/ConsolePluginAcceptor.groovy index b7ff7d4..bbb2dfd 100644 --- a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/ConsolePluginAcceptor.groovy +++ b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/ConsolePluginAcceptor.groovy @@ -25,7 +25,9 @@ import org.codehaus.groovy.tools.shell.IO /** * @author Stephen Mallette (http://stephen.genoprime.com) + * @deprecated As of release 3.2.5, not replaced. */ +@Deprecated class ConsolePluginAcceptor implements PluginAcceptor, org.apache.tinkerpop.gremlin.jsr223.console.PluginAcceptor { public static final String ENVIRONMENT_NAME = "console"; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ec8f81e6/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/PluggedIn.groovy ---------------------------------------------------------------------- diff --git a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/PluggedIn.groovy b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/PluggedIn.groovy index 3012caf..a4afb28 100644 --- a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/PluggedIn.groovy +++ b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/PluggedIn.groovy @@ -35,7 +35,9 @@ import org.codehaus.groovy.tools.shell.IO /** * @author Stephen Mallette (http://stephen.genoprime.com) + * @deprecated As of release 3.2.5, replaced by {@link org.apache.tinkerpop.gremlin.console.PluggedIn} */ +@Deprecated class PluggedIn { private static final String LINE_SEPARATOR = System.getProperty("line.separator") private final GremlinPlugin plugin http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ec8f81e6/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/GremlinPluginAdapterTest.java ---------------------------------------------------------------------- diff --git a/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/GremlinPluginAdapterTest.java b/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/GremlinPluginAdapterTest.java index dfc9006..fb8f990 100644 --- a/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/GremlinPluginAdapterTest.java +++ b/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/GremlinPluginAdapterTest.java @@ -19,7 +19,7 @@ package org.apache.tinkerpop.gremlin.console.groovy.plugin; import org.apache.tinkerpop.gremlin.TestHelper; -import org.apache.tinkerpop.gremlin.console.plugin.PluggedIn; +import org.apache.tinkerpop.gremlin.console.PluggedIn; import org.apache.tinkerpop.gremlin.jsr223.BindingsCustomizer; import org.apache.tinkerpop.gremlin.jsr223.Customizer; import org.apache.tinkerpop.gremlin.jsr223.DefaultBindingsCustomizer; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ec8f81e6/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/jsr223/UtilitiesGremlinPluginTest.java ---------------------------------------------------------------------- diff --git a/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/jsr223/UtilitiesGremlinPluginTest.java b/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/jsr223/UtilitiesGremlinPluginTest.java index abecf8c..65b2ee0 100644 --- a/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/jsr223/UtilitiesGremlinPluginTest.java +++ b/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/jsr223/UtilitiesGremlinPluginTest.java @@ -20,7 +20,7 @@ package org.apache.tinkerpop.gremlin.console.jsr223; import org.apache.commons.io.input.NullInputStream; import org.apache.tinkerpop.gremlin.console.plugin.ConsolePluginAcceptor; -import org.apache.tinkerpop.gremlin.console.plugin.PluggedIn; +import org.apache.tinkerpop.gremlin.console.PluggedIn; import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory; import org.codehaus.groovy.tools.shell.Groovysh; import org.codehaus.groovy.tools.shell.IO; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ec8f81e6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/console/PluginAcceptor.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/console/PluginAcceptor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/console/PluginAcceptor.java index ce8b913..cd6951b 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/console/PluginAcceptor.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/console/PluginAcceptor.java @@ -31,7 +31,9 @@ import java.util.Set; * and provides the abstractions required for a plugin to work regardless of the environmental implementations. * * @author Stephen Mallette (http://stephen.genoprime.com) + * @deprecated As of release 3.2.5, not replaced. */ +@Deprecated public interface PluginAcceptor { public void addImports(final Set<String> importStatements);