From 0620c6a0637cdc21cf6ede28aa8ce9375f45b6b9 Mon Sep 17 00:00:00 2001 From: Jeff Zhang Date: Fri, 26 Aug 2016 13:34:46 +0800 Subject: [PATCH 1/2] ZEPPELIN-1374. Should prevent use dot in interpreter name --- .../src/app/interpreter/interpreter.controller.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/zeppelin-web/src/app/interpreter/interpreter.controller.js b/zeppelin-web/src/app/interpreter/interpreter.controller.js index 4be35ef6c8e..60cb0f7b7f1 100644 --- a/zeppelin-web/src/app/interpreter/interpreter.controller.js +++ b/zeppelin-web/src/app/interpreter/interpreter.controller.js @@ -325,6 +325,15 @@ angular.module('zeppelinWebApp').controller('InterpreterCtrl', return; } + if (!$scope.newInterpreterSetting.name.indexOf('.') >= 0) { + BootstrapDialog.alert({ + closable: true, + title: 'Add interpreter', + message: '\'.\' is invalid for interpreter name' + }); + return; + } + if (_.findIndex($scope.interpreterSettings, {'name': $scope.newInterpreterSetting.name}) >= 0) { BootstrapDialog.alert({ closable: true, From d36d43776352ad5be2f380257498bc155a166d0f Mon Sep 17 00:00:00 2001 From: Jeff Zhang Date: Mon, 29 Aug 2016 10:35:06 +0800 Subject: [PATCH 2/2] add rest api checking --- .../zeppelin/interpreter/InterpreterFactory.java | 3 +++ .../zeppelin/interpreter/InterpreterFactoryTest.java | 10 ++++++++++ 2 files changed, 13 insertions(+) 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 30411d122b4..30b015368d3 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 @@ -506,6 +506,9 @@ private boolean findDefaultInterpreter(List infos) { public InterpreterSetting createNewSetting(String name, String group, List dependencies, InterpreterOption option, Properties p) throws IOException { + if (name.indexOf(".") >= 0) { + throw new IOException("'.' is invalid for InterpreterSetting name."); + } InterpreterSetting setting = createFromInterpreterSettingRef(group); setting.setName(name); setting.setGroup(group); diff --git a/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/InterpreterFactoryTest.java b/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/InterpreterFactoryTest.java index c3440828a60..5e44d62c05a 100644 --- a/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/InterpreterFactoryTest.java +++ b/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/InterpreterFactoryTest.java @@ -157,4 +157,14 @@ public void testInterpreterAliases() throws IOException, RepositoryException { assertEquals("className1", factory.getInterpreter("note", "test-group1").getClassName()); assertEquals("className1", factory.getInterpreter("note", "group1").getClassName()); } + + @Test + public void testInvalidInterpreterSettingName() { + try { + factory.createNewSetting("new.mock1", "mock1", new LinkedList(), new InterpreterOption(false), new Properties()); + fail("expect fail because of invalid InterpreterSetting Name"); + } catch (IOException e) { + assertEquals("'.' is invalid for InterpreterSetting name.", e.getMessage()); + } + } }