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;