TINKERPOP-1612 Allow any scriptengine to be used for ScriptRecordReader
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/195a8fe4 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/195a8fe4 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/195a8fe4 Branch: refs/heads/TINKERPOP-1612 Commit: 195a8fe4fd44d6d975a1691b0e1bded6ca19005d Parents: 29c3a99 Author: Stephen Mallette <sp...@genoprime.com> Authored: Sat Feb 25 11:49:01 2017 -0500 Committer: Stephen Mallette <sp...@genoprime.com> Committed: Mon Feb 27 10:46:25 2017 -0500 ---------------------------------------------------------------------- .../hadoop/structure/io/script/ScriptRecordReader.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/195a8fe4/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordReader.java ---------------------------------------------------------------------- diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordReader.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordReader.java index ea72f9a..3299c1c 100644 --- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordReader.java +++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordReader.java @@ -27,12 +27,11 @@ import org.apache.hadoop.mapreduce.InputSplit; import org.apache.hadoop.mapreduce.RecordReader; import org.apache.hadoop.mapreduce.TaskAttemptContext; import org.apache.hadoop.mapreduce.lib.input.LineRecordReader; -import org.apache.tinkerpop.gremlin.groovy.CompilerCustomizerProvider; -import org.apache.tinkerpop.gremlin.groovy.DefaultImportCustomizerProvider; -import org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine; import org.apache.tinkerpop.gremlin.hadoop.Constants; import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable; import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil; +import org.apache.tinkerpop.gremlin.jsr223.CachedGremlinScriptEngineManager; +import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngineManager; import org.apache.tinkerpop.gremlin.process.computer.GraphFilter; import org.apache.tinkerpop.gremlin.process.computer.util.VertexProgramHelper; import org.apache.tinkerpop.gremlin.structure.Edge; @@ -58,13 +57,14 @@ import java.util.Optional; public final class ScriptRecordReader extends RecordReader<NullWritable, VertexWritable> { protected final static String SCRIPT_FILE = "gremlin.hadoop.scriptInputFormat.script"; - //protected final static String SCRIPT_ENGINE = "gremlin.hadoop.scriptInputFormat.scriptEngine"; + protected final static String SCRIPT_ENGINE = "gremlin.hadoop.scriptInputFormat.scriptEngine"; private final static String GRAPH = "graph"; private final static String LINE = "line"; private final static String FACTORY = "factory"; private final static String READ_CALL = "parse(" + LINE + "," + FACTORY + ")"; private final VertexWritable vertexWritable = new VertexWritable(); private final LineRecordReader lineRecordReader; + private final GremlinScriptEngineManager manager = new CachedGremlinScriptEngineManager(); private ScriptEngine engine; private String parse; @@ -82,8 +82,7 @@ public final class ScriptRecordReader extends RecordReader<NullWritable, VertexW final Configuration configuration = context.getConfiguration(); if (configuration.get(Constants.GREMLIN_HADOOP_GRAPH_FILTER, null) != null) this.graphFilter = VertexProgramHelper.deserialize(ConfUtil.makeApacheConfiguration(configuration), Constants.GREMLIN_HADOOP_GRAPH_FILTER); - this.engine = new GremlinGroovyScriptEngine((CompilerCustomizerProvider) new DefaultImportCustomizerProvider()); - //this.engine = ScriptEngineCache.get(configuration.get(SCRIPT_ENGINE, ScriptEngineCache.DEFAULT_SCRIPT_ENGINE)); + this.engine = manager.getEngineByName(configuration.get(SCRIPT_ENGINE, "gremlin-groovy")); final FileSystem fs = FileSystem.get(configuration); try (final InputStream stream = fs.open(new Path(configuration.get(SCRIPT_FILE))); final InputStreamReader reader = new InputStreamReader(stream)) {