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

zehnder pushed a commit to branch 
4172-use-domain-storage-interfaces-instead-of-crudstorage-in-inosqlstorage
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit dafac582f20e619014ab20bac014e10bbfa89a0e
Author: Philipp Zehnder <[email protected]>
AuthorDate: Thu Feb 12 21:41:06 2026 +0100

    refactor(#4172): introduce IPrivilegeStorage and migrate 
getPrivilegeStorage to typed interface
---
 .../tasks/ApplyDefaultRolesAndPrivilegesTask.java  |  3 +-
 .../v099/RemoveObsoletePrivilegesMigration.java    |  4 +--
 .../streampipes/storage/api/INoSqlStorage.java     |  3 +-
 .../streampipes/storage/api/IPrivilegeStorage.java | 23 +++++++++++++++
 .../storage/couchdb/CouchDbStorageManager.java     |  7 +++--
 .../storage/couchdb/impl/PrivilegeStorageImpl.java | 33 ++++++++++++++++++++++
 6 files changed, 65 insertions(+), 8 deletions(-)

diff --git 
a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/tasks/ApplyDefaultRolesAndPrivilegesTask.java
 
b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/tasks/ApplyDefaultRolesAndPrivilegesTask.java
index 58beb87bc4..599c7c73de 100644
--- 
a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/tasks/ApplyDefaultRolesAndPrivilegesTask.java
+++ 
b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/tasks/ApplyDefaultRolesAndPrivilegesTask.java
@@ -22,6 +22,7 @@ import org.apache.streampipes.model.client.user.Privilege;
 import org.apache.streampipes.model.client.user.Role;
 import org.apache.streampipes.model.shared.api.Storable;
 import org.apache.streampipes.storage.api.CRUDStorage;
+import org.apache.streampipes.storage.api.IPrivilegeStorage;
 import org.apache.streampipes.storage.api.IRoleStorage;
 import org.apache.streampipes.storage.management.StorageDispatcher;
 import org.apache.streampipes.user.management.authorization.PrivilegeManager;
@@ -37,7 +38,7 @@ public class ApplyDefaultRolesAndPrivilegesTask implements 
InstallationTask {
   private static final Logger LOG = 
LoggerFactory.getLogger(ApplyDefaultRolesAndPrivilegesTask.class);
 
   private final IRoleStorage roleStorage;
-  private final CRUDStorage<Privilege> privilegeStorage;
+  private final IPrivilegeStorage privilegeStorage;
 
   public ApplyDefaultRolesAndPrivilegesTask() {
     this.roleStorage = 
StorageDispatcher.INSTANCE.getNoSqlStore().getRoleStorage();
diff --git 
a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/RemoveObsoletePrivilegesMigration.java
 
b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/RemoveObsoletePrivilegesMigration.java
index f40bfbac8d..b03e77fc6d 100644
--- 
a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/RemoveObsoletePrivilegesMigration.java
+++ 
b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/RemoveObsoletePrivilegesMigration.java
@@ -20,7 +20,7 @@ package org.apache.streampipes.service.core.migrations.v099;
 
 import org.apache.streampipes.model.client.user.Privilege;
 import org.apache.streampipes.service.core.migrations.Migration;
-import org.apache.streampipes.storage.api.CRUDStorage;
+import org.apache.streampipes.storage.api.IPrivilegeStorage;
 import org.apache.streampipes.storage.management.StorageDispatcher;
 
 import java.io.IOException;
@@ -28,7 +28,7 @@ import java.util.List;
 
 public class RemoveObsoletePrivilegesMigration implements Migration {
 
-  public CRUDStorage<Privilege> privilegeStorage;
+  public IPrivilegeStorage privilegeStorage;
 
   private static final List<String> privilegesToRemove = List.of(
       "PRIVILEGE_READ_DASHBOARD_WIDGET",
diff --git 
a/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/INoSqlStorage.java
 
b/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/INoSqlStorage.java
index 4a6a76b5cf..0ba09699c6 100644
--- 
a/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/INoSqlStorage.java
+++ 
b/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/INoSqlStorage.java
@@ -18,7 +18,6 @@
 package org.apache.streampipes.storage.api;
 
 import org.apache.streampipes.model.assets.SpAssetModel;
-import org.apache.streampipes.model.client.user.Privilege;
 import 
org.apache.streampipes.model.connect.ConnectTransformationScriptTemplate;
 import org.apache.streampipes.model.opcua.Certificate;
 import org.apache.streampipes.model.template.CompactPipelineTemplate;
@@ -75,7 +74,7 @@ public interface INoSqlStorage {
 
   IRoleStorage getRoleStorage();
 
-  CRUDStorage<Privilege> getPrivilegeStorage();
+  IPrivilegeStorage getPrivilegeStorage();
 
   CRUDStorage<CompactPipelineTemplate> getPipelineTemplateStorage();
 
diff --git 
a/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/IPrivilegeStorage.java
 
b/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/IPrivilegeStorage.java
new file mode 100644
index 0000000000..c04224974d
--- /dev/null
+++ 
b/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/IPrivilegeStorage.java
@@ -0,0 +1,23 @@
+/*
+ * 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.streampipes.storage.api;
+
+import org.apache.streampipes.model.client.user.Privilege;
+
+public interface IPrivilegeStorage extends CRUDStorage<Privilege> {
+}
diff --git 
a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/CouchDbStorageManager.java
 
b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/CouchDbStorageManager.java
index 0fcfc67160..bb1e9b62cf 100644
--- 
a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/CouchDbStorageManager.java
+++ 
b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/CouchDbStorageManager.java
@@ -18,7 +18,6 @@
 package org.apache.streampipes.storage.couchdb;
 
 import org.apache.streampipes.model.assets.SpAssetModel;
-import org.apache.streampipes.model.client.user.Privilege;
 import 
org.apache.streampipes.model.connect.ConnectTransformationScriptTemplate;
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
 import org.apache.streampipes.model.opcua.Certificate;
@@ -44,6 +43,7 @@ import 
org.apache.streampipes.storage.api.IPipelineCanvasMetadataStorage;
 import org.apache.streampipes.storage.api.IPipelineElementDescriptionStorage;
 import org.apache.streampipes.storage.api.IPipelineElementTemplateStorage;
 import org.apache.streampipes.storage.api.IPipelineStorage;
+import org.apache.streampipes.storage.api.IPrivilegeStorage;
 import org.apache.streampipes.storage.api.IRoleStorage;
 import org.apache.streampipes.storage.api.ISpCoreConfigurationStorage;
 import org.apache.streampipes.storage.api.IUserActivationTokenStorage;
@@ -72,6 +72,7 @@ import 
org.apache.streampipes.storage.couchdb.impl.PipelineCanvasMetadataStorage
 import 
org.apache.streampipes.storage.couchdb.impl.PipelineElementDescriptionStorageImpl;
 import 
org.apache.streampipes.storage.couchdb.impl.PipelineElementTemplateStorageImpl;
 import org.apache.streampipes.storage.couchdb.impl.PipelineStorageImpl;
+import org.apache.streampipes.storage.couchdb.impl.PrivilegeStorageImpl;
 import org.apache.streampipes.storage.couchdb.impl.RoleStorageImpl;
 import 
org.apache.streampipes.storage.couchdb.impl.UserActivationTokenStorageImpl;
 import org.apache.streampipes.storage.couchdb.impl.UserGroupStorageImpl;
@@ -209,8 +210,8 @@ public class CouchDbStorageManager implements INoSqlStorage 
{
   }
 
   @Override
-  public CRUDStorage<Privilege> getPrivilegeStorage() {
-    return new DefaultViewCrudStorage<>(Utils::getCouchDbUserClient, 
Privilege.class, "users/privilege");
+  public IPrivilegeStorage getPrivilegeStorage() {
+    return new PrivilegeStorageImpl();
   }
 
   @Override
diff --git 
a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/PrivilegeStorageImpl.java
 
b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/PrivilegeStorageImpl.java
new file mode 100644
index 0000000000..451970831c
--- /dev/null
+++ 
b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/PrivilegeStorageImpl.java
@@ -0,0 +1,33 @@
+/*
+ * 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.streampipes.storage.couchdb.impl;
+
+import org.apache.streampipes.model.client.user.Privilege;
+import org.apache.streampipes.storage.api.IPrivilegeStorage;
+import org.apache.streampipes.storage.couchdb.utils.Utils;
+
+public class PrivilegeStorageImpl extends DefaultViewCrudStorage<Privilege> 
implements IPrivilegeStorage {
+
+  public PrivilegeStorageImpl() {
+    super(
+        Utils::getCouchDbUserClient,
+        Privilege.class,
+        "users/privilege"
+    );
+  }
+}

Reply via email to