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

Reply via email to