This is an automated email from the ASF dual-hosted git repository.
pdallig 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 5051bf0a45 [ZEPPELIN-6251] Refactor AuthenticationService binding
using factory method
5051bf0a45 is described below
commit 5051bf0a4564594a816c379fedd503ec6721be2e
Author: Gyeongtae Park <[email protected]>
AuthorDate: Mon Jul 21 17:44:17 2025 +0900
[ZEPPELIN-6251] Refactor AuthenticationService binding using factory method
### What is this PR for?
This PR refactors the conditional binding logic for AuthenticationService
in ZeppelinServer.java.
Previously, the binding decision between ShiroAuthenticationService and
NoAuthenticationService was handled via an inline if-else block.
To improve readability and maintainability, this logic has been moved to a
new AuthenticationServiceFactory class that encapsulates the decision process.
This change simplifies the server initialization logic and promotes better
separation of concerns.
### What type of PR is it?
Refactoring
### Todos
* [x] - Add AuthenticationServiceFactory class
* [x] - Replace inline if-else binding logic in ZeppelinServer
### What is the Jira issue?
* Jira: https://issues.apache.org/jira/browse/ZEPPELIN-6251
### How should this be tested?
There should be no functional change.
### Screenshots (if appropriate)
N/A
### Questions:
* Does the license files need to update? No.
* Is there breaking changes for older versions? No.
* Does this needs documentation? No.
Closes #4988 from ParkGyeongTae/ZEPPELIN-6251.
Signed-off-by: Philipp Dallig <[email protected]>
---
.../org/apache/zeppelin/server/ZeppelinServer.java | 11 +++----
.../service/auth/AuthenticationServiceFactory.java | 34 ++++++++++++++++++++++
2 files changed, 38 insertions(+), 7 deletions(-)
diff --git
a/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java
b/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java
index 4753babc4e..eca789e38b 100644
---
a/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java
+++
b/zeppelin-server/src/main/java/org/apache/zeppelin/server/ZeppelinServer.java
@@ -92,6 +92,7 @@ import org.apache.zeppelin.search.NoSearchService;
import org.apache.zeppelin.search.SearchService;
import org.apache.zeppelin.service.*;
import org.apache.zeppelin.service.AuthenticationService;
+import org.apache.zeppelin.service.auth.AuthenticationServiceFactory;
import org.apache.zeppelin.socket.ConnectionManager;
import org.apache.zeppelin.socket.NotebookServer;
import org.apache.zeppelin.socket.SessionConfigurator;
@@ -188,13 +189,9 @@ public class ZeppelinServer implements AutoCloseable {
bindAsContract(AuthorizationService.class).in(Singleton.class);
bindAsContract(ConnectionManager.class).in(Singleton.class);
bindAsContract(NoteManager.class).in(Singleton.class);
- // TODO(jl): Will make it more beautiful
- if (!StringUtils.isBlank(zConf.getShiroPath())) {
-
bind(ShiroAuthenticationService.class).to(AuthenticationService.class).in(Singleton.class);
- } else {
- // TODO(jl): Will be added more type
-
bind(NoAuthenticationService.class).to(AuthenticationService.class).in(Singleton.class);
- }
+ bind(AuthenticationServiceFactory.getAuthServiceClass(zConf))
+ .to(AuthenticationService.class)
+ .in(Singleton.class);
bindAsContract(HeliumBundleFactory.class).in(Singleton.class);
bindAsContract(HeliumApplicationFactory.class).in(Singleton.class);
bindAsContract(ConfigurationService.class).in(Singleton.class);
diff --git
a/zeppelin-server/src/main/java/org/apache/zeppelin/service/auth/AuthenticationServiceFactory.java
b/zeppelin-server/src/main/java/org/apache/zeppelin/service/auth/AuthenticationServiceFactory.java
new file mode 100644
index 0000000000..51a8fa997e
--- /dev/null
+++
b/zeppelin-server/src/main/java/org/apache/zeppelin/service/auth/AuthenticationServiceFactory.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.zeppelin.service.auth;
+
+import org.apache.zeppelin.conf.ZeppelinConfiguration;
+import org.apache.zeppelin.service.AuthenticationService;
+import org.apache.zeppelin.service.NoAuthenticationService;
+import org.apache.zeppelin.service.ShiroAuthenticationService;
+
+public class AuthenticationServiceFactory {
+
+ public static Class<? extends AuthenticationService>
getAuthServiceClass(ZeppelinConfiguration zConf) {
+ if (!zConf.getShiroPath().isBlank()) {
+ return ShiroAuthenticationService.class;
+ } else {
+ return NoAuthenticationService.class;
+ }
+ }
+}