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

jongyoul 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 e3212c834c [ZEPPELIN-6451] Add default NotebookRepo settings methods 
to remove duplicated placeholder implementations
e3212c834c is described below

commit e3212c834ca8f02ceecf6044e2b77f628538c216
Author: Coen90 <[email protected]>
AuthorDate: Wed Aug 19 17:32:31 2026 +0900

    [ZEPPELIN-6451] Add default NotebookRepo settings methods to remove 
duplicated placeholder implementations
    
    ### What is this PR for?
    Several `NotebookRepo` implementations (S3, GCS, OSS, Azure, Mongo, 
FileSystem, InMemory) duplicated the same placeholder code for `getSettings` / 
`updateSettings` — returning an empty list or logging "Method not implemented".
    
    This PR centralizes that placeholder behavior as `default` methods on the 
`NotebookRepo` interface:
    * `getSettings` returns an empty list and logs at DEBUG level (querying 
settings is a normal read path, so it should not produce warning noise).
    * `updateSettings` is a no-op and logs at WARN level (an ignored update 
attempt is worth surfacing).
    
    All duplicated overrides are removed from the plugin repos, 
`InMemoryNotebookRepo`, and the test helper repos in `NotebookTest`. Repos with 
real settings logic (e.g. `VFSNotebookRepo`, `GitNotebookRepo`) keep their own 
overrides and are unaffected. Since these are `default` interface methods, 
existing third-party `NotebookRepo` implementations remain source- and 
binary-compatible.
    
    ### What type of PR is it?
    Refactoring
    
    ### Todos
    * [x] - Add default `getSettings` / `updateSettings` implementations to 
`NotebookRepo`
    * [x] - Remove duplicated placeholder overrides from S3 / GCS / OSS / Azure 
/ Mongo / FileSystem / InMemory repos and test helpers
    
    ### What is the Jira issue?
    * https://issues.apache.org/jira/browse/ZEPPELIN-6451
    
    ### How should this be tested?
    * Pure refactoring with behavior preserved — the existing `zeppelin-server` 
test suite covers the affected code paths:
      `./mvnw test -pl zeppelin-server -am`
    * CI should pass.
    
    ### Screenshots (if appropriate)
    
    ### Questions:
    * Does the license files need to update? No
    * Is there breaking changes for older versions? No — `default` methods keep 
existing implementations compatible; the only visible change is the log 
level/message of the placeholder behavior.
    * Does this needs documentation? No
    
    Closes #5411 from Coen90/ZEPPELIN-6451-default-notebookrepo-settings.
    
    Signed-off-by: Jongyoul Lee <[email protected]>
---
 .../zeppelin/notebook/repo/AzureNotebookRepo.java  | 13 -------------
 .../notebook/repo/FileSystemNotebookRepo.java      | 12 ------------
 .../zeppelin/notebook/repo/GCSNotebookRepo.java    | 11 -----------
 .../zeppelin/notebook/repo/MongoNotebookRepo.java  | 11 -----------
 .../zeppelin/notebook/repo/OSSNotebookRepo.java    | 12 ------------
 .../zeppelin/notebook/repo/S3NotebookRepo.java     | 13 -------------
 .../notebook/repo/InMemoryNotebookRepo.java        | 12 ------------
 .../zeppelin/notebook/repo/NotebookRepo.java       | 19 +++++++++++++++++--
 .../org/apache/zeppelin/notebook/NotebookTest.java | 22 ----------------------
 9 files changed, 17 insertions(+), 108 deletions(-)

diff --git 
a/zeppelin-plugins/notebookrepo/azure/src/main/java/org/apache/zeppelin/notebook/repo/AzureNotebookRepo.java
 
b/zeppelin-plugins/notebookrepo/azure/src/main/java/org/apache/zeppelin/notebook/repo/AzureNotebookRepo.java
index ed1c41209f..72ecc47c63 100644
--- 
a/zeppelin-plugins/notebookrepo/azure/src/main/java/org/apache/zeppelin/notebook/repo/AzureNotebookRepo.java
+++ 
b/zeppelin-plugins/notebookrepo/azure/src/main/java/org/apache/zeppelin/notebook/repo/AzureNotebookRepo.java
@@ -28,9 +28,7 @@ import com.microsoft.azure.storage.file.ListFileItem;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URISyntaxException;
-import java.util.Collections;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -175,15 +173,4 @@ public class AzureNotebookRepo extends 
AbstractNotebookRepo {
   public void close() {
   }
 
-  @Override
-  public List<NotebookRepoSettingsInfo> getSettings(AuthenticationInfo 
subject) {
-    LOGGER.warn("Method not implemented");
-    return Collections.emptyList();
-  }
-
-  @Override
-  public void updateSettings(Map<String, String> settings, AuthenticationInfo 
subject) {
-    LOGGER.warn("Method not implemented");
-  }
-
 }
diff --git 
a/zeppelin-plugins/notebookrepo/filesystem/src/main/java/org/apache/zeppelin/notebook/repo/FileSystemNotebookRepo.java
 
b/zeppelin-plugins/notebookrepo/filesystem/src/main/java/org/apache/zeppelin/notebook/repo/FileSystemNotebookRepo.java
index 08085590df..973c18d412 100644
--- 
a/zeppelin-plugins/notebookrepo/filesystem/src/main/java/org/apache/zeppelin/notebook/repo/FileSystemNotebookRepo.java
+++ 
b/zeppelin-plugins/notebookrepo/filesystem/src/main/java/org/apache/zeppelin/notebook/repo/FileSystemNotebookRepo.java
@@ -28,7 +28,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -132,15 +131,4 @@ public class FileSystemNotebookRepo extends 
AbstractNotebookRepo {
     LOGGER.warn("close is not implemented for FileSystemNotebookRepo");
   }
 
-  @Override
-  public List<NotebookRepoSettingsInfo> getSettings(AuthenticationInfo 
subject) {
-    LOGGER.warn("getSettings is not implemented for FileSystemNotebookRepo");
-    return Collections.emptyList();
-  }
-
-  @Override
-  public void updateSettings(Map<String, String> settings, AuthenticationInfo 
subject) {
-    LOGGER.warn("updateSettings is not implemented for 
FileSystemNotebookRepo");
-  }
-
 }
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 8ce273474c..ee51db8663 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
@@ -34,7 +34,6 @@ import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -304,14 +303,4 @@ public class GCSNotebookRepo extends AbstractNotebookRepo {
     //no-op
   }
 
-  @Override
-  public List<NotebookRepoSettingsInfo> getSettings(AuthenticationInfo 
subject) {
-    LOGGER.warn("getSettings is not implemented for GCSNotebookRepo");
-    return Collections.emptyList();
-  }
-
-  @Override
-  public void updateSettings(Map<String, String> settings, AuthenticationInfo 
subject) {
-    LOGGER.warn("updateSettings is not implemented for GCSNotebookRepo");
-  }
 }
diff --git 
a/zeppelin-plugins/notebookrepo/mongo/src/main/java/org/apache/zeppelin/notebook/repo/MongoNotebookRepo.java
 
b/zeppelin-plugins/notebookrepo/mongo/src/main/java/org/apache/zeppelin/notebook/repo/MongoNotebookRepo.java
index a950e11156..d02589596a 100644
--- 
a/zeppelin-plugins/notebookrepo/mongo/src/main/java/org/apache/zeppelin/notebook/repo/MongoNotebookRepo.java
+++ 
b/zeppelin-plugins/notebookrepo/mongo/src/main/java/org/apache/zeppelin/notebook/repo/MongoNotebookRepo.java
@@ -332,17 +332,6 @@ public class MongoNotebookRepo extends 
AbstractNotebookRepo {
     client.close();
   }
 
-  @Override
-  public List<NotebookRepoSettingsInfo> getSettings(AuthenticationInfo 
subject) {
-    LOGGER.warn("Method not implemented");
-    return Collections.emptyList();
-  }
-
-  @Override
-  public void updateSettings(Map<String, String> settings, AuthenticationInfo 
subject) {
-    LOGGER.warn("Method not implemented");
-  }
-
   /**
    * create until parent folder if not exists.
    *
diff --git 
a/zeppelin-plugins/notebookrepo/oss/src/main/java/org/apache/zeppelin/notebook/repo/OSSNotebookRepo.java
 
b/zeppelin-plugins/notebookrepo/oss/src/main/java/org/apache/zeppelin/notebook/repo/OSSNotebookRepo.java
index 2b3cb0a636..f480d53b4a 100644
--- 
a/zeppelin-plugins/notebookrepo/oss/src/main/java/org/apache/zeppelin/notebook/repo/OSSNotebookRepo.java
+++ 
b/zeppelin-plugins/notebookrepo/oss/src/main/java/org/apache/zeppelin/notebook/repo/OSSNotebookRepo.java
@@ -184,18 +184,6 @@ public class OSSNotebookRepo extends AbstractNotebookRepo
     ossOperator.shutdown();
   }
 
-  @Override
-  public List<NotebookRepoSettingsInfo> getSettings(AuthenticationInfo 
subject) {
-    LOGGER.warn("Method not implemented");
-    return Collections.emptyList();
-  }
-
-  @Override
-  public void updateSettings(Map<String, String> settings, AuthenticationInfo 
subject) {
-    LOGGER.warn("Method not implemented");
-  }
-
-
   private static String buildRevisionsDirName(String noteId, String notePath) 
throws IOException {
     if (!notePath.startsWith("/")) {
       throw new IOException("Invalid notePath: " + notePath);
diff --git 
a/zeppelin-plugins/notebookrepo/s3/src/main/java/org/apache/zeppelin/notebook/repo/S3NotebookRepo.java
 
b/zeppelin-plugins/notebookrepo/s3/src/main/java/org/apache/zeppelin/notebook/repo/S3NotebookRepo.java
index 1c0ba6f2e2..87ebeb65ba 100644
--- 
a/zeppelin-plugins/notebookrepo/s3/src/main/java/org/apache/zeppelin/notebook/repo/S3NotebookRepo.java
+++ 
b/zeppelin-plugins/notebookrepo/s3/src/main/java/org/apache/zeppelin/notebook/repo/S3NotebookRepo.java
@@ -23,9 +23,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
-import java.util.Collections;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.io.FileUtils;
@@ -324,15 +322,4 @@ public class S3NotebookRepo extends AbstractNotebookRepo {
       s3client.shutdown();
     }
   }
-
-  @Override
-  public List<NotebookRepoSettingsInfo> getSettings(AuthenticationInfo 
subject) {
-    LOGGER.warn("Method not implemented");
-    return Collections.emptyList();
-  }
-
-  @Override
-  public void updateSettings(Map<String, String> settings, AuthenticationInfo 
subject) {
-    LOGGER.warn("Method not implemented");
-  }
 }
diff --git 
a/zeppelin-server/src/main/java/org/apache/zeppelin/notebook/repo/InMemoryNotebookRepo.java
 
b/zeppelin-server/src/main/java/org/apache/zeppelin/notebook/repo/InMemoryNotebookRepo.java
index c6df149022..7ea3fd7452 100644
--- 
a/zeppelin-server/src/main/java/org/apache/zeppelin/notebook/repo/InMemoryNotebookRepo.java
+++ 
b/zeppelin-server/src/main/java/org/apache/zeppelin/notebook/repo/InMemoryNotebookRepo.java
@@ -25,9 +25,7 @@ import org.apache.zeppelin.notebook.NoteParser;
 import org.apache.zeppelin.user.AuthenticationInfo;
 
 import java.io.IOException;
-import java.util.Collections;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 public class InMemoryNotebookRepo extends AbstractNotebookRepo {
@@ -107,16 +105,6 @@ public class InMemoryNotebookRepo extends 
AbstractNotebookRepo {
 
   }
 
-  @Override
-  public List<NotebookRepoSettingsInfo> getSettings(AuthenticationInfo 
subject) {
-    return Collections.emptyList();
-  }
-
-  @Override
-  public void updateSettings(Map<String, String> settings, AuthenticationInfo 
subject) {
-
-  }
-
   public void reset() {
     this.notes.clear();
   }
diff --git 
a/zeppelin-server/src/main/java/org/apache/zeppelin/notebook/repo/NotebookRepo.java
 
b/zeppelin-server/src/main/java/org/apache/zeppelin/notebook/repo/NotebookRepo.java
index 021a6b860d..7bd25a2bf7 100644
--- 
a/zeppelin-server/src/main/java/org/apache/zeppelin/notebook/repo/NotebookRepo.java
+++ 
b/zeppelin-server/src/main/java/org/apache/zeppelin/notebook/repo/NotebookRepo.java
@@ -23,9 +23,11 @@ import org.apache.zeppelin.notebook.Note;
 import org.apache.zeppelin.notebook.NoteParser;
 import org.apache.zeppelin.notebook.NoteInfo;
 import org.apache.zeppelin.user.AuthenticationInfo;
+import org.slf4j.LoggerFactory;
 
 import java.io.Closeable;
 import java.io.IOException;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -125,20 +127,33 @@ public interface NotebookRepo extends Closeable {
   /**
    * Get NotebookRepo settings got the given user.
    *
+   * Implementations that don't expose any configurable setting can rely on 
this default,
+   * which reports that the repo has no settings.
+   *
    * @param subject
    * @return
    */
   @ZeppelinApi
-  List<NotebookRepoSettingsInfo> getSettings(AuthenticationInfo subject);
+  default List<NotebookRepoSettingsInfo> getSettings(AuthenticationInfo 
subject) {
+    LoggerFactory.getLogger(getClass())
+        .debug("getSettings is not implemented for {}", 
getClass().getSimpleName());
+    return Collections.emptyList();
+  }
 
   /**
    * update notebook repo settings.
    *
+   * Implementations that don't expose any configurable setting can rely on 
this default,
+   * which ignores the update and warns about it.
+   *
    * @param settings
    * @param subject
    */
   @ZeppelinApi
-  void updateSettings(Map<String, String> settings, AuthenticationInfo 
subject);
+  default void updateSettings(Map<String, String> settings, AuthenticationInfo 
subject) {
+    LoggerFactory.getLogger(getClass())
+        .warn("updateSettings is not implemented for {}", 
getClass().getSimpleName());
+  }
 
   NoteParser getNoteParser();
 
diff --git 
a/zeppelin-server/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java 
b/zeppelin-server/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java
index a9a879795e..f7113944f8 100644
--- 
a/zeppelin-server/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java
+++ 
b/zeppelin-server/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java
@@ -31,7 +31,6 @@ import org.apache.zeppelin.interpreter.InterpreterResult;
 import org.apache.zeppelin.interpreter.InterpreterSetting;
 import org.apache.zeppelin.interpreter.remote.RemoteInterpreter;
 import org.apache.zeppelin.notebook.repo.NotebookRepo;
-import org.apache.zeppelin.notebook.repo.NotebookRepoSettingsInfo;
 import org.apache.zeppelin.notebook.repo.NotebookRepoWithVersionControl;
 import org.apache.zeppelin.notebook.repo.VFSNotebookRepo;
 import org.apache.zeppelin.notebook.scheduler.QuartzSchedulerService;
@@ -61,7 +60,6 @@ import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -190,16 +188,6 @@ class NotebookTest extends AbstractInterpreterTest 
implements ParagraphJobListen
 
     }
 
-    @Override
-    public List<NotebookRepoSettingsInfo> getSettings(AuthenticationInfo 
subject) {
-      return Collections.emptyList();
-    }
-
-    @Override
-    public void updateSettings(Map<String, String> settings, 
AuthenticationInfo subject) {
-
-    }
-
     @Override
     public NoteParser getNoteParser() {
       return null;
@@ -276,16 +264,6 @@ class NotebookTest extends AbstractInterpreterTest 
implements ParagraphJobListen
 
     }
 
-    @Override
-    public List<NotebookRepoSettingsInfo> getSettings(AuthenticationInfo 
subject) {
-      return Collections.emptyList();
-    }
-
-    @Override
-    public void updateSettings(Map<String, String> settings, 
AuthenticationInfo subject) {
-
-    }
-
     @Override
     public NoteParser getNoteParser() {
       return null;

Reply via email to