This is an automated email from the ASF dual-hosted git repository.

zjffdu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zeppelin.git


The following commit(s) were added to refs/heads/master by this push:
     new aa32f62  [ZEPPELIN-5654] Implement GCSNotebookRepo Move
aa32f62 is described below

commit aa32f6258d8df01def4b2552b244f0071f54a24e
Author: Bagus Nurtomo <bagusthana...@gmail.com>
AuthorDate: Sat Feb 19 15:46:35 2022 +0700

    [ZEPPELIN-5654] Implement GCSNotebookRepo Move
    
    ### What is this PR for?
    This is to implement move function that is used for renaming notebooks and 
moving it to trash.
    Currently it would result in a no op, making users unable to rename 
notebooks if using GCS as the notebook repository.
    
    ### What type of PR is it?
    Feature
    
    ### What is the Jira issue?
    https://issues.apache.org/jira/browse/ZEPPELIN-5654
    
    ### How should this be tested?
    CI
    
    ### Screenshots (if appropriate)
    
    ### Questions:
    * Does the licenses files need update? No
    * Is there breaking changes for older versions? No
    * Does this needs documentation? No?
    
    Author: Bagus Nurtomo <bagusthana...@gmail.com>
    
    Closes #4297 from BagusThanatos/implement-move-gcsnotebookrepo and squashes 
the following commits:
    
    ebcc8870a3 [Bagus Nurtomo] Remove unused variable
    102a8ca4ec [Bagus Nurtomo] Fix Tests
    65e7c3e9d5 [Bagus Nurtomo] Add test
    4ca5009291 [Bagus Nurtomo] Implement GCSNotebookRepo move
---
 .../apache/zeppelin/notebook/repo/GCSNotebookRepo.java   | 12 ++++++++++--
 .../zeppelin/notebook/repo/GCSNotebookRepoTest.java      | 16 ++++++++++++++++
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git 
a/zeppelin-plugins/notebookrepo/gcs/src/main/java/org/apache/zeppelin/notebook/repo/GCSNotebookRepo.java
 
b/zeppelin-plugins/notebookrepo/gcs/src/main/java/org/apache/zeppelin/notebook/repo/GCSNotebookRepo.java
index 529225a..0f2aed3 100644
--- 
a/zeppelin-plugins/notebookrepo/gcs/src/main/java/org/apache/zeppelin/notebook/repo/GCSNotebookRepo.java
+++ 
b/zeppelin-plugins/notebookrepo/gcs/src/main/java/org/apache/zeppelin/notebook/repo/GCSNotebookRepo.java
@@ -201,8 +201,16 @@ public class GCSNotebookRepo implements NotebookRepo {
   }
 
   @Override
-  public void move(String noteId, String notePath, String newNotePath, 
AuthenticationInfo subject) {
-
+  public void move(String noteId, String notePath, String newNotePath, 
AuthenticationInfo subject) throws IOException {
+    Preconditions.checkArgument(StringUtils.isNotEmpty(noteId));
+    BlobId sourceBlobId = makeBlobId(noteId, notePath);
+    BlobId destinationBlobId = makeBlobId(noteId, newNotePath);
+    try {
+      storage.get(sourceBlobId).copyTo(destinationBlobId);
+    } catch (Exception se) {
+      throw new IOException("Could not copy from " + sourceBlobId.toString() + 
" to " + destinationBlobId.toString() + ": " + se.getMessage(), se);
+    }
+    remove(noteId, notePath, subject);
   }
 
   @Override
diff --git 
a/zeppelin-plugins/notebookrepo/gcs/src/test/java/org/apache/zeppelin/notebook/repo/GCSNotebookRepoTest.java
 
b/zeppelin-plugins/notebookrepo/gcs/src/test/java/org/apache/zeppelin/notebook/repo/GCSNotebookRepoTest.java
index 295305b..69ef76f 100644
--- 
a/zeppelin-plugins/notebookrepo/gcs/src/test/java/org/apache/zeppelin/notebook/repo/GCSNotebookRepoTest.java
+++ 
b/zeppelin-plugins/notebookrepo/gcs/src/test/java/org/apache/zeppelin/notebook/repo/GCSNotebookRepoTest.java
@@ -96,6 +96,7 @@ public class GCSNotebookRepoTest {
     Paragraph p = new Paragraph(note, null);
     p.setText("text");
     p.setStatus(Status.RUNNING);
+    p.setAuthenticationInfo(new AuthenticationInfo("anonymous", (String)null, 
"anonymous"));
     note.addParagraph(p);
     return note;
   }
@@ -186,6 +187,21 @@ public class GCSNotebookRepoTest {
     assertThat(storage.get(makeBlobId(runningNote.getId(), 
runningNote.getPath()))).isNull();
   }
 
+  @Test
+  public void testMove_nonexistent() throws Exception {
+    try {
+      notebookRepo.move("id", "/name", "/name_new", AUTH_INFO);
+      fail();
+    } catch (IOException e) {}
+  }
+
+  @Test
+  public void testMove() throws Exception {
+    create(runningNote);
+    notebookRepo.move(runningNote.getId(), runningNote.getPath(), 
runningNote.getPath() + "_new", AUTH_INFO);
+    assertThat(storage.get(makeBlobId(runningNote.getId(), 
runningNote.getPath()))).isNull();
+  }
+
   private String makeName(String relativePath) {
     if (basePath.isPresent()) {
       return basePath.get() + "/" + relativePath;

Reply via email to