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