You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2016/11/22 15:58:57 UTC
[1/6] tinkerpop git commit: TINKERPOP-1562 ImportCustomizer has
become an interface
Repository: tinkerpop
Updated Branches:
refs/heads/TINKERPOP-1562 bb4bcc7a0 -> 64d61c04b
TINKERPOP-1562 ImportCustomizer has become an interface
This is a breaking change unfortunately, but this was not a feature that was published or used in 3.2.3 so I don't expect wide usage.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/690b603e
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/690b603e
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/690b603e
Branch: refs/heads/TINKERPOP-1562
Commit: 690b603ec7df5415effb789ac1c6f57a4cce1b80
Parents: bb4bcc7
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Nov 22 06:33:22 2016 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 22 06:33:22 2016 -0500
----------------------------------------------------------------------
.../giraph/jsr223/GiraphGremlinPlugin.java | 4 +-
.../gremlin/console/plugin/PluggedIn.groovy | 3 +-
.../gremlin/jsr223/CoreGremlinModule.java | 2 +-
.../gremlin/jsr223/CoreGremlinPlugin.java | 2 +-
.../gremlin/jsr223/DefaultImportCustomizer.java | 112 +++++++++++++++++++
.../gremlin/jsr223/ImportCustomizer.java | 85 +-------------
.../gremlin/jsr223/ImportGremlinPlugin.java | 2 +-
.../gremlin/jsr223/ImportGremlinPluginTest.java | 12 +-
...aultDefaultImportCustomizerProviderTest.java | 90 +++++++++++++++
.../DefaultImportCustomizerProviderTest.java | 90 ---------------
.../jsr223/GremlinServerGremlinPlugin.java | 4 +-
.../jsr223/GremlinEnabledScriptEngineTest.java | 3 +-
12 files changed, 221 insertions(+), 188 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/690b603e/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/jsr223/GiraphGremlinPlugin.java
----------------------------------------------------------------------
diff --git a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/jsr223/GiraphGremlinPlugin.java b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/jsr223/GiraphGremlinPlugin.java
index a96ac86..ee49ed5 100644
--- a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/jsr223/GiraphGremlinPlugin.java
+++ b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/jsr223/GiraphGremlinPlugin.java
@@ -29,7 +29,7 @@ import org.apache.tinkerpop.gremlin.giraph.process.computer.GiraphWorkerContext;
import org.apache.tinkerpop.gremlin.giraph.process.computer.MemoryAggregator;
import org.apache.tinkerpop.gremlin.giraph.process.computer.PassThroughMemory;
import org.apache.tinkerpop.gremlin.jsr223.AbstractGremlinPlugin;
-import org.apache.tinkerpop.gremlin.jsr223.ImportCustomizer;
+import org.apache.tinkerpop.gremlin.jsr223.DefaultImportCustomizer;
/**
* @author Stephen Mallette (http://stephen.genoprime.com)
@@ -39,7 +39,7 @@ public final class GiraphGremlinPlugin extends AbstractGremlinPlugin {
private static final GiraphGremlinPlugin instance = new GiraphGremlinPlugin();
private GiraphGremlinPlugin() {
- super(MODULE_NAME, ImportCustomizer.build().addClassImports(
+ super(MODULE_NAME, DefaultImportCustomizer.build().addClassImports(
EmptyOutEdges.class,
GiraphComputation.class,
GiraphGraphComputer.class,
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/690b603e/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 def49ed..053a072 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
@@ -24,8 +24,7 @@ import org.apache.tinkerpop.gremlin.groovy.plugin.PluginAcceptor
import org.apache.tinkerpop.gremlin.groovy.plugin.PluginInitializationException
import org.apache.tinkerpop.gremlin.groovy.plugin.RemoteAcceptor
import org.apache.tinkerpop.gremlin.groovy.plugin.RemoteException
-import org.apache.tinkerpop.gremlin.jsr223.ImportCustomizer
-import org.apache.tinkerpop.gremlin.jsr223.ImportGremlinPlugin
+import org.apache.tinkerpop.gremlin.jsr223.DefaultImportCustomizer
import org.apache.tinkerpop.gremlin.jsr223.console.ConsoleCustomizer
import org.codehaus.groovy.tools.shell.Groovysh
import org.codehaus.groovy.tools.shell.IO
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/690b603e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreGremlinModule.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreGremlinModule.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreGremlinModule.java
index 6869064..d398f89 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreGremlinModule.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreGremlinModule.java
@@ -33,7 +33,7 @@ public final class CoreGremlinModule implements GremlinModule {
private static final String MODULE_NAME = "tinkerpop.core";
- private static final ImportCustomizer gremlinCore = ImportCustomizer.build()
+ private static final ImportCustomizer gremlinCore = DefaultImportCustomizer.build()
.addClassImports(CoreImports.getClassImports())
.addEnumImports(CoreImports.getEnumImports())
.addMethodImports(CoreImports.getMethodImports()).create();
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/690b603e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreGremlinPlugin.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreGremlinPlugin.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreGremlinPlugin.java
index 3f5ac2c..410b222 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreGremlinPlugin.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreGremlinPlugin.java
@@ -31,7 +31,7 @@ public final class CoreGremlinPlugin implements GremlinPlugin {
private static final String MODULE_NAME = "tinkerpop.core";
- private static final ImportCustomizer gremlinCore = ImportCustomizer.build()
+ private static final ImportCustomizer gremlinCore = DefaultImportCustomizer.build()
.addClassImports(CoreImports.getClassImports())
.addEnumImports(CoreImports.getEnumImports())
.addMethodImports(CoreImports.getMethodImports()).create();
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/690b603e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultImportCustomizer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultImportCustomizer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultImportCustomizer.java
new file mode 100644
index 0000000..85d6531
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultImportCustomizer.java
@@ -0,0 +1,112 @@
+/*
+ * 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.jsr223;
+
+import org.apache.tinkerpop.gremlin.util.CoreImports;
+
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Simple implementation of the {@link ImportCustomizer} which allows direct setting of all the different import types.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class DefaultImportCustomizer implements ImportCustomizer {
+ /**
+ * @deprecated As of release 3.2.4, not replaced.
+ */
+ @Deprecated
+ public static final ImportCustomizer GREMLIN_CORE = DefaultImportCustomizer.build()
+ .addClassImports(CoreImports.getClassImports())
+ .addEnumImports(CoreImports.getEnumImports())
+ .addMethodImports(CoreImports.getMethodImports()).create();
+
+ private final Set<Class> classImports;
+ private final Set<Method> methodImports;
+ private final Set<Enum> enumImports;
+
+ private DefaultImportCustomizer(final Builder builder) {
+ classImports = builder.classImports;
+ methodImports = builder.methodImports;
+ enumImports = builder.enumImports;
+ }
+
+ public Set<Class> getClassImports() {
+ return Collections.unmodifiableSet(classImports);
+ }
+
+ public Set<Method> getMethodImports() {
+ return Collections.unmodifiableSet(methodImports);
+ }
+
+ public Set<Enum> getEnumImports() {
+ return Collections.unmodifiableSet(enumImports);
+ }
+
+ public static Builder build() {
+ return new Builder();
+ }
+
+ public static class Builder {
+ private Set<Class> classImports = new HashSet<>();
+ private Set<Method> methodImports = new HashSet<>();
+ private Set<Enum> enumImports = new HashSet<>();
+
+ private Builder() {}
+
+ public Builder addClassImports(final Class... clazz) {
+ classImports.addAll(Arrays.asList(clazz));
+ return this;
+ }
+
+ public Builder addClassImports(final Collection<Class> classes) {
+ classImports.addAll(classes);
+ return this;
+ }
+
+ public Builder addMethodImports(final Method... method) {
+ methodImports.addAll(Arrays.asList(method));
+ return this;
+ }
+
+ public Builder addMethodImports(final Collection<Method> methods) {
+ methodImports.addAll(methods);
+ return this;
+ }
+
+ public Builder addEnumImports(final Enum... e) {
+ enumImports.addAll(Arrays.asList(e));
+ return this;
+ }
+
+ public Builder addEnumImports(final Collection<Enum> enums) {
+ enumImports.addAll(enums);
+ return this;
+ }
+
+ public DefaultImportCustomizer create() {
+ return new DefaultImportCustomizer(this);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/690b603e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportCustomizer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportCustomizer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportCustomizer.java
index 2f0e08c..7eced82 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportCustomizer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportCustomizer.java
@@ -18,13 +18,7 @@
*/
package org.apache.tinkerpop.gremlin.jsr223;
-import org.apache.tinkerpop.gremlin.util.CoreImports;
-
import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
import java.util.Set;
/**
@@ -32,82 +26,11 @@ import java.util.Set;
*
* @author Stephen Mallette (http://stephen.genoprime.com)
*/
-public class ImportCustomizer implements Customizer {
-
- /**
- * @deprecated As of release 3.2.4, not replaced.
- */
- @Deprecated
- public static final ImportCustomizer GREMLIN_CORE = ImportCustomizer.build()
- .addClassImports(CoreImports.getClassImports())
- .addEnumImports(CoreImports.getEnumImports())
- .addMethodImports(CoreImports.getMethodImports()).create();
-
- private final Set<Class> classImports;
- private final Set<Method> methodImports;
- private final Set<Enum> enumImports;
-
- private ImportCustomizer(final Builder builder) {
- classImports = builder.classImports;
- methodImports = builder.methodImports;
- enumImports = builder.enumImports;
- }
-
- public Set<Class> getClassImports() {
- return Collections.unmodifiableSet(classImports);
- }
-
- public Set<Method> getMethodImports() {
- return Collections.unmodifiableSet(methodImports);
- }
-
- public Set<Enum> getEnumImports() {
- return Collections.unmodifiableSet(enumImports);
- }
-
- public static Builder build() {
- return new Builder();
- }
-
- public static class Builder {
- private Set<Class> classImports = new HashSet<>();
- private Set<Method> methodImports = new HashSet<>();
- private Set<Enum> enumImports = new HashSet<>();
-
- private Builder() {}
-
- public Builder addClassImports(final Class... clazz) {
- classImports.addAll(Arrays.asList(clazz));
- return this;
- }
-
- public Builder addClassImports(final Collection<Class> classes) {
- classImports.addAll(classes);
- return this;
- }
-
- public Builder addMethodImports(final Method... method) {
- methodImports.addAll(Arrays.asList(method));
- return this;
- }
-
- public Builder addMethodImports(final Collection<Method> methods) {
- methodImports.addAll(methods);
- return this;
- }
+public interface ImportCustomizer extends Customizer {
- public Builder addEnumImports(final Enum... e) {
- enumImports.addAll(Arrays.asList(e));
- return this;
- }
+ public Set<Class> getClassImports();
- public Builder addEnumImports(final Collection<Enum> enums) {
- enumImports.addAll(enums);
- return this;
- }
+ public Set<Method> getMethodImports();
- public ImportCustomizer create() {
- return new ImportCustomizer(this);
- }
- }
+ public Set<Enum> getEnumImports();
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/690b603e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPlugin.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPlugin.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPlugin.java
index f99ee68..a5ac278 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPlugin.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPlugin.java
@@ -40,7 +40,7 @@ public final class ImportGremlinPlugin extends AbstractGremlinPlugin {
private static final String MODULE_NAME = "tinkerpop.import";
private ImportGremlinPlugin(final Builder builder) {
- super(MODULE_NAME, builder.appliesTo, ImportCustomizer.build()
+ super(MODULE_NAME, builder.appliesTo, DefaultImportCustomizer.build()
.addClassImports(builder.classImports)
.addEnumImports(builder.enumImports)
.addMethodImports(builder.methodImports).create());
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/690b603e/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPluginTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPluginTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPluginTest.java
index 428fc57..59c64df 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPluginTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPluginTest.java
@@ -49,7 +49,7 @@ public class ImportGremlinPluginTest {
final ImportGremlinPlugin module = ImportGremlinPlugin.build()
.classImports(Collections.singletonList(Graph.class.getCanonicalName())).create();
- final ImportCustomizer customizer = (ImportCustomizer) module.getCustomizers().get()[0];
+ final DefaultImportCustomizer customizer = (DefaultImportCustomizer) module.getCustomizers().get()[0];
assertEquals(1, module.getCustomizers().get().length);
assertThat(customizer.getClassImports(), hasItems(Graph.class));
assertEquals(1, customizer.getClassImports().size());
@@ -61,7 +61,7 @@ public class ImportGremlinPluginTest {
final ImportGremlinPlugin module = ImportGremlinPlugin.build()
.methodImports(Collections.singletonList(Gremlin.class.getCanonicalName() + "#*")).create();
- final ImportCustomizer customizer = (ImportCustomizer) module.getCustomizers().get()[0];
+ final DefaultImportCustomizer customizer = (DefaultImportCustomizer) module.getCustomizers().get()[0];
assertEquals(1, module.getCustomizers().get().length);
assertThat(customizer.getMethodImports(), hasItems(zeroArgs));
@@ -75,7 +75,7 @@ public class ImportGremlinPluginTest {
final ImportGremlinPlugin module = ImportGremlinPlugin.build()
.methodImports(Collections.singletonList(toMethodDescriptor(zeroArgs))).create();
- final ImportCustomizer customizer = (ImportCustomizer) module.getCustomizers().get()[0];
+ final DefaultImportCustomizer customizer = (DefaultImportCustomizer) module.getCustomizers().get()[0];
assertEquals(1, module.getCustomizers().get().length);
assertThat(customizer.getMethodImports(), hasItems(zeroArgs));
assertEquals(1, customizer.getMethodImports().size());
@@ -87,7 +87,7 @@ public class ImportGremlinPluginTest {
final ImportGremlinPlugin module = ImportGremlinPlugin.build()
.methodImports(Collections.singletonList(toMethodDescriptor(singleArg))).create();
- final ImportCustomizer customizer = (ImportCustomizer) module.getCustomizers().get()[0];
+ final DefaultImportCustomizer customizer = (DefaultImportCustomizer) module.getCustomizers().get()[0];
assertEquals(1, module.getCustomizers().get().length);
assertThat(customizer.getMethodImports(), hasItems(singleArg));
assertEquals(1, customizer.getMethodImports().size());
@@ -110,7 +110,7 @@ public class ImportGremlinPluginTest {
final ImportGremlinPlugin module = ImportGremlinPlugin.build()
.enumImports(Collections.singletonList(T.class.getCanonicalName() + "#*")).create();
- final ImportCustomizer customizer = (ImportCustomizer) module.getCustomizers().get()[0];
+ final DefaultImportCustomizer customizer = (DefaultImportCustomizer) module.getCustomizers().get()[0];
assertEquals(1, module.getCustomizers().get().length);
assertThat(customizer.getEnumImports(), hasItems(T.id, T.key, T.label, T.value));
assertEquals(4, customizer.getEnumImports().size());
@@ -121,7 +121,7 @@ public class ImportGremlinPluginTest {
final ImportGremlinPlugin module = ImportGremlinPlugin.build()
.enumImports(Collections.singletonList(T.class.getCanonicalName() + "#" + T.id.name())).create();
- final ImportCustomizer customizer = (ImportCustomizer) module.getCustomizers().get()[0];
+ final DefaultImportCustomizer customizer = (DefaultImportCustomizer) module.getCustomizers().get()[0];
assertEquals(1, module.getCustomizers().get().length);
assertThat(customizer.getEnumImports(), hasItems(T.id));
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/690b603e/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/DefaultDefaultImportCustomizerProviderTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/DefaultDefaultImportCustomizerProviderTest.java b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/DefaultDefaultImportCustomizerProviderTest.java
new file mode 100644
index 0000000..9a3785f
--- /dev/null
+++ b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/DefaultDefaultImportCustomizerProviderTest.java
@@ -0,0 +1,90 @@
+/*
+ * 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;
+
+import org.apache.tinkerpop.gremlin.groovy.loaders.SugarLoader;
+import org.junit.Test;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class DefaultDefaultImportCustomizerProviderTest {
+ static {
+ SugarLoader.load();
+ }
+
+ @Test
+ public void shouldReturnDefaultImports() {
+ final DefaultImportCustomizerProvider provider = new DefaultImportCustomizerProvider();
+ assertImportsInProvider(provider);
+ }
+
+ @Test
+ public void shouldReturnWithExtraStaticImports() {
+ final Set<String> statics = new HashSet<>();
+ statics.add("com.test.This.*");
+ statics.add("com.test.That.OTHER");
+ final DefaultImportCustomizerProvider provider = new DefaultImportCustomizerProvider(new HashSet<>(), statics);
+ assertImportsInProvider(provider);
+ }
+
+ @Test
+ public void shouldReturnWithExtraImports() {
+ final Set<String> imports = new HashSet<>();
+ imports.add("com.test.that.*");
+ imports.add("com.test.that.That");
+ final DefaultImportCustomizerProvider provider = new DefaultImportCustomizerProvider(imports, new HashSet<>());
+ assertImportsInProvider(provider);
+ }
+
+ @Test
+ public void shouldReturnWithBothImportTypes() {
+ final Set<String> imports = new HashSet<>();
+ imports.add("com.test.that.*");
+ imports.add("com.test.that.That");
+
+ final Set<String> statics = new HashSet<>();
+ statics.add("com.test.This.*");
+ statics.add("com.test.That.OTHER");
+
+ final DefaultImportCustomizerProvider provider = new DefaultImportCustomizerProvider(imports, statics);
+ assertImportsInProvider(provider);
+ }
+
+ private static void assertImportsInProvider(DefaultImportCustomizerProvider provider) {
+ final Set<String> allImports = provider.getAllImports();
+
+ final Set<String> imports = provider.getImports();
+ final Set<String> staticImports = provider.getStaticImports();
+ final Set<String> extraImports = provider.getExtraImports();
+ final Set<String> extraStaticImports = provider.getExtraStaticImports();
+
+ assertEquals(imports.size() + staticImports.size() + extraImports.size() + extraStaticImports.size(), allImports.size());
+ assertTrue(allImports.containsAll(imports));
+ assertTrue(allImports.containsAll(staticImports));
+ assertTrue(allImports.containsAll(extraImports));
+ assertTrue(allImports.containsAll(extraStaticImports));
+ }
+}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/690b603e/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/DefaultImportCustomizerProviderTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/DefaultImportCustomizerProviderTest.java b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/DefaultImportCustomizerProviderTest.java
deleted file mode 100644
index 74df889..0000000
--- a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/DefaultImportCustomizerProviderTest.java
+++ /dev/null
@@ -1,90 +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;
-
-import org.apache.tinkerpop.gremlin.groovy.loaders.SugarLoader;
-import org.junit.Test;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class DefaultImportCustomizerProviderTest {
- static {
- SugarLoader.load();
- }
-
- @Test
- public void shouldReturnDefaultImports() {
- final DefaultImportCustomizerProvider provider = new DefaultImportCustomizerProvider();
- assertImportsInProvider(provider);
- }
-
- @Test
- public void shouldReturnWithExtraStaticImports() {
- final Set<String> statics = new HashSet<>();
- statics.add("com.test.This.*");
- statics.add("com.test.That.OTHER");
- final DefaultImportCustomizerProvider provider = new DefaultImportCustomizerProvider(new HashSet<>(), statics);
- assertImportsInProvider(provider);
- }
-
- @Test
- public void shouldReturnWithExtraImports() {
- final Set<String> imports = new HashSet<>();
- imports.add("com.test.that.*");
- imports.add("com.test.that.That");
- final DefaultImportCustomizerProvider provider = new DefaultImportCustomizerProvider(imports, new HashSet<>());
- assertImportsInProvider(provider);
- }
-
- @Test
- public void shouldReturnWithBothImportTypes() {
- final Set<String> imports = new HashSet<>();
- imports.add("com.test.that.*");
- imports.add("com.test.that.That");
-
- final Set<String> statics = new HashSet<>();
- statics.add("com.test.This.*");
- statics.add("com.test.That.OTHER");
-
- final DefaultImportCustomizerProvider provider = new DefaultImportCustomizerProvider(imports, statics);
- assertImportsInProvider(provider);
- }
-
- private static void assertImportsInProvider(DefaultImportCustomizerProvider provider) {
- final Set<String> allImports = provider.getAllImports();
-
- final Set<String> imports = provider.getImports();
- final Set<String> staticImports = provider.getStaticImports();
- final Set<String> extraImports = provider.getExtraImports();
- final Set<String> extraStaticImports = provider.getExtraStaticImports();
-
- assertEquals(imports.size() + staticImports.size() + extraImports.size() + extraStaticImports.size(), allImports.size());
- assertTrue(allImports.containsAll(imports));
- assertTrue(allImports.containsAll(staticImports));
- assertTrue(allImports.containsAll(extraImports));
- assertTrue(allImports.containsAll(extraStaticImports));
- }
-}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/690b603e/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/jsr223/GremlinServerGremlinPlugin.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/jsr223/GremlinServerGremlinPlugin.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/jsr223/GremlinServerGremlinPlugin.java
index e8826ae..a08aa76 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/jsr223/GremlinServerGremlinPlugin.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/jsr223/GremlinServerGremlinPlugin.java
@@ -20,7 +20,7 @@ package org.apache.tinkerpop.gremlin.server.jsr223;
import org.apache.tinkerpop.gremlin.jsr223.AbstractGremlinPlugin;
import org.apache.tinkerpop.gremlin.jsr223.GremlinPlugin;
-import org.apache.tinkerpop.gremlin.jsr223.ImportCustomizer;
+import org.apache.tinkerpop.gremlin.jsr223.DefaultImportCustomizer;
import org.apache.tinkerpop.gremlin.server.util.LifeCycleHook;
/**
@@ -33,7 +33,7 @@ public final class GremlinServerGremlinPlugin extends AbstractGremlinPlugin {
private static final GremlinServerGremlinPlugin instance = new GremlinServerGremlinPlugin();
private GremlinServerGremlinPlugin() {
- super(MODULE_NAME, ImportCustomizer.build().addClassImports(LifeCycleHook.class, LifeCycleHook.Context.class).create());
+ super(MODULE_NAME, DefaultImportCustomizer.build().addClassImports(LifeCycleHook.class, LifeCycleHook.Context.class).create());
}
public static GremlinServerGremlinPlugin instance() {
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/690b603e/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinEnabledScriptEngineTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinEnabledScriptEngineTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinEnabledScriptEngineTest.java
index 9910a4c..723d898 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinEnabledScriptEngineTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/jsr223/GremlinEnabledScriptEngineTest.java
@@ -25,7 +25,6 @@ import org.apache.tinkerpop.gremlin.structure.VertexProperty;
import org.junit.Test;
import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
import java.util.Optional;
@@ -68,7 +67,7 @@ public class GremlinEnabledScriptEngineTest {
@Override
public Optional<Customizer[]> getCustomizers(final String scriptEngineName) {
- return Optional.of(new Customizer[] {ImportCustomizer.build()
+ return Optional.of(new Customizer[] {DefaultImportCustomizer.build()
.addClassImports(java.awt.Color.class)
.addClassImports(java.sql.CallableStatement.class)
.create() });
[5/6] tinkerpop git commit: TINKERPOP-1562 Deprecated
TinkerGraphGremlinPlugin.
Posted by sp...@apache.org.
TINKERPOP-1562 Deprecated TinkerGraphGremlinPlugin.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/32cf3bfe
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/32cf3bfe
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/32cf3bfe
Branch: refs/heads/TINKERPOP-1562
Commit: 32cf3bfe0c264aa8120be2e21345f17b35b21d90
Parents: 0cc705b
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Nov 22 09:42:12 2016 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 22 09:42:12 2016 -0500
----------------------------------------------------------------------
.../tinkergraph/groovy/plugin/TinkerGraphGremlinPlugin.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/32cf3bfe/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/groovy/plugin/TinkerGraphGremlinPlugin.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/groovy/plugin/TinkerGraphGremlinPlugin.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/groovy/plugin/TinkerGraphGremlinPlugin.java
index df35314..5c8231a 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/groovy/plugin/TinkerGraphGremlinPlugin.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/groovy/plugin/TinkerGraphGremlinPlugin.java
@@ -30,10 +30,11 @@ import java.util.Set;
/**
* @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.2.4, replaced by {@link org.apache.tinkerpop.gremlin.tinkergraph.jsr223.TinkerGraphGremlinPlugin}.
*/
+@Deprecated
public final class TinkerGraphGremlinPlugin extends AbstractGremlinPlugin {
-
private static final Set<String> IMPORTS = new HashSet<String>() {{
add(IMPORT_SPACE + TinkerGraph.class.getPackage().getName() + DOT_STAR);
add(IMPORT_SPACE + TinkerGraphComputer.class.getPackage().getName() + DOT_STAR);
[2/6] tinkerpop git commit: TINKERPOP-1562 Change ScriptCustomizer to
an interface.
Posted by sp...@apache.org.
TINKERPOP-1562 Change ScriptCustomizer to an interface.
This class had been added as part of this branch so recasting it as an interface is non-breaking. Get PluggedIn to process the ScriptCustomizer.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f4308370
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f4308370
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f4308370
Branch: refs/heads/TINKERPOP-1562
Commit: f4308370cdbac8ba822bbe096e29fcf6d58c8a23
Parents: 690b603
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Nov 22 06:49:14 2016 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 22 06:49:14 2016 -0500
----------------------------------------------------------------------
.../gremlin/console/plugin/PluggedIn.groovy | 7 ++-
.../gremlin/jsr223/DefaultScriptCustomizer.java | 57 ++++++++++++++++++++
.../gremlin/jsr223/ScriptCustomizer.java | 36 +++----------
.../gremlin/jsr223/ScriptFileGremlinPlugin.java | 2 +-
4 files changed, 70 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4308370/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 053a072..54659fa 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
@@ -24,7 +24,8 @@ import org.apache.tinkerpop.gremlin.groovy.plugin.PluginAcceptor
import org.apache.tinkerpop.gremlin.groovy.plugin.PluginInitializationException
import org.apache.tinkerpop.gremlin.groovy.plugin.RemoteAcceptor
import org.apache.tinkerpop.gremlin.groovy.plugin.RemoteException
-import org.apache.tinkerpop.gremlin.jsr223.DefaultImportCustomizer
+import org.apache.tinkerpop.gremlin.jsr223.ImportCustomizer
+import org.apache.tinkerpop.gremlin.jsr223.ScriptCustomizer
import org.apache.tinkerpop.gremlin.jsr223.console.ConsoleCustomizer
import org.codehaus.groovy.tools.shell.Groovysh
import org.codehaus.groovy.tools.shell.IO
@@ -33,6 +34,7 @@ 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
@@ -77,7 +79,6 @@ class PluggedIn {
@Override
void pluginTo(final PluginAcceptor pluginAcceptor) throws IllegalEnvironmentException, PluginInitializationException {
- // TODO: handle script customizer
corePlugin.getCustomizers("gremlin-groovy").each {
if (it instanceof ImportCustomizer) {
def imports = [] as Set
@@ -85,6 +86,8 @@ class PluggedIn {
it.methodImports.each { imports.add("import static " + it.declaringClass.canonicalName + "." + it.name) }
it.enumImports.each { imports.add("import static " + it.declaringClass.canonicalName + "." + it.name()) }
pluginAcceptor.addImports(imports)
+ } else if (it instanceof ScriptCustomizer) {
+ it.getScripts().collect { it.join(LINE_SEPARATOR) }.each { pluginAcceptor.eval(it) }
}
}
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4308370/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultScriptCustomizer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultScriptCustomizer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultScriptCustomizer.java
new file mode 100644
index 0000000..9640f28
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultScriptCustomizer.java
@@ -0,0 +1,57 @@
+/*
+ * 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.jsr223;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * Default implementation of the {@link ScriptCustomizer} that can create the script list from a list of files or
+ * from lines of script.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class DefaultScriptCustomizer implements ScriptCustomizer {
+
+ private final Collection<List<String>> scripts;
+
+ public DefaultScriptCustomizer(final Set<File> files) {
+ this(files.stream().map(f -> {
+ try {
+ return Files.lines(f.toPath(), StandardCharsets.UTF_8).collect(Collectors.toList());
+ } catch (IOException ioe) {
+ throw new IllegalStateException(ioe);
+ }
+ }).collect(Collectors.toList()));
+ }
+
+ public DefaultScriptCustomizer(final Collection<List<String>> scripts) {
+ this.scripts = scripts;
+ }
+
+ public Collection<List<String>> getScripts() {
+ return scripts;
+ }
+}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4308370/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ScriptCustomizer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ScriptCustomizer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ScriptCustomizer.java
index 28603df..eb2f8bc 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ScriptCustomizer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ScriptCustomizer.java
@@ -18,39 +18,17 @@
*/
package org.apache.tinkerpop.gremlin.jsr223;
-import java.io.File;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
/**
+ * A {@link Customizer} that executes scripts in a {@link GremlinScriptEngine} instance for purpose of initialization.
+ *
* @author Stephen Mallette (http://stephen.genoprime.com)
*/
-public class ScriptCustomizer implements Customizer {
-
- private final Collection<List<String>> scripts;
-
- public ScriptCustomizer(final Set<File> files) {
- this(files.stream().map(f -> {
- try {
- return Files.lines(f.toPath(), StandardCharsets.UTF_8).collect(Collectors.toList());
- } catch (IOException ioe) {
- throw new IllegalStateException(ioe);
- }
- }).collect(Collectors.toList()));
- }
-
- public ScriptCustomizer(final Collection<List<String>> scripts) {
- this.scripts = scripts;
- }
-
- public Collection<List<String>> scripts() {
- return scripts;
- }
+public interface ScriptCustomizer extends Customizer {
+ /**
+ * Gets a collection of scripts where each is represented as a list of script lines.
+ */
+ public Collection<List<String>> getScripts();
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f4308370/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ScriptFileGremlinPlugin.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ScriptFileGremlinPlugin.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ScriptFileGremlinPlugin.java
index 30e66ed..3fd811a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ScriptFileGremlinPlugin.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ScriptFileGremlinPlugin.java
@@ -31,7 +31,7 @@ public final class ScriptFileGremlinPlugin extends AbstractGremlinPlugin {
private static final String MODULE_NAME = "tinkerpop.script";
public ScriptFileGremlinPlugin(final Builder builder) {
- super(MODULE_NAME, builder.appliesTo, new ScriptCustomizer(builder.files));
+ super(MODULE_NAME, builder.appliesTo, new DefaultScriptCustomizer(builder.files));
}
public static Builder build() {
[6/6] tinkerpop git commit: TINKERPOP-1562 Added SparkGremlinPlugin
Posted by sp...@apache.org.
TINKERPOP-1562 Added SparkGremlinPlugin
SparkGremlinPlugin required binding injections so a BindingCustomizer was added along with two implementations - one for direct assignment and one for lazy assignment.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/64d61c04
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/64d61c04
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/64d61c04
Branch: refs/heads/TINKERPOP-1562
Commit: 64d61c04ba1af0700737ad3a0047b122bf7f2c31
Parents: 32cf3bf
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Nov 22 10:57:32 2016 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 22 10:57:32 2016 -0500
----------------------------------------------------------------------
.../gremlin/console/plugin/PluggedIn.groovy | 3 +
.../groovy/plugin/GremlinPluginAdapterTest.java | 63 ++++++++++++++
.../gremlin/jsr223/BindingsCustomizer.java | 33 +++++++
.../jsr223/DefaultBindingsCustomizer.java | 40 +++++++++
.../gremlin/jsr223/ImportGremlinPlugin.java | 16 ++++
.../jsr223/console/LazyBindingsCustomizer.java | 41 +++++++++
.../gremlin/groovy/engine/GremlinExecutor.java | 6 +-
.../spark/groovy/plugin/SparkGremlinPlugin.java | 2 +
.../spark/jsr223/SparkGremlinPlugin.java | 92 ++++++++++++++++++++
.../jsr223/TinkerGraphGremlinPlugin.java | 46 +++++-----
10 files changed, 317 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/64d61c04/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 d298cd7..b707226 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
@@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.groovy.plugin.PluginAcceptor
import org.apache.tinkerpop.gremlin.groovy.plugin.PluginInitializationException
import org.apache.tinkerpop.gremlin.groovy.plugin.RemoteAcceptor
import org.apache.tinkerpop.gremlin.groovy.plugin.RemoteException
+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
@@ -88,6 +89,8 @@ class PluggedIn {
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 { k, v -> pluginAcceptor.addBinding(k,v) }
}
}
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/64d61c04/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
new file mode 100644
index 0000000..77422da
--- /dev/null
+++ b/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/GremlinPluginAdapterTest.java
@@ -0,0 +1,63 @@
+/*
+ * 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.groovy.plugin;
+
+import org.apache.tinkerpop.gremlin.console.plugin.PluggedIn;
+import org.apache.tinkerpop.gremlin.jsr223.BindingsCustomizer;
+import org.apache.tinkerpop.gremlin.jsr223.ImportGremlinPlugin;
+import org.apache.tinkerpop.gremlin.jsr223.ScriptCustomizer;
+import org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin;
+import org.junit.Test;
+
+import java.time.DayOfWeek;
+import java.time.temporal.TemporalAccessor;
+import java.util.Set;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.IsCollectionContaining.hasItems;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class GremlinPluginAdapterTest {
+
+ @Test
+ public void shouldAdaptForImportCustomizer() throws Exception {
+ final ImportGremlinPlugin plugin = ImportGremlinPlugin.build()
+ .classImports(java.awt.Color.class, java.sql.CallableStatement.class)
+ .enumImports(DayOfWeek.SATURDAY, DayOfWeek.SUNDAY)
+ .methodImports(DayOfWeek.class.getMethod("from", TemporalAccessor.class), DayOfWeek.class.getMethod("values")).create();
+ final PluggedIn.GremlinPluginAdapter adapter = new PluggedIn.GremlinPluginAdapter(plugin);
+
+ assertEquals(plugin.getName(), adapter.getName());
+
+ final SpyPluginAcceptor spy = new SpyPluginAcceptor();
+ adapter.pluginTo(spy);
+
+ final Set<String> imports = spy.getImports();
+ assertEquals(6, imports.size());
+ assertThat(imports, hasItems("import " + java.awt.Color.class.getCanonicalName()));
+ assertThat(imports, hasItems("import " + java.sql.CallableStatement.class.getCanonicalName()));
+ assertThat(imports, hasItems("import static " + DayOfWeek.class.getCanonicalName() + "." + DayOfWeek.SATURDAY.name()));
+ assertThat(imports, hasItems("import static " + DayOfWeek.class.getCanonicalName() + "." + DayOfWeek.SUNDAY.name()));
+ assertThat(imports, hasItems("import static " + DayOfWeek.class.getCanonicalName() + ".from"));
+ assertThat(imports, hasItems("import static " + DayOfWeek.class.getCanonicalName() + ".values"));
+ }
+}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/64d61c04/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/BindingsCustomizer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/BindingsCustomizer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/BindingsCustomizer.java
new file mode 100644
index 0000000..02c129e
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/BindingsCustomizer.java
@@ -0,0 +1,33 @@
+/*
+ * 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.jsr223;
+
+import javax.script.Bindings;
+
+/**
+ * Provides a way to alter the bindings on a {@link GremlinScriptEngine}.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public interface BindingsCustomizer extends Customizer {
+ /**
+ * Gets the bindings to add to a {@link GremlinScriptEngine}.
+ */
+ public Bindings getBindings();
+}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/64d61c04/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultBindingsCustomizer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultBindingsCustomizer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultBindingsCustomizer.java
new file mode 100644
index 0000000..0073d39
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/DefaultBindingsCustomizer.java
@@ -0,0 +1,40 @@
+/*
+ * 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.jsr223;
+
+import javax.script.Bindings;
+
+/**
+ * Default implementation of the {@link BindingsCustomizer}.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class DefaultBindingsCustomizer implements BindingsCustomizer {
+
+ private final Bindings bindings;
+
+ public DefaultBindingsCustomizer(final Bindings bindings) {
+ this.bindings = bindings;
+ }
+
+ @Override
+ public Bindings getBindings() {
+ return bindings;
+ }
+}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/64d61c04/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPlugin.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPlugin.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPlugin.java
index a5ac278..26290d3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPlugin.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/ImportGremlinPlugin.java
@@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.jsr223;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
@@ -69,6 +70,11 @@ public final class ImportGremlinPlugin extends AbstractGremlinPlugin {
return this;
}
+ public Builder classImports(final Class<?>... classes) {
+ classImports.addAll(Arrays.asList(classes));
+ return this;
+ }
+
public Builder classImports(final Collection<String> classes) {
for (String clazz : classes) {
try {
@@ -108,6 +114,11 @@ public final class ImportGremlinPlugin extends AbstractGremlinPlugin {
return this;
}
+ public Builder methodImports(final Method... methods) {
+ methodImports.addAll(Arrays.asList(methods));
+ return this;
+ }
+
public Builder enumImports(final Collection<String> enums) {
for (String enumItem : enums) {
try {
@@ -138,6 +149,11 @@ public final class ImportGremlinPlugin extends AbstractGremlinPlugin {
return this;
}
+ public Builder enumImports(final Enum... enums) {
+ enumImports.addAll(Arrays.asList(enums));
+ return this;
+ }
+
public ImportGremlinPlugin create() {
if (enumImports.isEmpty() && classImports.isEmpty() && methodImports.isEmpty())
throw new IllegalStateException("At least one import must be specified");
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/64d61c04/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/console/LazyBindingsCustomizer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/console/LazyBindingsCustomizer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/console/LazyBindingsCustomizer.java
new file mode 100644
index 0000000..f21a2ab
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/console/LazyBindingsCustomizer.java
@@ -0,0 +1,41 @@
+/*
+ * 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.jsr223.console;
+
+import org.apache.tinkerpop.gremlin.jsr223.BindingsCustomizer;
+
+import javax.script.Bindings;
+import java.util.function.Supplier;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class LazyBindingsCustomizer implements BindingsCustomizer {
+
+ private final Supplier<Bindings> bindingsSupplier;
+
+ public LazyBindingsCustomizer(final Supplier<Bindings> bindingsSupplier) {
+ this.bindingsSupplier = bindingsSupplier;
+ }
+
+ @Override
+ public Bindings getBindings() {
+ return bindingsSupplier.get();
+ }
+}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/64d61c04/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
index 84f1992..87d5728 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
@@ -447,7 +447,11 @@ public class GremlinExecutor implements AutoCloseable {
final Map<String, Object> customizerConfigs = pluginConfig.getValue();
final Method[] methods = builderClazz.getMethods();
for (Map.Entry<String, Object> customizerConfig : customizerConfigs.entrySet()) {
- final Method configMethod = Stream.of(methods).filter(m -> m.getName().equals(customizerConfig.getKey())).findFirst()
+ final Method configMethod = Stream.of(methods).filter(m -> {
+ final Class<?> type = customizerConfig.getValue().getClass();
+ return m.getName().equals(customizerConfig.getKey()) && m.getParameters().length <= 1
+ && m.getParameters()[0].getType().isAssignableFrom(type);
+ }).findFirst()
.orElseThrow(() -> new IllegalStateException("Could not find builder method on " + builderClazz.getCanonicalName()));
if (null == customizerConfig.getValue())
pluginBuilder = configMethod.invoke(pluginBuilder);
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/64d61c04/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/groovy/plugin/SparkGremlinPlugin.java
----------------------------------------------------------------------
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/groovy/plugin/SparkGremlinPlugin.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/groovy/plugin/SparkGremlinPlugin.java
index 1fe23e3..c6eb682 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/groovy/plugin/SparkGremlinPlugin.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/groovy/plugin/SparkGremlinPlugin.java
@@ -34,7 +34,9 @@ import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @deprecated As of release 3.2.4, replaced by {@link org.apache.tinkerpop.gremlin.spark.jsr223.SparkGremlinPlugin}.
*/
+@Deprecated
public final class SparkGremlinPlugin extends AbstractGremlinPlugin {
protected static String NAME = "tinkerpop.spark";
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/64d61c04/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/jsr223/SparkGremlinPlugin.java
----------------------------------------------------------------------
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/jsr223/SparkGremlinPlugin.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/jsr223/SparkGremlinPlugin.java
new file mode 100644
index 0000000..840f593
--- /dev/null
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/jsr223/SparkGremlinPlugin.java
@@ -0,0 +1,92 @@
+/*
+ * 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.spark.jsr223;
+
+import org.apache.tinkerpop.gremlin.jsr223.AbstractGremlinPlugin;
+import org.apache.tinkerpop.gremlin.jsr223.BindingsCustomizer;
+import org.apache.tinkerpop.gremlin.jsr223.DefaultImportCustomizer;
+import org.apache.tinkerpop.gremlin.jsr223.ImportCustomizer;
+import org.apache.tinkerpop.gremlin.jsr223.console.LazyBindingsCustomizer;
+import org.apache.tinkerpop.gremlin.spark.process.computer.CombineIterator;
+import org.apache.tinkerpop.gremlin.spark.process.computer.MapIterator;
+import org.apache.tinkerpop.gremlin.spark.process.computer.MemoryAccumulator;
+import org.apache.tinkerpop.gremlin.spark.process.computer.ReduceIterator;
+import org.apache.tinkerpop.gremlin.spark.process.computer.SparkExecutor;
+import org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer;
+import org.apache.tinkerpop.gremlin.spark.process.computer.SparkMemory;
+import org.apache.tinkerpop.gremlin.spark.process.computer.SparkMessenger;
+import org.apache.tinkerpop.gremlin.spark.structure.Spark;
+import org.apache.tinkerpop.gremlin.spark.structure.io.InputFormatRDD;
+import org.apache.tinkerpop.gremlin.spark.structure.io.InputOutputHelper;
+import org.apache.tinkerpop.gremlin.spark.structure.io.InputRDD;
+import org.apache.tinkerpop.gremlin.spark.structure.io.InputRDDFormat;
+import org.apache.tinkerpop.gremlin.spark.structure.io.OutputFormatRDD;
+import org.apache.tinkerpop.gremlin.spark.structure.io.OutputRDD;
+import org.apache.tinkerpop.gremlin.spark.structure.io.PersistedInputRDD;
+import org.apache.tinkerpop.gremlin.spark.structure.io.PersistedOutputRDD;
+import org.apache.tinkerpop.gremlin.spark.structure.io.SparkContextStorage;
+
+import javax.script.Bindings;
+import javax.script.SimpleBindings;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public final class SparkGremlinPlugin extends AbstractGremlinPlugin {
+
+ protected static String NAME = "tinkerpop.spark";
+
+ private static final ImportCustomizer imports = DefaultImportCustomizer.build().addClassImports(
+ SparkGraphComputer.class,
+ CombineIterator.class,
+ MapIterator.class,
+ MemoryAccumulator.class,
+ ReduceIterator.class,
+ SparkExecutor.class,
+ SparkGraphComputer.class,
+ SparkMemory.class,
+ SparkMessenger.class,
+ Spark.class,
+ InputFormatRDD.class,
+ InputOutputHelper.class,
+ InputRDD.class,
+ InputRDDFormat.class,
+ OutputFormatRDD.class,
+ OutputRDD.class,
+ PersistedInputRDD.class,
+ PersistedOutputRDD.class,
+ SparkContextStorage.class).create();
+
+ private static final BindingsCustomizer bindings = new LazyBindingsCustomizer(() -> {
+ final Bindings bindings = new SimpleBindings();
+ bindings.put("spark", SparkContextStorage.open());
+ return bindings;
+ });
+
+ public SparkGremlinPlugin() {
+ super(NAME, imports, bindings);
+ }
+
+ @Override
+ public boolean requireRestart() {
+ return true;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/64d61c04/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/jsr223/TinkerGraphGremlinPlugin.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/jsr223/TinkerGraphGremlinPlugin.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/jsr223/TinkerGraphGremlinPlugin.java
index 16a6cb5..68e649c 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/jsr223/TinkerGraphGremlinPlugin.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/jsr223/TinkerGraphGremlinPlugin.java
@@ -21,6 +21,7 @@ package org.apache.tinkerpop.gremlin.tinkergraph.jsr223;
import org.apache.tinkerpop.gremlin.jsr223.AbstractGremlinPlugin;
import org.apache.tinkerpop.gremlin.jsr223.Customizer;
import org.apache.tinkerpop.gremlin.jsr223.DefaultImportCustomizer;
+import org.apache.tinkerpop.gremlin.jsr223.ImportCustomizer;
import org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerGraphComputer;
import org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerGraphComputerView;
import org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerMapEmitter;
@@ -48,30 +49,27 @@ import java.util.Optional;
public final class TinkerGraphGremlinPlugin extends AbstractGremlinPlugin {
private static final String MODULE_NAME = "tinkerpop.tinkergraph";
- public TinkerGraphGremlinPlugin() {
- super(MODULE_NAME, DefaultImportCustomizer.build().addClassImports(
- TinkerEdge.class,
- TinkerElement.class,
- TinkerFactory.class,
- TinkerGraph.class,
- TinkerGraphVariables.class,
- TinkerHelper.class,
- TinkerIoRegistry.class,
- TinkerIoRegistryV2d0.class,
- TinkerProperty.class,
- TinkerVertex.class,
- TinkerVertexProperty.class,
- TinkerGraphComputer.class,
- TinkerGraphComputerView.class,
- TinkerMapEmitter.class,
- TinkerMemory.class,
- TinkerMessenger.class,
- TinkerReduceEmitter.class,
- TinkerWorkerPool.class).create());
- }
+ private static final ImportCustomizer imports = DefaultImportCustomizer.build()
+ .addClassImports(TinkerEdge.class,
+ TinkerElement.class,
+ TinkerFactory.class,
+ TinkerGraph.class,
+ TinkerGraphVariables.class,
+ TinkerHelper.class,
+ TinkerIoRegistry.class,
+ TinkerIoRegistryV2d0.class,
+ TinkerProperty.class,
+ TinkerVertex.class,
+ TinkerVertexProperty.class,
+ TinkerGraphComputer.class,
+ TinkerGraphComputerView.class,
+ TinkerMapEmitter.class,
+ TinkerMemory.class,
+ TinkerMessenger.class,
+ TinkerReduceEmitter.class,
+ TinkerWorkerPool.class).create();
- @Override
- public Optional<Customizer[]> getCustomizers() {
- return null;
+ public TinkerGraphGremlinPlugin() {
+ super(MODULE_NAME, imports);
}
}
[4/6] tinkerpop git commit: TINKERPOP-1562 Fixed problems related to
loading new/old plugins
Posted by sp...@apache.org.
TINKERPOP-1562 Fixed problems related to loading new/old plugins
Tested in Gremlin Console and it looks like the flag that will tell it to load one plugin version or the other is working properly.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/0cc705bf
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/0cc705bf
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/0cc705bf
Branch: refs/heads/TINKERPOP-1562
Commit: 0cc705bf98770ee37ec7bb68440f368b406b0cc1
Parents: a302997
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Nov 22 09:39:37 2016 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 22 09:39:37 2016 -0500
----------------------------------------------------------------------
.../tinkerpop/gremlin/console/Mediator.groovy | 2 +-
.../gremlin/console/plugin/PluggedIn.groovy | 2 +-
.../jsr223/TinkerGraphGremlinPlugin.java | 77 ++++++++++++++++++++
...pache.tinkerpop.gremlin.jsr223.GremlinPlugin | 1 +
4 files changed, 80 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0cc705bf/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 396c563..18e8d58 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
@@ -34,7 +34,7 @@ class Mediator {
private static String LINE_SEP = System.getProperty("line.separator")
- public static final boolean useV3d3 = System.getProperty("plugins", "v3d3") == "v3d3"
+ public static final boolean useV3d3 = System.getProperty("plugins", "v3d2") == "v3d3"
public Mediator(final Console console) {
this.console = console
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0cc705bf/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 54659fa..d298cd7 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
@@ -79,7 +79,7 @@ class PluggedIn {
@Override
void pluginTo(final PluginAcceptor pluginAcceptor) throws IllegalEnvironmentException, PluginInitializationException {
- corePlugin.getCustomizers("gremlin-groovy").each {
+ corePlugin.getCustomizers("gremlin-groovy").get().each {
if (it instanceof ImportCustomizer) {
def imports = [] as Set
it.classImports.each { imports.add("import " + it.canonicalName )}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0cc705bf/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/jsr223/TinkerGraphGremlinPlugin.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/jsr223/TinkerGraphGremlinPlugin.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/jsr223/TinkerGraphGremlinPlugin.java
new file mode 100644
index 0000000..16a6cb5
--- /dev/null
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/jsr223/TinkerGraphGremlinPlugin.java
@@ -0,0 +1,77 @@
+/*
+ * 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.tinkergraph.jsr223;
+
+import org.apache.tinkerpop.gremlin.jsr223.AbstractGremlinPlugin;
+import org.apache.tinkerpop.gremlin.jsr223.Customizer;
+import org.apache.tinkerpop.gremlin.jsr223.DefaultImportCustomizer;
+import org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerGraphComputer;
+import org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerGraphComputerView;
+import org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerMapEmitter;
+import org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerMemory;
+import org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerMessenger;
+import org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerReduceEmitter;
+import org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerWorkerPool;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerEdge;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerElement;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraphVariables;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerHelper;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerProperty;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerVertex;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerVertexProperty;
+
+import java.util.Optional;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public final class TinkerGraphGremlinPlugin extends AbstractGremlinPlugin {
+ private static final String MODULE_NAME = "tinkerpop.tinkergraph";
+
+ public TinkerGraphGremlinPlugin() {
+ super(MODULE_NAME, DefaultImportCustomizer.build().addClassImports(
+ TinkerEdge.class,
+ TinkerElement.class,
+ TinkerFactory.class,
+ TinkerGraph.class,
+ TinkerGraphVariables.class,
+ TinkerHelper.class,
+ TinkerIoRegistry.class,
+ TinkerIoRegistryV2d0.class,
+ TinkerProperty.class,
+ TinkerVertex.class,
+ TinkerVertexProperty.class,
+ TinkerGraphComputer.class,
+ TinkerGraphComputerView.class,
+ TinkerMapEmitter.class,
+ TinkerMemory.class,
+ TinkerMessenger.class,
+ TinkerReduceEmitter.class,
+ TinkerWorkerPool.class).create());
+ }
+
+ @Override
+ public Optional<Customizer[]> getCustomizers() {
+ return null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0cc705bf/tinkergraph-gremlin/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.jsr223.GremlinPlugin
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.jsr223.GremlinPlugin b/tinkergraph-gremlin/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.jsr223.GremlinPlugin
new file mode 100644
index 0000000..f63b96f
--- /dev/null
+++ b/tinkergraph-gremlin/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.jsr223.GremlinPlugin
@@ -0,0 +1 @@
+org.apache.tinkerpop.gremlin.tinkergraph.jsr223.TinkerGraphGremlinPlugin
\ No newline at end of file
[3/6] tinkerpop git commit: TINKERPOP-1562 Rename "modules" as
"plugin"
Posted by sp...@apache.org.
TINKERPOP-1562 Rename "modules" as "plugin"
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/a3029973
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/a3029973
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/a3029973
Branch: refs/heads/TINKERPOP-1562
Commit: a3029973000ad404e745c55f5d7f7e6071c13710
Parents: f430837
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Nov 22 06:59:49 2016 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 22 06:59:49 2016 -0500
----------------------------------------------------------------------
.../gremlin/groovy/engine/GremlinExecutor.java | 40 ++++++++++----------
.../tinkerpop/gremlin/server/Settings.java | 4 +-
.../server/util/ServerGremlinExecutor.java | 6 +--
3 files changed, 25 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a3029973/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
index 4449e1b..84f1992 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
@@ -85,7 +85,7 @@ public class GremlinExecutor implements AutoCloseable {
private GremlinScriptEngineManager gremlinScriptEngineManager;
private final Map<String, EngineSettings> settings;
- private final Map<String, Map<String, Map<String,Object>>> modules;
+ private final Map<String, Map<String, Map<String,Object>>> plugins;
private final long scriptEvaluationTimeout;
private final Bindings globalBindings;
private final List<List<String>> use;
@@ -111,7 +111,7 @@ public class GremlinExecutor implements AutoCloseable {
this.afterFailure = builder.afterFailure;
this.use = builder.use;
this.settings = builder.settings;
- this.modules = builder.modules;
+ this.plugins = builder.plugins;
this.scriptEvaluationTimeout = builder.scriptEvaluationTimeout;
this.globalBindings = builder.globalBindings;
this.enabledPlugins = builder.enabledPlugins;
@@ -426,14 +426,14 @@ public class GremlinExecutor implements AutoCloseable {
}
private void initializeGremlinScriptEngineManager() {
- this.useGremlinScriptEngineManager = !modules.entrySet().isEmpty();
+ this.useGremlinScriptEngineManager = !plugins.entrySet().isEmpty();
- for (Map.Entry<String, Map<String, Map<String,Object>>> config : modules.entrySet()) {
+ for (Map.Entry<String, Map<String, Map<String,Object>>> config : plugins.entrySet()) {
final String language = config.getKey();
- final Map<String, Map<String,Object>> moduleConfigs = config.getValue();
- for (Map.Entry<String, Map<String,Object>> moduleConfig : moduleConfigs.entrySet()) {
+ final Map<String, Map<String,Object>> pluginConfigs = config.getValue();
+ for (Map.Entry<String, Map<String,Object>> pluginConfig : pluginConfigs.entrySet()) {
try {
- final Class<?> clazz = Class.forName(moduleConfig.getKey());
+ final Class<?> clazz = Class.forName(pluginConfig.getKey());
// first try instance() and if that fails try to use build()
try {
@@ -441,29 +441,29 @@ public class GremlinExecutor implements AutoCloseable {
gremlinScriptEngineManager.addPlugin((GremlinPlugin) instanceMethod.invoke(null));
} catch (Exception ex) {
final Method builderMethod = clazz.getMethod("build");
- Object moduleBuilder = builderMethod.invoke(null);
+ Object pluginBuilder = builderMethod.invoke(null);
- final Class<?> builderClazz = moduleBuilder.getClass();
- final Map<String, Object> customizerConfigs = moduleConfig.getValue();
+ final Class<?> builderClazz = pluginBuilder.getClass();
+ final Map<String, Object> customizerConfigs = pluginConfig.getValue();
final Method[] methods = builderClazz.getMethods();
for (Map.Entry<String, Object> customizerConfig : customizerConfigs.entrySet()) {
final Method configMethod = Stream.of(methods).filter(m -> m.getName().equals(customizerConfig.getKey())).findFirst()
.orElseThrow(() -> new IllegalStateException("Could not find builder method on " + builderClazz.getCanonicalName()));
if (null == customizerConfig.getValue())
- moduleBuilder = configMethod.invoke(moduleBuilder);
+ pluginBuilder = configMethod.invoke(pluginBuilder);
else
- moduleBuilder = configMethod.invoke(moduleBuilder, customizerConfig.getValue());
+ pluginBuilder = configMethod.invoke(pluginBuilder, customizerConfig.getValue());
}
try {
final Method appliesTo = builderClazz.getMethod("appliesTo");
- moduleBuilder = appliesTo.invoke(moduleBuilder, language);
+ pluginBuilder = appliesTo.invoke(pluginBuilder, language);
} catch (NoSuchMethodException ignored) {
}
final Method create = builderClazz.getMethod("create");
- gremlinScriptEngineManager.addPlugin((GremlinPlugin) create.invoke(moduleBuilder));
+ gremlinScriptEngineManager.addPlugin((GremlinPlugin) create.invoke(pluginBuilder));
}
} catch (Exception ex) {
throw new IllegalStateException(ex);
@@ -569,7 +569,7 @@ public class GremlinExecutor implements AutoCloseable {
private long scriptEvaluationTimeout = 8000;
private Map<String, EngineSettings> settings = new HashMap<>();
- private Map<String, Map<String, Map<String,Object>>> modules = new HashMap<>();
+ private Map<String, Map<String, Map<String,Object>>> plugins = new HashMap<>();
private ExecutorService executorService = null;
private ScheduledExecutorService scheduledExecutorService = null;
@@ -597,7 +597,7 @@ public class GremlinExecutor implements AutoCloseable {
* @param scripts A list of scripts to execute in the engine to initialize it.
* @param config Custom configuration map for the ScriptEngine
*
- * @deprecated As of release 3.2.4, replaced by {@link #addModules(String, Map)}.
+ * @deprecated As of release 3.2.4, replaced by {@link #addPlugins(String, Map)}.
*/
@Deprecated
public Builder addEngineSettings(final String engineName, final List<String> imports,
@@ -618,8 +618,8 @@ public class GremlinExecutor implements AutoCloseable {
* is the name of a builder method on the {@link GremlinPlugin} and the value is some argument to pass to that
* method.
*/
- public Builder addModules(final String engineName, final Map<String, Map<String,Object>> modules) {
- this.modules.put(engineName, modules);
+ public Builder addPlugins(final String engineName, final Map<String, Map<String,Object>> plugins) {
+ this.plugins.put(engineName, plugins);
return this;
}
@@ -649,7 +649,7 @@ public class GremlinExecutor implements AutoCloseable {
/**
* Replaces any settings provided.
*
- * @deprecated As of release 3.2.4, replaced by {@link #addModules(String, Map)}.
+ * @deprecated As of release 3.2.4, replaced by {@link #addPlugins(String, Map)}.
*/
@Deprecated
public Builder engineSettings(final Map<String, EngineSettings> settings) {
@@ -721,7 +721,7 @@ public class GremlinExecutor implements AutoCloseable {
/**
* Set of the names of plugins that should be enabled for the engine.
*
- * @deprecated As of release 3.2.4, replaced by {@link #addModules(String, Map)} though behavior is not quite
+ * @deprecated As of release 3.2.4, replaced by {@link #addPlugins(String, Map)} though behavior is not quite
* the same.
*/
@Deprecated
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a3029973/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/Settings.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/Settings.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/Settings.java
index 75cff3b..97e2875 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/Settings.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/Settings.java
@@ -260,7 +260,7 @@ public class Settings {
scriptEngineSettingsDescription.putListPropertyType("staticImports", String.class);
scriptEngineSettingsDescription.putListPropertyType("scripts", String.class);
scriptEngineSettingsDescription.putMapPropertyType("config", String.class, Object.class);
- scriptEngineSettingsDescription.putMapPropertyType("modules", String.class, Object.class);
+ scriptEngineSettingsDescription.putMapPropertyType("plugins", String.class, Object.class);
constructor.addTypeDescription(scriptEngineSettingsDescription);
final TypeDescription sslSettings = new TypeDescription(SslSettings.class);
@@ -343,7 +343,7 @@ public class Settings {
/**
* A set of configurations for {@link GremlinPlugin} instances to apply to this {@link GremlinScriptEngine}.
*/
- public Map<String,Map<String,Object>> modules = new HashMap<>();
+ public Map<String,Map<String,Object>> plugins = new HashMap<>();
}
/**
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a3029973/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
index 1204bee..2b2f1f1 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
@@ -127,8 +127,8 @@ public class ServerGremlinExecutor<T extends ScheduledExecutorService> {
.scheduledExecutorService(this.scheduledExecutorService);
settings.scriptEngines.forEach((k, v) -> {
- // use modules if they are present and the old approach if not
- if (v.modules.isEmpty()) {
+ // use plugins if they are present and the old approach if not
+ if (v.plugins.isEmpty()) {
// make sure that server related classes are available at init - ultimately this body of code will be
// deleted when deprecation is removed
v.imports.add(LifeCycleHook.class.getCanonicalName());
@@ -137,7 +137,7 @@ public class ServerGremlinExecutor<T extends ScheduledExecutorService> {
} else {
// make sure that server related classes are available at init - new approach. the LifeCycleHook stuff
// will be added explicitly via configuration using GremlinServerGremlinModule in the yaml
- gremlinExecutorBuilder.addModules(k, v.modules);
+ gremlinExecutorBuilder.addPlugins(k, v.plugins);
}
});