http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/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 5de06e5..0ac5582 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 @@ -18,7 +18,6 @@ */ package org.apache.tinkerpop.gremlin.groovy.jsr223; -import groovy.grape.Grape; import groovy.lang.Binding; import groovy.lang.Closure; import groovy.lang.DelegatingMetaClass; @@ -27,17 +26,7 @@ import groovy.lang.MissingMethodException; import groovy.lang.MissingPropertyException; import groovy.lang.Script; import groovy.lang.Tuple; -import org.apache.tinkerpop.gremlin.groovy.CompilerCustomizerProvider; -import org.apache.tinkerpop.gremlin.groovy.DefaultImportCustomizerProvider; -import org.apache.tinkerpop.gremlin.groovy.EmptyImportCustomizerProvider; -import org.apache.tinkerpop.gremlin.groovy.ImportCustomizerProvider; -import org.apache.tinkerpop.gremlin.groovy.NoImportCustomizerProvider; -import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.ConfigurationCustomizerProvider; -import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.InterpreterModeCustomizerProvider; 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; @@ -91,7 +80,7 @@ import java.util.stream.Collectors; * @see org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor */ public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl - implements DependencyManager, AutoCloseable, GremlinScriptEngine { + implements AutoCloseable, GremlinScriptEngine { /** * An "internal" key for sandboxing the script engine - technically not for public use. @@ -136,7 +125,7 @@ public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl /** * Name of variable that holds local variables to be globally bound if "interpreter mode" is enabled with - * {@link InterpreterModeCustomizerProvider}. + * {@link InterpreterModeGroovyCustomizer}. */ public static final String COLLECTED_BOUND_VARS_MAP_VARNAME = "gremlin_script_engine_collected_boundvars"; @@ -175,17 +164,13 @@ public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl private static final String DOT_GROOVY = ".groovy"; private static final String GROOVY_LANG_SCRIPT = "groovy.lang.Script"; - private ImportCustomizerProvider importCustomizerProvider; - private final List<CompilerCustomizerProvider> customizerProviders; - private final ImportGroovyCustomizer importGroovyCustomizer; private final List<GroovyCustomizer> groovyCustomizers; - private final Set<Artifact> artifactsToUse = new HashSet<>(); private final boolean interpreterModeEnabled; /** - * Creates a new instance using the {@link DefaultImportCustomizerProvider}. + * Creates a new instance using no {@link Customizer}. */ public GremlinGroovyScriptEngine() { this(new Customizer[0]); @@ -215,138 +200,10 @@ public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl interpreterModeEnabled = groovyCustomizers.stream() .anyMatch(p -> p.getClass().equals(InterpreterModeGroovyCustomizer.class)); - // not using the old provider model so set that to empty list so that when createClassLoader is called - // it knows to use groovyCustomizers instead - customizerProviders = Collections.emptyList(); - - createClassLoader(); - } - - /** - * Creates a new instance with the specified {@link CompilerCustomizerProvider} objects. - * - * @deprecated As of release 3.2.4, replaced by {@link #GremlinGroovyScriptEngine(Customizer...)}. - */ - @Deprecated - public GremlinGroovyScriptEngine(final CompilerCustomizerProvider... compilerCustomizerProviders) { - final List<CompilerCustomizerProvider> providers = Arrays.asList(compilerCustomizerProviders); - - GremlinLoader.load(); - - importCustomizerProvider = providers.stream() - .filter(p -> p instanceof ImportCustomizerProvider) - .map(p -> (ImportCustomizerProvider) p) - .findFirst().orElse(NoImportCustomizerProvider.INSTANCE); - - // determine if interpreter mode should be enabled - interpreterModeEnabled = providers.stream() - .anyMatch(p -> p.getClass().equals(InterpreterModeCustomizerProvider.class)); - - // remove used providers as the rest will be applied directly - customizerProviders = providers.stream() - .filter(p -> p != null && !(p instanceof ImportCustomizerProvider)) - .collect(Collectors.toList()); - - // groovy customizers are not used here - set to empty list so that the customizerProviders get used - // in createClassLoader - groovyCustomizers = Collections.emptyList(); - importGroovyCustomizer = null; - createClassLoader(); } /** - * {@inheritDoc} - * <p/> - * This method should be called after "expected" imports have been added to the {@code DependencyManager} - * because adding imports with {@link #addImports(java.util.Set)} will reset the classloader and flush away - * dependencies. - */ - @Override - public synchronized List<GremlinPlugin> use(final String group, final String artifact, final String version) { - final Map<String, Object> dependency = new HashMap<String, Object>() {{ - put("group", group); - put("module", artifact); - put("version", version); - }}; - - final Map<String, Object> args = new HashMap<String, Object>() {{ - put("classLoader", loader); - }}; - - Grape.grab(args, dependency); - - // note that the service loader utilized the classloader from the groovy shell as shell class are available - // from within there given loading through Grape. - final List<GremlinPlugin> pluginsFound = new ArrayList<>(); - ServiceLoader.load(GremlinPlugin.class, loader).forEach(pluginsFound::add); - - artifactsToUse.add(new Artifact(group, artifact, version)); - - return pluginsFound; - } - - /** - * {@inheritDoc} - */ - @Override - public void loadPlugins(final List<GremlinPlugin> plugins) throws GremlinPluginException { - for (GremlinPlugin gremlinPlugin : plugins) { - if (!loadedPlugins.contains(gremlinPlugin.getName())) { - gremlinPlugin.pluginTo(new ScriptEnginePluginAcceptor(this)); - loadedPlugins.add(gremlinPlugin.getName()); - } - } - } - - /** - * {@inheritDoc} - */ - @Override - public Map[] dependencies() { - return Grape.listDependencies(loader); - } - - /** - * {@inheritDoc} - */ - @Override - public Map<String, Set<String>> imports() { - final Map<String, Set<String>> m = new HashMap<>(); - m.put("imports", importCustomizerProvider.getImports()); - m.put("staticImports", importCustomizerProvider.getStaticImports()); - m.put("extraImports", importCustomizerProvider.getExtraImports()); - m.put("extraStaticImports", importCustomizerProvider.getExtraStaticImports()); - return m; - } - - /** - * {@inheritDoc} - */ - @Override - public synchronized void addImports(final Set<String> importStatements) { - // can't use this feature because imports can't come in as String for the revised model - if (null == importCustomizerProvider) - throw new IllegalStateException("Imports cannot be added to a GremlinGroovyScriptEngine that uses Customizer instances"); - - final Set<String> staticImports = new HashSet<>(); - final Set<String> imports = new HashSet<>(); - - importStatements.forEach(s -> { - final String trimmed = s.trim(); - if (patternImportStatic.matcher(trimmed).matches()) { - final int pos = trimmed.indexOf(STATIC); - staticImports.add(s.substring(pos + 6).trim()); - } else - imports.add(s.substring(6).trim()); - }); - - importCustomizerProvider = new EmptyImportCustomizerProvider(importCustomizerProvider, imports, staticImports); - - internalReset(); - } - - /** * Get the list of loaded plugins. */ public Set getPlugins() { @@ -376,21 +233,16 @@ public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl } /** - * {@inheritDoc} + * Resets the entire {@code GremlinGroovyScriptEngine} by clearing script caches, recreating the classloader, + * clearing bindings. */ - @Override public void reset() { internalReset(); - - loadedPlugins.clear(); - getContext().getBindings(ScriptContext.ENGINE_SCOPE).clear(); } /** - * Resets the {@code ScriptEngine} but does not clear the loaded plugins or bindings. Typically called by - * {@link DependencyManager} methods that need to just force the classloader to be recreated and script caches - * cleared. + * Resets the {@code ScriptEngine} but does not clear the loaded plugins or bindings. */ private void internalReset() { createClassLoader(); @@ -399,9 +251,6 @@ public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl // referenced before that might not have evaluated might cleanly evaluate now. classMap.clear(); globalClosures.clear(); - - final Set<Artifact> toReuse = new HashSet<>(artifactsToUse); - toReuse.forEach(this::use); } /** @@ -670,36 +519,17 @@ public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl } private synchronized void createClassLoader() { - // check for customizerProviders temporarily until this deprecated stuff is gone - if (groovyCustomizers.isEmpty() && null == importGroovyCustomizer) { - final CompilerConfiguration conf = new CompilerConfiguration(CompilerConfiguration.DEFAULT); - conf.addCompilationCustomizers(this.importCustomizerProvider.create()); - - // ConfigurationCustomizerProvider is treated separately - customizerProviders.stream().filter(cp -> !(cp instanceof ConfigurationCustomizerProvider)) - .forEach(p -> conf.addCompilationCustomizers(p.create())); - - customizerProviders.stream().filter(cp -> cp instanceof ConfigurationCustomizerProvider).findFirst() - .ifPresent(cp -> ((ConfigurationCustomizerProvider) cp).applyCustomization(conf)); - - this.loader = new GremlinGroovyClassLoader(getParentLoader(), conf); - } else { - final CompilerConfiguration conf = new CompilerConfiguration(CompilerConfiguration.DEFAULT); - conf.addCompilationCustomizers(this.importGroovyCustomizer.create()); - - // ConfigurationCustomizerProvider is treated separately - groovyCustomizers.stream().filter(cp -> !(cp instanceof ConfigurationGroovyCustomizer)) - .forEach(p -> conf.addCompilationCustomizers(p.create())); + final CompilerConfiguration conf = new CompilerConfiguration(CompilerConfiguration.DEFAULT); + conf.addCompilationCustomizers(this.importGroovyCustomizer.create()); - groovyCustomizers.stream().filter(cp -> cp instanceof ConfigurationGroovyCustomizer).findFirst() - .ifPresent(cp -> ((ConfigurationGroovyCustomizer) cp).applyCustomization(conf)); + // ConfigurationCustomizerProvider is treated separately + groovyCustomizers.stream().filter(cp -> !(cp instanceof ConfigurationGroovyCustomizer)) + .forEach(p -> conf.addCompilationCustomizers(p.create())); - this.loader = new GremlinGroovyClassLoader(getParentLoader(), conf); - } - } + groovyCustomizers.stream().filter(cp -> cp instanceof ConfigurationGroovyCustomizer).findFirst() + .ifPresent(cp -> ((ConfigurationGroovyCustomizer) cp).applyCustomization(conf)); - private void use(final Artifact artifact) { - use(artifact.getGroup(), artifact.getArtifact(), artifact.getVersion()); + this.loader = new GremlinGroovyClassLoader(getParentLoader(), conf); } private Object callGlobal(final String name, final Object args[]) {
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/ScriptEnginePluginAcceptor.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/ScriptEnginePluginAcceptor.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/ScriptEnginePluginAcceptor.java deleted file mode 100644 index 5832e0b..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/ScriptEnginePluginAcceptor.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * 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.groovy.jsr223; - -import org.apache.tinkerpop.gremlin.groovy.plugin.GremlinPlugin; -import org.apache.tinkerpop.gremlin.groovy.plugin.PluginAcceptor; - -import javax.script.ScriptContext; -import javax.script.ScriptEngine; -import javax.script.ScriptException; -import javax.script.SimpleBindings; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -/** - * A {@link PluginAcceptor} implementation for bare {@code ScriptEngine} implementations allowing plugins to - * interact with them on initialization. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, not replaced. - */ -@Deprecated -public class ScriptEnginePluginAcceptor implements PluginAcceptor { - private final ScriptEngine scriptEngine; - - public ScriptEnginePluginAcceptor(final ScriptEngine scriptEngine) { - this.scriptEngine = scriptEngine; - } - - /** - * Adds global bindings to the {@code ScriptEngine} that will be applied to every evaluated script. - */ - @Override - public void addBinding(final String key, final Object val) { - // The binding was originally added to the engine scope but that proved to be "bad" as it mixed with other - // bindings in that space. - if (null == scriptEngine.getContext().getBindings(ScriptContext.GLOBAL_SCOPE)) - scriptEngine.getContext().setBindings(new SimpleBindings(), ScriptContext.GLOBAL_SCOPE); - scriptEngine.getContext().setAttribute(key, val, ScriptContext.GLOBAL_SCOPE); - } - - /** - * Gets the global bindings that will be applied to every evaluated script. - */ - @Override - public Map<String, Object> getBindings() { - // as these "global" bindings were added to engine scope they should be pulled from the same place - return scriptEngine.getBindings(ScriptContext.GLOBAL_SCOPE); - } - - /** - * If the {@code ScriptEngine} implements the {@link DependencyManager} interface it will try to import the - * specified import statements. - */ - @Override - public void addImports(final Set<String> importStatements) { - if (this.scriptEngine instanceof DependencyManager) - ((DependencyManager) this.scriptEngine).addImports(importStatements); - } - - /** - * Evaluate a script in the {@code ScriptEngine}. Typically {@code eval()} should be called after imports as - * {@code ScriptEngine} resets may occur during import. - */ - @Override - public Object eval(final String script) throws ScriptException { - return this.scriptEngine.eval(script); - } - - /** - * Defines the environment settings for the {@link GremlinPlugin}. - */ - @Override - public Map<String, Object> environment() { - final Map<String, Object> env = new HashMap<>(); - env.put(GremlinPlugin.ENVIRONMENT, "scriptEngine"); - return env; - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/TimedInterruptTimeoutException.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/TimedInterruptTimeoutException.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/TimedInterruptTimeoutException.java index bdd49b3..5751687 100644 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/TimedInterruptTimeoutException.java +++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/TimedInterruptTimeoutException.java @@ -18,12 +18,10 @@ */ package org.apache.tinkerpop.gremlin.groovy.jsr223; -import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.TimedInterruptCustomizerProvider; - import java.util.concurrent.TimeoutException; /** - * An exception thrown from the {@link TimedInterruptCustomizerProvider} when the timeout is exceeded. This exception + * An exception thrown from the {@link TimedInterruptGroovyCustomizer} when the timeout is exceeded. This exception * allows differentiation from other "timeout exceptions" that might occur. * * @author Stephen Mallette (http://stephen.genoprime.com) http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/TypeCheckedGroovyCustomizer.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/TypeCheckedGroovyCustomizer.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/TypeCheckedGroovyCustomizer.java index ac8dd1d..0dde1dc 100644 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/TypeCheckedGroovyCustomizer.java +++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/TypeCheckedGroovyCustomizer.java @@ -19,7 +19,6 @@ package org.apache.tinkerpop.gremlin.groovy.jsr223; import groovy.transform.TypeChecked; -import org.apache.tinkerpop.gremlin.groovy.CompilerCustomizerProvider; import org.codehaus.groovy.control.customizers.ASTTransformationCustomizer; import org.codehaus.groovy.control.customizers.CompilationCustomizer; http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/CompileStaticCustomizerProvider.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/CompileStaticCustomizerProvider.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/CompileStaticCustomizerProvider.java deleted file mode 100644 index 4371e8a..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/CompileStaticCustomizerProvider.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * 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.groovy.jsr223.customizer; - -import groovy.transform.CompileStatic; -import org.apache.tinkerpop.gremlin.groovy.CompilerCustomizerProvider; -import org.apache.tinkerpop.gremlin.jsr223.Customizer; -import org.codehaus.groovy.control.customizers.ASTTransformationCustomizer; -import org.codehaus.groovy.control.customizers.CompilationCustomizer; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -/** - * Injects the {@code CompileStatic} transformer to enable type validation on script execution. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, not replaced by a public class. - */ -@Deprecated -public class CompileStaticCustomizerProvider implements CompilerCustomizerProvider { - - private final String extensions; - - public CompileStaticCustomizerProvider() { - this(null); - } - - public CompileStaticCustomizerProvider(final String extensions) { - this.extensions = extensions; - } - - @Override - public CompilationCustomizer create() { - final Map<String, Object> annotationParams = new HashMap<>(); - if (extensions != null && !extensions.isEmpty()) { - if (extensions.contains(",")) - annotationParams.put("extensions", Stream.of(extensions.split(",")).collect(Collectors.toList())); - else - annotationParams.put("extensions", Collections.singletonList(extensions)); - } - - return new ASTTransformationCustomizer(annotationParams, CompileStatic.class); - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/ConfigurationCustomizerProvider.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/ConfigurationCustomizerProvider.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/ConfigurationCustomizerProvider.java deleted file mode 100644 index 3c8b673..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/ConfigurationCustomizerProvider.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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.groovy.jsr223.customizer; - -import org.apache.tinkerpop.gremlin.groovy.CompilerCustomizerProvider; -import org.apache.tinkerpop.gremlin.jsr223.Customizer; -import org.apache.tinkerpop.gremlin.structure.util.ElementHelper; -import org.codehaus.groovy.control.CompilerConfiguration; -import org.codehaus.groovy.control.customizers.CompilationCustomizer; - -import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -/** - * Allows configurations to be directly supplied to a groovy {@code CompilerConfiguration} when a - * {@link org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine} is initialized, providing fine-grained - * control over its internals. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, not replaced by a public class. - */ -@Deprecated -public class ConfigurationCustomizerProvider implements CompilerCustomizerProvider { - - private final Map<String,Object> properties; - - /** - * Creates a new instance using configuration values specified - */ - public ConfigurationCustomizerProvider(final Object... keyValues) { - if (null == keyValues || keyValues.length == 0) - throw new IllegalArgumentException("ConfigurationCustomizerProvider must have key/values specified"); - - if (keyValues.length % 2 != 0) - throw new IllegalArgumentException("The keyValues must have an even number of values"); - - properties = ElementHelper.asMap(keyValues); - } - - /** - * Creates a new instance using configuration values specified - */ - public ConfigurationCustomizerProvider(final Map<String,Object> keyValues) { - properties = keyValues; - } - - public CompilerConfiguration applyCustomization(final CompilerConfiguration compilerConfiguration) { - final Class<CompilerConfiguration> clazz = CompilerConfiguration.class; - final List<Method> methods = Arrays.asList(clazz.getMethods()); - for (Map.Entry<String,Object> entry : properties.entrySet()) { - final Method method = methods.stream().filter(m -> m.getName().equals("set" + entry.getKey())).findFirst() - .orElseThrow(() -> new IllegalStateException("Invalid setting [" + entry.getKey() + "] for CompilerConfiguration")); - - try { - method.invoke(compilerConfiguration, entry.getValue()); - } catch (Exception ex) { - throw new IllegalStateException(ex); - } - } - - return compilerConfiguration; - } - - @Override - public CompilationCustomizer create() { - throw new UnsupportedOperationException("This is a marker implementation that does not create a CompilationCustomizer instance"); - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/InterpreterModeCustomizerProvider.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/InterpreterModeCustomizerProvider.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/InterpreterModeCustomizerProvider.java deleted file mode 100644 index 3044474..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/InterpreterModeCustomizerProvider.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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.groovy.jsr223.customizer; - -import org.apache.tinkerpop.gremlin.groovy.CompilerCustomizerProvider; -import org.apache.tinkerpop.gremlin.groovy.jsr223.ast.InterpreterMode; -import org.apache.tinkerpop.gremlin.jsr223.Customizer; -import org.codehaus.groovy.control.customizers.ASTTransformationCustomizer; -import org.codehaus.groovy.control.customizers.CompilationCustomizer; - -/** - * Places the {@code ScriptEngine} in "interpreter mode" where local variables of a script are treated as global - * bindings. This implementation is technically not a true {@link CompilerCustomizerProvider} instance as the - * "interpreter mode" feature does not require a {@code CompilerCustomizer}. This class merely acts as a flag that - * tells the {@link org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine} to turn this feature on. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, not replaced by a public class. - */ -@Deprecated -public class InterpreterModeCustomizerProvider implements CompilerCustomizerProvider { - @Override - public CompilationCustomizer create() { - return new ASTTransformationCustomizer(InterpreterMode.class); - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/ThreadInterruptCustomizerProvider.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/ThreadInterruptCustomizerProvider.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/ThreadInterruptCustomizerProvider.java deleted file mode 100644 index c5fc60c..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/ThreadInterruptCustomizerProvider.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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.groovy.jsr223.customizer; - -import groovy.transform.ThreadInterrupt; -import org.apache.tinkerpop.gremlin.groovy.CompilerCustomizerProvider; -import org.apache.tinkerpop.gremlin.jsr223.Customizer; -import org.codehaus.groovy.control.customizers.ASTTransformationCustomizer; -import org.codehaus.groovy.control.customizers.CompilationCustomizer; - -/** - * Injects checks for thread interruption into scripts. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, not replaced by a public class. - */ -@Deprecated -public class ThreadInterruptCustomizerProvider implements CompilerCustomizerProvider { - @Override - public CompilationCustomizer create() { - return new ASTTransformationCustomizer(ThreadInterrupt.class); - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/TimedInterruptCustomizerProvider.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/TimedInterruptCustomizerProvider.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/TimedInterruptCustomizerProvider.java deleted file mode 100644 index f0e1080..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/TimedInterruptCustomizerProvider.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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.groovy.jsr223.customizer; - -import groovy.transform.TimedInterrupt; -import org.apache.tinkerpop.gremlin.groovy.CompilerCustomizerProvider; -import org.apache.tinkerpop.gremlin.jsr223.Customizer; -import org.codehaus.groovy.ast.tools.GeneralUtils; -import org.codehaus.groovy.control.customizers.ASTTransformationCustomizer; -import org.codehaus.groovy.control.customizers.CompilationCustomizer; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -/** - * Injects a check in loops and other areas of code to interrupt script execution if the run time exceeds the - * specified time. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, not replaced by a public class. - */ -@Deprecated -public class TimedInterruptCustomizerProvider implements CompilerCustomizerProvider { - public static final long DEFAULT_INTERRUPTION_TIMEOUT = 60000; - - private final long interruptionTimeout; - - public TimedInterruptCustomizerProvider() { - this(DEFAULT_INTERRUPTION_TIMEOUT); - } - - public TimedInterruptCustomizerProvider(final Long interruptionTimeout) { - this.interruptionTimeout = interruptionTimeout; - } - - public TimedInterruptCustomizerProvider(final Integer interruptionTimeout) { - this.interruptionTimeout = interruptionTimeout.longValue(); - } - - @Override - public CompilationCustomizer create() { - final Map<String, Object> timedInterruptAnnotationParams = new HashMap<>(); - timedInterruptAnnotationParams.put("value", interruptionTimeout); - timedInterruptAnnotationParams.put("unit", GeneralUtils.propX(GeneralUtils.classX(TimeUnit.class), TimeUnit.MILLISECONDS.toString())); - timedInterruptAnnotationParams.put("checkOnMethodStart", false); - timedInterruptAnnotationParams.put("thrown", GeneralUtils.classX(TimedInterruptTimeoutException.class)); - return new ASTTransformationCustomizer(timedInterruptAnnotationParams, TimedInterrupt.class); - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/TimedInterruptTimeoutException.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/TimedInterruptTimeoutException.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/TimedInterruptTimeoutException.java deleted file mode 100644 index 4063d4f..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/TimedInterruptTimeoutException.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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.groovy.jsr223.customizer; - -import java.util.concurrent.TimeoutException; - -/** - * An exception thrown from the {@link TimedInterruptCustomizerProvider} when the timeout is exceeded. This exception - * allows differentiation from other "timeout exceptions" that might occur. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, replaced by {@link org.apache.tinkerpop.gremlin.groovy.jsr223.TimedInterruptTimeoutException}. - */ -@Deprecated -public class TimedInterruptTimeoutException extends TimeoutException { - public TimedInterruptTimeoutException() { - } - - public TimedInterruptTimeoutException(final String message) { - super(message); - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/TypeCheckedCustomizerProvider.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/TypeCheckedCustomizerProvider.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/TypeCheckedCustomizerProvider.java deleted file mode 100644 index b5c2729..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/TypeCheckedCustomizerProvider.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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.groovy.jsr223.customizer; - -import groovy.transform.TypeChecked; -import org.apache.tinkerpop.gremlin.groovy.CompilerCustomizerProvider; -import org.apache.tinkerpop.gremlin.jsr223.Customizer; -import org.codehaus.groovy.control.customizers.ASTTransformationCustomizer; -import org.codehaus.groovy.control.customizers.CompilationCustomizer; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -/** - * Injects the {@code TypeChecked} transformer to enable type validation on script execution. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, not replaced by a public class. - */ -@Deprecated -public class TypeCheckedCustomizerProvider implements CompilerCustomizerProvider { - - private final String extensions; - - public TypeCheckedCustomizerProvider() { - this(null); - } - - /** - * Configures the {@code TypeChecked} annotation to use optional extensions. The argument should be one or more - * groovy scripts on the classpath or the fully qualified classname of a precompiled extension. If there are - * multiple extensions then extensions should be comma separated. - */ - public TypeCheckedCustomizerProvider(final String extensions) { - this.extensions = extensions; - } - - @Override - public CompilationCustomizer create() { - final Map<String, Object> annotationParams = new HashMap<>(); - if (extensions != null && !extensions.isEmpty()) { - if (extensions.contains(",")) - annotationParams.put("extensions", Stream.of(extensions.split(",")).collect(Collectors.toList())); - else - annotationParams.put("extensions", Collections.singletonList(extensions)); - } - return new ASTTransformationCustomizer(annotationParams, TypeChecked.class); - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/VariableIdentificationCustomizer.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/VariableIdentificationCustomizer.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/VariableIdentificationCustomizer.java deleted file mode 100644 index 2c216d7..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/VariableIdentificationCustomizer.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * 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.groovy.jsr223.customizer; - -import org.codehaus.groovy.ast.ClassCodeVisitorSupport; -import org.codehaus.groovy.ast.ClassNode; -import org.codehaus.groovy.ast.expr.VariableExpression; -import org.codehaus.groovy.classgen.GeneratorContext; -import org.codehaus.groovy.control.CompilationFailedException; -import org.codehaus.groovy.control.CompilePhase; -import org.codehaus.groovy.control.SourceUnit; -import org.codehaus.groovy.control.customizers.CompilationCustomizer; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Set; -import java.util.TreeSet; - -/** - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, not replaced. - */ -@Deprecated -public class VariableIdentificationCustomizer extends CompilationCustomizer { - - private static final ThreadLocal<Set<String>> variables = new ThreadLocal<Set<String>>() { - @Override - protected Set<String> initialValue() { - return new TreeSet<>(); - } - }; - - private static final List<String> variablesToIgnore = new ArrayList<>(Arrays.asList("this", "args", "context", "super")); - - public VariableIdentificationCustomizer() { - super(CompilePhase.CLASS_GENERATION); - } - - public Set<String> getVariables() { - return variables.get(); - } - - public void clearVariables() { - variables.get().clear(); - } - - @Override - public void call(final SourceUnit sourceUnit, final GeneratorContext generatorContext, - final ClassNode classNode) throws CompilationFailedException { - classNode.visitContents(new Visitor(sourceUnit)); - } - - class Visitor extends ClassCodeVisitorSupport { - - private SourceUnit sourceUnit; - - public Visitor(final SourceUnit sourceUnit) { - this.sourceUnit = sourceUnit; - } - - @Override - public void visitVariableExpression(final VariableExpression expression) { - if (!variablesToIgnore.contains(expression.getName()) - && expression.getAccessedVariable().isDynamicTyped()) { - variables.get().add(expression.getName()); - } - - super.visitVariableExpression(expression); - } - - @Override - protected SourceUnit getSourceUnit() { - return sourceUnit; - } - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/AbstractGremlinPlugin.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/AbstractGremlinPlugin.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/AbstractGremlinPlugin.java deleted file mode 100644 index 090da6e..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/AbstractGremlinPlugin.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * 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.groovy.plugin; - -import org.codehaus.groovy.tools.shell.Groovysh; -import org.codehaus.groovy.tools.shell.IO; - -import java.util.Map; - -/** - * A base class for a plugin that provides access to the shell and io variables. This is a good class to extend - * from if the plugin needs to interact with the shell in some way, such as the case with those plugins that - * want to utilize the {@link org.apache.tinkerpop.gremlin.groovy.plugin.RemoteAcceptor} and may need access to those - * shell and io objects. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, replaced by {@link org.apache.tinkerpop.gremlin.jsr223.AbstractGremlinPlugin}. - */ -@Deprecated -public abstract class AbstractGremlinPlugin implements GremlinPlugin { - public static final String ENV_CONSOLE_IO = "ConsolePluginAcceptor.io"; - public static final String ENV_CONSOLE_SHELL = "ConsolePluginAcceptor.shell"; - - protected static final String IMPORT_SPACE = "import "; - protected static final String IMPORT_STATIC_SPACE = "import static "; - protected static final String DOT_STAR = ".*"; - - protected IO io; - protected Groovysh shell; - protected final boolean requireConsoleEnvironment; - - /** - * Creates a new instance that does not force the plugin to require the console. This will create a plugin that - * will work in Gremlin Console and Gremlin Server. - */ - public AbstractGremlinPlugin() { - this(false); - } - - /** - * Creates a new instance that allows the plugin to specify whether the console is required or not. It is only - * necessary to require the console if there are specific required calls to {@code IO} or to {@code Groovysh} - * methods in the plugin (as those classes are Gremlin Console related and cannot be provided outside of that - * environment). For a plugin to work in the Gremlin Console and in Gremlin Server this value must be set - * to {@code false}. - */ - public AbstractGremlinPlugin(final boolean requireConsoleEnvironment) { - this.requireConsoleEnvironment = requireConsoleEnvironment; - } - - /** - * {@inheritDoc} - * <p/> - * Provides a base implementation for plugins by grabbing the console environment variables and assigning them - * to the {@link #io} and {@link #shell} member variables. - * - * @throws IllegalEnvironmentException if {@link #requireConsoleEnvironment} is set to true and if either - * the {@link #io} and {@link #shell} member variables are null. - */ - @Override - public void pluginTo(final PluginAcceptor pluginAcceptor) throws IllegalEnvironmentException, PluginInitializationException { - final Map<String, Object> environment = pluginAcceptor.environment(); - io = (IO) environment.get(ENV_CONSOLE_IO); - shell = (Groovysh) environment.get(ENV_CONSOLE_SHELL); - - if (requireConsoleEnvironment && (null == io || null == shell)) - throw new IllegalEnvironmentException(this, ENV_CONSOLE_SHELL, ENV_CONSOLE_IO); - - try { - afterPluginTo(pluginAcceptor); - } catch (PluginInitializationException pie) { - throw pie; - } catch (Exception ex) { - throw new PluginInitializationException(ex); - } - } - - /** - * Called after the {@link #pluginTo(PluginAcceptor)} method is executed which sets the {@link #io} and - * {@link #shell} member variables. - */ - public abstract void afterPluginTo(final PluginAcceptor pluginAcceptor) throws IllegalEnvironmentException, PluginInitializationException; -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/Artifact.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/Artifact.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/Artifact.java deleted file mode 100644 index 7fb0bd3..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/Artifact.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * 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.groovy.plugin; - -/** - * A software artifact identified by its maven coordinates. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, replaced by {@link org.apache.tinkerpop.gremlin.groovy.util.Artifact} - */ -@Deprecated -public class Artifact { - private final String group; - private final String artifact; - private final String version; - - /** - * Create a new instance. - * - * @param group the {@code groupId} - * @param artifact the {@code artifactId} - * @param version the {@code version} - */ - public Artifact(final String group, final String artifact, final String version) { - if (group == null || group.isEmpty()) - throw new IllegalArgumentException("group cannot be null or empty"); - - if (artifact == null || artifact.isEmpty()) - throw new IllegalArgumentException("artifact cannot be null or empty"); - - if (version == null || version.isEmpty()) - throw new IllegalArgumentException("version cannot be null or empty"); - - this.group = group; - this.artifact = artifact; - this.version = version; - } - - public String getGroup() { - return group; - } - - public String getArtifact() { - return artifact; - } - - public String getVersion() { - return version; - } - - @Override - public boolean equals(final Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - final Artifact a = (Artifact) o; - - if (group != null ? !group.equals(a.group) : a.group != null) return false; - if (artifact != null ? !artifact.equals(a.artifact) : a.artifact != null) return false; - if (version != null ? !version.equals(a.version) : a.version != null) return false; - - return true; - } - - @Override - public int hashCode() { - int result = group != null ? group.hashCode() : 0; - result = 31 * result + (artifact != null ? artifact.hashCode() : 0); - result = 31 * result + (version != null ? version.hashCode() : 0); - return result; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/GremlinPlugin.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/GremlinPlugin.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/GremlinPlugin.java deleted file mode 100644 index 400c003..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/GremlinPlugin.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * 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.groovy.plugin; - -import java.util.Optional; - -/** - * Those wanting to extend Gremlin can implement this interface to provide mapper imports and extension - * methods to the language itself. Gremlin uses {@code ServiceLoader} to install plugins. It is necessary for - * projects to include a {@code org.apache.tinkerpop.gremlin.groovy.plugin.GremlinPlugin} file in - * {@code META-INF/services} of their packaged project which includes the full class names of the implementations - * of this interface to install. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As for 3.2.4, replaced by {@link org.apache.tinkerpop.gremlin.jsr223.GremlinPlugin} - */ -@Deprecated -public interface GremlinPlugin { - public static final String ENVIRONMENT = "GremlinPlugin.env"; - - /** - * The name of the plugin. This name should be unique (use a namespaced approach) as naming clashes will - * prevent proper plugin operations. Plugins developed by TinkerPop will be prefixed with "tinkerpop." - * For example, TinkerPop's implementation of Giraph would be named "tinkerpop.giraph". If Facebook were - * to do their own implementation the implementation might be called "facebook.giraph". - */ - public String getName(); - - /** - * Implementers will typically execute imports of classes within their project that they want available in the - * console or they may use meta programming to introduce new extensions to the Gremlin. - * - * @throws IllegalEnvironmentException if there are missing environment properties required by the plugin as - * provided from {@link PluginAcceptor#environment()}. - * @throws PluginInitializationException if there is a failure in the plugin iniitalization process - */ - public void pluginTo(final PluginAcceptor pluginAcceptor) throws IllegalEnvironmentException, PluginInitializationException; - - /** - * Some plugins may require a restart of the plugin host for the classloader to pick up the features. This is - * typically true of plugins that rely on {@code Class.forName()} to dynamically instantiate classes from the - * root classloader (e.g. JDBC drivers that instantiate via @{code DriverManager}). - */ - public default boolean requireRestart() { - return false; - } - - /** - * Allows a plugin to utilize features of the {@code :remote} and {@code :submit} commands of the Gremlin Console. - * This method does not need to be implemented if the plugin is not meant for the Console for some reason or - * if it does not intend to take advantage of those commands. - */ - public default Optional<RemoteAcceptor> remoteAcceptor() { - return Optional.empty(); - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/GremlinPluginException.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/GremlinPluginException.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/GremlinPluginException.java deleted file mode 100644 index c8664c7..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/GremlinPluginException.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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.groovy.plugin; - -/** - * Base exception for {@link GremlinPlugin}. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, not replaced. - */ -@Deprecated -public abstract class GremlinPluginException extends Exception { - public GremlinPluginException() { - } - - public GremlinPluginException(final String message) { - super(message); - } - - public GremlinPluginException(final String message, final Throwable cause) { - super(message, cause); - } - - public GremlinPluginException(final Throwable cause) { - super(cause); - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/IllegalEnvironmentException.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/IllegalEnvironmentException.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/IllegalEnvironmentException.java deleted file mode 100644 index 8d6fbe2..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/IllegalEnvironmentException.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 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.groovy.plugin; - -/** - * An exception thrown when the environment variables passed via {@link PluginAcceptor#environment()} do not meet - * the needs of the {@link GremlinPlugin}. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, not replaced. - */ -@Deprecated -public class IllegalEnvironmentException extends GremlinPluginException { - public IllegalEnvironmentException(final GremlinPlugin plugin, final String... expectedKeys) { - super(String.format("The %s plugin may not be compatible with this environment - requires the follow ScriptEngine environment keys [%s]", plugin.getName(), String.join(",", expectedKeys))); - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/PluginAcceptor.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/PluginAcceptor.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/PluginAcceptor.java deleted file mode 100644 index 9165237..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/PluginAcceptor.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * 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.groovy.plugin; - -import org.apache.tinkerpop.gremlin.groovy.jsr223.DependencyManager; - -import javax.script.ScriptException; -import java.util.Collections; -import java.util.Map; -import java.util.Set; - -/** - * A {@link GremlinPlugin} can be used in multiple environments (e.g. ScriptEngine implementation). Any environment - * wishing to allow plugins should implement the {@code PluginAcceptor}. It acts as an adapter to those environments - * 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.4, replaced by {@link org.apache.tinkerpop.gremlin.jsr223.console.PluginAcceptor}. - */ -@Deprecated -public interface PluginAcceptor { - /** - * If the {@code PluginAcceptor} implements the {@link DependencyManager} interface it will try to import the - * specified import statements. - */ - public void addImports(final Set<String> importStatements); - - /** - * Add a variable binding for the plugin host. - */ - public void addBinding(final String key, final Object val); - - /** - * Gets the list of bindings from the plugin host. These bindings will represent the "global" binding list. - */ - public Map<String, Object> getBindings(); - - /** - * Evaluate a script in the {@code PluginAcceptor}. - */ - public Object eval(final String script) throws ScriptException; - - /** - * Returns a map of implementation specific variables that can be referenced by the plugin. Those writing - * plugins should examine the details of the various {@code PluginAcceptor} implementations for the variables - * that they pass, as they may provide important information useful to the plugin itself. - */ - public default Map<String, Object> environment() { - return Collections.emptyMap(); - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/PluginInitializationException.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/PluginInitializationException.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/PluginInitializationException.java deleted file mode 100644 index 0dd6fc1..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/PluginInitializationException.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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.groovy.plugin; - -/** - * An exception that occurs as a result of plugin initialization, typically triggered by a bad evaluation in the - * {@code ScriptEngine}. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, not replaced. - */ -@Deprecated -public class PluginInitializationException extends GremlinPluginException { - public PluginInitializationException(final String message) { - super(message); - } - - public PluginInitializationException(final String message, final Throwable cause) { - super(message, cause); - } - - public PluginInitializationException(final Throwable cause) { - super(cause); - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/RemoteAcceptor.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/RemoteAcceptor.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/RemoteAcceptor.java deleted file mode 100644 index 2bb8663..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/RemoteAcceptor.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * 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.groovy.plugin; - -import org.codehaus.groovy.tools.shell.Groovysh; - -import java.io.Closeable; -import java.util.List; - -/** - * The Gremlin Console supports the {@code :remote} and {@code :submit} commands which provide standardized ways - * for plugins to provide "remote connections" to resources and a way to "submit" a command to those resources. - * A "remote connection" does not necessarily have to be a remote server. It simply refers to a resource that is - * external to the console. - * <p/> - * By implementing this interface and returning an instance of it through {@link GremlinPlugin#remoteAcceptor()} a - * plugin can hook into those commands and provide remoting features. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, replaced by {@link org.apache.tinkerpop.gremlin.jsr223.console.RemoteAcceptor}; - */ -@Deprecated -public interface RemoteAcceptor extends Closeable { - - public static final String RESULT = "result"; - - /** - * Gets called when {@code :remote} is used in conjunction with the "connect" option. It is up to the - * implementation to decide how additional arguments on the line should be treated after "connect". - * - * @return an object to display as output to the user - * @throws org.apache.tinkerpop.gremlin.groovy.plugin.RemoteException if there is a problem with connecting - */ - public Object connect(final List<String> args) throws RemoteException; - - /** - * Gets called when {@code :remote} is used in conjunction with the {@code config} option. It is up to the - * implementation to decide how additional arguments on the line should be treated after {@code config}. - * - * @return an object to display as output to the user - * @throws org.apache.tinkerpop.gremlin.groovy.plugin.RemoteException if there is a problem with configuration - */ - public Object configure(final List<String> args) throws RemoteException; - - /** - * Gets called when {@code :submit} is executed. It is up to the implementation to decide how additional - * arguments on the line should be treated after {@code :submit}. - * - * @return an object to display as output to the user - * @throws org.apache.tinkerpop.gremlin.groovy.plugin.RemoteException if there is a problem with submission - */ - public Object submit(final List<String> args) throws RemoteException; - - /** - * If the {@code RemoteAcceptor} is used in the Gremlin Console, then this method might be called to determine - * if it can be used in a fashion that supports the {@code :remote console} command. By default, this value is - * set to {@code false}. - * <p/> - * A {@code RemoteAcceptor} should only return {@code true} for this method if it expects that all activities it - * supports are executed through the {@code :sumbit} command. If the users interaction with the remote requires - * working with both local and remote evaluation at the same time, it is likely best to keep this method return - * {@code false}. A good example of this type of plugin would be the Gephi Plugin which uses {@code :remote config} - * to configure a local {@code TraversalSource} to be used and expects calls to {@code :submit} for the same body - * of analysis. - */ - public default boolean allowRemoteConsole() { - return false; - } - - /** - * Retrieve a script as defined in the shell context. This allows for multi-line scripts to be submitted. - */ - public static String getScript(final String submittedScript, final Groovysh shell) { - return submittedScript.startsWith("@") ? shell.getInterp().getContext().getProperty(submittedScript.substring(1)).toString() : submittedScript; - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/RemoteException.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/RemoteException.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/RemoteException.java deleted file mode 100644 index 3eb5f69..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/RemoteException.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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.groovy.plugin; - -/** - * A mapper {@link Exception} to be thrown when there are problems with processing a command given to a - * {@link org.apache.tinkerpop.gremlin.groovy.plugin.RemoteAcceptor}. The message provided to the exception will - * be displayed to the user in the Console. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, replaced by {@link org.apache.tinkerpop.gremlin.jsr223.console.RemoteException}; - */ -@Deprecated -public class RemoteException extends Exception { - public RemoteException(final String message) { - super(message); - } - - public RemoteException(final String message, final Throwable cause) { - super(message, cause); - } - - public RemoteException(final Throwable cause) { - super(cause); - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/SugarGremlinPlugin.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/SugarGremlinPlugin.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/SugarGremlinPlugin.java deleted file mode 100644 index 0666d71..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/SugarGremlinPlugin.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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.groovy.plugin; - -import org.apache.tinkerpop.gremlin.groovy.loaders.SugarLoader; - -/** - * A plugin implementation which allows for the usage of Gremlin Groovy's syntactic sugar. - * - * @author Marko A. Rodriguez (http://markorodriguez.com) - * @deprecated As of release 3.2.4, replaced by {@link org.apache.tinkerpop.gremlin.groovy.jsr223.SugarGremlinPlugin}. - */ -@Deprecated -public class SugarGremlinPlugin extends AbstractGremlinPlugin { - - @Override - public String getName() { - return "tinkerpop.sugar"; - } - - /** - * {@inheritDoc} - * <p/> - * Executes the {@link SugarLoader#load()} method in the {@link PluginAcceptor}. - */ - @Override - public void afterPluginTo(final PluginAcceptor pluginAcceptor) throws IllegalEnvironmentException, PluginInitializationException { - try { - pluginAcceptor.eval(SugarLoader.class.getPackage().getName() + "." + SugarLoader.class.getSimpleName() + ".load()"); - } catch (Exception ex) { - if (io != null) - io.out.println("Error loading the 'tinkerpop.sugar' plugin - " + ex.getMessage()); - else - throw new PluginInitializationException("Error loading the 'tinkerpop.sugar' plugin - " + ex.getMessage(), ex); - } - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/dsl/credential/CredentialGraph.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/dsl/credential/CredentialGraph.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/dsl/credential/CredentialGraph.java deleted file mode 100644 index 564c573..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/dsl/credential/CredentialGraph.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * 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.groovy.plugin.dsl.credential; - -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.structure.Graph; -import org.apache.tinkerpop.gremlin.structure.T; -import org.apache.tinkerpop.gremlin.structure.Vertex; -import org.mindrot.jbcrypt.BCrypt; - -import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.drop; - -/** - * A DSL for managing a "credentials graph" used by Gremlin Server for simple authentication functions. If the - * {@link Graph} is transactional, new transactions will be started for each method call. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, replaced by {@link org.apache.tinkerpop.gremlin.groovy.jsr223.dsl.credential.CredentialGraph}. - */ -@Deprecated -public class CredentialGraph { - - private final int BCRYPT_ROUNDS = 4; - private final Graph graph; - private final GraphTraversalSource g; - private final boolean supportsTransactions; - - public CredentialGraph(final Graph graph) { - this.graph = graph; - g = graph.traversal(); - supportsTransactions = graph.features().graph().supportsTransactions(); - } - - /** - * Finds a user by username and return {@code null} if one could not be found. - * - * @throws IllegalStateException if there is more than one user with a particular username. - */ - public Vertex findUser(final String username) { - if (supportsTransactions) g.tx().rollback(); - final GraphTraversal<Vertex,Vertex> t = g.V().has(CredentialGraphTokens.PROPERTY_USERNAME, username); - final Vertex v = t.hasNext() ? t.next() : null; - if (t.hasNext()) throw new IllegalStateException(String.format("Multiple users with username %s", username)); - return v; - } - - /** - * Creates a new user. - * - * @return the newly created user vertex - */ - public Vertex createUser(final String username, final String password) { - if (findUser(username) != null) throw new IllegalStateException("User with this name already exists"); - if (supportsTransactions) graph.tx().rollback(); - - try { - final Vertex v = graph.addVertex(T.label, CredentialGraphTokens.VERTEX_LABEL_USER, - CredentialGraphTokens.PROPERTY_USERNAME, username, - CredentialGraphTokens.PROPERTY_PASSWORD, BCrypt.hashpw(password, BCrypt.gensalt(BCRYPT_ROUNDS))); - if (supportsTransactions) graph.tx().commit(); - return v; - } catch (Exception ex) { - if (supportsTransactions) graph.tx().rollback(); - throw new RuntimeException(ex); - } - } - - /** - * Removes a user by name. - * - * @return the number of users removed (which should be one or zero) - */ - public long removeUser(final String username) { - if (supportsTransactions) graph.tx().rollback(); - try { - final long count = g.V().has(CredentialGraphTokens.PROPERTY_USERNAME, username).sideEffect(drop()).count().next(); - if (supportsTransactions) graph.tx().commit(); - return count; - } catch (Exception ex) { - if (supportsTransactions) graph.tx().rollback(); - throw new RuntimeException(ex); - } - } - - /** - * Get a count of the number of users in the database. - */ - public long countUsers() { - if (supportsTransactions) graph.tx().rollback(); - return g.V().hasLabel(CredentialGraphTokens.VERTEX_LABEL_USER).count().next(); - } - - @Override - public String toString() { - return "CredentialGraph{" + - "graph=" + graph + - '}'; - } - - /** - * Wrap up any {@link Graph} instance in the {@code CredentialGraph} DSL. - */ - public static CredentialGraph credentials(final Graph graph) { - return new CredentialGraph(graph); - } -} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27e5b2c8/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/dsl/credential/CredentialGraphGremlinPlugin.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/dsl/credential/CredentialGraphGremlinPlugin.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/dsl/credential/CredentialGraphGremlinPlugin.java deleted file mode 100644 index 50ee346..0000000 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/plugin/dsl/credential/CredentialGraphGremlinPlugin.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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.groovy.plugin.dsl.credential; - -import org.apache.tinkerpop.gremlin.groovy.plugin.AbstractGremlinPlugin; -import org.apache.tinkerpop.gremlin.groovy.plugin.IllegalEnvironmentException; -import org.apache.tinkerpop.gremlin.groovy.plugin.PluginAcceptor; -import org.apache.tinkerpop.gremlin.groovy.plugin.PluginInitializationException; - -import java.util.HashSet; -import java.util.Set; - -/** - * Plugin for the "credentials graph". This plugin imports the {@link CredentialGraph} to its environment. - * - * @author Stephen Mallette (http://stephen.genoprime.com) - * @deprecated As of release 3.2.4, replaced by {@link org.apache.tinkerpop.gremlin.groovy.jsr223.dsl.credential.CredentialGraphGremlinPlugin}. - */ -@Deprecated -public class CredentialGraphGremlinPlugin extends AbstractGremlinPlugin { - - private static final Set<String> IMPORTS = new HashSet<String>() {{ - add(IMPORT_SPACE + CredentialGraph.class.getName()); - add(IMPORT_STATIC_SPACE + CredentialGraph.class.getName() + DOT_STAR); - }}; - - @Override - public String getName() { - return "tinkerpop.credentials"; - } - - /** - * {@inheritDoc} - * <p/> - * Adds imports for the {@link CredentialGraph}. - */ - @Override - public void afterPluginTo(final PluginAcceptor pluginAcceptor) throws IllegalEnvironmentException, PluginInitializationException { - pluginAcceptor.addImports(IMPORTS); - } -} \ No newline at end of file