Add some doc

Project: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/commit/39e12176
Tree: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/tree/39e12176
Diff: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/diff/39e12176

Branch: refs/heads/master
Commit: 39e12176e9f0d92c0e25d489e3cb37d88ddbfc61
Parents: f3c77e8
Author: Lee moon soo <[email protected]>
Authored: Thu Mar 12 17:47:42 2015 +0900
Committer: Lee moon soo <[email protected]>
Committed: Thu Mar 12 17:47:42 2015 +0900

----------------------------------------------------------------------
 .../zeppelin/interpreter/Interpreter.java       | 155 ++++++++++++++-----
 1 file changed, 115 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/39e12176/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
index a8c0efb..acb62a2 100644
--- 
a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/Interpreter.java
+++ 
b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/Interpreter.java
@@ -16,8 +16,102 @@ 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;
@@ -64,6 +158,27 @@ public abstract class Interpreter {
   }
 
 
+  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.
    */
@@ -148,45 +263,5 @@ public abstract class Interpreter {
     return null;
   }
 
-  public abstract void open();
 
-  public abstract void close();
-
-  public abstract InterpreterResult interpret(String st, InterpreterContext 
context);
-
-  public abstract void cancel(InterpreterContext context);
-
-  public abstract FormType getFormType();
-
-  public abstract int getProgress(InterpreterContext context);
-
-  public Scheduler getScheduler() {
-    return 
SchedulerFactory.singleton().createOrGetFIFOScheduler("interpreter_" + 
this.hashCode());
-  }
-
-  public void destroy() {
-    getScheduler().stop();
-  }
-
-  public abstract List<String> completion(String buf, int cursor);
-
-  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;
-  }
 }

Reply via email to