You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by mo...@apache.org on 2015/04/06 06:06:04 UTC
[13/17] incubator-zeppelin git commit: Rename package/groupId to
org.apache and apply rat plugin.
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/pom.xml
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/pom.xml b/zeppelin-interpreter/pom.xml
index de4bbc8..d824dfe 100644
--- a/zeppelin-interpreter/pom.xml
+++ b/zeppelin-interpreter/pom.xml
@@ -1,15 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>zeppelin</artifactId>
- <groupId>com.nflabs.zeppelin</groupId>
+ <groupId>org.apache.zeppelin</groupId>
<version>0.5.0-SNAPSHOT</version>
</parent>
- <groupId>com.nflabs.zeppelin</groupId>
+ <groupId>org.apache.zeppelin</groupId>
<artifactId>zeppelin-interpreter</artifactId>
<packaging>jar</packaging>
<version>0.5.0-SNAPSHOT</version>
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/display/GUI.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/display/GUI.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/display/GUI.java
deleted file mode 100644
index 51ae222..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/display/GUI.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.nflabs.zeppelin.display;
-
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TreeMap;
-
-import com.nflabs.zeppelin.display.Input.ParamOption;
-
-/**
- * Settings of a form.
- *
- * @author Leemoonsoo
- *
- */
-public class GUI implements Serializable {
-
- Map<String, Object> params = new HashMap<String, Object>(); // form parameters from client
- Map<String, Input> forms = new TreeMap<String, Input>(); // form configuration
-
- public GUI() {
-
- }
-
- public void setParams(Map<String, Object> values) {
- this.params = values;
- }
-
- public Map<String, Object> getParams() {
- return params;
- }
-
- public Map<String, Input> getForms() {
- return forms;
- }
-
- public void setForms(Map<String, Input> forms) {
- this.forms = forms;
- }
-
- public Object input(String id, Object defaultValue) {
- // first find values from client and then use default
- Object value = params.get(id);
- if (value == null) {
- value = defaultValue;
- }
-
- forms.put(id, new Input(id, defaultValue));
- return value;
- }
-
- public Object input(String id) {
- return input(id, "");
- }
-
- public Object select(String id, Object defaultValue, ParamOption[] options) {
- Object value = params.get(id);
- if (value == null) {
- value = defaultValue;
- }
- forms.put(id, new Input(id, defaultValue, options));
- return value;
- }
-
- public void clear() {
- this.forms = new TreeMap<String, Input>();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/display/Input.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/display/Input.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/display/Input.java
deleted file mode 100644
index 54ef717..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/display/Input.java
+++ /dev/null
@@ -1,458 +0,0 @@
-package com.nflabs.zeppelin.display;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Input type.
- *
- * @author Leemoonsoo
- *
- */
-public class Input implements Serializable {
- /**
- * Parameters option.
- *
- * @author Leemoonsoo
- *
- */
- public static class ParamOption {
- Object value;
- String displayName;
-
- public ParamOption(Object value, String displayName) {
- super();
- this.value = value;
- this.displayName = displayName;
- }
-
- public Object getValue() {
- return value;
- }
-
- public void setValue(Object value) {
- this.value = value;
- }
-
- public String getDisplayName() {
- return displayName;
- }
-
- public void setDisplayName(String displayName) {
- this.displayName = displayName;
- }
-
- }
-
- String name;
- String displayName;
- String type;
- Object defaultValue;
- ParamOption[] options;
- boolean hidden;
-
- public Input(String name, Object defaultValue) {
- this.name = name;
- this.displayName = name;
- this.defaultValue = defaultValue;
- }
-
- public Input(String name, Object defaultValue, ParamOption[] options) {
- this.name = name;
- this.displayName = name;
- this.defaultValue = defaultValue;
- this.options = options;
- }
-
-
- public Input(String name, String displayName, String type, Object defaultValue,
- ParamOption[] options, boolean hidden) {
- super();
- this.name = name;
- this.displayName = displayName;
- this.type = type;
- this.defaultValue = defaultValue;
- this.options = options;
- this.hidden = hidden;
- }
-
- public boolean equals(Object o) {
- return name.equals(((Input) o).getName());
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getDisplayName() {
- return displayName;
- }
-
- public void setDisplayName(String displayName) {
- this.displayName = displayName;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public Object getDefaultValue() {
- return defaultValue;
- }
-
- public void setDefaultValue(Object defaultValue) {
- this.defaultValue = defaultValue;
- }
-
- public ParamOption[] getOptions() {
- return options;
- }
-
- public void setOptions(ParamOption[] options) {
- this.options = options;
- }
-
- public boolean isHidden() {
- return hidden;
- }
-
-
- private static String[] getNameAndDisplayName(String str) {
- Pattern p = Pattern.compile("([^(]*)\\s*[(]([^)]*)[)]");
- Matcher m = p.matcher(str.trim());
- if (m == null || m.find() == false) {
- return null;
- }
- String[] ret = new String[2];
- ret[0] = m.group(1);
- ret[1] = m.group(2);
- return ret;
- }
-
- private static String[] getType(String str) {
- Pattern p = Pattern.compile("([^:]*)\\s*:\\s*(.*)");
- Matcher m = p.matcher(str.trim());
- if (m == null || m.find() == false) {
- return null;
- }
- String[] ret = new String[2];
- ret[0] = m.group(1).trim();
- ret[1] = m.group(2).trim();
- return ret;
- }
-
- public static Map<String, Input> extractSimpleQueryParam(String script) {
- Map<String, Input> params = new HashMap<String, Input>();
- if (script == null) {
- return params;
- }
- String replaced = script;
-
- Pattern pattern = Pattern.compile("([_])?[$][{]([^=}]*([=][^}]*)?)[}]");
-
- Matcher match = pattern.matcher(replaced);
- while (match.find()) {
- String hiddenPart = match.group(1);
- boolean hidden = false;
- if ("_".equals(hiddenPart)) {
- hidden = true;
- }
- String m = match.group(2);
-
- String namePart;
- String valuePart;
-
- int p = m.indexOf('=');
- if (p > 0) {
- namePart = m.substring(0, p);
- valuePart = m.substring(p + 1);
- } else {
- namePart = m;
- valuePart = null;
- }
-
-
- String varName;
- String displayName = null;
- String type = null;
- String defaultValue = "";
- ParamOption[] paramOptions = null;
-
- // get var name type
- String varNamePart;
- String[] typeArray = getType(namePart);
- if (typeArray != null) {
- type = typeArray[0];
- varNamePart = typeArray[1];
- } else {
- varNamePart = namePart;
- }
-
- // get var name and displayname
- String[] varNameArray = getNameAndDisplayName(varNamePart);
- if (varNameArray != null) {
- varName = varNameArray[0];
- displayName = varNameArray[1];
- } else {
- varName = varNamePart.trim();
- }
-
- // get defaultValue
- if (valuePart != null) {
- // find default value
- int optionP = valuePart.indexOf(",");
- if (optionP > 0) { // option available
- defaultValue = valuePart.substring(0, optionP);
- String optionPart = valuePart.substring(optionP + 1);
- String[] options = Input.splitPipe(optionPart);
-
- paramOptions = new ParamOption[options.length];
-
- for (int i = 0; i < options.length; i++) {
-
- String[] optNameArray = getNameAndDisplayName(options[i]);
- if (optNameArray != null) {
- paramOptions[i] = new ParamOption(optNameArray[0], optNameArray[1]);
- } else {
- paramOptions[i] = new ParamOption(options[i], null);
- }
- }
-
-
- } else { // no option
- defaultValue = valuePart;
- }
-
- }
-
- Input param = new Input(varName, displayName, type, defaultValue, paramOptions, hidden);
- params.put(varName, param);
- }
-
- params.remove("pql");
- return params;
- }
-
- public static String getSimpleQuery(Map<String, Object> params, String script) {
- String replaced = script;
-
- for (String key : params.keySet()) {
- Object value = params.get(key);
- replaced =
- replaced.replaceAll("[_]?[$][{]([^:]*[:])?" + key + "([(][^)]*[)])?(=[^}]*)?[}]",
- value.toString());
- }
-
- Pattern pattern = Pattern.compile("[$][{]([^=}]*[=][^}]*)[}]");
- while (true) {
- Matcher match = pattern.matcher(replaced);
- if (match != null && match.find()) {
- String m = match.group(1);
- int p = m.indexOf('=');
- String replacement = m.substring(p + 1);
- int optionP = replacement.indexOf(",");
- if (optionP > 0) {
- replacement = replacement.substring(0, optionP);
- }
- replaced =
- replaced.replaceFirst("[_]?[$][{]"
- + m.replaceAll("[(]", ".").replaceAll("[)]", ".").replaceAll("[|]", ".") + "[}]",
- replacement);
- } else {
- break;
- }
- }
-
- replaced = replaced.replace("[_]?[$][{]([^=}]*)[}]", "");
- return replaced;
- }
-
-
- public static String[] split(String str) {
- return str.split(";(?=([^\"']*\"[^\"']*\")*[^\"']*$)");
-
- }
-
- /*
- * public static String [] splitPipe(String str){ //return
- * str.split("\\|(?=([^\"']*\"[^\"']*\")*[^\"']*$)"); return
- * str.split("\\|(?=([^\"']*\"[^\"']*\")*[^\"']*$)"); }
- */
-
-
- public static String[] splitPipe(String str) {
- return split(str, '|');
- }
-
- public static String[] split(String str, char split) {
- return split(str, new String[] {String.valueOf(split)}, false);
- }
-
- public static String[] split(String str, String[] splitters, boolean includeSplitter) {
- String escapeSeq = "\"',;${}";
- char escapeChar = '\\';
-
- String[] blockStart = new String[] {"\"", "'", "${", "N_(", "N_<"};
- String[] blockEnd = new String[] {"\"", "'", "}", "N_)", "N_>"};
-
- return split(str, escapeSeq, escapeChar, blockStart, blockEnd, splitters, includeSplitter);
-
- }
-
- public static String[] split(String str, String escapeSeq, char escapeChar, String[] blockStart,
- String[] blockEnd, String[] splitters, boolean includeSplitter) {
-
- List<String> splits = new ArrayList<String>();
-
- String curString = "";
-
- boolean escape = false; // true when escape char is found
- int lastEscapeOffset = -1;
- int blockStartPos = -1;
- List<Integer> blockStack = new LinkedList<Integer>();
-
- for (int i = 0; i < str.length(); i++) {
- char c = str.charAt(i);
-
- // escape char detected
- if (c == escapeChar && escape == false) {
- escape = true;
- continue;
- }
-
- // escaped char comes
- if (escape == true) {
- if (escapeSeq.indexOf(c) < 0) {
- curString += escapeChar;
- }
- curString += c;
- escape = false;
- lastEscapeOffset = curString.length();
- continue;
- }
-
- if (blockStack.size() > 0) { // inside of block
- curString += c;
- // check multichar block
- boolean multicharBlockDetected = false;
- for (int b = 0; b < blockStart.length; b++) {
- if (blockStartPos >= 0
- && getBlockStr(blockStart[b]).compareTo(str.substring(blockStartPos, i)) == 0) {
- blockStack.remove(0);
- blockStack.add(0, b);
- multicharBlockDetected = true;
- break;
- }
- }
-
- if (multicharBlockDetected == true) {
- continue;
- }
-
- // check if current block is nestable
- if (isNestedBlock(blockStart[blockStack.get(0)]) == true) {
- // try to find nested block start
-
- if (curString.substring(lastEscapeOffset + 1).endsWith(
- getBlockStr(blockStart[blockStack.get(0)])) == true) {
- blockStack.add(0, blockStack.get(0)); // block is started
- blockStartPos = i;
- continue;
- }
- }
-
- // check if block is finishing
- if (curString.substring(lastEscapeOffset + 1).endsWith(
- getBlockStr(blockEnd[blockStack.get(0)]))) {
- // the block closer is one of the splitters (and not nested block)
- if (isNestedBlock(blockEnd[blockStack.get(0)]) == false) {
- for (String splitter : splitters) {
- if (splitter.compareTo(getBlockStr(blockEnd[blockStack.get(0)])) == 0) {
- splits.add(curString);
- if (includeSplitter == true) {
- splits.add(splitter);
- }
- curString = "";
- lastEscapeOffset = -1;
-
- break;
- }
- }
- }
- blockStartPos = -1;
- blockStack.remove(0);
- continue;
- }
-
- } else { // not in the block
- boolean splitted = false;
- for (String splitter : splitters) {
- // forward check for splitter
- int curentLenght = i + splitter.length();
- if (splitter.compareTo(str.substring(i, Math.min(curentLenght, str.length()))) == 0) {
- splits.add(curString);
- if (includeSplitter == true) {
- splits.add(splitter);
- }
- curString = "";
- lastEscapeOffset = -1;
- i += splitter.length() - 1;
- splitted = true;
- break;
- }
- }
- if (splitted == true) {
- continue;
- }
-
- // add char to current string
- curString += c;
-
- // check if block is started
- for (int b = 0; b < blockStart.length; b++) {
- if (curString.substring(lastEscapeOffset + 1)
- .endsWith(getBlockStr(blockStart[b])) == true) {
- blockStack.add(0, b); // block is started
- blockStartPos = i;
- break;
- }
- }
- }
- }
- if (curString.length() > 0) {
- splits.add(curString.trim());
- }
- return splits.toArray(new String[] {});
-
- }
-
- private static String getBlockStr(String blockDef) {
- if (blockDef.startsWith("N_")) {
- return blockDef.substring("N_".length());
- } else {
- return blockDef;
- }
- }
-
- private static boolean isNestedBlock(String blockDef) {
- if (blockDef.startsWith("N_")) {
- return true;
- } else {
- return false;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/ClassloaderInterpreter.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/ClassloaderInterpreter.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/ClassloaderInterpreter.java
deleted file mode 100644
index f8d8bbf..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/ClassloaderInterpreter.java
+++ /dev/null
@@ -1,261 +0,0 @@
-package com.nflabs.zeppelin.interpreter;
-
-import java.net.URL;
-import java.util.List;
-import java.util.Properties;
-
-import com.nflabs.zeppelin.scheduler.Scheduler;
-
-/**
- * Add to the classpath interpreters.
- *
- */
-public class ClassloaderInterpreter
- extends Interpreter
- implements WrappedInterpreter {
-
- private ClassLoader cl;
- private Interpreter intp;
-
- public ClassloaderInterpreter(Interpreter intp, ClassLoader cl) {
- super(new Properties());
- this.cl = cl;
- this.intp = intp;
- }
-
- @Override
- public Interpreter getInnerInterpreter() {
- return intp;
- }
-
- public ClassLoader getClassloader() {
- return cl;
- }
-
- @Override
- public InterpreterResult interpret(String st, InterpreterContext context) {
- ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- try {
- return intp.interpret(st, context);
- } catch (Exception e) {
- e.printStackTrace();
- throw new InterpreterException(e);
- } finally {
- cl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(oldcl);
- }
- }
-
-
- @Override
- public void open() {
- ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- try {
- intp.open();
- } catch (Exception e) {
- throw new InterpreterException(e);
- } finally {
- cl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(oldcl);
- }
- }
-
- @Override
- public void close() {
- ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- try {
- intp.close();
- } catch (Exception e) {
- throw new InterpreterException(e);
- } finally {
- cl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(oldcl);
- }
- }
-
- @Override
- public void cancel(InterpreterContext context) {
- ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- try {
- intp.cancel(context);
- } catch (Exception e) {
- throw new InterpreterException(e);
- } finally {
- cl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(oldcl);
- }
- }
-
- @Override
- public FormType getFormType() {
- ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- try {
- return intp.getFormType();
- } catch (Exception e) {
- throw new InterpreterException(e);
- } finally {
- cl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(oldcl);
- }
- }
-
- @Override
- public int getProgress(InterpreterContext context) {
- ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- try {
- return intp.getProgress(context);
- } catch (Exception e) {
- throw new InterpreterException(e);
- } finally {
- cl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(oldcl);
- }
- }
-
- @Override
- public Scheduler getScheduler() {
- ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- try {
- return intp.getScheduler();
- } catch (Exception e) {
- throw new InterpreterException(e);
- } finally {
- cl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(oldcl);
- }
- }
-
- @Override
- public List<String> completion(String buf, int cursor) {
- ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- try {
- return intp.completion(buf, cursor);
- } catch (Exception e) {
- throw new InterpreterException(e);
- } finally {
- cl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(oldcl);
- }
- }
-
-
- @Override
- public String getClassName() {
- ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- try {
- return intp.getClassName();
- } catch (Exception e) {
- throw new InterpreterException(e);
- } finally {
- cl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(oldcl);
- }
- }
-
- @Override
- public void setInterpreterGroup(InterpreterGroup interpreterGroup) {
- ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- try {
- intp.setInterpreterGroup(interpreterGroup);
- } catch (Exception e) {
- throw new InterpreterException(e);
- } finally {
- cl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(oldcl);
- }
- }
-
- @Override
- public InterpreterGroup getInterpreterGroup() {
- ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- try {
- return intp.getInterpreterGroup();
- } catch (Exception e) {
- throw new InterpreterException(e);
- } finally {
- cl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(oldcl);
- }
- }
-
- @Override
- public void setClassloaderUrls(URL [] urls) {
- ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- try {
- intp.setClassloaderUrls(urls);
- } catch (Exception e) {
- throw new InterpreterException(e);
- } finally {
- cl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(oldcl);
- }
- }
-
- @Override
- public URL [] getClassloaderUrls() {
- ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- try {
- return intp.getClassloaderUrls();
- } catch (Exception e) {
- throw new InterpreterException(e);
- } finally {
- cl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(oldcl);
- }
- }
-
- @Override
- public void setProperty(Properties property) {
- ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- try {
- intp.setProperty(property);
- } catch (Exception e) {
- throw new InterpreterException(e);
- } finally {
- cl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(oldcl);
- }
- }
-
- @Override
- public Properties getProperty() {
- ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- try {
- return intp.getProperty();
- } catch (Exception e) {
- throw new InterpreterException(e);
- } finally {
- cl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(oldcl);
- }
- }
-
- @Override
- public String getProperty(String key) {
- ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(cl);
- try {
- return intp.getProperty(key);
- } catch (Exception e) {
- throw new InterpreterException(e);
- } finally {
- cl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(oldcl);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/Interpreter.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/Interpreter.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/Interpreter.java
deleted file mode 100644
index acb62a2..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/Interpreter.java
+++ /dev/null
@@ -1,267 +0,0 @@
-package com.nflabs.zeppelin.interpreter;
-
-
-import java.net.URL;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.nflabs.zeppelin.scheduler.Scheduler;
-import com.nflabs.zeppelin.scheduler.SchedulerFactory;
-
-/**
- * Interface for interpreters.
- * If you want to implement new Zeppelin interpreter, extend this class
- *
- * Please see,
- * http://zeppelin.incubator.apache.org/docs/development/writingzeppelininterpreter.html
- *
- * open(), close(), interpreter() is three the most important method you need to implement.
- * cancel(), getProgress(), completion() is good to have
- * getFormType(), getScheduler() determine Zeppelin's behavior
- *
- */
-public abstract class Interpreter {
-
- /**
- * Opens interpreter. You may want to place your initialize routine here.
- * open() is called only once
- */
- public abstract void open();
-
- /**
- * Closes interpreter. You may want to free your resources up here.
- * close() is called only once
- */
- public abstract void close();
-
- /**
- * Run code and return result, in synchronous way.
- *
- * @param st statements to run
- * @param context
- * @return
- */
- public abstract InterpreterResult interpret(String st, InterpreterContext context);
-
- /**
- * Optionally implement the canceling routine to abort interpret() method
- *
- * @param context
- */
- public abstract void cancel(InterpreterContext context);
-
- /**
- * Dynamic form handling
- * see http://zeppelin.incubator.apache.org/docs/dynamicform.html
- *
- * @return FormType.SIMPLE enables simple pattern replacement (eg. Hello ${name=world}),
- * FormType.NATIVE handles form in API
- */
- public abstract FormType getFormType();
-
- /**
- * get interpret() method running process in percentage.
- *
- * @param context
- * @return number between 0-100
- */
- public abstract int getProgress(InterpreterContext context);
-
- /**
- * Get completion list based on cursor position.
- * By implementing this method, it enables auto-completion.
- *
- * @param buf statements
- * @param cursor cursor position in statements
- * @return list of possible completion. Return empty list if there're nothing to return.
- */
- public abstract List<String> completion(String buf, int cursor);
-
- /**
- * Interpreter can implements it's own scheduler by overriding this method.
- * There're two default scheduler provided, FIFO, Parallel.
- * If your interpret() can handle concurrent request, use Parallel or use FIFO.
- *
- * You can get default scheduler by using
- * SchedulerFactory.singleton().createOrGetFIFOScheduler()
- * SchedulerFactory.singleton().createOrGetParallelScheduler()
- *
- *
- * @return return scheduler instance.
- * This method can be called multiple times and have to return the same instance.
- * Can not return null.
- */
- public Scheduler getScheduler() {
- return SchedulerFactory.singleton().createOrGetFIFOScheduler("interpreter_" + this.hashCode());
- }
-
- /**
- * Called when interpreter is no longer used.
- */
- public void destroy() {
- getScheduler().stop();
- }
-
-
-
-
-
- static Logger logger = LoggerFactory.getLogger(Interpreter.class);
- private InterpreterGroup interpreterGroup;
- private URL [] classloaderUrls;
- protected Properties property;
-
- public Interpreter(Properties property) {
- this.property = property;
- }
-
- public void setProperty(Properties property) {
- this.property = property;
- }
-
- public Properties getProperty() {
- Properties p = new Properties();
- p.putAll(property);
-
- Map<String, InterpreterProperty> defaultProperties = Interpreter
- .findRegisteredInterpreterByClassName(getClassName()).getProperties();
- for (String k : defaultProperties.keySet()) {
- if (!p.contains(k)) {
- String value = defaultProperties.get(k).getDefaultValue();
- if (value != null) {
- p.put(k, defaultProperties.get(k).getDefaultValue());
- }
- }
- }
-
- return property;
- }
-
- public String getProperty(String key) {
- if (property.containsKey(key)) {
- return property.getProperty(key);
- }
-
- Map<String, InterpreterProperty> defaultProperties = Interpreter
- .findRegisteredInterpreterByClassName(getClassName()).getProperties();
- if (defaultProperties.containsKey(key)) {
- return defaultProperties.get(key).getDefaultValue();
- }
-
- return null;
- }
-
-
- public String getClassName() {
- return this.getClass().getName();
- }
-
- public void setInterpreterGroup(InterpreterGroup interpreterGroup) {
- this.interpreterGroup = interpreterGroup;
- }
-
- public InterpreterGroup getInterpreterGroup() {
- return this.interpreterGroup;
- }
-
- public URL[] getClassloaderUrls() {
- return classloaderUrls;
- }
-
- public void setClassloaderUrls(URL[] classloaderUrls) {
- this.classloaderUrls = classloaderUrls;
- }
-
-
- /**
- * Type of interpreter.
- */
- public static enum FormType {
- NATIVE, SIMPLE, NONE
- }
-
- /**
- * Represent registered interpreter class
- */
- public static class RegisteredInterpreter {
- private String name;
- private String group;
- private String className;
- private Map<String, InterpreterProperty> properties;
- private String path;
-
- public RegisteredInterpreter(String name, String group, String className,
- Map<String, InterpreterProperty> properties) {
- super();
- this.name = name;
- this.group = group;
- this.className = className;
- this.properties = properties;
- }
-
- public String getName() {
- return name;
- }
-
- public String getGroup() {
- return group;
- }
-
- public String getClassName() {
- return className;
- }
-
- public Map<String, InterpreterProperty> getProperties() {
- return properties;
- }
-
- public void setPath(String path) {
- this.path = path;
- }
-
- public String getPath() {
- return path;
- }
-
- }
-
- /**
- * Type of Scheduling.
- */
- public static enum SchedulingMode {
- FIFO, PARALLEL
- }
-
- public static Map<String, RegisteredInterpreter> registeredInterpreters = Collections
- .synchronizedMap(new HashMap<String, RegisteredInterpreter>());
-
- public static void register(String name, String className) {
- register(name, name, className);
- }
-
- public static void register(String name, String group, String className) {
- register(name, group, className, new HashMap<String, InterpreterProperty>());
- }
-
- public static void register(String name, String group, String className,
- Map<String, InterpreterProperty> properties) {
- registeredInterpreters.put(name, new RegisteredInterpreter(name, group, className, properties));
- }
-
- public static RegisteredInterpreter findRegisteredInterpreterByClassName(String className) {
- for (RegisteredInterpreter ri : registeredInterpreters.values()) {
- if (ri.getClassName().equals(className)) {
- return ri;
- }
- }
- return null;
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterContext.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterContext.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterContext.java
deleted file mode 100644
index d99e8b0..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterContext.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.nflabs.zeppelin.interpreter;
-
-import java.util.Map;
-
-import com.nflabs.zeppelin.display.GUI;
-
-/**
- * Interpreter context
- */
-public class InterpreterContext {
- private final String paragraphTitle;
- private final String paragraphId;
- private final String paragraphText;
- private final Map<String, Object> config;
- private GUI gui;
-
-
- public InterpreterContext(String paragraphId,
- String paragraphTitle,
- String paragraphText,
- Map<String, Object> config,
- GUI gui
- ) {
- this.paragraphId = paragraphId;
- this.paragraphTitle = paragraphTitle;
- this.paragraphText = paragraphText;
- this.config = config;
- this.gui = gui;
- }
-
- public String getParagraphId() {
- return paragraphId;
- }
-
- public String getParagraphText() {
- return paragraphText;
- }
-
- public String getParagraphTitle() {
- return paragraphTitle;
- }
-
- public Map<String, Object> getConfig() {
- return config;
- }
-
- public GUI getGui() {
- return gui;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterException.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterException.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterException.java
deleted file mode 100644
index 8f50363..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterException.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.nflabs.zeppelin.interpreter;
-
-/**
- * Runtime Exception for interpreters.
- *
- */
-public class InterpreterException extends RuntimeException {
-
- public InterpreterException(Throwable e) {
- super(e);
- }
-
- public InterpreterException(String m) {
- super(m);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterGroup.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterGroup.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterGroup.java
deleted file mode 100644
index ad2b348..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterGroup.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.nflabs.zeppelin.interpreter;
-
-import java.util.LinkedList;
-import java.util.Properties;
-import java.util.Random;
-
-/**
- * InterpreterGroup is list of interpreters in the same group.
- * And unit of interpreter instantiate, restart, bind, unbind.
- */
-public class InterpreterGroup extends LinkedList<Interpreter>{
- String id;
-
- private static String generateId() {
- return "InterpreterGroup_" + System.currentTimeMillis() + "_"
- + new Random().nextInt();
- }
-
- public String getId() {
- synchronized (this) {
- if (id == null) {
- id = generateId();
- }
- return id;
- }
- }
-
-
- public Properties getProperty() {
- Properties p = new Properties();
- for (Interpreter intp : this) {
- p.putAll(intp.getProperty());
- }
- return p;
- }
-
- public void close() {
- for (Interpreter intp : this) {
- intp.close();
- }
- }
-
- public void destroy() {
- for (Interpreter intp : this) {
- intp.destroy();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterProperty.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterProperty.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterProperty.java
deleted file mode 100644
index 63017e0..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterProperty.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.nflabs.zeppelin.interpreter;
-
-/**
- * Represent property of interpreter
- */
-public class InterpreterProperty {
- String defaultValue;
- String description;
-
- public InterpreterProperty(String defaultValue,
- String description) {
- super();
- this.defaultValue = defaultValue;
- this.description = description;
- }
-
- public String getDefaultValue() {
- return defaultValue;
- }
-
- public void setDefaultValue(String defaultValue) {
- this.defaultValue = defaultValue;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterPropertyBuilder.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterPropertyBuilder.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterPropertyBuilder.java
deleted file mode 100644
index 34aa51a..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterPropertyBuilder.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.nflabs.zeppelin.interpreter;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * InterpreterPropertyBuilder
- */
-public class InterpreterPropertyBuilder {
- Map<String, InterpreterProperty> properties = new HashMap<String, InterpreterProperty>();
-
- public InterpreterPropertyBuilder add(String name, String defaultValue, String description){
- properties.put(name, new InterpreterProperty(defaultValue, description));
- return this;
- }
-
- public Map<String, InterpreterProperty> build(){
- return properties;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterResult.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterResult.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterResult.java
deleted file mode 100644
index 94bf673..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterResult.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package com.nflabs.zeppelin.interpreter;
-
-import java.io.Serializable;
-
-/**
- * Interpreter result template.
- *
- * @author Leemoonsoo
- *
- */
-public class InterpreterResult implements Serializable {
-
- /**
- * Type of result after code execution.
- *
- * @author Leemoonsoo
- *
- */
- public static enum Code {
- SUCCESS,
- INCOMPLETE,
- ERROR
- }
-
- /**
- * Type of Data.
- *
- * @author Leemoonsoo
- *
- */
- public static enum Type {
- TEXT,
- HTML,
- TABLE,
- IMG,
- SVG,
- NULL
- }
-
- Code code;
- Type type;
- String msg;
-
- public InterpreterResult(Code code) {
- this.code = code;
- this.msg = null;
- this.type = Type.TEXT;
- }
-
- public InterpreterResult(Code code, String msg) {
- this.code = code;
- this.msg = getData(msg);
- this.type = getType(msg);
- }
-
- public InterpreterResult(Code code, Type type, String msg) {
- this.code = code;
- this.msg = msg;
- this.type = type;
- }
-
- /**
- * Magic is like %html %text.
- *
- * @param msg
- * @return
- */
- private String getData(String msg) {
- if (msg == null) {
- return null;
- }
-
- Type[] types = Type.values();
- for (Type t : types) {
- String magic = "%" + t.name().toLowerCase();
- if (msg.startsWith(magic + " ") || msg.startsWith(magic + "\n")) {
- int magicLength = magic.length() + 1;
- if (msg.length() > magicLength) {
- return msg.substring(magicLength);
- } else {
- return "";
- }
- }
- }
-
- return msg;
- }
-
-
- private Type getType(String msg) {
- if (msg == null) {
- return Type.TEXT;
- }
- Type[] types = Type.values();
- for (Type t : types) {
- String magic = "%" + t.name().toLowerCase();
- if (msg.startsWith(magic + " ") || msg.startsWith(magic + "\n")) {
- return t;
- }
- }
- return Type.TEXT;
- }
-
- public Code code() {
- return code;
- }
-
- public String message() {
- return msg;
- }
-
- public Type type() {
- return type;
- }
-
- public InterpreterResult type(Type type) {
- this.type = type;
- return this;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterUtils.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterUtils.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterUtils.java
deleted file mode 100644
index 37f9ff9..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterUtils.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 com.nflabs.zeppelin.interpreter;
-
-
-import java.lang.reflect.InvocationTargetException;
-
-/**
- * Interpreter utility functions
- */
-public class InterpreterUtils {
-
- public static String getMostRelevantMessage(Exception ex) {
- if (ex instanceof InvocationTargetException) {
- Throwable cause = ((InvocationTargetException) ex).getCause();
- if (cause != null) {
- return cause.getMessage();
- }
- }
- String message = ex.getMessage();
- if (message == null || message == "") {
- return ex.toString();
- }
- return message;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/LazyOpenInterpreter.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/LazyOpenInterpreter.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/LazyOpenInterpreter.java
deleted file mode 100644
index 753adc9..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/LazyOpenInterpreter.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package com.nflabs.zeppelin.interpreter;
-
-import java.net.URL;
-import java.util.List;
-import java.util.Properties;
-
-import com.nflabs.zeppelin.scheduler.Scheduler;
-
-/**
- * Interpreter wrapper for lazy initialization
- */
-public class LazyOpenInterpreter
- extends Interpreter
- implements WrappedInterpreter {
- private Interpreter intp;
- boolean opened = false;
-
- public LazyOpenInterpreter(Interpreter intp) {
- super(new Properties());
- this.intp = intp;
- }
-
- @Override
- public Interpreter getInnerInterpreter() {
- return intp;
- }
-
- @Override
- public void setProperty(Properties property) {
- intp.setProperty(property);
- }
-
- @Override
- public Properties getProperty() {
- return intp.getProperty();
- }
-
- @Override
- public String getProperty(String key) {
- return intp.getProperty(key);
- }
-
- @Override
- public void open() {
- if (opened == true) {
- return;
- }
-
- synchronized (intp) {
- if (opened == false) {
- intp.open();
- opened = true;
- }
- }
- }
-
- @Override
- public void close() {
- synchronized (intp) {
- if (opened == true) {
- intp.close();
- opened = false;
- }
- }
- }
-
- public boolean isOpen() {
- synchronized (intp) {
- return opened;
- }
- }
-
- @Override
- public InterpreterResult interpret(String st, InterpreterContext context) {
- open();
- return intp.interpret(st, context);
- }
-
- @Override
- public void cancel(InterpreterContext context) {
- open();
- intp.cancel(context);
- }
-
- @Override
- public FormType getFormType() {
- return intp.getFormType();
- }
-
- @Override
- public int getProgress(InterpreterContext context) {
- open();
- return intp.getProgress(context);
- }
-
- @Override
- public Scheduler getScheduler() {
- return intp.getScheduler();
- }
-
- @Override
- public List<String> completion(String buf, int cursor) {
- open();
- return intp.completion(buf, cursor);
- }
-
- @Override
- public String getClassName() {
- return intp.getClassName();
- }
-
- @Override
- public InterpreterGroup getInterpreterGroup() {
- return intp.getInterpreterGroup();
- }
-
- @Override
- public void setInterpreterGroup(InterpreterGroup interpreterGroup) {
- intp.setInterpreterGroup(interpreterGroup);
- }
-
- @Override
- public URL [] getClassloaderUrls() {
- return intp.getClassloaderUrls();
- }
-
- @Override
- public void setClassloaderUrls(URL [] urls) {
- intp.setClassloaderUrls(urls);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/WrappedInterpreter.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/WrappedInterpreter.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/WrappedInterpreter.java
deleted file mode 100644
index 47c71ff..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/WrappedInterpreter.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.nflabs.zeppelin.interpreter;
-
-/**
- * WrappedInterpreter
- */
-public interface WrappedInterpreter {
- public Interpreter getInnerInterpreter();
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/ClientFactory.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/ClientFactory.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/ClientFactory.java
deleted file mode 100644
index 670dc2e..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/ClientFactory.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.nflabs.zeppelin.interpreter.remote;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.pool2.BasePooledObjectFactory;
-import org.apache.commons.pool2.PooledObject;
-import org.apache.commons.pool2.impl.DefaultPooledObject;
-import org.apache.thrift.protocol.TBinaryProtocol;
-import org.apache.thrift.protocol.TProtocol;
-import org.apache.thrift.transport.TSocket;
-import org.apache.thrift.transport.TTransportException;
-
-import com.nflabs.zeppelin.interpreter.InterpreterException;
-import com.nflabs.zeppelin.interpreter.thrift.RemoteInterpreterService;
-import com.nflabs.zeppelin.interpreter.thrift.RemoteInterpreterService.Client;
-
-/**
- *
- */
-public class ClientFactory extends BasePooledObjectFactory<Client>{
- private String host;
- private int port;
- Map<Client, TSocket> clientSocketMap = new HashMap<Client, TSocket>();
-
- public ClientFactory(String host, int port) {
- this.host = host;
- this.port = port;
- }
-
- @Override
- public Client create() throws Exception {
- TSocket transport = new TSocket(host, port);
- try {
- transport.open();
- } catch (TTransportException e) {
- throw new InterpreterException(e);
- }
-
- TProtocol protocol = new TBinaryProtocol(transport);
- Client client = new RemoteInterpreterService.Client(protocol);
-
- synchronized (clientSocketMap) {
- clientSocketMap.put(client, transport);
- }
- return client;
- }
-
- @Override
- public PooledObject<Client> wrap(Client client) {
- return new DefaultPooledObject<Client>(client);
- }
-
- @Override
- public void destroyObject(PooledObject<Client> p) {
- synchronized (clientSocketMap) {
- if (clientSocketMap.containsKey(p)) {
- clientSocketMap.get(p).close();
- clientSocketMap.remove(p);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/RemoteInterpreter.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/RemoteInterpreter.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/RemoteInterpreter.java
deleted file mode 100644
index ccae0f7..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/RemoteInterpreter.java
+++ /dev/null
@@ -1,330 +0,0 @@
-package com.nflabs.zeppelin.interpreter.remote;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.thrift.TException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
-import com.nflabs.zeppelin.display.GUI;
-import com.nflabs.zeppelin.interpreter.Interpreter;
-import com.nflabs.zeppelin.interpreter.InterpreterContext;
-import com.nflabs.zeppelin.interpreter.InterpreterException;
-import com.nflabs.zeppelin.interpreter.InterpreterGroup;
-import com.nflabs.zeppelin.interpreter.InterpreterResult;
-import com.nflabs.zeppelin.interpreter.InterpreterResult.Type;
-import com.nflabs.zeppelin.interpreter.thrift.RemoteInterpreterContext;
-import com.nflabs.zeppelin.interpreter.thrift.RemoteInterpreterResult;
-import com.nflabs.zeppelin.interpreter.thrift.RemoteInterpreterService.Client;
-import com.nflabs.zeppelin.scheduler.Scheduler;
-import com.nflabs.zeppelin.scheduler.SchedulerFactory;
-
-/**
- *
- */
-public class RemoteInterpreter extends Interpreter {
- Logger logger = LoggerFactory.getLogger(RemoteInterpreter.class);
- Gson gson = new Gson();
- private String interpreterRunner;
- private String interpreterPath;
- private String className;
- FormType formType;
- boolean initialized;
- private Map<String, String> env;
- static Map<String, RemoteInterpreterProcess> interpreterGroupReference
- = new HashMap<String, RemoteInterpreterProcess>();
-
- public RemoteInterpreter(Properties property,
- String className,
- String interpreterRunner,
- String interpreterPath) {
- super(property);
-
- this.className = className;
- initialized = false;
- this.interpreterRunner = interpreterRunner;
- this.interpreterPath = interpreterPath;
- env = new HashMap<String, String>();
- }
-
- public RemoteInterpreter(Properties property,
- String className,
- String interpreterRunner,
- String interpreterPath,
- Map<String, String> env) {
- super(property);
-
- this.className = className;
- this.interpreterRunner = interpreterRunner;
- this.interpreterPath = interpreterPath;
- this.env = env;
- }
-
- @Override
- public String getClassName() {
- return className;
- }
-
- public RemoteInterpreterProcess getInterpreterProcess() {
- synchronized (interpreterGroupReference) {
- if (interpreterGroupReference.containsKey(getInterpreterGroupKey(getInterpreterGroup()))) {
- RemoteInterpreterProcess interpreterProcess = interpreterGroupReference
- .get(getInterpreterGroupKey(getInterpreterGroup()));
- try {
- return interpreterProcess;
- } catch (Exception e) {
- throw new InterpreterException(e);
- }
- } else {
- throw new InterpreterException("Unexpected error");
- }
- }
- }
-
- private synchronized void init() {
- if (initialized == true) {
- return;
- }
-
- RemoteInterpreterProcess interpreterProcess = null;
-
- synchronized (interpreterGroupReference) {
- if (interpreterGroupReference.containsKey(getInterpreterGroupKey(getInterpreterGroup()))) {
- interpreterProcess = interpreterGroupReference
- .get(getInterpreterGroupKey(getInterpreterGroup()));
- } else {
- throw new InterpreterException("Unexpected error");
- }
- }
-
- int rc = interpreterProcess.reference();
-
- synchronized (interpreterProcess) {
- // when first process created
- if (rc == 1) {
- // create all interpreter class in this interpreter group
- Client client = null;
- try {
- client = interpreterProcess.getClient();
- } catch (Exception e1) {
- throw new InterpreterException(e1);
- }
-
- try {
- for (Interpreter intp : this.getInterpreterGroup()) {
- logger.info("Create remote interpreter {}", intp.getClassName());
- client.createInterpreter(intp.getClassName(), (Map) property);
-
- }
- } catch (TException e) {
- throw new InterpreterException(e);
- } finally {
- interpreterProcess.releaseClient(client);
- }
- }
- }
- initialized = true;
- }
-
-
-
- @Override
- public void open() {
- init();
- }
-
- @Override
- public void close() {
- RemoteInterpreterProcess interpreterProcess = getInterpreterProcess();
- Client client = null;
- try {
- client = interpreterProcess.getClient();
- } catch (Exception e1) {
- throw new InterpreterException(e1);
- }
-
- try {
- client.close(className);
- } catch (TException e) {
- throw new InterpreterException(e);
- } finally {
- interpreterProcess.releaseClient(client);
- }
-
- interpreterProcess.dereference();
- }
-
- @Override
- public InterpreterResult interpret(String st, InterpreterContext context) {
- FormType form = getFormType();
- RemoteInterpreterProcess interpreterProcess = getInterpreterProcess();
- Client client = null;
- try {
- client = interpreterProcess.getClient();
- } catch (Exception e1) {
- throw new InterpreterException(e1);
- }
-
- try {
- GUI settings = context.getGui();
- RemoteInterpreterResult remoteResult = client.interpret(className, st, convert(context));
-
- Map<String, Object> remoteConfig = (Map<String, Object>) gson.fromJson(
- remoteResult.getConfig(), new TypeToken<Map<String, Object>>() {
- }.getType());
- context.getConfig().clear();
- context.getConfig().putAll(remoteConfig);
-
- if (form == FormType.NATIVE) {
- GUI remoteGui = gson.fromJson(remoteResult.getGui(), GUI.class);
- context.getGui().clear();
- context.getGui().setParams(remoteGui.getParams());
- context.getGui().setForms(remoteGui.getForms());
- }
-
- return convert(remoteResult);
- } catch (TException e) {
- throw new InterpreterException(e);
- } finally {
- interpreterProcess.releaseClient(client);
- }
- }
-
- @Override
- public void cancel(InterpreterContext context) {
- RemoteInterpreterProcess interpreterProcess = getInterpreterProcess();
- Client client = null;
- try {
- client = interpreterProcess.getClient();
- } catch (Exception e1) {
- throw new InterpreterException(e1);
- }
-
- try {
- client.cancel(className, convert(context));
- } catch (TException e) {
- throw new InterpreterException(e);
- } finally {
- interpreterProcess.releaseClient(client);
- }
- }
-
-
- @Override
- public FormType getFormType() {
- init();
-
- if (formType != null) {
- return formType;
- }
-
- RemoteInterpreterProcess interpreterProcess = getInterpreterProcess();
- Client client = null;
- try {
- client = interpreterProcess.getClient();
- } catch (Exception e1) {
- throw new InterpreterException(e1);
- }
-
- try {
- formType = FormType.valueOf(client.getFormType(className));
- return formType;
- } catch (TException e) {
- throw new InterpreterException(e);
- } finally {
- interpreterProcess.releaseClient(client);
- }
- }
-
- @Override
- public int getProgress(InterpreterContext context) {
- RemoteInterpreterProcess interpreterProcess = getInterpreterProcess();
- Client client = null;
- try {
- client = interpreterProcess.getClient();
- } catch (Exception e1) {
- throw new InterpreterException(e1);
- }
-
- try {
- return client.getProgress(className, convert(context));
- } catch (TException e) {
- throw new InterpreterException(e);
- } finally {
- interpreterProcess.releaseClient(client);
- }
- }
-
-
- @Override
- public List<String> completion(String buf, int cursor) {
- RemoteInterpreterProcess interpreterProcess = getInterpreterProcess();
- Client client = null;
- try {
- client = interpreterProcess.getClient();
- } catch (Exception e1) {
- throw new InterpreterException(e1);
- }
-
- try {
- return client.completion(className, buf, cursor);
- } catch (TException e) {
- throw new InterpreterException(e);
- } finally {
- interpreterProcess.releaseClient(client);
- }
- }
-
- @Override
- public Scheduler getScheduler() {
- int maxConcurrency = 10;
- RemoteInterpreterProcess interpreterProcess = getInterpreterProcess();
- return SchedulerFactory.singleton().createOrGetRemoteScheduler(
- "remoteinterpreter_" + interpreterProcess.hashCode(),
- getInterpreterProcess(),
- maxConcurrency);
- }
-
- @Override
- public void setInterpreterGroup(InterpreterGroup interpreterGroup) {
- super.setInterpreterGroup(interpreterGroup);
-
- synchronized (interpreterGroupReference) {
- if (!interpreterGroupReference
- .containsKey(getInterpreterGroupKey(interpreterGroup))) {
- interpreterGroupReference.put(getInterpreterGroupKey(interpreterGroup),
- new RemoteInterpreterProcess(interpreterRunner,
- interpreterPath, env));
-
- logger.info("setInterpreterGroup = "
- + getInterpreterGroupKey(interpreterGroup) + " class=" + className
- + ", path=" + interpreterPath);
- }
- }
- }
-
- private String getInterpreterGroupKey(InterpreterGroup interpreterGroup) {
- return interpreterGroup.getId();
- }
-
- private RemoteInterpreterContext convert(InterpreterContext ic) {
- return new RemoteInterpreterContext(
- ic.getParagraphId(),
- ic.getParagraphTitle(),
- ic.getParagraphText(),
- gson.toJson(ic.getConfig()),
- gson.toJson(ic.getGui()));
- }
-
- private InterpreterResult convert(RemoteInterpreterResult result) {
- return new InterpreterResult(
- InterpreterResult.Code.valueOf(result.getCode()),
- Type.valueOf(result.getType()),
- result.getMsg());
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/RemoteInterpreterProcess.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/RemoteInterpreterProcess.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/RemoteInterpreterProcess.java
deleted file mode 100644
index 3829618..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/RemoteInterpreterProcess.java
+++ /dev/null
@@ -1,192 +0,0 @@
-package com.nflabs.zeppelin.interpreter.remote;
-
-import java.io.IOException;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.commons.exec.CommandLine;
-import org.apache.commons.exec.DefaultExecutor;
-import org.apache.commons.exec.ExecuteException;
-import org.apache.commons.exec.ExecuteResultHandler;
-import org.apache.commons.exec.ExecuteWatchdog;
-import org.apache.commons.exec.environment.EnvironmentUtils;
-import org.apache.commons.pool2.impl.GenericObjectPool;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.nflabs.zeppelin.interpreter.InterpreterException;
-import com.nflabs.zeppelin.interpreter.thrift.RemoteInterpreterService.Client;
-
-/**
- *
- */
-public class RemoteInterpreterProcess implements ExecuteResultHandler {
- Logger logger = LoggerFactory.getLogger(RemoteInterpreterProcess.class);
- AtomicInteger referenceCount;
- private DefaultExecutor executor;
- private ExecuteWatchdog watchdog;
- boolean running = false;
- int port = -1;
- private String interpreterRunner;
- private String interpreterDir;
-
- private GenericObjectPool<Client> clientPool;
- private Map<String, String> env;
-
- public RemoteInterpreterProcess(String intpRunner, String intpDir, Map<String, String> env) {
- this.interpreterRunner = intpRunner;
- this.interpreterDir = intpDir;
- this.env = env;
- referenceCount = new AtomicInteger(0);
- }
-
- public int getPort() {
- return port;
- }
-
- public int reference() {
- synchronized (referenceCount) {
- if (executor == null) {
- // start server process
- try {
- port = RemoteInterpreterUtils.findRandomAvailablePortOnAllLocalInterfaces();
- } catch (IOException e1) {
- throw new InterpreterException(e1);
- }
-
-
- CommandLine cmdLine = CommandLine.parse(interpreterRunner);
- cmdLine.addArgument("-d", false);
- cmdLine.addArgument(interpreterDir, false);
- cmdLine.addArgument("-p", false);
- cmdLine.addArgument(Integer.toString(port), false);
-
- executor = new DefaultExecutor();
-
- watchdog = new ExecuteWatchdog(ExecuteWatchdog.INFINITE_TIMEOUT);
- executor.setWatchdog(watchdog);
-
- running = true;
- try {
- Map procEnv = EnvironmentUtils.getProcEnvironment();
- procEnv.putAll(env);
-
- logger.info("Run interpreter process {}", cmdLine);
- executor.execute(cmdLine, procEnv, this);
- } catch (IOException e) {
- running = false;
- throw new InterpreterException(e);
- }
-
-
- long startTime = System.currentTimeMillis();
- while (System.currentTimeMillis() - startTime < 5 * 1000) {
- if (RemoteInterpreterUtils.checkIfRemoteEndpointAccessible("localhost", port)) {
- break;
- } else {
- try {
- Thread.sleep(500);
- } catch (InterruptedException e) {
- }
- }
- }
-
- clientPool = new GenericObjectPool<Client>(new ClientFactory("localhost", port));
- }
- return referenceCount.incrementAndGet();
- }
- }
-
- public Client getClient() throws Exception {
- return clientPool.borrowObject();
- }
-
- public void releaseClient(Client client) {
- clientPool.returnObject(client);
- }
-
- public int dereference() {
- synchronized (referenceCount) {
- int r = referenceCount.decrementAndGet();
- if (r == 0) {
- logger.info("shutdown interpreter process");
- // first try shutdown
- try {
- Client client = getClient();
- client.shutdown();
- releaseClient(client);
- } catch (Exception e) {
- logger.error("Error", e);
- watchdog.destroyProcess();
- }
-
- clientPool.clear();
- clientPool.close();
-
- // wait for 3 sec and force kill
- // remote process server.serve() loop is not always finishing gracefully
- long startTime = System.currentTimeMillis();
- while (System.currentTimeMillis() - startTime < 3 * 1000) {
- if (this.isRunning()) {
- try {
- Thread.sleep(500);
- } catch (InterruptedException e) {
- }
- } else {
- break;
- }
- }
-
- if (isRunning()) {
- logger.info("kill interpreter process");
- watchdog.destroyProcess();
- }
-
- executor = null;
- watchdog = null;
- running = false;
- logger.info("Remote process terminated");
- }
- return r;
- }
- }
-
- public int referenceCount() {
- synchronized (referenceCount) {
- return referenceCount.get();
- }
- }
-
- @Override
- public void onProcessComplete(int exitValue) {
- logger.info("Interpreter process exited {}", exitValue);
- running = false;
-
- }
-
- @Override
- public void onProcessFailed(ExecuteException e) {
- logger.info("Interpreter process failed {}", e);
- running = false;
- }
-
- public boolean isRunning() {
- return running;
- }
-
- public int getNumActiveClient() {
- if (clientPool == null) {
- return 0;
- } else {
- return clientPool.getNumActive();
- }
- }
-
- public int getNumIdleClient() {
- if (clientPool == null) {
- return 0;
- } else {
- return clientPool.getNumIdle();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/RemoteInterpreterServer.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/RemoteInterpreterServer.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/RemoteInterpreterServer.java
deleted file mode 100644
index 266d6fc..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/RemoteInterpreterServer.java
+++ /dev/null
@@ -1,325 +0,0 @@
-package com.nflabs.zeppelin.interpreter.remote;
-
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.net.URL;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.thrift.TException;
-import org.apache.thrift.server.TThreadPoolServer;
-import org.apache.thrift.transport.TServerSocket;
-import org.apache.thrift.transport.TTransportException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
-import com.nflabs.zeppelin.display.GUI;
-import com.nflabs.zeppelin.interpreter.ClassloaderInterpreter;
-import com.nflabs.zeppelin.interpreter.Interpreter;
-import com.nflabs.zeppelin.interpreter.Interpreter.FormType;
-import com.nflabs.zeppelin.interpreter.InterpreterContext;
-import com.nflabs.zeppelin.interpreter.InterpreterException;
-import com.nflabs.zeppelin.interpreter.InterpreterGroup;
-import com.nflabs.zeppelin.interpreter.InterpreterResult;
-import com.nflabs.zeppelin.interpreter.LazyOpenInterpreter;
-import com.nflabs.zeppelin.interpreter.thrift.RemoteInterpreterContext;
-import com.nflabs.zeppelin.interpreter.thrift.RemoteInterpreterResult;
-import com.nflabs.zeppelin.interpreter.thrift.RemoteInterpreterService;
-import com.nflabs.zeppelin.scheduler.Job;
-import com.nflabs.zeppelin.scheduler.Job.Status;
-import com.nflabs.zeppelin.scheduler.JobListener;
-import com.nflabs.zeppelin.scheduler.JobProgressPoller;
-import com.nflabs.zeppelin.scheduler.Scheduler;
-
-
-/**
- *
- */
-public class RemoteInterpreterServer
- extends Thread
- implements RemoteInterpreterService.Iface {
- Logger logger = LoggerFactory.getLogger(RemoteInterpreterServer.class);
-
- InterpreterGroup interpreterGroup = new InterpreterGroup();
- Gson gson = new Gson();
-
- RemoteInterpreterService.Processor<RemoteInterpreterServer> processor;
- RemoteInterpreterServer handler;
- private int port;
- private TThreadPoolServer server;
-
- public RemoteInterpreterServer(int port) throws TTransportException {
- this.port = port;
- processor = new RemoteInterpreterService.Processor<RemoteInterpreterServer>(this);
- TServerSocket serverTransport = new TServerSocket(port);
- server = new TThreadPoolServer(
- new TThreadPoolServer.Args(serverTransport).processor(processor));
- }
-
- @Override
- public void run() {
- logger.info("Starting remote interpreter server on port {}", port);
- server.serve();
- }
-
- @Override
- public void shutdown() throws TException {
- // server.stop() does not always finish server.serve() loop
- // sometimes server.serve() is hanging even after server.stop() call.
- // this case, need to force kill the process
- server.stop();
- }
-
- public int getPort() {
- return port;
- }
-
- public boolean isRunning() {
- if (server == null) {
- return false;
- } else {
- return server.isServing();
- }
- }
-
-
- public static void main(String[] args)
- throws TTransportException, InterruptedException {
- int port = Integer.parseInt(args[0]);
- RemoteInterpreterServer remoteInterpreterServer = new RemoteInterpreterServer(port);
- remoteInterpreterServer.start();
- remoteInterpreterServer.join();
- System.exit(0);
- }
-
-
- @Override
- public void createInterpreter(String className, Map<String, String> properties)
- throws TException {
- try {
- Class<Interpreter> replClass = (Class<Interpreter>) Object.class.forName(className);
- Properties p = new Properties();
- p.putAll(properties);
-
- Constructor<Interpreter> constructor =
- replClass.getConstructor(new Class[] {Properties.class});
- Interpreter repl = constructor.newInstance(p);
-
- ClassLoader cl = ClassLoader.getSystemClassLoader();
- repl.setClassloaderUrls(new URL[]{});
-
- synchronized (interpreterGroup) {
- interpreterGroup.add(new LazyOpenInterpreter(
- new ClassloaderInterpreter(repl, cl)));
- }
-
- logger.info("Instantiate interpreter {}", className);
- repl.setInterpreterGroup(interpreterGroup);
- } catch (ClassNotFoundException | NoSuchMethodException | SecurityException
- | InstantiationException | IllegalAccessException
- | IllegalArgumentException | InvocationTargetException e) {
- e.printStackTrace();
- throw new TException(e);
- }
- }
-
- private Interpreter getInterpreter(String className) throws TException {
- synchronized (interpreterGroup) {
- for (Interpreter inp : interpreterGroup) {
- if (inp.getClassName().equals(className)) {
- return inp;
- }
- }
- }
- throw new TException(new InterpreterException("Interpreter instance "
- + className + " not found"));
- }
-
- @Override
- public void open(String className) throws TException {
- Interpreter intp = getInterpreter(className);
- intp.open();
- }
-
- @Override
- public void close(String className) throws TException {
- Interpreter intp = getInterpreter(className);
- intp.close();
- }
-
-
- @Override
- public RemoteInterpreterResult interpret(String className, String st,
- RemoteInterpreterContext interpreterContext) throws TException {
- Interpreter intp = getInterpreter(className);
- InterpreterContext context = convert(interpreterContext);
-
- Scheduler scheduler = intp.getScheduler();
- InterpretJobListener jobListener = new InterpretJobListener();
- InterpretJob job = new InterpretJob(
- interpreterContext.getParagraphId(),
- "remoteInterpretJob_" + System.currentTimeMillis(),
- jobListener,
- JobProgressPoller.DEFAULT_INTERVAL_MSEC,
- intp,
- st,
- context);
-
- scheduler.submit(job);
-
- while (!job.isTerminated()) {
- synchronized (jobListener) {
- try {
- jobListener.wait(1000);
- } catch (InterruptedException e) {
- }
- }
- }
-
- if (job.getStatus() == Status.ERROR) {
- throw new TException(job.getException());
- } else {
- if (intp.getFormType() == FormType.NATIVE) {
- // serialize dynamic form
-
- }
-
- return convert((InterpreterResult) job.getReturn(),
- context.getConfig(),
- context.getGui());
- }
- }
-
- class InterpretJobListener implements JobListener {
-
- @Override
- public void onProgressUpdate(Job job, int progress) {
- }
-
- @Override
- public void beforeStatusChange(Job job, Status before, Status after) {
- }
-
- @Override
- public void afterStatusChange(Job job, Status before, Status after) {
- synchronized (this) {
- notifyAll();
- }
- }
- }
-
- class InterpretJob extends Job {
-
- private Interpreter interpreter;
- private String script;
- private InterpreterContext context;
-
- public InterpretJob(
- String jobId,
- String jobName,
- JobListener listener,
- long progressUpdateIntervalMsec,
- Interpreter interpreter,
- String script,
- InterpreterContext context) {
- super(jobId, jobName, listener, progressUpdateIntervalMsec);
- this.interpreter = interpreter;
- this.script = script;
- this.context = context;
- }
-
- @Override
- public int progress() {
- return 0;
- }
-
- @Override
- public Map<String, Object> info() {
- return null;
- }
-
- @Override
- protected Object jobRun() throws Throwable {
- InterpreterResult result = interpreter.interpret(script, context);
- return result;
- }
-
- @Override
- protected boolean jobAbort() {
- return false;
- }
- }
-
-
- @Override
- public void cancel(String className, RemoteInterpreterContext interpreterContext)
- throws TException {
- Interpreter intp = getInterpreter(className);
- intp.cancel(convert(interpreterContext));
- }
-
- @Override
- public int getProgress(String className, RemoteInterpreterContext interpreterContext)
- throws TException {
- Interpreter intp = getInterpreter(className);
- return intp.getProgress(convert(interpreterContext));
- }
-
-
- @Override
- public String getFormType(String className) throws TException {
- Interpreter intp = getInterpreter(className);
- return intp.getFormType().toString();
- }
-
- @Override
- public List<String> completion(String className, String buf, int cursor) throws TException {
- Interpreter intp = getInterpreter(className);
- return intp.completion(buf, cursor);
- }
-
- private InterpreterContext convert(RemoteInterpreterContext ric) {
- return new InterpreterContext(
- ric.getParagraphId(),
- ric.getParagraphTitle(),
- ric.getParagraphText(),
- (Map<String, Object>) gson.fromJson(ric.getConfig(),
- new TypeToken<Map<String, Object>>() {}.getType()),
- gson.fromJson(ric.getGui(), GUI.class));
- }
-
- private RemoteInterpreterResult convert(InterpreterResult result,
- Map<String, Object> config, GUI gui) {
- return new RemoteInterpreterResult(
- result.code().name(),
- result.type().name(),
- result.message(),
- gson.toJson(config),
- gson.toJson(gui));
- }
-
- @Override
- public String getStatus(String jobId)
- throws TException {
- synchronized (interpreterGroup) {
- for (Interpreter intp : interpreterGroup) {
- for (Job job : intp.getScheduler().getJobsRunning()) {
- if (jobId.equals(job.getId())) {
- return job.getStatus().name();
- }
- }
-
- for (Job job : intp.getScheduler().getJobsWaiting()) {
- if (jobId.equals(job.getId())) {
- return job.getStatus().name();
- }
- }
- }
- }
- return "Unknown";
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/RemoteInterpreterUtils.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/RemoteInterpreterUtils.java b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/RemoteInterpreterUtils.java
deleted file mode 100644
index 0c8a505..0000000
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/remote/RemoteInterpreterUtils.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.nflabs.zeppelin.interpreter.remote;
-
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-
-/**
- *
- */
-public class RemoteInterpreterUtils {
- public static int findRandomAvailablePortOnAllLocalInterfaces() throws IOException {
- int port;
- try (ServerSocket socket = new ServerSocket(0);) {
- port = socket.getLocalPort();
- socket.close();
- }
- return port;
- }
-
- public static boolean checkIfRemoteEndpointAccessible(String host, int port) {
- try {
- Socket discover = new Socket();
- discover.setSoTimeout(1000);
- discover.connect(new InetSocketAddress(host, port), 1000);
- discover.close();
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}