You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by jo...@apache.org on 2017/02/01 15:02:16 UTC

zeppelin git commit: Search for interpreter-settings in several jars in folder

Repository: zeppelin
Updated Branches:
  refs/heads/master 42be8396c -> 019df1f6b


Search for interpreter-settings in several jars in folder

### What is this PR for?
`InterpreterFactory` searches for single `interpreter-settings.json` in some jar in folder. This PR allows us to have `interpreter-settings.json` in several jar in one interpreter folder.

For example, we can have `zeppelin-spark.jar` and `zeppelin-zrinterpreter.jar` in interpreter/spark folder, both with interpreter-settings.json. Zeppelin will load R settings only when `zeppelin-zrinterpreter.jar` exists.

### What type of PR is it?
[Improvement]

### What is the Jira issue?
* Open an issue on Jira https://issues.apache.org/jira/browse/ZEPPELIN/
* Put link here, and add [ZEPPELIN-*Jira number*] in PR title, eg. [ZEPPELIN-533]

### Questions:
* Does the licenses files need update? No
* Is there breaking changes for older versions? No
* Does this needs documentation? No

Author: Igor Drozdov <ig...@epam.com>

Closes #1937 from DrIgor/multiply-interpreter-settings and squashes the following commits:

b1dd6a3 [Igor Drozdov] Search for interpreter-settings in several jars in folder


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

Branch: refs/heads/master
Commit: 019df1f6bc4875bd8592d2cb77164b1c9756ac1c
Parents: 42be839
Author: Igor Drozdov <ig...@epam.com>
Authored: Mon Jan 23 14:20:38 2017 +0300
Committer: Jongyoul Lee <jo...@apache.org>
Committed: Thu Feb 2 00:02:06 2017 +0900

----------------------------------------------------------------------
 .../interpreter/InterpreterFactory.java         | 22 ++++++++++++--------
 1 file changed, 13 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zeppelin/blob/019df1f6/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterFactory.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterFactory.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterFactory.java
index bb43fa4..633a9b1 100644
--- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterFactory.java
+++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterFactory.java
@@ -42,6 +42,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -312,16 +313,19 @@ public class InterpreterFactory implements InterpreterGroupFactory {
     URL[] urls = recursiveBuildLibList(new File(interpreterDir));
     ClassLoader tempClassLoader = new URLClassLoader(urls, cl);
 
-    InputStream inputStream = tempClassLoader.getResourceAsStream(interpreterJson);
-
-    if (null != inputStream) {
-      logger.debug("Reading {} from resources in {}", interpreterJson, interpreterDir);
-      List<RegisteredInterpreter> registeredInterpreterList =
-          getInterpreterListFromJson(inputStream);
-      registerInterpreters(registeredInterpreterList, interpreterDir);
-      return true;
+    Enumeration<URL> interpreterSettings = tempClassLoader.getResources(interpreterJson);
+    if (!interpreterSettings.hasMoreElements()) {
+      return false;
     }
-    return false;
+    for (URL url : Collections.list(interpreterSettings)) {
+      try (InputStream inputStream = url.openStream()) {
+        logger.debug("Reading {} from {}", interpreterJson, url);
+        List<RegisteredInterpreter> registeredInterpreterList =
+            getInterpreterListFromJson(inputStream);
+        registerInterpreters(registeredInterpreterList, interpreterDir);
+      }
+    }
+    return true;
   }
 
   private boolean registerInterpreterFromPath(String interpreterDir, String interpreterJson)