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:05:54 UTC

[03/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-web/app/views/popover-html-unsafe-popup.html
----------------------------------------------------------------------
diff --git a/zeppelin-web/app/views/popover-html-unsafe-popup.html b/zeppelin-web/app/views/popover-html-unsafe-popup.html
index 5b7002d..e36b041 100644
--- a/zeppelin-web/app/views/popover-html-unsafe-popup.html
+++ b/zeppelin-web/app/views/popover-html-unsafe-popup.html
@@ -1,3 +1,17 @@
+<!--
+Licensed 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.
+-->
+
 <div class="popover {{placement}}" ng-class="{ in: isOpen(), fade: animation() }">
   <div class="arrow"></div>
 
@@ -5,4 +19,4 @@
       <h3 class="popover-title" ng-bind="title" ng-show="title"></h3>
       <div class="popover-content" bind-html-unsafe="content"></div>
   </div>
-</div>
\ No newline at end of file
+</div>

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-web/bower
----------------------------------------------------------------------
diff --git a/zeppelin-web/bower b/zeppelin-web/bower
index 80814b4..ed00320 100755
--- a/zeppelin-web/bower
+++ b/zeppelin-web/bower
@@ -1 +1,17 @@
+#
+# 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.
+#
 "node/node" "./node_modules/bower/bin/bower" "$@"

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-web/grunt
----------------------------------------------------------------------
diff --git a/zeppelin-web/grunt b/zeppelin-web/grunt
index 8ac5c06..759cae7 100755
--- a/zeppelin-web/grunt
+++ b/zeppelin-web/grunt
@@ -1,2 +1,18 @@
+#
+# 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.
+#
 "node/node" "./node_modules/.bin/grunt" "$@"
 

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-web/pom.xml
----------------------------------------------------------------------
diff --git a/zeppelin-web/pom.xml b/zeppelin-web/pom.xml
index a3f59f2..0cb0d5b 100644
--- a/zeppelin-web/pom.xml
+++ b/zeppelin-web/pom.xml
@@ -1,15 +1,31 @@
 <?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/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-<!-- 
-  This is commented because somehow this force zeppelin-webb to be build 2 times.
+
   <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-web</artifactId>
   <packaging>war</packaging>
   <version>0.5.0-SNAPSHOT</version>
@@ -18,6 +34,42 @@
   <build>
     <plugins>
       <plugin>
+        <groupId>org.apache.rat</groupId>
+        <artifactId>apache-rat-plugin</artifactId>
+        <version>0.11</version>
+        <configuration>
+          <excludes>
+            <exclude>**/.idea/</exclude>
+            <exclude>**/*.iml</exclude>
+            <exclude>.git/</exclude>
+            <exclude>.gitignore</exclude>
+            <exclude>.bowerrc</exclude>
+            <exclude>.editorconfig</exclude>
+            <exclude>.jshintrc</exclude>
+            <exclude>.tmp/**</exclude>
+            <exclude>**/.settings/*</exclude>
+            <exclude>**/.classpath</exclude>
+            <exclude>**/.project</exclude>
+            <exclude>**/target/**</exclude>            
+            <exclude>node/**</exclude>
+            <exclude>node_modules/**</exclude>
+            <exclude>bower_components/**</exclude>
+            <exclude>test/**</exclude>
+            <exclude>src/main/webapp/**</exclude>
+            <exclude>app/.buildignore</exclude>
+            <exclude>app/fonts/fontawesome*</exclude>
+            <exclude>app/fonts/font-awesome*</exclude>
+            <exclude>app/styles/font-awesome*</exclude>
+            <exclude>app/fonts/Simple-Line*</exclude>
+            <exclude>app/fonts/simple-line*</exclude>
+            <exclude>app/styles/simple-line*</exclude>
+            <exclude>bower.json</exclude>
+            <exclude>package.json</exclude>
+            <exclude>README.md</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
+      <plugin>
         <groupId>com.github.eirslett</groupId>
         <artifactId>frontend-maven-plugin</artifactId>
         <version>0.0.23</version>

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-zengine/pom.xml
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/pom.xml b/zeppelin-zengine/pom.xml
index 019c4be..b90847b 100644
--- a/zeppelin-zengine/pom.xml
+++ b/zeppelin-zengine/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-zengine</artifactId>
   <packaging>jar</packaging>
   <version>0.5.0-SNAPSHOT</version>

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/conf/ZeppelinConfiguration.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/conf/ZeppelinConfiguration.java b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/conf/ZeppelinConfiguration.java
deleted file mode 100644
index 476a464..0000000
--- a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/conf/ZeppelinConfiguration.java
+++ /dev/null
@@ -1,514 +0,0 @@
-package com.nflabs.zeppelin.conf;
-
-import java.net.URL;
-import java.util.List;
-
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.XMLConfiguration;
-import org.apache.commons.configuration.tree.ConfigurationNode;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-/**
- * Zeppelin configuration.
- *
- * @author Leemoonsoo
- *
- */
-public class ZeppelinConfiguration extends XMLConfiguration {
-  private static final String ZEPPELIN_SITE_XML = "zeppelin-site.xml";
-  private static final long serialVersionUID = 4749305895693848035L;
-  private static final Logger LOG = LoggerFactory.getLogger(ZeppelinConfiguration.class);
-  private static ZeppelinConfiguration conf;
-
-  public ZeppelinConfiguration(URL url) throws ConfigurationException {
-    setDelimiterParsingDisabled(true);
-    load(url);
-  }
-
-  public ZeppelinConfiguration() {
-    ConfVars[] vars = ConfVars.values();
-    for (ConfVars v : vars) {
-      if (v.getType() == ConfVars.VarType.BOOLEAN) {
-        this.setProperty(v.getVarName(), v.getBooleanValue());
-      } else if (v.getType() == ConfVars.VarType.LONG) {
-        this.setProperty(v.getVarName(), v.getLongValue());
-      } else if (v.getType() == ConfVars.VarType.INT) {
-        this.setProperty(v.getVarName(), v.getIntValue());
-      } else if (v.getType() == ConfVars.VarType.FLOAT) {
-        this.setProperty(v.getVarName(), v.getFloatValue());
-      } else if (v.getType() == ConfVars.VarType.STRING) {
-        this.setProperty(v.getVarName(), v.getStringValue());
-      } else {
-        throw new RuntimeException("Unsupported VarType");
-      }
-    }
-
-  }
-
-
-  /**
-   * Load from resource.
-   *
-   * @throws ConfigurationException
-   */
-  public static ZeppelinConfiguration create() {
-    if (conf != null) {
-      return conf;
-    }
-
-    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
-    URL url;
-
-    url = ZeppelinConfiguration.class.getResource(ZEPPELIN_SITE_XML);
-    if (url == null) {
-      ClassLoader cl = ZeppelinConfiguration.class.getClassLoader();
-      if (cl != null) {
-        url = cl.getResource(ZEPPELIN_SITE_XML);
-      }
-    }
-    if (url == null) {
-      url = classLoader.getResource(ZEPPELIN_SITE_XML);
-    }
-
-    if (url == null) {
-      LOG.warn("Failed to load configuration, proceeding with a default");
-      conf = new ZeppelinConfiguration();
-    } else {
-      try {
-        LOG.info("Load configuration from " + url);
-        conf = new ZeppelinConfiguration(url);
-      } catch (ConfigurationException e) {
-        LOG.warn("Failed to load configuration from " + url + " proceeding with a default", e);
-        conf = new ZeppelinConfiguration();
-      }
-    }
-
-    return conf;
-  }
-
-
-  private String getStringValue(String name, String d) {
-    List<ConfigurationNode> properties = getRootNode().getChildren();
-    if (properties == null || properties.size() == 0) {
-      return d;
-    }
-    for (ConfigurationNode p : properties) {
-      if (p.getChildren("name") != null && p.getChildren("name").size() > 0
-          && name.equals(p.getChildren("name").get(0).getValue())) {
-        return (String) p.getChildren("value").get(0).getValue();
-      }
-    }
-    return d;
-  }
-
-  private int getIntValue(String name, int d) {
-    List<ConfigurationNode> properties = getRootNode().getChildren();
-    if (properties == null || properties.size() == 0) {
-      return d;
-    }
-    for (ConfigurationNode p : properties) {
-      if (p.getChildren("name") != null && p.getChildren("name").size() > 0
-          && name.equals(p.getChildren("name").get(0).getValue())) {
-        return Integer.parseInt((String) p.getChildren("value").get(0).getValue());
-      }
-    }
-    return d;
-  }
-
-  private long getLongValue(String name, long d) {
-    List<ConfigurationNode> properties = getRootNode().getChildren();
-    if (properties == null || properties.size() == 0) {
-      return d;
-    }
-    for (ConfigurationNode p : properties) {
-      if (p.getChildren("name") != null && p.getChildren("name").size() > 0
-          && name.equals(p.getChildren("name").get(0).getValue())) {
-        return Long.parseLong((String) p.getChildren("value").get(0).getValue());
-      }
-    }
-    return d;
-  }
-
-  private float getFloatValue(String name, float d) {
-    List<ConfigurationNode> properties = getRootNode().getChildren();
-    if (properties == null || properties.size() == 0) {
-      return d;
-    }
-    for (ConfigurationNode p : properties) {
-      if (p.getChildren("name") != null && p.getChildren("name").size() > 0
-          && name.equals(p.getChildren("name").get(0).getValue())) {
-        return Float.parseFloat((String) p.getChildren("value").get(0).getValue());
-      }
-    }
-    return d;
-  }
-
-  private boolean getBooleanValue(String name, boolean d) {
-    List<ConfigurationNode> properties = getRootNode().getChildren();
-    if (properties == null || properties.size() == 0) {
-      return d;
-    }
-    for (ConfigurationNode p : properties) {
-      if (p.getChildren("name") != null && p.getChildren("name").size() > 0
-          && name.equals(p.getChildren("name").get(0).getValue())) {
-        return Boolean.parseBoolean((String) p.getChildren("value").get(0).getValue());
-      }
-    }
-    return d;
-  }
-
-  public String getString(ConfVars c) {
-    return getString(c.name(), c.getVarName(), c.getStringValue());
-  }
-
-  public String getString(String envName, String propertyName, String defaultValue) {
-    if (System.getenv(envName) != null) {
-      return System.getenv(envName);
-    }
-    if (System.getProperty(propertyName) != null) {
-      return System.getProperty(propertyName);
-    }
-
-    return getStringValue(propertyName, defaultValue);
-  }
-
-  public int getInt(ConfVars c) {
-    return getInt(c.name(), c.getVarName(), c.getIntValue());
-  }
-
-  public int getInt(String envName, String propertyName, int defaultValue) {
-    if (System.getenv(envName) != null) {
-      return Integer.parseInt(System.getenv(envName));
-    }
-
-    if (System.getProperty(propertyName) != null) {
-      return Integer.parseInt(System.getProperty(propertyName));
-    }
-    return getIntValue(propertyName, defaultValue);
-  }
-
-  public long getLong(ConfVars c) {
-    return getLong(c.name(), c.getVarName(), c.getLongValue());
-  }
-
-  public long getLong(String envName, String propertyName, long defaultValue) {
-    if (System.getenv(envName) != null) {
-      return Long.parseLong(System.getenv(envName));
-    }
-
-    if (System.getProperty(propertyName) != null) {
-      return Long.parseLong(System.getProperty(propertyName));
-    }
-    return getLongValue(propertyName, defaultValue);
-  }
-
-  public float getFloat(ConfVars c) {
-    return getFloat(c.name(), c.getVarName(), c.getFloatValue());
-  }
-
-  public float getFloat(String envName, String propertyName, float defaultValue) {
-    if (System.getenv(envName) != null) {
-      return Float.parseFloat(System.getenv(envName));
-    }
-    if (System.getProperty(propertyName) != null) {
-      return Float.parseFloat(System.getProperty(propertyName));
-    }
-    return getFloatValue(propertyName, defaultValue);
-  }
-
-  public boolean getBoolean(ConfVars c) {
-    return getBoolean(c.name(), c.getVarName(), c.getBooleanValue());
-  }
-
-  public boolean getBoolean(String envName, String propertyName, boolean defaultValue) {
-    if (System.getenv(envName) != null) {
-      return Boolean.parseBoolean(System.getenv(envName));
-    }
-
-    if (System.getProperty(propertyName) != null) {
-      return Boolean.parseBoolean(System.getProperty(propertyName));
-    }
-    return getBooleanValue(propertyName, defaultValue);
-  }
-
-  public boolean useSsl() {
-    return getBoolean(ConfVars.ZEPPELIN_SSL);
-  }
-
-  public boolean useClientAuth() {
-    return getBoolean(ConfVars.ZEPPELIN_SSL_CLIENT_AUTH);
-  }
-
-  public int getServerPort() {
-    return getInt(ConfVars.ZEPPELIN_PORT);
-  }
-
-  public int getWebSocketPort() {
-    int port = getInt(ConfVars.ZEPPELIN_WEBSOCKET_PORT);
-    if (port < 0) {
-      return getServerPort() + 1;
-    } else {
-      return port;
-    }
-  }
-
-  public String getKeyStorePath() {
-    return getRelativeDir(ConfVars.ZEPPELIN_SSL_KEYSTORE_PATH);
-  }
-
-  public String getKeyStoreType() {
-    return getString(ConfVars.ZEPPELIN_SSL_KEYSTORE_TYPE);
-  }
-
-  public String getKeyStorePassword() {
-    return getString(ConfVars.ZEPPELIN_SSL_KEYSTORE_PASSWORD);
-  }
-
-  public String getKeyManagerPassword() {
-    String password = getString(ConfVars.ZEPPELIN_SSL_KEY_MANAGER_PASSWORD);
-    if (password == null) {
-      return getKeyStorePassword();
-    } else {
-      return password;
-    }
-  }
-
-  public String getTrustStorePath() {
-    String path = getString(ConfVars.ZEPPELIN_SSL_TRUSTSTORE_PATH);
-    if (path == null) {
-      return getKeyStorePath();
-    } else {
-      return getRelativeDir(path);
-    }
-  }
-
-  public String getTrustStoreType() {
-    String type = getString(ConfVars.ZEPPELIN_SSL_TRUSTSTORE_TYPE);
-    if (type == null) {
-      return getKeyStoreType();
-    } else {
-      return type;
-    }
-  }
-
-  public String getTrustStorePassword() {
-    String password = getString(ConfVars.ZEPPELIN_SSL_TRUSTSTORE_PASSWORD);
-    if (password == null) {
-      return getKeyStorePassword();
-    } else {
-      return password;
-    }
-  }
-
-  public String getNotebookDir() {
-    return getRelativeDir(ConfVars.ZEPPELIN_NOTEBOOK_DIR);
-  }
-
-  public String getInterpreterDir() {
-    return getRelativeDir(ConfVars.ZEPPELIN_INTERPRETER_DIR);
-  }
-
-  public String getInterpreterSettingPath() {
-    return getRelativeDir("conf/interpreter.json");
-  }
-
-  public String getInterpreterRemoteRunnerPath() {
-    return getRelativeDir(ConfVars.ZEPPELIN_INTERPRETER_REMOTE_RUNNER);
-  }
-
-  public String getRelativeDir(ConfVars c) {
-    return getRelativeDir(getString(c));
-  }
-
-  public String getRelativeDir(String path) {
-    if (path != null && path.startsWith("/")) {
-      return path;
-    } else {
-      return getString(ConfVars.ZEPPELIN_HOME) + "/" + path;
-    }
-  }
-
-
-  /**
-   * Wrapper class.
-   *
-   * @author Leemoonsoo
-   *
-   */
-  public static enum ConfVars {
-    ZEPPELIN_HOME("zeppelin.home", "../"),
-    ZEPPELIN_PORT("zeppelin.server.port", 8080),
-    // negative websocket port denotes that server port + 1 should be used
-    ZEPPELIN_WEBSOCKET_PORT("zeppelin.websocket.port", -1),
-    ZEPPELIN_SSL("zeppelin.ssl", false),
-    ZEPPELIN_SSL_CLIENT_AUTH("zeppelin.ssl.client.auth", false),
-    ZEPPELIN_SSL_KEYSTORE_PATH("zeppelin.ssl.keystore.path", "conf/keystore"),
-    ZEPPELIN_SSL_KEYSTORE_TYPE("zeppelin.ssl.keystore.type", "JKS"),
-    ZEPPELIN_SSL_KEYSTORE_PASSWORD("zeppelin.ssl.keystore.password", ""),
-    ZEPPELIN_SSL_KEY_MANAGER_PASSWORD("zeppelin.ssl.key.manager.password", null),
-    ZEPPELIN_SSL_TRUSTSTORE_PATH("zeppelin.ssl.truststore.path", null),
-    ZEPPELIN_SSL_TRUSTSTORE_TYPE("zeppelin.ssl.truststore.type", null),
-    ZEPPELIN_SSL_TRUSTSTORE_PASSWORD("zeppelin.ssl.truststore.password", null),
-    ZEPPELIN_WAR("zeppelin.war", "../zeppelin-web/src/main/webapp"),
-    ZEPPELIN_API_WAR("zeppelin.api.war", "../zeppelin-docs/src/main/swagger"),
-    ZEPPELIN_INTERPRETERS("zeppelin.interpreters", "com.nflabs.zeppelin.spark.SparkInterpreter,"
-        + "com.nflabs.zeppelin.spark.PySparkInterpreter,"
-        + "com.nflabs.zeppelin.spark.SparkSqlInterpreter,"
-        + "com.nflabs.zeppelin.spark.DepInterpreter,"
-        + "com.nflabs.zeppelin.markdown.Markdown,"
-        + "com.nflabs.zeppelin.shell.ShellInterpreter"),
-        ZEPPELIN_INTERPRETER_DIR("zeppelin.interpreter.dir", "interpreter"),
-        ZEPPELIN_ENCODING("zeppelin.encoding", "UTF-8"),
-        ZEPPELIN_NOTEBOOK_DIR("zeppelin.notebook.dir", "notebook"),
-    ZEPPELIN_INTERPRETER_REMOTE_RUNNER("zeppelin.interpreter.remoterunner", "bin/interpreter.sh"),
-    // Decide when new note is created, interpreter settings will be binded automatically or not.
-    ZEPPELIN_NOTEBOOK_AUTO_INTERPRETER_BINDING("zeppelin.notebook.autoInterpreterBinding", true);
-
-    private String varName;
-    @SuppressWarnings("rawtypes")
-    private Class varClass;
-    private String stringValue;
-    private VarType type;
-    private int intValue;
-    private float floatValue;
-    private boolean booleanValue;
-    private long longValue;
-
-
-    ConfVars(String varName, String varValue) {
-      this.varName = varName;
-      this.varClass = String.class;
-      this.stringValue = varValue;
-      this.intValue = -1;
-      this.floatValue = -1;
-      this.longValue = -1;
-      this.booleanValue = false;
-      this.type = VarType.STRING;
-    }
-
-    ConfVars(String varName, int intValue) {
-      this.varName = varName;
-      this.varClass = Integer.class;
-      this.stringValue = null;
-      this.intValue = intValue;
-      this.floatValue = -1;
-      this.longValue = -1;
-      this.booleanValue = false;
-      this.type = VarType.INT;
-    }
-
-    ConfVars(String varName, long longValue) {
-      this.varName = varName;
-      this.varClass = Integer.class;
-      this.stringValue = null;
-      this.intValue = -1;
-      this.floatValue = -1;
-      this.longValue = longValue;
-      this.booleanValue = false;
-      this.type = VarType.INT;
-    }
-
-    ConfVars(String varName, float floatValue) {
-      this.varName = varName;
-      this.varClass = Float.class;
-      this.stringValue = null;
-      this.intValue = -1;
-      this.longValue = -1;
-      this.floatValue = floatValue;
-      this.booleanValue = false;
-      this.type = VarType.FLOAT;
-    }
-
-    ConfVars(String varName, boolean booleanValue) {
-      this.varName = varName;
-      this.varClass = Boolean.class;
-      this.stringValue = null;
-      this.intValue = -1;
-      this.longValue = -1;
-      this.floatValue = -1;
-      this.booleanValue = booleanValue;
-      this.type = VarType.BOOLEAN;
-    }
-
-    public String getVarName() {
-      return varName;
-    }
-
-    @SuppressWarnings("rawtypes")
-    public Class getVarClass() {
-      return varClass;
-    }
-
-    public int getIntValue() {
-      return intValue;
-    }
-
-    public long getLongValue() {
-      return longValue;
-    }
-
-    public float getFloatValue() {
-      return floatValue;
-    }
-
-    public String getStringValue() {
-      return stringValue;
-    }
-
-    public boolean getBooleanValue() {
-      return booleanValue;
-    }
-
-    public VarType getType() {
-      return type;
-    }
-
-    enum VarType {
-      STRING {
-        @Override
-        void checkType(String value) throws Exception {}
-      },
-      INT {
-        @Override
-        void checkType(String value) throws Exception {
-          Integer.valueOf(value);
-        }
-      },
-      LONG {
-        @Override
-        void checkType(String value) throws Exception {
-          Long.valueOf(value);
-        }
-      },
-      FLOAT {
-        @Override
-        void checkType(String value) throws Exception {
-          Float.valueOf(value);
-        }
-      },
-      BOOLEAN {
-        @Override
-        void checkType(String value) throws Exception {
-          Boolean.valueOf(value);
-        }
-      };
-
-      boolean isType(String value) {
-        try {
-          checkType(value);
-        } catch (Exception e) {
-          return false;
-        }
-        return true;
-      }
-
-      String typeString() {
-        return name().toUpperCase();
-      }
-
-      abstract void checkType(String value) throws Exception;
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterFactory.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterFactory.java b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterFactory.java
deleted file mode 100644
index 5d65405..0000000
--- a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterFactory.java
+++ /dev/null
@@ -1,596 +0,0 @@
-package com.nflabs.zeppelin.interpreter;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
-import org.apache.commons.lang.ArrayUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.nflabs.zeppelin.conf.ZeppelinConfiguration;
-import com.nflabs.zeppelin.conf.ZeppelinConfiguration.ConfVars;
-import com.nflabs.zeppelin.interpreter.Interpreter.RegisteredInterpreter;
-import com.nflabs.zeppelin.interpreter.remote.RemoteInterpreter;
-
-/**
- * Manage interpreters.
- *
- */
-public class InterpreterFactory {
-  Logger logger = LoggerFactory.getLogger(InterpreterFactory.class);
-
-  private Map<String, URLClassLoader> cleanCl = Collections
-      .synchronizedMap(new HashMap<String, URLClassLoader>());
-
-  private ZeppelinConfiguration conf;
-  String[] interpreterClassList;
-
-  private Map<String, InterpreterSetting> interpreterSettings =
-      new HashMap<String, InterpreterSetting>();
-
-  private Map<String, List<String>> interpreterBindings = new HashMap<String, List<String>>();
-
-  private Gson gson;
-
-  private InterpreterOption defaultOption;
-
-  public InterpreterFactory(ZeppelinConfiguration conf) throws InterpreterException, IOException {
-    this(conf, new InterpreterOption(true));
-  }
-
-
-  public InterpreterFactory(ZeppelinConfiguration conf, InterpreterOption defaultOption)
-      throws InterpreterException, IOException {
-    this.conf = conf;
-    this.defaultOption = defaultOption;
-    String replsConf = conf.getString(ConfVars.ZEPPELIN_INTERPRETERS);
-    interpreterClassList = replsConf.split(",");
-
-    GsonBuilder builder = new GsonBuilder();
-    builder.setPrettyPrinting();
-    builder.registerTypeAdapter(Interpreter.class, new InterpreterSerializer());
-    gson = builder.create();
-
-    init();
-  }
-
-  private void init() throws InterpreterException, IOException {
-    ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
-
-    // Load classes
-    File[] interpreterDirs = new File(conf.getInterpreterDir()).listFiles();
-    if (interpreterDirs != null) {
-      for (File path : interpreterDirs) {
-        logger.info("Reading " + path.getAbsolutePath());
-        URL[] urls = null;
-        try {
-          urls = recursiveBuildLibList(path);
-        } catch (MalformedURLException e1) {
-          logger.error("Can't load jars ", e1);
-        }
-        URLClassLoader ccl = new URLClassLoader(urls, oldcl);
-
-        for (String className : interpreterClassList) {
-          try {
-            Class.forName(className, true, ccl);
-            Set<String> keys = Interpreter.registeredInterpreters.keySet();
-            for (String intName : keys) {
-              if (className.equals(
-                  Interpreter.registeredInterpreters.get(intName).getClassName())) {
-                Interpreter.registeredInterpreters.get(intName).setPath(path.getAbsolutePath());
-                logger.info("Interpreter " + intName + " found. class=" + className);
-                cleanCl.put(path.getAbsolutePath(), ccl);
-              }
-            }
-          } catch (ClassNotFoundException e) {
-            // nothing to do
-          }
-        }
-      }
-    }
-
-    loadFromFile();
-
-    // if no interpreter settings are loaded, create default set
-    synchronized (interpreterSettings) {
-      if (interpreterSettings.size() == 0) {
-        HashMap<String, List<RegisteredInterpreter>> groupClassNameMap =
-            new HashMap<String, List<RegisteredInterpreter>>();
-
-        for (String k : Interpreter.registeredInterpreters.keySet()) {
-          RegisteredInterpreter info = Interpreter.registeredInterpreters.get(k);
-
-          if (!groupClassNameMap.containsKey(info.getGroup())) {
-            groupClassNameMap.put(info.getGroup(), new LinkedList<RegisteredInterpreter>());
-          }
-
-          groupClassNameMap.get(info.getGroup()).add(info);
-        }
-
-        for (String className : interpreterClassList) {
-          for (String groupName : groupClassNameMap.keySet()) {
-            List<RegisteredInterpreter> infos = groupClassNameMap.get(groupName);
-
-            boolean found = false;
-            Properties p = new Properties();
-            for (RegisteredInterpreter info : infos) {
-              if (found == false && info.getClassName().equals(className)) {
-                found = true;
-              }
-
-              for (String k : info.getProperties().keySet()) {
-                p.put(k, info.getProperties().get(k).getDefaultValue());
-              }
-            }
-
-            if (found) {
-              // add all interpreters in group
-              add(groupName, groupName, defaultOption, p);
-              groupClassNameMap.remove(groupName);
-              break;
-            }
-          }
-        }
-      }
-    }
-
-    for (String settingId : interpreterSettings.keySet()) {
-      InterpreterSetting setting = interpreterSettings.get(settingId);
-      logger.info("Interpreter setting group {} : id={}, name={}",
-          setting.getGroup(), settingId, setting.getName());
-      for (Interpreter interpreter : setting.getInterpreterGroup()) {
-        logger.info("  className = {}", interpreter.getClassName());
-      }
-    }
-  }
-
-  private void loadFromFile() throws IOException {
-    GsonBuilder builder = new GsonBuilder();
-    builder.setPrettyPrinting();
-    builder.registerTypeAdapter(Interpreter.class, new InterpreterSerializer());
-    Gson gson = builder.create();
-
-    File settingFile = new File(conf.getInterpreterSettingPath());
-    if (!settingFile.exists()) {
-      // nothing to read
-      return;
-    }
-    FileInputStream fis = new FileInputStream(settingFile);
-    InputStreamReader isr = new InputStreamReader(fis);
-    BufferedReader bufferedReader = new BufferedReader(isr);
-    StringBuilder sb = new StringBuilder();
-    String line;
-    while ((line = bufferedReader.readLine()) != null) {
-      sb.append(line);
-    }
-    isr.close();
-    fis.close();
-
-    String json = sb.toString();
-    InterpreterInfoSaving info = gson.fromJson(json, InterpreterInfoSaving.class);
-
-    for (String k : info.interpreterSettings.keySet()) {
-      InterpreterSetting setting = info.interpreterSettings.get(k);
-
-      // Always use separate interpreter process
-      // While we decided to turn this feature on always (without providing
-      // enable/disable option on GUI).
-      // previously created setting should turn this feature on here.
-      setting.getOption().setRemote(true);
-
-      InterpreterGroup interpreterGroup = createInterpreterGroup(
-          setting.getGroup(),
-          setting.getOption(),
-          setting.getProperties());
-
-      InterpreterSetting intpSetting = new InterpreterSetting(
-          setting.id(),
-          setting.getName(),
-          setting.getGroup(),
-          setting.getOption(),
-          interpreterGroup);
-
-      interpreterSettings.put(k, intpSetting);
-    }
-
-    this.interpreterBindings = info.interpreterBindings;
-  }
-
-
-  private void saveToFile() throws IOException {
-    String jsonString;
-
-    synchronized (interpreterSettings) {
-      InterpreterInfoSaving info = new InterpreterInfoSaving();
-      info.interpreterBindings = interpreterBindings;
-      info.interpreterSettings = interpreterSettings;
-
-      jsonString = gson.toJson(info);
-    }
-
-    File settingFile = new File(conf.getInterpreterSettingPath());
-    if (!settingFile.exists()) {
-      settingFile.createNewFile();
-    }
-
-    FileOutputStream fos = new FileOutputStream(settingFile, false);
-    OutputStreamWriter out = new OutputStreamWriter(fos);
-    out.append(jsonString);
-    out.close();
-    fos.close();
-  }
-
-  private RegisteredInterpreter getRegisteredReplInfoFromClassName(String clsName) {
-    Set<String> keys = Interpreter.registeredInterpreters.keySet();
-    for (String intName : keys) {
-      RegisteredInterpreter info = Interpreter.registeredInterpreters.get(intName);
-      if (clsName.equals(info.getClassName())) {
-        return info;
-      }
-    }
-    return null;
-  }
-
-  /**
-   * Return ordered interpreter setting list.
-   * The list does not contain more than one setting from the same interpreter class.
-   * Order by InterpreterClass (order defined by ZEPPELIN_INTERPRETERS), Interpreter setting name
-   * @return
-   */
-  public List<String> getDefaultInterpreterSettingList() {
-    // this list will contain default interpreter setting list
-    List<String> defaultSettings = new LinkedList<String>();
-
-    // to ignore the same interpreter group
-    Map<String, Boolean> interpreterGroupCheck = new HashMap<String, Boolean>();
-
-    List<InterpreterSetting> sortedSettings = get();
-
-    for (InterpreterSetting setting : sortedSettings) {
-      if (defaultSettings.contains(setting.id())) {
-        continue;
-      }
-
-      if (!interpreterGroupCheck.containsKey(setting.getGroup())) {
-        defaultSettings.add(setting.id());
-        interpreterGroupCheck.put(setting.getGroup(), true);
-      }
-    }
-    return defaultSettings;
-  }
-
-  public List<RegisteredInterpreter> getRegisteredInterpreterList() {
-    List<RegisteredInterpreter> registeredInterpreters = new LinkedList<RegisteredInterpreter>();
-
-    for (String className : interpreterClassList) {
-      registeredInterpreters.add(Interpreter.findRegisteredInterpreterByClassName(className));
-    }
-
-    return registeredInterpreters;
-  }
-
-  /**
-   * @param name user defined name
-   * @param groupName interpreter group name to instantiate
-   * @param properties
-   * @return
-   * @throws InterpreterException
-   * @throws IOException
-   */
-  public InterpreterGroup add(String name, String groupName,
-      InterpreterOption option, Properties properties)
-      throws InterpreterException, IOException {
-    synchronized (interpreterSettings) {
-      InterpreterGroup interpreterGroup = createInterpreterGroup(groupName, option, properties);
-
-      InterpreterSetting intpSetting = new InterpreterSetting(
-          name,
-          groupName,
-          option,
-          interpreterGroup);
-      interpreterSettings.put(intpSetting.id(), intpSetting);
-
-      saveToFile();
-      return interpreterGroup;
-    }
-  }
-
-  private InterpreterGroup createInterpreterGroup(String groupName,
-      InterpreterOption option,
-      Properties properties)
-      throws InterpreterException {
-    InterpreterGroup interpreterGroup = new InterpreterGroup();
-
-    for (String className : interpreterClassList) {
-      Set<String> keys = Interpreter.registeredInterpreters.keySet();
-      for (String intName : keys) {
-        RegisteredInterpreter info = Interpreter.registeredInterpreters
-            .get(intName);
-        if (info.getClassName().equals(className)
-            && info.getGroup().equals(groupName)) {
-          Interpreter intp;
-
-          if (option.isRemote()) {
-            intp = createRemoteRepl(info.getPath(),
-                info.getClassName(),
-                properties);
-          } else {
-            intp = createRepl(info.getPath(),
-                info.getClassName(),
-                properties);
-          }
-          interpreterGroup.add(intp);
-          intp.setInterpreterGroup(interpreterGroup);
-          break;
-        }
-      }
-    }
-    return interpreterGroup;
-  }
-
-  public void remove(String id) throws IOException {
-    synchronized (interpreterSettings) {
-      if (interpreterSettings.containsKey(id)) {
-        InterpreterSetting intp = interpreterSettings.get(id);
-        intp.getInterpreterGroup().close();
-        intp.getInterpreterGroup().destroy();
-
-        interpreterSettings.remove(id);
-        for (List<String> settings : interpreterBindings.values()) {
-          Iterator<String> it = settings.iterator();
-          while (it.hasNext()) {
-            String settingId = it.next();
-            if (settingId.equals(id)) {
-              it.remove();
-            }
-          }
-        }
-        saveToFile();
-      }
-    }
-  }
-
-  /**
-   * Get loaded interpreters
-   * @return
-   */
-  public List<InterpreterSetting> get() {
-    synchronized (interpreterSettings) {
-      List<InterpreterSetting> orderedSettings = new LinkedList<InterpreterSetting>();
-      List<InterpreterSetting> settings = new LinkedList<InterpreterSetting>(
-          interpreterSettings.values());
-      Collections.sort(settings, new Comparator<InterpreterSetting>(){
-        @Override
-        public int compare(InterpreterSetting o1, InterpreterSetting o2) {
-          return o1.getName().compareTo(o2.getName());
-        }
-      });
-
-      for (String className : interpreterClassList) {
-        for (InterpreterSetting setting : settings) {
-          for (InterpreterSetting orderedSetting : orderedSettings) {
-            if (orderedSetting.id().equals(setting.id())) {
-              continue;
-            }
-          }
-
-          for (Interpreter intp : setting.getInterpreterGroup()) {
-            if (className.equals(intp.getClassName())) {
-              boolean alreadyAdded = false;
-              for (InterpreterSetting st : orderedSettings) {
-                if (setting.id().equals(st.id())) {
-                  alreadyAdded = true;
-                }
-              }
-              if (alreadyAdded == false) {
-                orderedSettings.add(setting);
-              }
-            }
-          }
-        }
-      }
-      return orderedSettings;
-    }
-  }
-
-  public InterpreterSetting get(String name) {
-    synchronized (interpreterSettings) {
-      return interpreterSettings.get(name);
-    }
-  }
-
-  public void putNoteInterpreterSettingBinding(String noteId,
-      List<String> settingList) throws IOException {
-    synchronized (interpreterSettings) {
-      interpreterBindings.put(noteId, settingList);
-      saveToFile();
-    }
-  }
-
-  public void removeNoteInterpreterSettingBinding(String noteId) {
-    synchronized (interpreterSettings) {
-      interpreterBindings.remove(noteId);
-    }
-  }
-
-  public List<String> getNoteInterpreterSettingBinding(String noteId) {
-    LinkedList<String> bindings = new LinkedList<String>();
-    synchronized (interpreterSettings) {
-      List<String> settingIds = interpreterBindings.get(noteId);
-      if (settingIds != null) {
-        bindings.addAll(settingIds);
-      }
-    }
-    return bindings;
-  }
-
-  /**
-   * Change interpreter property and restart
-   * @param name
-   * @param properties
-   * @throws IOException
-   */
-  public void setPropertyAndRestart(String id, InterpreterOption option,
-      Properties properties) throws IOException {
-    synchronized (interpreterSettings) {
-      InterpreterSetting intpsetting = interpreterSettings.get(id);
-      if (intpsetting != null) {
-        intpsetting.getInterpreterGroup().close();
-        intpsetting.getInterpreterGroup().destroy();
-
-        intpsetting.setOption(option);
-
-        InterpreterGroup interpreterGroup = createInterpreterGroup(
-            intpsetting.getGroup(), option, properties);
-        intpsetting.setInterpreterGroup(interpreterGroup);
-        saveToFile();
-      } else {
-        throw new InterpreterException("Interpreter setting id " + id
-            + " not found");
-      }
-    }
-  }
-
-  public void restart(String id) {
-    synchronized (interpreterSettings) {
-      synchronized (interpreterSettings) {
-        InterpreterSetting intpsetting = interpreterSettings.get(id);
-        if (intpsetting != null) {
-          intpsetting.getInterpreterGroup().close();
-          intpsetting.getInterpreterGroup().destroy();
-
-          InterpreterGroup interpreterGroup = createInterpreterGroup(
-              intpsetting.getGroup(), intpsetting.getOption(), intpsetting.getProperties());
-          intpsetting.setInterpreterGroup(interpreterGroup);
-        } else {
-          throw new InterpreterException("Interpreter setting id " + id
-              + " not found");
-        }
-      }
-    }
-  }
-
-
-  public void close() {
-    synchronized (interpreterSettings) {
-      synchronized (interpreterSettings) {
-        Collection<InterpreterSetting> intpsettings = interpreterSettings.values();
-        for (InterpreterSetting intpsetting : intpsettings) {
-          intpsetting.getInterpreterGroup().close();
-          intpsetting.getInterpreterGroup().destroy();
-        }
-      }
-    }
-  }
-
-  private Interpreter createRepl(String dirName, String className,
-      Properties property)
-      throws InterpreterException {
-    logger.info("Create repl {} from {}", className, dirName);
-
-    ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
-    try {
-
-      URLClassLoader ccl = cleanCl.get(dirName);
-      if (ccl == null) {
-        // classloader fallback
-        ccl = URLClassLoader.newInstance(new URL[] {}, oldcl);
-      }
-
-      boolean separateCL = true;
-      try { // check if server's classloader has driver already.
-        Class cls = this.getClass().forName(className);
-        if (cls != null) {
-          separateCL = false;
-        }
-      } catch (Exception e) {
-        // nothing to do.
-      }
-
-      URLClassLoader cl;
-
-      if (separateCL == true) {
-        cl = URLClassLoader.newInstance(new URL[] {}, ccl);
-      } else {
-        cl = ccl;
-      }
-      Thread.currentThread().setContextClassLoader(cl);
-
-      Class<Interpreter> replClass = (Class<Interpreter>) cl.loadClass(className);
-      Constructor<Interpreter> constructor =
-          replClass.getConstructor(new Class[] {Properties.class});
-      Interpreter repl = constructor.newInstance(property);
-      repl.setClassloaderUrls(ccl.getURLs());
-      LazyOpenInterpreter intp = new LazyOpenInterpreter(
-          new ClassloaderInterpreter(repl, cl));
-      return intp;
-    } catch (SecurityException e) {
-      throw new InterpreterException(e);
-    } catch (NoSuchMethodException e) {
-      throw new InterpreterException(e);
-    } catch (IllegalArgumentException e) {
-      throw new InterpreterException(e);
-    } catch (InstantiationException e) {
-      throw new InterpreterException(e);
-    } catch (IllegalAccessException e) {
-      throw new InterpreterException(e);
-    } catch (InvocationTargetException e) {
-      throw new InterpreterException(e);
-    } catch (ClassNotFoundException e) {
-      throw new InterpreterException(e);
-    } finally {
-      Thread.currentThread().setContextClassLoader(oldcl);
-    }
-  }
-
-
-  private Interpreter createRemoteRepl(String interpreterPath, String className,
-      Properties property) {
-
-    LazyOpenInterpreter intp = new LazyOpenInterpreter(new RemoteInterpreter(
-        property, className, conf.getInterpreterRemoteRunnerPath(), interpreterPath));
-    return intp;
-  }
-
-
-  private URL[] recursiveBuildLibList(File path) throws MalformedURLException {
-    URL[] urls = new URL[0];
-    if (path == null || path.exists() == false) {
-      return urls;
-    } else if (path.getName().startsWith(".")) {
-      return urls;
-    } else if (path.isDirectory()) {
-      File[] files = path.listFiles();
-      if (files != null) {
-        for (File f : files) {
-          urls = (URL[]) ArrayUtils.addAll(urls, recursiveBuildLibList(f));
-        }
-      }
-      return urls;
-    } else {
-      return new URL[] {path.toURI().toURL()};
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterInfoSaving.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterInfoSaving.java b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterInfoSaving.java
deleted file mode 100644
index 02335ae..0000000
--- a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterInfoSaving.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.nflabs.zeppelin.interpreter;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- *
- */
-public class InterpreterInfoSaving {
-  public Map<String, InterpreterSetting> interpreterSettings;
-  public Map<String, List<String>> interpreterBindings;
-}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterOption.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterOption.java b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterOption.java
deleted file mode 100644
index 614cc79..0000000
--- a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterOption.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.nflabs.zeppelin.interpreter;
-
-/**
- *
- */
-public class InterpreterOption {
-  boolean remote;
-
-  public InterpreterOption() {
-    remote = false;
-  }
-
-  public InterpreterOption(boolean remote) {
-    this.remote = remote;
-  }
-
-  public boolean isRemote() {
-    return remote;
-  }
-
-  public void setRemote(boolean remote) {
-    this.remote = remote;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterSerializer.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterSerializer.java b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterSerializer.java
deleted file mode 100644
index 4d70ccd..0000000
--- a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterSerializer.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.nflabs.zeppelin.interpreter;
-
-import java.lang.reflect.Type;
-
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParseException;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
-
-
-/**
- * Interpreter class serializer for gson
- *
- */
-public class InterpreterSerializer implements JsonSerializer<Interpreter>,
-  JsonDeserializer<Interpreter> {
-
-  @Override
-  public JsonElement serialize(Interpreter interpreter, Type type,
-      JsonSerializationContext context) {
-    JsonObject json = new JsonObject();
-    json.addProperty("class", interpreter.getClassName());
-    json.addProperty(
-        "name",
-        Interpreter.findRegisteredInterpreterByClassName(
-            interpreter.getClassName()).getName());
-    return json;
-  }
-
-  @Override
-  public Interpreter deserialize(JsonElement json, Type typeOfT,
-      JsonDeserializationContext context) throws JsonParseException {
-    return null;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterSetting.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterSetting.java b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterSetting.java
deleted file mode 100644
index 3d0a017..0000000
--- a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterSetting.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.nflabs.zeppelin.interpreter;
-
-import java.util.Properties;
-import java.util.Random;
-
-import com.nflabs.zeppelin.notebook.utility.IdHashes;
-
-/**
- * Interpreter settings
- */
-public class InterpreterSetting {
-  private String id;
-  private String name;
-  private String group;
-  private String description;
-  private Properties properties;
-  private InterpreterGroup interpreterGroup;
-  private InterpreterOption option;
-
-  public InterpreterSetting(String id, String name,
-      String group,
-      InterpreterOption option,
-      InterpreterGroup interpreterGroup) {
-    this.id = id;
-    this.name = name;
-    this.group = group;
-    this.properties = interpreterGroup.getProperty();
-    this.option = option;
-    this.interpreterGroup = interpreterGroup;
-  }
-
-  public InterpreterSetting(String name,
-      String group,
-      InterpreterOption option,
-      InterpreterGroup interpreterGroup) {
-    this(generateId(), name, group, option, interpreterGroup);
-  }
-
-  public String id() {
-    return id;
-  }
-
-  private static String generateId() {
-    return IdHashes.encode(System.currentTimeMillis() + new Random().nextInt());
-  }
-
-  public String getName() {
-    return name;
-  }
-
-  public void setName(String name) {
-    this.name = name;
-  }
-
-  public String getDescription() {
-    return description;
-  }
-
-  public void setDescription(String desc) {
-    this.description = desc;
-  }
-
-  public String getGroup() {
-    return group;
-  }
-
-  public InterpreterGroup getInterpreterGroup() {
-    return interpreterGroup;
-  }
-
-  public void setInterpreterGroup(InterpreterGroup interpreterGroup) {
-    this.interpreterGroup = interpreterGroup;
-    this.properties = interpreterGroup.getProperty();
-  }
-
-  public Properties getProperties() {
-    return properties;
-  }
-
-  public InterpreterOption getOption() {
-    if (option == null) {
-      option = new InterpreterOption();
-    }
-
-    return option;
-  }
-
-  public void setOption(InterpreterOption option) {
-    this.option = option;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/JobListenerFactory.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/JobListenerFactory.java b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/JobListenerFactory.java
deleted file mode 100644
index ef69b2a..0000000
--- a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/JobListenerFactory.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.nflabs.zeppelin.notebook;
-
-import com.nflabs.zeppelin.scheduler.JobListener;
-
-/**
- * TODO(moon): provide description.
- * 
- * @author Leemoonsoo
- *
- */
-public interface JobListenerFactory {
-  public JobListener getParagraphJobListener(Note note);
-}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Note.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Note.java b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Note.java
deleted file mode 100644
index df0a91d..0000000
--- a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Note.java
+++ /dev/null
@@ -1,350 +0,0 @@
-package com.nflabs.zeppelin.notebook;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-
-import com.nflabs.zeppelin.interpreter.InterpreterException;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.nflabs.zeppelin.conf.ZeppelinConfiguration;
-import com.nflabs.zeppelin.conf.ZeppelinConfiguration.ConfVars;
-import com.nflabs.zeppelin.interpreter.Interpreter;
-import com.nflabs.zeppelin.notebook.utility.IdHashes;
-import com.nflabs.zeppelin.scheduler.Job;
-import com.nflabs.zeppelin.scheduler.Job.Status;
-import com.nflabs.zeppelin.scheduler.JobListener;
-import com.nflabs.zeppelin.scheduler.Scheduler;
-
-/**
- * Binded interpreters for a note
- */
-public class Note implements Serializable, JobListener {
-  transient Logger logger = LoggerFactory.getLogger(Note.class);
-  List<Paragraph> paragraphs = new LinkedList<Paragraph>();
-  private String name;
-  private String id;
-
-  private transient NoteInterpreterLoader replLoader;
-  private transient ZeppelinConfiguration conf;
-  private transient JobListenerFactory jobListenerFactory;
-
-  /**
-   * note configurations.
-   *
-   * - looknfeel - cron
-   */
-  private Map<String, Object> config = new HashMap<String, Object>();
-
-  /**
-   * note information.
-   *
-   * - cron : cron expression validity.
-   */
-  private Map<String, Object> info = new HashMap<String, Object>();
-
-  public Note() {}
-
-  public Note(ZeppelinConfiguration conf, NoteInterpreterLoader replLoader,
-      JobListenerFactory jobListenerFactory, org.quartz.Scheduler quartzSched) {
-    this.conf = conf;
-    this.replLoader = replLoader;
-    this.jobListenerFactory = jobListenerFactory;
-    generateId();
-  }
-
-  private void generateId() {
-    id = IdHashes.encode(System.currentTimeMillis() + new Random().nextInt());
-  }
-
-  public String id() {
-    return id;
-  }
-
-  public String getName() {
-    return name;
-  }
-
-  public void setName(String name) {
-    this.name = name;
-  }
-
-  public NoteInterpreterLoader getNoteReplLoader() {
-    return replLoader;
-  }
-
-  public void setReplLoader(NoteInterpreterLoader replLoader) {
-    this.replLoader = replLoader;
-  }
-
-  public void setZeppelinConfiguration(ZeppelinConfiguration conf) {
-    this.conf = conf;
-  }
-
-  /**
-   * Add paragraph last.
-   *
-   * @param p
-   */
-  public Paragraph addParagraph() {
-    Paragraph p = new Paragraph(this, replLoader);
-    synchronized (paragraphs) {
-      paragraphs.add(p);
-    }
-    return p;
-  }
-
-  /**
-   * Insert paragraph in given index.
-   *
-   * @param index
-   * @param p
-   */
-  public Paragraph insertParagraph(int index) {
-    Paragraph p = new Paragraph(this, replLoader);
-    synchronized (paragraphs) {
-      paragraphs.add(index, p);
-    }
-    return p;
-  }
-
-  /**
-   * Remove paragraph by id.
-   *
-   * @param paragraphId
-   * @return
-   */
-  public Paragraph removeParagraph(String paragraphId) {
-    synchronized (paragraphs) {
-      for (int i = 0; i < paragraphs.size(); i++) {
-        Paragraph p = paragraphs.get(i);
-        if (p.getId().equals(paragraphId)) {
-          paragraphs.remove(i);
-          return p;
-        }
-      }
-    }
-    return null;
-  }
-
-  /**
-   * Move paragraph into the new index (order from 0 ~ n-1).
-   *
-   * @param paragraphId
-   * @param index new index
-   */
-  public void moveParagraph(String paragraphId, int index) {
-    synchronized (paragraphs) {
-      int oldIndex = -1;
-      Paragraph p = null;
-
-      if (index < 0 || index >= paragraphs.size()) {
-        return;
-      }
-
-      for (int i = 0; i < paragraphs.size(); i++) {
-        if (paragraphs.get(i).getId().equals(paragraphId)) {
-          oldIndex = i;
-          if (oldIndex == index) {
-            return;
-          }
-          p = paragraphs.remove(i);
-        }
-      }
-
-      if (p == null) {
-        return;
-      } else {
-        if (oldIndex < index) {
-          paragraphs.add(index, p);
-        } else {
-          paragraphs.add(index, p);
-        }
-      }
-    }
-  }
-
-  public boolean isLastParagraph(String paragraphId) {
-    if (!paragraphs.isEmpty()) {
-      synchronized (paragraphs) {
-        if (paragraphId.equals(paragraphs.get(paragraphs.size() - 1).getId())) {
-          return true;
-        }
-      }
-      return false;
-    }
-    /** because empty list, cannot remove nothing right? */
-    return true;
-  }
-
-  public Paragraph getParagraph(String paragraphId) {
-    synchronized (paragraphs) {
-      for (Paragraph p : paragraphs) {
-        if (p.getId().equals(paragraphId)) {
-          return p;
-        }
-      }
-    }
-    return null;
-  }
-
-  public Paragraph getLastParagraph() {
-    synchronized (paragraphs) {
-      return paragraphs.get(paragraphs.size() - 1);
-    }
-  }
-
-  /**
-   * Run all paragraphs sequentially.
-   *
-   * @param jobListener
-   */
-  public void runAll() {
-    synchronized (paragraphs) {
-      for (Paragraph p : paragraphs) {
-        p.setNoteReplLoader(replLoader);
-        p.setListener(jobListenerFactory.getParagraphJobListener(this));
-        Interpreter intp = replLoader.get(p.getRequiredReplName());
-        intp.getScheduler().submit(p);
-      }
-    }
-  }
-
-  /**
-   * Run a single paragraph.
-   *
-   * @param paragraphId
-   */
-  public void run(String paragraphId) {
-    Paragraph p = getParagraph(paragraphId);
-    p.setNoteReplLoader(replLoader);
-    p.setListener(jobListenerFactory.getParagraphJobListener(this));
-    Interpreter intp = replLoader.get(p.getRequiredReplName());
-    if (intp == null) {
-      throw new InterpreterException("Interpreter " + p.getRequiredReplName() + " not found");
-    }
-    intp.getScheduler().submit(p);
-  }
-
-  public List<String> completion(String paragraphId, String buffer, int cursor) {
-    Paragraph p = getParagraph(paragraphId);
-    p.setNoteReplLoader(replLoader);
-    p.setListener(jobListenerFactory.getParagraphJobListener(this));
-    return p.completion(buffer, cursor);
-  }
-
-  public List<Paragraph> getParagraphs() {
-    synchronized (paragraphs) {
-      return new LinkedList<Paragraph>(paragraphs);
-    }
-  }
-
-  public void persist() throws IOException {
-    GsonBuilder gsonBuilder = new GsonBuilder();
-    gsonBuilder.setPrettyPrinting();
-    Gson gson = gsonBuilder.create();
-
-    File dir = new File(conf.getNotebookDir() + "/" + id);
-    if (!dir.exists()) {
-      dir.mkdirs();
-    } else if (dir.isFile()) {
-      throw new RuntimeException("File already exists" + dir.toString());
-    }
-
-    File file = new File(conf.getNotebookDir() + "/" + id + "/note.json");
-    logger().info("Persist note {} into {}", id, file.getAbsolutePath());
-
-    String json = gson.toJson(this);
-    FileOutputStream out = new FileOutputStream(file);
-    out.write(json.getBytes(conf.getString(ConfVars.ZEPPELIN_ENCODING)));
-    out.close();
-  }
-
-  public void unpersist() throws IOException {
-    File dir = new File(conf.getNotebookDir() + "/" + id);
-
-    FileUtils.deleteDirectory(dir);
-  }
-
-  public static Note load(String id, ZeppelinConfiguration conf, NoteInterpreterLoader replLoader,
-      Scheduler scheduler, JobListenerFactory jobListenerFactory, org.quartz.Scheduler quartzSched)
-      throws IOException {
-    GsonBuilder gsonBuilder = new GsonBuilder();
-    gsonBuilder.setPrettyPrinting();
-    Gson gson = gsonBuilder.create();
-
-    File file = new File(conf.getNotebookDir() + "/" + id + "/note.json");
-    logger().info("Load note {} from {}", id, file.getAbsolutePath());
-
-    if (!file.isFile()) {
-      return null;
-    }
-
-    FileInputStream ins = new FileInputStream(file);
-    String json = IOUtils.toString(ins, conf.getString(ConfVars.ZEPPELIN_ENCODING));
-    Note note = gson.fromJson(json, Note.class);
-    note.setZeppelinConfiguration(conf);
-    note.setReplLoader(replLoader);
-    note.jobListenerFactory = jobListenerFactory;
-    for (Paragraph p : note.paragraphs) {
-      if (p.getStatus() == Status.PENDING || p.getStatus() == Status.RUNNING) {
-        p.setStatus(Status.ABORT);
-      }
-    }
-
-    return note;
-  }
-
-  public Map<String, Object> getConfig() {
-    if (config == null) {
-      config = new HashMap<String, Object>();
-    }
-    return config;
-  }
-
-  public void setConfig(Map<String, Object> config) {
-    this.config = config;
-  }
-
-  public Map<String, Object> getInfo() {
-    if (info == null) {
-      info = new HashMap<String, Object>();
-    }
-    return info;
-  }
-
-  public void setInfo(Map<String, Object> info) {
-    this.info = info;
-  }
-
-  @Override
-  public void beforeStatusChange(Job job, Status before, Status after) {
-    Paragraph p = (Paragraph) job;
-  }
-
-  @Override
-  public void afterStatusChange(Job job, Status before, Status after) {
-    Paragraph p = (Paragraph) job;
-  }
-
-  private static Logger logger() {
-    Logger logger = LoggerFactory.getLogger(Note.class);
-    return logger;
-  }
-
-  @Override
-  public void onProgressUpdate(Job job, int progress) {}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/NoteInterpreterLoader.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/NoteInterpreterLoader.java b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/NoteInterpreterLoader.java
deleted file mode 100644
index ba570f6..0000000
--- a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/NoteInterpreterLoader.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package com.nflabs.zeppelin.notebook;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-
-import com.nflabs.zeppelin.interpreter.Interpreter;
-import com.nflabs.zeppelin.interpreter.InterpreterException;
-import com.nflabs.zeppelin.interpreter.InterpreterFactory;
-import com.nflabs.zeppelin.interpreter.InterpreterGroup;
-import com.nflabs.zeppelin.interpreter.InterpreterSetting;
-
-/**
- * Repl loader per note.
- */
-public class NoteInterpreterLoader {
-  private transient InterpreterFactory factory;
-  String noteId;
-
-  public NoteInterpreterLoader(InterpreterFactory factory) {
-    this.factory = factory;
-  }
-
-  public void setNoteId(String noteId) {
-    this.noteId = noteId;
-  }
-
-  /**
-   * set interpreter ids
-   * @param ids InterpreterSetting id list
-   * @throws IOException 
-   */
-  public void setInterpreters(List<String> ids) throws IOException {
-    factory.putNoteInterpreterSettingBinding(noteId, ids);
-  }
-  
-  public List<String> getInterpreters() {
-    return factory.getNoteInterpreterSettingBinding(noteId);
-  }
-  
-  public List<InterpreterSetting> getInterpreterSettings() {
-    List<String> interpreterSettingIds = factory.getNoteInterpreterSettingBinding(noteId);
-    LinkedList<InterpreterSetting> settings = new LinkedList<InterpreterSetting>();
-    synchronized (interpreterSettingIds) {
-      for (String id : interpreterSettingIds) {
-        InterpreterSetting setting = factory.get(id);
-        if (setting == null) {
-          // interpreter setting is removed from factory. remove id from here, too
-          interpreterSettingIds.remove(id);
-        } else {
-          settings.add(setting);
-        }
-      }
-    }
-    return settings;
-  }
-
-  public Interpreter get(String replName) {
-    List<InterpreterSetting> settings = getInterpreterSettings();
-    
-    if (settings == null || settings.size() == 0) {
-      return null;
-    }
-    
-    if (replName == null) {
-      return settings.get(0).getInterpreterGroup().getFirst();
-    }
-
-    if (Interpreter.registeredInterpreters == null) {
-      return null;
-    }
-    Interpreter.RegisteredInterpreter registeredInterpreter
-      = Interpreter.registeredInterpreters.get(replName);
-    if (registeredInterpreter == null || registeredInterpreter.getClassName() == null) {
-      throw new InterpreterException(replName + " interpreter not found");
-    }
-    String interpreterClassName = registeredInterpreter.getClassName();
-    for (InterpreterSetting setting : settings) {
-      InterpreterGroup intpGroup = setting.getInterpreterGroup();
-      for (Interpreter interpreter : intpGroup) {
-        if (interpreterClassName.equals(interpreter.getClassName())) {
-          return interpreter;
-        }
-      }
-    }
-    
-    return null;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Notebook.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Notebook.java b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Notebook.java
deleted file mode 100644
index fb92964..0000000
--- a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Notebook.java
+++ /dev/null
@@ -1,283 +0,0 @@
-package com.nflabs.zeppelin.notebook;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.quartz.CronScheduleBuilder;
-import org.quartz.CronTrigger;
-import org.quartz.JobBuilder;
-import org.quartz.JobDetail;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.quartz.JobKey;
-import org.quartz.SchedulerException;
-import org.quartz.TriggerBuilder;
-import org.quartz.impl.StdSchedulerFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.nflabs.zeppelin.conf.ZeppelinConfiguration;
-import com.nflabs.zeppelin.conf.ZeppelinConfiguration.ConfVars;
-import com.nflabs.zeppelin.interpreter.InterpreterFactory;
-import com.nflabs.zeppelin.interpreter.InterpreterSetting;
-import com.nflabs.zeppelin.scheduler.Scheduler;
-import com.nflabs.zeppelin.scheduler.SchedulerFactory;
-
-/**
- * Collection of Notes.
- */
-public class Notebook {
-  Logger logger = LoggerFactory.getLogger(Notebook.class);
-  private SchedulerFactory schedulerFactory;
-  private InterpreterFactory replFactory;
-  /** Keep the order. */
-  Map<String, Note> notes = new LinkedHashMap<String, Note>();
-  private ZeppelinConfiguration conf;
-  private StdSchedulerFactory quertzSchedFact;
-  private org.quartz.Scheduler quartzSched;
-  private JobListenerFactory jobListenerFactory;
-
-  public Notebook(ZeppelinConfiguration conf, SchedulerFactory schedulerFactory,
-      InterpreterFactory replFactory, JobListenerFactory jobListenerFactory) throws IOException,
-      SchedulerException {
-    this.conf = conf;
-    this.schedulerFactory = schedulerFactory;
-    this.replFactory = replFactory;
-    this.jobListenerFactory = jobListenerFactory;
-    quertzSchedFact = new org.quartz.impl.StdSchedulerFactory();
-    quartzSched = quertzSchedFact.getScheduler();
-    quartzSched.start();
-    CronJob.notebook = this;
-
-    loadAllNotes();
-  }
-
-  /**
-   * Create new note.
-   *
-   * @return
-   * @throws IOException
-   */
-  public Note createNote() throws IOException {
-    if (conf.getBoolean(ConfVars.ZEPPELIN_NOTEBOOK_AUTO_INTERPRETER_BINDING)) {
-      return createNote(replFactory.getDefaultInterpreterSettingList());
-    } else {
-      return createNote(null);
-    }
-  }
-
-  /**
-   * Create new note.
-   *
-   * @return
-   * @throws IOException
-   */
-  public Note createNote(List<String> interpreterIds) throws IOException {
-    NoteInterpreterLoader intpLoader = new NoteInterpreterLoader(replFactory);
-    Note note = new Note(conf, intpLoader, jobListenerFactory, quartzSched);
-    intpLoader.setNoteId(note.id());
-    synchronized (notes) {
-      notes.put(note.id(), note);
-    }
-    if (interpreterIds != null) {
-      bindInterpretersToNote(note.id(), interpreterIds);
-    }
-
-    return note;
-  }
-
-  public void bindInterpretersToNote(String id,
-      List<String> interpreterSettingIds) throws IOException {
-    Note note = getNote(id);
-    if (note != null) {
-      note.getNoteReplLoader().setInterpreters(interpreterSettingIds);
-      replFactory.putNoteInterpreterSettingBinding(id, interpreterSettingIds);
-    }
-  }
-
-  public List<String> getBindedInterpreterSettingsIds(String id) {
-    Note note = getNote(id);
-    if (note != null) {
-      return note.getNoteReplLoader().getInterpreters();
-    } else {
-      return new LinkedList<String>();
-    }
-  }
-
-  public List<InterpreterSetting> getBindedInterpreterSettings(String id) {
-    Note note = getNote(id);
-    if (note != null) {
-      return note.getNoteReplLoader().getInterpreterSettings();
-    } else {
-      return new LinkedList<InterpreterSetting>();
-    }
-  }
-
-  public Note getNote(String id) {
-    synchronized (notes) {
-      return notes.get(id);
-    }
-  }
-
-  public void removeNote(String id) {
-    Note note;
-    synchronized (notes) {
-      note = notes.remove(id);
-    }
-    try {
-      note.unpersist();
-    } catch (IOException e) {
-      e.printStackTrace();
-    }
-  }
-
-  private void loadAllNotes() throws IOException {
-    File notebookDir = new File(conf.getNotebookDir());
-    File[] dirs = notebookDir.listFiles();
-    if (dirs == null) {
-      return;
-    }
-    for (File f : dirs) {
-      boolean isHidden = f.getName().startsWith(".");
-      if (f.isDirectory() && !isHidden) {
-        Scheduler scheduler =
-            schedulerFactory.createOrGetFIFOScheduler("note_" + System.currentTimeMillis());
-        logger.info("Loading note from " + f.getName());
-        NoteInterpreterLoader noteInterpreterLoader = new NoteInterpreterLoader(replFactory);
-        Note note = Note.load(f.getName(),
-            conf,
-            noteInterpreterLoader,
-            scheduler,
-            jobListenerFactory, quartzSched);
-        noteInterpreterLoader.setNoteId(note.id());
-
-        synchronized (notes) {
-          notes.put(note.id(), note);
-          refreshCron(note.id());
-        }
-      }
-    }
-  }
-
-  public List<Note> getAllNotes() {
-    synchronized (notes) {
-      List<Note> noteList = new ArrayList<Note>(notes.values());
-      logger.info("" + noteList.size());
-      Collections.sort(noteList, new Comparator() {
-        @Override
-        public int compare(Object one, Object two) {
-          Note note1 = (Note) one;
-          Note note2 = (Note) two;
-
-          String name1 = note1.id();
-          if (note1.getName() != null) {
-            name1 = note1.getName();
-          }
-          String name2 = note2.id();
-          if (note2.getName() != null) {
-            name2 = note2.getName();
-          }
-          ((Note) one).getName();
-          return name1.compareTo(name2);
-        }
-      });
-      return noteList;
-    }
-  }
-
-  public JobListenerFactory getJobListenerFactory() {
-    return jobListenerFactory;
-  }
-
-  public void setJobListenerFactory(JobListenerFactory jobListenerFactory) {
-    this.jobListenerFactory = jobListenerFactory;
-  }
-
-  /**
-   * Cron task for the note.
-   *
-   * @author Leemoonsoo
-   *
-   */
-  public static class CronJob implements org.quartz.Job {
-    public static Notebook notebook;
-
-    @Override
-    public void execute(JobExecutionContext context) throws JobExecutionException {
-
-      String noteId = context.getJobDetail().getJobDataMap().getString("noteId");
-      Note note = notebook.getNote(noteId);
-      note.runAll();
-    }
-  }
-
-  public void refreshCron(String id) {
-    removeCron(id);
-    synchronized (notes) {
-
-      Note note = notes.get(id);
-      if (note == null) {
-        return;
-      }
-      Map<String, Object> config = note.getConfig();
-      if (config == null) {
-        return;
-      }
-
-      String cronExpr = (String) note.getConfig().get("cron");
-      if (cronExpr == null || cronExpr.trim().length() == 0) {
-        return;
-      }
-
-
-      JobDetail newJob =
-          JobBuilder.newJob(CronJob.class).withIdentity(id, "note").usingJobData("noteId", id)
-          .build();
-
-      Map<String, Object> info = note.getInfo();
-      info.put("cron", null);
-
-      CronTrigger trigger = null;
-      try {
-        trigger =
-            TriggerBuilder.newTrigger().withIdentity("trigger_" + id, "note")
-            .withSchedule(CronScheduleBuilder.cronSchedule(cronExpr)).forJob(id, "note")
-            .build();
-      } catch (Exception e) {
-        logger.error("Error", e);
-        info.put("cron", e.getMessage());
-      }
-
-
-      try {
-        if (trigger != null) {
-          quartzSched.scheduleJob(newJob, trigger);
-        }
-      } catch (SchedulerException e) {
-        logger.error("Error", e);
-        info.put("cron", "Scheduler Exception");
-      }
-    }
-  }
-
-  private void removeCron(String id) {
-    try {
-      quartzSched.deleteJob(new JobKey(id, "note"));
-    } catch (SchedulerException e) {
-      logger.error("Can't remove quertz " + id, e);
-    }
-  }
-
-  public InterpreterFactory getInterpreterFactory() {
-    return replFactory;
-  }
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Paragraph.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Paragraph.java b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Paragraph.java
deleted file mode 100644
index aabd5de..0000000
--- a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Paragraph.java
+++ /dev/null
@@ -1,221 +0,0 @@
-package com.nflabs.zeppelin.notebook;
-
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.nflabs.zeppelin.display.GUI;
-import com.nflabs.zeppelin.display.Input;
-import com.nflabs.zeppelin.interpreter.Interpreter;
-import com.nflabs.zeppelin.interpreter.Interpreter.FormType;
-import com.nflabs.zeppelin.interpreter.InterpreterContext;
-import com.nflabs.zeppelin.interpreter.InterpreterResult;
-import com.nflabs.zeppelin.scheduler.Job;
-import com.nflabs.zeppelin.scheduler.JobListener;
-
-/**
- * Paragraph is a representation of an execution unit.
- *
- * @author Leemoonsoo
- */
-public class Paragraph extends Job implements Serializable {
-  private static final transient long serialVersionUID = -6328572073497992016L;
-  private transient NoteInterpreterLoader replLoader;
-
-  String title;
-  String text;
-  private Map<String, Object> config; // paragraph configs like isOpen, colWidth, etc
-  public final GUI settings;          // form and parameter settings
-
-  public Paragraph(JobListener listener, NoteInterpreterLoader replLoader) {
-    super(generateId(), listener);
-    this.replLoader = replLoader;
-    title = null;
-    text = null;
-    settings = new GUI();
-    config = new HashMap<String, Object>();
-  }
-
-  private static String generateId() {
-    return "paragraph_" + System.currentTimeMillis() + "_"
-           + new Random(System.currentTimeMillis()).nextInt();
-  }
-
-  public String getText() {
-    return text;
-  }
-
-  public void setText(String newText) {
-    this.text = newText;
-  }
-
-
-  public String getTitle() {
-    return title;
-  }
-
-  public void setTitle(String title) {
-    this.title = title;
-  }
-
-  public String getRequiredReplName() {
-    return getRequiredReplName(text);
-  }
-
-  public static String getRequiredReplName(String text) {
-    if (text == null) {
-      return null;
-    }
-
-    // get script head
-    int scriptHeadIndex = 0;
-    for (int i = 0; i < text.length(); i++) {
-      char ch = text.charAt(i);
-      if (ch == ' ' || ch == '\n') {
-        scriptHeadIndex = i;
-        break;
-      }
-    }
-    if (scriptHeadIndex == 0) {
-      return null;
-    }
-    String head = text.substring(0, scriptHeadIndex);
-    if (head.startsWith("%")) {
-      return head.substring(1);
-    } else {
-      return null;
-    }
-  }
-
-  private String getScriptBody() {
-    return getScriptBody(text);
-  }
-
-  public static String getScriptBody(String text) {
-    if (text == null) {
-      return null;
-    }
-
-    String magic = getRequiredReplName(text);
-    if (magic == null) {
-      return text;
-    }
-    if (magic.length() + 2 >= text.length()) {
-      return "";
-    }
-    return text.substring(magic.length() + 2);
-  }
-
-  public NoteInterpreterLoader getNoteReplLoader() {
-    return replLoader;
-  }
-
-  public Interpreter getRepl(String name) {
-    return replLoader.get(name);
-  }
-
-  public List<String> completion(String buffer, int cursor) {
-    String replName = getRequiredReplName(buffer);
-    if (replName != null) {
-      cursor -= replName.length() + 1;
-    }
-    String body = getScriptBody(buffer);
-    Interpreter repl = getRepl(replName);
-    if (repl == null) {
-      return null;
-    }
-
-    return repl.completion(body, cursor);
-  }
-
-  public void setNoteReplLoader(NoteInterpreterLoader repls) {
-    this.replLoader = repls;
-  }
-
-  public InterpreterResult getResult() {
-    return (InterpreterResult) getReturn();
-  }
-
-  @Override
-  public int progress() {
-    String replName = getRequiredReplName();
-    Interpreter repl = getRepl(replName);
-    if (repl != null) {
-      return repl.getProgress(getInterpreterContext());
-    } else {
-      return 0;
-    }
-  }
-
-  @Override
-  public Map<String, Object> info() {
-    return null;
-  }
-
-  @Override
-  protected Object jobRun() throws Throwable {
-    String replName = getRequiredReplName();
-    Interpreter repl = getRepl(replName);
-    logger().info("run paragraph {} using {} " + repl, getId(), replName);
-    if (repl == null) {
-      logger().error("Can not find interpreter name " + repl);
-      throw new RuntimeException("Can not find interpreter for " + getRequiredReplName());
-    }
-
-    String script = getScriptBody();
-    // inject form
-    if (repl.getFormType() == FormType.NATIVE) {
-      settings.clear();
-    } else if (repl.getFormType() == FormType.SIMPLE) {
-      String scriptBody = getScriptBody();
-      Map<String, Input> inputs = Input.extractSimpleQueryParam(scriptBody); // inputs will be built
-                                                                             // from script body
-      settings.setForms(inputs);
-      script = Input.getSimpleQuery(settings.getParams(), scriptBody);
-    }
-    logger().info("RUN : " + script);
-    InterpreterResult ret = repl.interpret(script, getInterpreterContext());
-    return ret;
-  }
-
-  @Override
-  protected boolean jobAbort() {
-    Interpreter repl = getRepl(getRequiredReplName());
-    repl.cancel(getInterpreterContext());
-    return true;
-  }
-
-  private InterpreterContext getInterpreterContext() {
-    InterpreterContext interpreterContext = new InterpreterContext(getId(),
-            this.getTitle(),
-            this.getText(),
-            this.getConfig(),
-            this.settings);
-    return interpreterContext;
-  }
-
-  private Logger logger() {
-    Logger logger = LoggerFactory.getLogger(Paragraph.class);
-    return logger;
-  }
-
-
-  public Map<String, Object> getConfig() {
-    return config;
-  }
-
-  public void setConfig(Map<String, Object> config) {
-    this.config = config;
-  }
-
-  public void setReturn(InterpreterResult value, Throwable t) {
-    setResult(value);
-    setException(t);
-
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/669d408d/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/utility/IdHashes.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/utility/IdHashes.java b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/utility/IdHashes.java
deleted file mode 100644
index 65229bb..0000000
--- a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/utility/IdHashes.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.nflabs.zeppelin.notebook.utility;
-
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Generate Tiny ID.
- * 
- * @author anthonycorbacho
- *
- */
-public class IdHashes {
-  public static final char[] DICTIONARY = new char[] {'1', '2', '3', '4', '5', '6', '7', '8', '9',
-    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U',
-    'V', 'W', 'X', 'Y', 'Z'};
-
-  /**
-   * encodes the given string into the base of the dictionary provided in the constructor.
-   * 
-   * @param value the number to encode.
-   * @return the encoded string.
-   */
-  public static String encode(Long value) {
-
-    List<Character> result = new ArrayList<Character>();
-    BigInteger base = new BigInteger("" + DICTIONARY.length);
-    int exponent = 1;
-    BigInteger remaining = new BigInteger(value.toString());
-    while (true) {
-      BigInteger a = base.pow(exponent); // 16^1 = 16
-      BigInteger b = remaining.mod(a); // 119 % 16 = 7 | 112 % 256 = 112
-      BigInteger c = base.pow(exponent - 1);
-      BigInteger d = b.divide(c);
-
-      // if d > dictionary.length, we have a problem. but BigInteger doesnt have
-      // a greater than method :-( hope for the best. theoretically, d is always
-      // an index of the dictionary!
-      result.add(DICTIONARY[d.intValue()]);
-      remaining = remaining.subtract(b); // 119 - 7 = 112 | 112 - 112 = 0
-
-      // finished?
-      if (remaining.equals(BigInteger.ZERO)) {
-        break;
-      }
-
-      exponent++;
-    }
-
-    // need to reverse it, since the start of the list contains the least significant values
-    StringBuffer sb = new StringBuffer();
-    for (int i = result.size() - 1; i >= 0; i--) {
-      sb.append(result.get(i));
-    }
-    return sb.toString();
-  }
-}