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" + ); + } +}
