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 0c295b71f8182b62bc144eb00eba6e39ad992f47
Author: Philipp Zehnder <[email protected]>
AuthorDate: Thu Feb 12 21:28:00 2026 +0100

    refactor(#4172): introduce IDataExplorerDashboardStorage and migrate 
getDataExplorerDashboardStorage to typed interface
---
 .../datalake/KioskDashboardDataLakeResource.java   |  4 +--
 .../v099/UniqueDashboardIdMigration.java           |  4 +--
 .../v970/DataExplorerDataViewMigration.java        |  3 +-
 .../storage/api/IDataExplorerDashboardStorage.java | 23 +++++++++++++++
 .../streampipes/storage/api/INoSqlStorage.java     |  3 +-
 .../storage/couchdb/CouchDbStorageManager.java     | 10 +++----
 .../impl/DataExplorerDashboardStorageImpl.java     | 33 ++++++++++++++++++++++
 7 files changed, 67 insertions(+), 13 deletions(-)

diff --git 
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/KioskDashboardDataLakeResource.java
 
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/KioskDashboardDataLakeResource.java
index 885fd80dff..7d2f99e166 100644
--- 
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/KioskDashboardDataLakeResource.java
+++ 
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/KioskDashboardDataLakeResource.java
@@ -29,6 +29,7 @@ import 
org.apache.streampipes.model.datalake.param.ProvidedRestQueryParams;
 import org.apache.streampipes.model.monitoring.SpLogMessage;
 import 
org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 import org.apache.streampipes.storage.api.CRUDStorage;
+import org.apache.streampipes.storage.api.IDataExplorerDashboardStorage;
 import org.apache.streampipes.storage.api.IPermissionStorage;
 import org.apache.streampipes.storage.management.StorageDispatcher;
 
@@ -50,7 +51,7 @@ public class KioskDashboardDataLakeResource extends 
AbstractAuthGuardedRestResou
 
   private final IDataExplorerQueryManagement dataExplorerQueryManagement;
   private final IDataExplorerSchemaManagement dataExplorerSchemaManagement;
-  private final CRUDStorage<DashboardModel> dashboardStorage =
+  private final IDataExplorerDashboardStorage dashboardStorage =
       
StorageDispatcher.INSTANCE.getNoSqlStore().getDataExplorerDashboardStorage();
   private final CRUDStorage<DataExplorerWidgetModel> dataExplorerWidgetStorage;
   private final IPermissionStorage permissionStorage;
@@ -127,4 +128,3 @@ public class KioskDashboardDataLakeResource extends 
AbstractAuthGuardedRestResou
     return !perms.isEmpty() && perms.get(0).isReadAnonymous();
   }
 }
-
diff --git 
a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/UniqueDashboardIdMigration.java
 
b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/UniqueDashboardIdMigration.java
index 47c286ab5f..a04d99abef 100644
--- 
a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/UniqueDashboardIdMigration.java
+++ 
b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/UniqueDashboardIdMigration.java
@@ -20,7 +20,7 @@ package org.apache.streampipes.service.core.migrations.v099;
 
 import org.apache.streampipes.model.dashboard.DashboardModel;
 import org.apache.streampipes.service.core.migrations.Migration;
-import org.apache.streampipes.storage.api.CRUDStorage;
+import org.apache.streampipes.storage.api.IDataExplorerDashboardStorage;
 import org.apache.streampipes.storage.management.StorageDispatcher;
 
 import org.apache.commons.lang3.RandomStringUtils;
@@ -30,7 +30,7 @@ import java.util.Objects;
 
 public class UniqueDashboardIdMigration implements Migration {
 
-  private final CRUDStorage<DashboardModel> dashboardStorage;
+  private final IDataExplorerDashboardStorage dashboardStorage;
   private static final String Prefix = "sp:dataexplorerwidgetmodel";
 
   public UniqueDashboardIdMigration() {
diff --git 
a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v970/DataExplorerDataViewMigration.java
 
b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v970/DataExplorerDataViewMigration.java
index c078ef980b..57b93a2f5e 100644
--- 
a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v970/DataExplorerDataViewMigration.java
+++ 
b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v970/DataExplorerDataViewMigration.java
@@ -24,6 +24,7 @@ import 
org.apache.streampipes.model.datalake.DataExplorerWidgetModel;
 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.IDataExplorerDashboardStorage;
 import org.apache.streampipes.storage.management.StorageDispatcher;
 
 import org.slf4j.Logger;
@@ -45,7 +46,7 @@ public class DataExplorerDataViewMigration implements 
Migration {
   private static final Logger LOG = 
LoggerFactory.getLogger(DataExplorerDataViewMigration.class);
 
   private final CRUDStorage<DataExplorerWidgetModel> dataViewStorage;
-  private final CRUDStorage<DashboardModel> dataExplorerDashboardStorage;
+  private final IDataExplorerDashboardStorage dataExplorerDashboardStorage;
   private final PermissionResourceManager permissionResourceManager;
 
   public DataExplorerDataViewMigration() {
diff --git 
a/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/IDataExplorerDashboardStorage.java
 
b/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/IDataExplorerDashboardStorage.java
new file mode 100644
index 0000000000..483729859c
--- /dev/null
+++ 
b/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/IDataExplorerDashboardStorage.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.dashboard.DashboardModel;
+
+public interface IDataExplorerDashboardStorage extends 
CRUDStorage<DashboardModel> {
+}
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 0250c553e9..1dee601616 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
@@ -23,7 +23,6 @@ import org.apache.streampipes.model.client.user.Privilege;
 import org.apache.streampipes.model.client.user.Role;
 import org.apache.streampipes.model.client.user.UserActivationToken;
 import 
org.apache.streampipes.model.connect.ConnectTransformationScriptTemplate;
-import org.apache.streampipes.model.dashboard.DashboardModel;
 import org.apache.streampipes.model.datalake.DataExplorerWidgetModel;
 import 
org.apache.streampipes.model.extensions.configuration.SpServiceConfiguration;
 import 
org.apache.streampipes.model.extensions.svcdiscovery.SpServiceRegistration;
@@ -52,7 +51,7 @@ public interface INoSqlStorage {
 
   IFileMetadataStorage getFileMetadataStorage();
 
-  CRUDStorage<DashboardModel> getDataExplorerDashboardStorage();
+  IDataExplorerDashboardStorage getDataExplorerDashboardStorage();
 
   CRUDStorage<DataExplorerWidgetModel> getDataExplorerWidgetStorage();
 
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 0e42a329ca..1dc5dafd99 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
@@ -23,7 +23,6 @@ import org.apache.streampipes.model.client.user.Privilege;
 import org.apache.streampipes.model.client.user.Role;
 import org.apache.streampipes.model.client.user.UserActivationToken;
 import 
org.apache.streampipes.model.connect.ConnectTransformationScriptTemplate;
-import org.apache.streampipes.model.dashboard.DashboardModel;
 import org.apache.streampipes.model.datalake.DataExplorerWidgetModel;
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
 import 
org.apache.streampipes.model.extensions.configuration.SpServiceConfiguration;
@@ -33,6 +32,7 @@ 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.IDataLakeMeasureStorage;
+import org.apache.streampipes.storage.api.IDataExplorerDashboardStorage;
 import org.apache.streampipes.storage.api.IDataProcessorStorage;
 import org.apache.streampipes.storage.api.IDataSinkStorage;
 import org.apache.streampipes.storage.api.IDataStreamStorage;
@@ -53,6 +53,7 @@ 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.DataLakeMeasureStorage;
+import 
org.apache.streampipes.storage.couchdb.impl.DataExplorerDashboardStorageImpl;
 import org.apache.streampipes.storage.couchdb.impl.DataProcessorStorageImpl;
 import org.apache.streampipes.storage.couchdb.impl.DataSinkStorageImpl;
 import org.apache.streampipes.storage.couchdb.impl.DataStreamStorageImpl;
@@ -127,11 +128,8 @@ public class CouchDbStorageManager implements 
INoSqlStorage {
   }
 
   @Override
-  public CRUDStorage<DashboardModel> getDataExplorerDashboardStorage() {
-    return new DefaultCrudStorage<>(
-        () -> Utils.getCouchDbGsonClient("dataexplorerdashboard"),
-        DashboardModel.class
-    );
+  public IDataExplorerDashboardStorage getDataExplorerDashboardStorage() {
+    return new DataExplorerDashboardStorageImpl();
   }
 
   @Override
diff --git 
a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/DataExplorerDashboardStorageImpl.java
 
b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/DataExplorerDashboardStorageImpl.java
new file mode 100644
index 0000000000..cba6309133
--- /dev/null
+++ 
b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/DataExplorerDashboardStorageImpl.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.dashboard.DashboardModel;
+import org.apache.streampipes.storage.api.IDataExplorerDashboardStorage;
+import org.apache.streampipes.storage.couchdb.utils.Utils;
+
+public class DataExplorerDashboardStorageImpl extends 
DefaultCrudStorage<DashboardModel>
+    implements IDataExplorerDashboardStorage {
+
+  public DataExplorerDashboardStorageImpl() {
+    super(
+        () -> Utils.getCouchDbGsonClient("dataexplorerdashboard"),
+        DashboardModel.class
+    );
+  }
+}

Reply via email to