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 e667c9397f3c69afcd94b7458d8521433d8c2d7e Author: Philipp Zehnder <[email protected]> AuthorDate: Thu Feb 12 21:46:54 2026 +0100 refactor(#4172): introduce IAssetStorage and migrate getAssetStorage to typed interface --- .../rest/impl/AssetManagementResource.java | 4 +-- .../v099/CreateAssetPermissionMigration.java | 4 +-- .../v099/RemoveDuplicatedAssetPermissions.java | 4 +-- .../streampipes/storage/api/IAssetStorage.java | 23 +++++++++++++++ .../streampipes/storage/api/INoSqlStorage.java | 3 +- .../storage/couchdb/CouchDbStorageManager.java | 11 +++----- .../storage/couchdb/impl/AssetStorageImpl.java | 33 ++++++++++++++++++++++ 7 files changed, 67 insertions(+), 15 deletions(-) diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AssetManagementResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AssetManagementResource.java index 666d3a7d84..9604ab84b6 100644 --- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AssetManagementResource.java +++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AssetManagementResource.java @@ -23,7 +23,7 @@ import org.apache.streampipes.model.client.user.DefaultPrivilege; import org.apache.streampipes.resource.management.CrudResourceManager; import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource; import org.apache.streampipes.rest.security.AuthConstants; -import org.apache.streampipes.storage.api.CRUDStorage; +import org.apache.streampipes.storage.api.IAssetStorage; import org.apache.streampipes.storage.management.StorageDispatcher; import org.springframework.http.HttpStatus; @@ -50,7 +50,7 @@ public class AssetManagementResource extends AbstractAuthGuardedRestResource { private final CrudResourceManager<SpAssetModel> resourceManager; public AssetManagementResource() { - CRUDStorage<SpAssetModel> assetStorage = StorageDispatcher.INSTANCE.getNoSqlStore().getAssetStorage(); + IAssetStorage assetStorage = StorageDispatcher.INSTANCE.getNoSqlStore().getAssetStorage(); this.resourceManager = new CrudResourceManager<>(assetStorage, SpAssetModel.class); } diff --git a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/CreateAssetPermissionMigration.java b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/CreateAssetPermissionMigration.java index 546de9ac73..cc17e7025e 100644 --- a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/CreateAssetPermissionMigration.java +++ b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/CreateAssetPermissionMigration.java @@ -21,7 +21,7 @@ package org.apache.streampipes.service.core.migrations.v099; import org.apache.streampipes.model.assets.SpAssetModel; import org.apache.streampipes.resource.management.PermissionResourceManager; import org.apache.streampipes.service.core.migrations.Migration; -import org.apache.streampipes.storage.api.CRUDStorage; +import org.apache.streampipes.storage.api.IAssetStorage; import org.apache.streampipes.storage.api.IPermissionStorage; import org.apache.streampipes.storage.management.StorageDispatcher; @@ -29,7 +29,7 @@ import java.io.IOException; public class CreateAssetPermissionMigration implements Migration { - private final CRUDStorage<SpAssetModel> assetStorage; + private final IAssetStorage assetStorage; private final IPermissionStorage permissionStorage; private final PermissionResourceManager permissionResourceManager; diff --git a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/RemoveDuplicatedAssetPermissions.java b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/RemoveDuplicatedAssetPermissions.java index b2918b23a5..3e2a495a4e 100644 --- a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/RemoveDuplicatedAssetPermissions.java +++ b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/RemoveDuplicatedAssetPermissions.java @@ -21,7 +21,7 @@ package org.apache.streampipes.service.core.migrations.v099; import org.apache.streampipes.model.assets.SpAssetModel; import org.apache.streampipes.model.client.user.Permission; import org.apache.streampipes.service.core.migrations.Migration; -import org.apache.streampipes.storage.api.CRUDStorage; +import org.apache.streampipes.storage.api.IAssetStorage; import org.apache.streampipes.storage.api.IPermissionStorage; import org.apache.streampipes.storage.management.StorageDispatcher; @@ -38,7 +38,7 @@ public class RemoveDuplicatedAssetPermissions implements Migration { private final IPermissionStorage permissionStorage = StorageDispatcher.INSTANCE.getNoSqlStore().getPermissionStorage(); - private final CRUDStorage<SpAssetModel> assetStorage = + private final IAssetStorage assetStorage = StorageDispatcher.INSTANCE.getNoSqlStore().getAssetStorage(); @Override diff --git a/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/IAssetStorage.java b/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/IAssetStorage.java new file mode 100644 index 0000000000..d2b0509c9f --- /dev/null +++ b/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/IAssetStorage.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.assets.SpAssetModel; + +public interface IAssetStorage extends CRUDStorage<SpAssetModel> { +} 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 5056a0fe11..6c40f0c6d8 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 @@ -17,7 +17,6 @@ */ package org.apache.streampipes.storage.api; -import org.apache.streampipes.model.assets.SpAssetModel; import org.apache.streampipes.model.connect.ConnectTransformationScriptTemplate; public interface INoSqlStorage { @@ -78,7 +77,7 @@ public interface INoSqlStorage { ICertificateStorage getCertificateStorage(); - CRUDStorage<SpAssetModel> getAssetStorage(); + IAssetStorage getAssetStorage(); CRUDStorage<ConnectTransformationScriptTemplate> getTransformationScriptTemplateStorage(); } 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 84c3e14109..3e02ae4b2f 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 @@ -17,10 +17,10 @@ */ package org.apache.streampipes.storage.couchdb; -import org.apache.streampipes.model.assets.SpAssetModel; import org.apache.streampipes.model.connect.ConnectTransformationScriptTemplate; import org.apache.streampipes.model.datalake.DataLakeMeasure; import org.apache.streampipes.storage.api.CRUDStorage; +import org.apache.streampipes.storage.api.IAssetStorage; import org.apache.streampipes.storage.api.IAdapterStorage; import org.apache.streampipes.storage.api.ICertificateStorage; import org.apache.streampipes.storage.api.ICompactPipelineTemplateStorage; @@ -51,6 +51,7 @@ import org.apache.streampipes.storage.api.IUserGroupStorage; import org.apache.streampipes.storage.api.IUserStorage; import org.apache.streampipes.storage.couchdb.impl.AdapterDescriptionStorageImpl; import org.apache.streampipes.storage.couchdb.impl.AdapterInstanceStorageImpl; +import org.apache.streampipes.storage.couchdb.impl.AssetStorageImpl; import org.apache.streampipes.storage.couchdb.impl.CertificateStorageImpl; import org.apache.streampipes.storage.couchdb.impl.CoreConfigurationStorageImpl; import org.apache.streampipes.storage.couchdb.impl.CompactPipelineTemplateStorageImpl; @@ -227,12 +228,8 @@ public class CouchDbStorageManager implements INoSqlStorage { } @Override - public CRUDStorage<SpAssetModel> getAssetStorage() { - return new DefaultViewCrudStorage<>( - () -> Utils.getCouchDbGsonClient("genericstorage"), - SpAssetModel.class, - "assets/all-assets" - ); + public IAssetStorage getAssetStorage() { + return new AssetStorageImpl(); } @Override diff --git a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/AssetStorageImpl.java b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/AssetStorageImpl.java new file mode 100644 index 0000000000..1774810798 --- /dev/null +++ b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/AssetStorageImpl.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.assets.SpAssetModel; +import org.apache.streampipes.storage.api.IAssetStorage; +import org.apache.streampipes.storage.couchdb.utils.Utils; + +public class AssetStorageImpl extends DefaultViewCrudStorage<SpAssetModel> implements IAssetStorage { + + public AssetStorageImpl() { + super( + () -> Utils.getCouchDbGsonClient("genericstorage"), + SpAssetModel.class, + "assets/all-assets" + ); + } +}
