From e5499772475275c178790d473b42c5d6add3b1b3 Mon Sep 17 00:00:00 2001 From: astroshim Date: Mon, 6 Jun 2016 09:59:51 +0900 Subject: [PATCH 1/6] normalize note name --- .../zeppelin/socket/NotebookServer.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java index 7d50809d5ac..45537e019e7 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java @@ -514,6 +514,22 @@ private boolean isCronUpdated(Map configA, return cronUpdated; } + private String normalizeNoteName(String path){ + path = path.trim(); + path = path.replace("\\", "/"); + while (path.indexOf("///") >= 0) { + path = path.replaceAll("///", "/"); + } + path = path.replaceAll("//", "/"); + if (path.length() == 0) { + path = "/"; + } else if (path.charAt(0) != '/'){ + path = "/" + path; + } + + LOG.debug("normalize note name : " + path); + return path; + } private void createNote(NotebookSocket conn, HashSet userAndRoles, Notebook notebook, Message message) throws IOException { @@ -524,6 +540,9 @@ private void createNote(NotebookSocket conn, HashSet userAndRoles, if (noteName == null || noteName.isEmpty()){ noteName = "Note " + note.getId(); } + if (noteName.indexOf('/') >= 0) { + noteName = normalizeNoteName(noteName); + } note.setName(noteName); } From 2a255ac3b781b042dd4ab147dc3abc7b9250c137 Mon Sep 17 00:00:00 2001 From: astroshim Date: Tue, 7 Jun 2016 11:07:57 +0900 Subject: [PATCH 2/6] change method name. --- .../main/java/org/apache/zeppelin/socket/NotebookServer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java index 45537e019e7..99868018dba 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java @@ -514,7 +514,7 @@ private boolean isCronUpdated(Map configA, return cronUpdated; } - private String normalizeNoteName(String path){ + private String normalizePath(String path){ path = path.trim(); path = path.replace("\\", "/"); while (path.indexOf("///") >= 0) { @@ -541,7 +541,7 @@ private void createNote(NotebookSocket conn, HashSet userAndRoles, noteName = "Note " + note.getId(); } if (noteName.indexOf('/') >= 0) { - noteName = normalizeNoteName(noteName); + noteName = normalizePath(noteName); } note.setName(noteName); } From 7aca4bfb4a7d5a924aa731dd03cb4848d4828ec8 Mon Sep 17 00:00:00 2001 From: astroshim Date: Tue, 7 Jun 2016 12:09:29 +0900 Subject: [PATCH 3/6] move method to util --- .../zeppelin/socket/NotebookServer.java | 19 ++----------------- .../java/org/apache/zeppelin/util/Util.java | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java index 99868018dba..11e98f57cbe 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java @@ -37,6 +37,7 @@ import org.apache.zeppelin.interpreter.InterpreterGroup; import org.apache.zeppelin.interpreter.remote.RemoteAngularObjectRegistry; import org.apache.zeppelin.user.AuthenticationInfo; +import org.apache.zeppelin.util.Util; import org.apache.zeppelin.interpreter.InterpreterOutput; import org.apache.zeppelin.interpreter.InterpreterResult; import org.apache.zeppelin.interpreter.InterpreterSetting; @@ -514,22 +515,6 @@ private boolean isCronUpdated(Map configA, return cronUpdated; } - private String normalizePath(String path){ - path = path.trim(); - path = path.replace("\\", "/"); - while (path.indexOf("///") >= 0) { - path = path.replaceAll("///", "/"); - } - path = path.replaceAll("//", "/"); - if (path.length() == 0) { - path = "/"; - } else if (path.charAt(0) != '/'){ - path = "/" + path; - } - - LOG.debug("normalize note name : " + path); - return path; - } private void createNote(NotebookSocket conn, HashSet userAndRoles, Notebook notebook, Message message) throws IOException { @@ -541,7 +526,7 @@ private void createNote(NotebookSocket conn, HashSet userAndRoles, noteName = "Note " + note.getId(); } if (noteName.indexOf('/') >= 0) { - noteName = normalizePath(noteName); + noteName = Util.normalizePath(noteName); } note.setName(noteName); } diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/util/Util.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/util/Util.java index f9dec0fd48c..9c780e67c15 100644 --- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/util/Util.java +++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/util/Util.java @@ -209,4 +209,20 @@ public static String getVersion() { return StringUtils.defaultIfEmpty(projectProperties.getProperty(PROJECT_PROPERTIES_VERSION_KEY), StringUtils.EMPTY); } + + public static String normalizePath(String path){ + path = path.trim(); + path = path.replace("\\", "/"); + while (path.indexOf("///") >= 0) { + path = path.replaceAll("///", "/"); + } + path = path.replaceAll("//", "/"); + if (path.length() == 0) { + path = "/"; + } else if (path.charAt(0) != '/'){ + path = "/" + path; + } + + return path; + } } From 2f4d2452acb1b40b0d6f2914f8b2b7777ba9978d Mon Sep 17 00:00:00 2001 From: astroshim Date: Sat, 11 Jun 2016 09:42:41 +0900 Subject: [PATCH 4/6] check windows path --- .../main/java/org/apache/zeppelin/socket/NotebookServer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java index 11e98f57cbe..f0ad5a0ba2f 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java @@ -525,7 +525,7 @@ private void createNote(NotebookSocket conn, HashSet userAndRoles, if (noteName == null || noteName.isEmpty()){ noteName = "Note " + note.getId(); } - if (noteName.indexOf('/') >= 0) { + if (noteName.indexOf('/') >= 0 || noteName.indexOf('\\') >= 0) { noteName = Util.normalizePath(noteName); } note.setName(noteName); From 2370654103db8e2c504cc5a031bb4a3275cd70f1 Mon Sep 17 00:00:00 2001 From: astroshim Date: Sun, 12 Jun 2016 01:18:29 +0900 Subject: [PATCH 5/6] fix things that moon pointed out. --- .../zeppelin/socket/NotebookServer.java | 4 --- .../org/apache/zeppelin/notebook/Note.java | 16 ++++++++++++ .../java/org/apache/zeppelin/util/Util.java | 16 ------------ .../zeppelin/notebook/NotebookTest.java | 25 +++++++++++++++++++ 4 files changed, 41 insertions(+), 20 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java index f0ad5a0ba2f..7d50809d5ac 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java @@ -37,7 +37,6 @@ import org.apache.zeppelin.interpreter.InterpreterGroup; import org.apache.zeppelin.interpreter.remote.RemoteAngularObjectRegistry; import org.apache.zeppelin.user.AuthenticationInfo; -import org.apache.zeppelin.util.Util; import org.apache.zeppelin.interpreter.InterpreterOutput; import org.apache.zeppelin.interpreter.InterpreterResult; import org.apache.zeppelin.interpreter.InterpreterSetting; @@ -525,9 +524,6 @@ private void createNote(NotebookSocket conn, HashSet userAndRoles, if (noteName == null || noteName.isEmpty()){ noteName = "Note " + note.getId(); } - if (noteName.indexOf('/') >= 0 || noteName.indexOf('\\') >= 0) { - noteName = Util.normalizePath(noteName); - } note.setName(noteName); } diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java index 6941dc9380c..80f2d702992 100644 --- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java +++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java @@ -116,7 +116,23 @@ public String getName() { return name; } + private String normalizeNoteName(String name){ + name = name.trim(); + name = name.replace("\\", "/"); + while (name.indexOf("///") >= 0) { + name = name.replaceAll("///", "/"); + } + name = name.replaceAll("//", "/"); + if (name.length() == 0) { + name = "/"; + } + return name; + } + public void setName(String name) { + if (name.indexOf('/') >= 0 || name.indexOf('\\') >= 0) { + name = normalizeNoteName(name); + } this.name = name; } diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/util/Util.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/util/Util.java index 9c780e67c15..f9dec0fd48c 100644 --- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/util/Util.java +++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/util/Util.java @@ -209,20 +209,4 @@ public static String getVersion() { return StringUtils.defaultIfEmpty(projectProperties.getProperty(PROJECT_PROPERTIES_VERSION_KEY), StringUtils.EMPTY); } - - public static String normalizePath(String path){ - path = path.trim(); - path = path.replace("\\", "/"); - while (path.indexOf("///") >= 0) { - path = path.replaceAll("///", "/"); - } - path = path.replaceAll("//", "/"); - if (path.length() == 0) { - path = "/"; - } else if (path.charAt(0) != '/'){ - path = "/" + path; - } - - return path; - } } diff --git a/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java b/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java index 80ef50f05ae..d033719a16f 100644 --- a/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java +++ b/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java @@ -643,6 +643,31 @@ public void testPerSessionInterpreterCloseOnUnbindInterpreterSetting() throws IO notebook.removeNote(note1.getId()); } + @Test + public void testNormalizeNoteName() throws IOException { + // create a notes + Note note1 = notebook.createNote(); + note1.setName("MyNote"); + + assertEquals(note1.getName(), "MyNote"); + + note1.setName("/MyNote"); + assertEquals(note1.getName(), "/MyNote"); + + note1.setName("MyNote/sub"); + assertEquals(note1.getName(), "MyNote/sub"); + + note1.setName("/MyNote/sub"); + assertEquals(note1.getName(), "/MyNote/sub"); + + note1.setName("///////MyNote//////sub"); + assertEquals(note1.getName(), "/MyNote/sub"); + + note1.setName("\\\\\\MyNote///sub"); + assertEquals(note1.getName(), "/MyNote/sub"); + + notebook.removeNote(note1.getId()); + } private void delete(File file){ if(file.isFile()) file.delete(); From eb95adbbfa0b0532d7764d388b4decd2c9828e75 Mon Sep 17 00:00:00 2001 From: astroshim Date: Sun, 12 Jun 2016 01:20:42 +0900 Subject: [PATCH 6/6] adjust line --- .../test/java/org/apache/zeppelin/notebook/NotebookTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java b/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java index d033719a16f..53749d1ddea 100644 --- a/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java +++ b/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java @@ -647,8 +647,8 @@ public void testPerSessionInterpreterCloseOnUnbindInterpreterSetting() throws IO public void testNormalizeNoteName() throws IOException { // create a notes Note note1 = notebook.createNote(); - note1.setName("MyNote"); + note1.setName("MyNote"); assertEquals(note1.getName(), "MyNote"); note1.setName("/MyNote");