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 a8c2362824b14931e3b9719ca97e3abcc45c51cd
Author: Philipp Zehnder <[email protected]>
AuthorDate: Thu Feb 12 21:43:14 2026 +0100

    refactor(#4172): introduce ICompactPipelineTemplateStorage and migrate 
getPipelineTemplateStorage to typed interface
---
 .../management/compact/PersistPipelineHandler.java |  6 +++---
 .../tasks/AddDefaultPipelineTemplatesTask.java     |  7 +++----
 .../compact/CompactPipelineTemplateManagement.java |  6 +++---
 .../streampipes/rest/impl/PipelineTemplate.java    |  4 ++--
 .../v970/AddDataLakePipelineTemplateMigration.java |  5 ++---
 .../api/ICompactPipelineTemplateStorage.java       | 18 ++--------------
 .../streampipes/storage/api/INoSqlStorage.java     |  3 +--
 .../storage/couchdb/CouchDbStorageManager.java     | 10 ++++-----
 .../impl/CompactPipelineTemplateStorageImpl.java   | 24 +++++++++-------------
 9 files changed, 30 insertions(+), 53 deletions(-)

diff --git 
a/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/compact/PersistPipelineHandler.java
 
b/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/compact/PersistPipelineHandler.java
index 8b53e019f6..bcf83acf0a 100644
--- 
a/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/compact/PersistPipelineHandler.java
+++ 
b/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/compact/PersistPipelineHandler.java
@@ -29,7 +29,7 @@ import org.apache.streampipes.model.schema.EventProperty;
 import org.apache.streampipes.model.schema.EventPropertyPrimitive;
 import org.apache.streampipes.model.schema.PropertyScope;
 import org.apache.streampipes.model.template.CompactPipelineTemplate;
-import org.apache.streampipes.storage.api.CRUDStorage;
+import org.apache.streampipes.storage.api.ICompactPipelineTemplateStorage;
 import org.apache.streampipes.vocabulary.SO;
 
 import java.util.List;
@@ -43,11 +43,11 @@ import static 
org.apache.streampipes.manager.template.instances.PersistDataLakeP
 
 public class PersistPipelineHandler {
 
-  private final CRUDStorage<CompactPipelineTemplate> templateStorage;
+  private final ICompactPipelineTemplateStorage templateStorage;
   private final CompactPipelineManagement pipelineManagement;
   private final String authenticatedUserSid;
 
-  public PersistPipelineHandler(CRUDStorage<CompactPipelineTemplate> 
templateStorage,
+  public PersistPipelineHandler(ICompactPipelineTemplateStorage 
templateStorage,
                                 CompactPipelineManagement pipelineManagement,
                                 String authenticatedUserSid) {
     this.templateStorage = templateStorage;
diff --git 
a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/tasks/AddDefaultPipelineTemplatesTask.java
 
b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/tasks/AddDefaultPipelineTemplatesTask.java
index 23ed1efbce..47f0c0f7d0 100644
--- 
a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/tasks/AddDefaultPipelineTemplatesTask.java
+++ 
b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/tasks/AddDefaultPipelineTemplatesTask.java
@@ -19,14 +19,13 @@
 package org.apache.streampipes.manager.setup.tasks;
 
 import 
org.apache.streampipes.manager.template.instances.PersistDataLakePipelineTemplate;
-import org.apache.streampipes.model.template.CompactPipelineTemplate;
-import org.apache.streampipes.storage.api.CRUDStorage;
+import org.apache.streampipes.storage.api.ICompactPipelineTemplateStorage;
 
 public class AddDefaultPipelineTemplatesTask implements InstallationTask {
 
-  CRUDStorage<CompactPipelineTemplate> storage;
+  ICompactPipelineTemplateStorage storage;
 
-  public AddDefaultPipelineTemplatesTask(CRUDStorage<CompactPipelineTemplate> 
storage) {
+  public AddDefaultPipelineTemplatesTask(ICompactPipelineTemplateStorage 
storage) {
     this.storage = storage;
   }
 
diff --git 
a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/template/compact/CompactPipelineTemplateManagement.java
 
b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/template/compact/CompactPipelineTemplateManagement.java
index 1238a0aeda..b43d9c270b 100644
--- 
a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/template/compact/CompactPipelineTemplateManagement.java
+++ 
b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/template/compact/CompactPipelineTemplateManagement.java
@@ -25,7 +25,7 @@ import 
org.apache.streampipes.model.pipeline.PipelineModificationResult;
 import org.apache.streampipes.model.pipeline.compact.CompactPipelineElement;
 import org.apache.streampipes.model.template.CompactPipelineTemplate;
 import org.apache.streampipes.model.template.PipelineTemplateGenerationRequest;
-import org.apache.streampipes.storage.api.CRUDStorage;
+import org.apache.streampipes.storage.api.ICompactPipelineTemplateStorage;
 import org.apache.streampipes.storage.api.IPipelineElementDescriptionStorage;
 
 import java.util.List;
@@ -39,9 +39,9 @@ import static 
org.apache.streampipes.manager.pipeline.compact.generation.Invocab
 public class CompactPipelineTemplateManagement {
 
   private final IPipelineElementDescriptionStorage storage;
-  private final CRUDStorage<CompactPipelineTemplate> templateStorage;
+  private final ICompactPipelineTemplateStorage templateStorage;
 
-  public 
CompactPipelineTemplateManagement(CRUDStorage<CompactPipelineTemplate> 
templateStorage,
+  public CompactPipelineTemplateManagement(ICompactPipelineTemplateStorage 
templateStorage,
                                            IPipelineElementDescriptionStorage 
descriptionStorage) {
     this.templateStorage = templateStorage;
     this.storage = descriptionStorage;
diff --git 
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineTemplate.java
 
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineTemplate.java
index ab36c1d0ed..127aced958 100644
--- 
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineTemplate.java
+++ 
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineTemplate.java
@@ -24,7 +24,7 @@ import 
org.apache.streampipes.model.template.PipelineTemplateGenerationRequest;
 import 
org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 import org.apache.streampipes.rest.shared.constants.SpMediaType;
 import org.apache.streampipes.rest.shared.exception.BadRequestException;
-import org.apache.streampipes.storage.api.CRUDStorage;
+import org.apache.streampipes.storage.api.ICompactPipelineTemplateStorage;
 import org.apache.streampipes.storage.management.StorageDispatcher;
 
 import org.springframework.http.MediaType;
@@ -46,7 +46,7 @@ import java.util.Map;
 @RequestMapping("/api/v2/pipeline-templates")
 public class PipelineTemplate extends AbstractAuthGuardedRestResource {
 
-  private final CRUDStorage<CompactPipelineTemplate> storage;
+  private final ICompactPipelineTemplateStorage storage;
   private final CompactPipelineTemplateManagement templateManagement;
 
   public PipelineTemplate() {
diff --git 
a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v970/AddDataLakePipelineTemplateMigration.java
 
b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v970/AddDataLakePipelineTemplateMigration.java
index fd7fced44b..df5f1b60bf 100644
--- 
a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v970/AddDataLakePipelineTemplateMigration.java
+++ 
b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v970/AddDataLakePipelineTemplateMigration.java
@@ -19,16 +19,15 @@
 package org.apache.streampipes.service.core.migrations.v970;
 
 import 
org.apache.streampipes.manager.template.instances.PersistDataLakePipelineTemplate;
-import org.apache.streampipes.model.template.CompactPipelineTemplate;
 import org.apache.streampipes.service.core.migrations.Migration;
-import org.apache.streampipes.storage.api.CRUDStorage;
+import org.apache.streampipes.storage.api.ICompactPipelineTemplateStorage;
 import org.apache.streampipes.storage.management.StorageDispatcher;
 
 import java.io.IOException;
 
 public class AddDataLakePipelineTemplateMigration implements Migration {
 
-  private final CRUDStorage<CompactPipelineTemplate> storage;
+  private final ICompactPipelineTemplateStorage storage;
 
   public AddDataLakePipelineTemplateMigration() {
     this.storage = 
StorageDispatcher.INSTANCE.getNoSqlStore().getPipelineTemplateStorage();
diff --git 
a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/tasks/AddDefaultPipelineTemplatesTask.java
 
b/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/ICompactPipelineTemplateStorage.java
similarity index 61%
copy from 
streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/tasks/AddDefaultPipelineTemplatesTask.java
copy to 
streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/ICompactPipelineTemplateStorage.java
index 23ed1efbce..c78a8b5345 100644
--- 
a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/tasks/AddDefaultPipelineTemplatesTask.java
+++ 
b/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/ICompactPipelineTemplateStorage.java
@@ -15,23 +15,9 @@
  * limitations under the License.
  *
  */
+package org.apache.streampipes.storage.api;
 
-package org.apache.streampipes.manager.setup.tasks;
-
-import 
org.apache.streampipes.manager.template.instances.PersistDataLakePipelineTemplate;
 import org.apache.streampipes.model.template.CompactPipelineTemplate;
-import org.apache.streampipes.storage.api.CRUDStorage;
-
-public class AddDefaultPipelineTemplatesTask implements InstallationTask {
-
-  CRUDStorage<CompactPipelineTemplate> storage;
-
-  public AddDefaultPipelineTemplatesTask(CRUDStorage<CompactPipelineTemplate> 
storage) {
-    this.storage = storage;
-  }
 
-  @Override
-  public void execute() {
-    storage.persist(new PersistDataLakePipelineTemplate().getTemplate());
-  }
+public interface ICompactPipelineTemplateStorage extends 
CRUDStorage<CompactPipelineTemplate> {
 }
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 0ba09699c6..394977598f 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
@@ -20,7 +20,6 @@ package org.apache.streampipes.storage.api;
 import org.apache.streampipes.model.assets.SpAssetModel;
 import 
org.apache.streampipes.model.connect.ConnectTransformationScriptTemplate;
 import org.apache.streampipes.model.opcua.Certificate;
-import org.apache.streampipes.model.template.CompactPipelineTemplate;
 
 public interface INoSqlStorage {
 
@@ -76,7 +75,7 @@ public interface INoSqlStorage {
 
   IPrivilegeStorage getPrivilegeStorage();
 
-  CRUDStorage<CompactPipelineTemplate> getPipelineTemplateStorage();
+  ICompactPipelineTemplateStorage getPipelineTemplateStorage();
 
   CRUDStorage<Certificate> getCertificateStorage();
 
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 bb1e9b62cf..b8a5f5e2d7 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
@@ -21,9 +21,9 @@ 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.model.opcua.Certificate;
-import org.apache.streampipes.model.template.CompactPipelineTemplate;
 import org.apache.streampipes.storage.api.CRUDStorage;
 import org.apache.streampipes.storage.api.IAdapterStorage;
+import org.apache.streampipes.storage.api.ICompactPipelineTemplateStorage;
 import org.apache.streampipes.storage.api.IDataLakeMeasureStorage;
 import org.apache.streampipes.storage.api.IDataExplorerDashboardStorage;
 import org.apache.streampipes.storage.api.IDataExplorerWidgetStorage;
@@ -52,6 +52,7 @@ 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.CoreConfigurationStorageImpl;
+import 
org.apache.streampipes.storage.couchdb.impl.CompactPipelineTemplateStorageImpl;
 import org.apache.streampipes.storage.couchdb.impl.DataLakeMeasureStorage;
 import 
org.apache.streampipes.storage.couchdb.impl.DataExplorerDashboardStorageImpl;
 import 
org.apache.streampipes.storage.couchdb.impl.DataExplorerWidgetStorageImpl;
@@ -215,11 +216,8 @@ public class CouchDbStorageManager implements 
INoSqlStorage {
   }
 
   @Override
-  public CRUDStorage<CompactPipelineTemplate> getPipelineTemplateStorage() {
-    return new DefaultCrudStorage<>(
-        () -> Utils.getCouchDbGsonClient("pipeline-templates"),
-        CompactPipelineTemplate.class
-    );
+  public ICompactPipelineTemplateStorage getPipelineTemplateStorage() {
+    return new CompactPipelineTemplateStorageImpl();
   }
 
   @Override
diff --git 
a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/tasks/AddDefaultPipelineTemplatesTask.java
 
b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/CompactPipelineTemplateStorageImpl.java
similarity index 61%
copy from 
streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/tasks/AddDefaultPipelineTemplatesTask.java
copy to 
streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/CompactPipelineTemplateStorageImpl.java
index 23ed1efbce..2199d77e44 100644
--- 
a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/tasks/AddDefaultPipelineTemplatesTask.java
+++ 
b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/CompactPipelineTemplateStorageImpl.java
@@ -15,23 +15,19 @@
  * limitations under the License.
  *
  */
+package org.apache.streampipes.storage.couchdb.impl;
 
-package org.apache.streampipes.manager.setup.tasks;
-
-import 
org.apache.streampipes.manager.template.instances.PersistDataLakePipelineTemplate;
 import org.apache.streampipes.model.template.CompactPipelineTemplate;
-import org.apache.streampipes.storage.api.CRUDStorage;
-
-public class AddDefaultPipelineTemplatesTask implements InstallationTask {
+import org.apache.streampipes.storage.api.ICompactPipelineTemplateStorage;
+import org.apache.streampipes.storage.couchdb.utils.Utils;
 
-  CRUDStorage<CompactPipelineTemplate> storage;
-
-  public AddDefaultPipelineTemplatesTask(CRUDStorage<CompactPipelineTemplate> 
storage) {
-    this.storage = storage;
-  }
+public class CompactPipelineTemplateStorageImpl extends 
DefaultCrudStorage<CompactPipelineTemplate>
+    implements ICompactPipelineTemplateStorage {
 
-  @Override
-  public void execute() {
-    storage.persist(new PersistDataLakePipelineTemplate().getTemplate());
+  public CompactPipelineTemplateStorageImpl() {
+    super(
+        () -> Utils.getCouchDbGsonClient("pipeline-templates"),
+        CompactPipelineTemplate.class
+    );
   }
 }

Reply via email to