use of org.apache.zeppelin.interpreter.Interpreter.RegisteredInterpreter in project zeppelin by apache.
the class InterpreterSettingManager method registerInterpreterFromResource.
private boolean registerInterpreterFromResource(ClassLoader cl, String interpreterDir, String interpreterJson) throws IOException, RepositoryException {
URL[] urls = recursiveBuildLibList(new File(interpreterDir));
ClassLoader tempClassLoader = new URLClassLoader(urls, cl);
Enumeration<URL> interpreterSettings = tempClassLoader.getResources(interpreterJson);
if (!interpreterSettings.hasMoreElements()) {
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;
}
use of org.apache.zeppelin.interpreter.Interpreter.RegisteredInterpreter in project zeppelin by apache.
the class InterpreterSettingManager method init.
private void init() throws InterpreterException, IOException, RepositoryException {
String interpreterJson = zeppelinConfiguration.getInterpreterJson();
ClassLoader cl = Thread.currentThread().getContextClassLoader();
if (Files.exists(interpreterDirPath)) {
for (Path interpreterDir : Files.newDirectoryStream(interpreterDirPath, new Filter<Path>() {
@Override
public boolean accept(Path entry) throws IOException {
return Files.exists(entry) && Files.isDirectory(entry);
}
})) {
String interpreterDirString = interpreterDir.toString();
/**
* Register interpreter by the following ordering
* 1. Register it from path {ZEPPELIN_HOME}/interpreter/{interpreter_name}/
* interpreter-setting.json
* 2. Register it from interpreter-setting.json in classpath
* {ZEPPELIN_HOME}/interpreter/{interpreter_name}
* 3. Register it by Interpreter.register
*/
if (!registerInterpreterFromPath(interpreterDirString, interpreterJson)) {
if (!registerInterpreterFromResource(cl, interpreterDirString, interpreterJson)) {
/*
* TODO(jongyoul)
* - Remove these codes below because of legacy code
* - Support ThreadInterpreter
*/
URLClassLoader ccl = new URLClassLoader(recursiveBuildLibList(interpreterDir.toFile()), cl);
for (String className : interpreterClassList) {
try {
// Load classes
Class.forName(className, true, ccl);
Set<String> interpreterKeys = Interpreter.registeredInterpreters.keySet();
for (String interpreterKey : interpreterKeys) {
if (className.equals(Interpreter.registeredInterpreters.get(interpreterKey).getClassName())) {
Interpreter.registeredInterpreters.get(interpreterKey).setPath(interpreterDirString);
logger.info("Interpreter " + interpreterKey + " found. class=" + className);
cleanCl.put(interpreterDirString, ccl);
}
}
} catch (Throwable t) {
// nothing to do
}
}
}
}
}
}
for (RegisteredInterpreter registeredInterpreter : Interpreter.registeredInterpreters.values()) {
logger.debug("Registered: {} -> {}. Properties: {}", registeredInterpreter.getInterpreterKey(), registeredInterpreter.getClassName(), registeredInterpreter.getProperties());
}
// RegisteredInterpreters -> interpreterSettingRef
InterpreterInfo interpreterInfo;
for (RegisteredInterpreter r : Interpreter.registeredInterpreters.values()) {
interpreterInfo = new InterpreterInfo(r.getClassName(), r.getName(), r.isDefaultInterpreter(), r.getEditor());
add(r.getGroup(), interpreterInfo, r.getProperties(), defaultOption, r.getPath(), r.getRunner());
}
for (String settingId : interpreterSettingsRef.keySet()) {
InterpreterSetting setting = interpreterSettingsRef.get(settingId);
logger.info("InterpreterSettingRef name {}", setting.getName());
}
loadFromFile();
// if no interpreter settings are loaded, create default set
if (0 == interpreterSettings.size()) {
Map<String, InterpreterSetting> temp = new HashMap<>();
InterpreterSetting interpreterSetting;
for (InterpreterSetting setting : interpreterSettingsRef.values()) {
interpreterSetting = createFromInterpreterSettingRef(setting);
temp.put(setting.getName(), interpreterSetting);
}
for (String group : interpreterGroupOrderList) {
if (null != (interpreterSetting = temp.remove(group))) {
interpreterSettings.put(interpreterSetting.getId(), interpreterSetting);
}
}
for (InterpreterSetting setting : temp.values()) {
interpreterSettings.put(setting.getId(), setting);
}
saveToFile();
}
for (String settingId : interpreterSettings.keySet()) {
InterpreterSetting setting = interpreterSettings.get(settingId);
logger.info("InterpreterSetting group {} : id={}, name={}", setting.getGroup(), settingId, setting.getName());
}
}
use of org.apache.zeppelin.interpreter.Interpreter.RegisteredInterpreter in project zeppelin by apache.
the class InterpreterSettingManager method registerInterpreterFromPath.
private boolean registerInterpreterFromPath(String interpreterDir, String interpreterJson) throws IOException, RepositoryException {
Path interpreterJsonPath = Paths.get(interpreterDir, interpreterJson);
if (Files.exists(interpreterJsonPath)) {
logger.debug("Reading {}", interpreterJsonPath);
List<RegisteredInterpreter> registeredInterpreterList = getInterpreterListFromJson(interpreterJsonPath);
registerInterpreters(registeredInterpreterList, interpreterDir);
return true;
}
return false;
}
use of org.apache.zeppelin.interpreter.Interpreter.RegisteredInterpreter in project zeppelin by apache.
the class InterpreterSettingManager method registerInterpreters.
private void registerInterpreters(List<RegisteredInterpreter> registeredInterpreters, String absolutePath) throws IOException, RepositoryException {
for (RegisteredInterpreter registeredInterpreter : registeredInterpreters) {
InterpreterInfo interpreterInfo = new InterpreterInfo(registeredInterpreter.getClassName(), registeredInterpreter.getName(), registeredInterpreter.isDefaultInterpreter(), registeredInterpreter.getEditor());
// use defaultOption if it is not specified in interpreter-setting.json
InterpreterOption option = registeredInterpreter.getOption() == null ? defaultOption : registeredInterpreter.getOption();
add(registeredInterpreter.getGroup(), interpreterInfo, registeredInterpreter.getProperties(), option, absolutePath, registeredInterpreter.getRunner());
}
}
Aggregations