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 f716bd5596e80dfb5495e59f7e704772d8eea1d4 Author: Philipp Zehnder <[email protected]> AuthorDate: Thu Feb 12 21:36:12 2026 +0100 refactor(#4172): introduce IExtensionsServiceStorage and migrate getExtensionsServiceStorage to typed interface --- .../health/monitoring/ServiceHealthCheck.java | 4 +-- .../monitoring/ServiceRegistrationManager.java | 6 ++-- .../loadbalance/impl/ExtensibleLoadManager.java | 4 +-- .../rest/impl/admin/MigrationResource.java | 4 +-- .../impl/admin/ServiceRegistrationResource.java | 4 +-- .../svcdiscovery/SpServiceDiscoveryCore.java | 6 ++-- .../storage/api/IExtensionsServiceStorage.java | 23 +++++++++++++++ .../streampipes/storage/api/INoSqlStorage.java | 3 +- .../storage/couchdb/CouchDbStorageManager.java | 10 +++---- .../couchdb/impl/ExtensionsServiceStorageImpl.java | 33 ++++++++++++++++++++++ 10 files changed, 75 insertions(+), 22 deletions(-) diff --git a/streampipes-health-monitoring/src/main/java/org/apache/streampipes/health/monitoring/ServiceHealthCheck.java b/streampipes-health-monitoring/src/main/java/org/apache/streampipes/health/monitoring/ServiceHealthCheck.java index e252efd755..f0ba8fd055 100644 --- a/streampipes-health-monitoring/src/main/java/org/apache/streampipes/health/monitoring/ServiceHealthCheck.java +++ b/streampipes-health-monitoring/src/main/java/org/apache/streampipes/health/monitoring/ServiceHealthCheck.java @@ -24,7 +24,7 @@ import org.apache.streampipes.loadbalance.LoadManager; import org.apache.streampipes.manager.execution.ExtensionServiceExecutions; import org.apache.streampipes.model.extensions.svcdiscovery.SpServiceRegistration; import org.apache.streampipes.model.extensions.svcdiscovery.SpServiceStatus; -import org.apache.streampipes.storage.api.CRUDStorage; +import org.apache.streampipes.storage.api.IExtensionsServiceStorage; import org.apache.http.HttpStatus; import org.slf4j.Logger; @@ -43,7 +43,7 @@ public class ServiceHealthCheck implements Runnable { private final List<SpServiceRegistration> needDeletedServices = new ArrayList<>(); - public ServiceHealthCheck(CRUDStorage<SpServiceRegistration> storage) { + public ServiceHealthCheck(IExtensionsServiceStorage storage) { this.serviceRegistrationManager = new ServiceRegistrationManager(storage); this.maxUnhealthyDurationBeforeRemovalMs = Environments.getEnvironment() .getUnhealthyTimeBeforeServiceDeletionInMillis().getValueOrDefault(); diff --git a/streampipes-health-monitoring/src/main/java/org/apache/streampipes/health/monitoring/ServiceRegistrationManager.java b/streampipes-health-monitoring/src/main/java/org/apache/streampipes/health/monitoring/ServiceRegistrationManager.java index e3fb6271e1..cab8ebc374 100644 --- a/streampipes-health-monitoring/src/main/java/org/apache/streampipes/health/monitoring/ServiceRegistrationManager.java +++ b/streampipes-health-monitoring/src/main/java/org/apache/streampipes/health/monitoring/ServiceRegistrationManager.java @@ -19,7 +19,7 @@ package org.apache.streampipes.health.monitoring; import org.apache.streampipes.model.extensions.svcdiscovery.SpServiceRegistration; import org.apache.streampipes.model.extensions.svcdiscovery.SpServiceStatus; -import org.apache.streampipes.storage.api.CRUDStorage; +import org.apache.streampipes.storage.api.IExtensionsServiceStorage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,9 +30,9 @@ public class ServiceRegistrationManager { private static final Logger LOG = LoggerFactory.getLogger(ServiceRegistrationManager.class); - private final CRUDStorage<SpServiceRegistration> storage; + private final IExtensionsServiceStorage storage; - public ServiceRegistrationManager(CRUDStorage<SpServiceRegistration> storage) { + public ServiceRegistrationManager(IExtensionsServiceStorage storage) { this.storage = storage; } diff --git a/streampipes-load-balancer/src/main/java/org/apache/streampipes/loadbalance/impl/ExtensibleLoadManager.java b/streampipes-load-balancer/src/main/java/org/apache/streampipes/loadbalance/impl/ExtensibleLoadManager.java index 6801057b52..ab295a80f1 100644 --- a/streampipes-load-balancer/src/main/java/org/apache/streampipes/loadbalance/impl/ExtensibleLoadManager.java +++ b/streampipes-load-balancer/src/main/java/org/apache/streampipes/loadbalance/impl/ExtensibleLoadManager.java @@ -23,7 +23,7 @@ import org.apache.streampipes.loadbalance.PipelineMigrator; import org.apache.streampipes.loadbalance.unit.ResourceUnitStatsScanner; import org.apache.streampipes.model.extensions.svcdiscovery.SpServiceRegistration; import org.apache.streampipes.model.extensions.svcdiscovery.SpServiceStatus; -import org.apache.streampipes.storage.api.CRUDStorage; +import org.apache.streampipes.storage.api.IExtensionsServiceStorage; import org.apache.streampipes.storage.management.StorageDispatcher; import java.util.List; @@ -47,7 +47,7 @@ public class ExtensibleLoadManager implements LoadBalancer { } public void doLoadShedding() { - CRUDStorage<SpServiceRegistration> storage = StorageDispatcher.INSTANCE.getNoSqlStore().getExtensionsServiceStorage(); + IExtensionsServiceStorage storage = StorageDispatcher.INSTANCE.getNoSqlStore().getExtensionsServiceStorage(); List<SpServiceRegistration> services = storage.findAll().stream().filter(s -> s.getStatus() == SpServiceStatus.HEALTHY) .toList(); diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/MigrationResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/MigrationResource.java index 437eeef73f..78fe94e32c 100644 --- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/MigrationResource.java +++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/MigrationResource.java @@ -30,10 +30,10 @@ import org.apache.streampipes.model.migration.ModelMigratorConfig; import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource; import org.apache.streampipes.rest.security.AuthConstants; import org.apache.streampipes.rest.shared.exception.SpMessageException; -import org.apache.streampipes.storage.api.CRUDStorage; import org.apache.streampipes.storage.api.IAdapterStorage; import org.apache.streampipes.storage.api.IDataProcessorStorage; import org.apache.streampipes.storage.api.IDataSinkStorage; +import org.apache.streampipes.storage.api.IExtensionsServiceStorage; import org.apache.streampipes.storage.api.IPipelineStorage; import io.swagger.v3.oas.annotations.Operation; @@ -61,7 +61,7 @@ public class MigrationResource extends AbstractAuthGuardedRestResource { private static final Logger LOG = LoggerFactory.getLogger(MigrationResource.class); - private final CRUDStorage<SpServiceRegistration> extensionsServiceStorage = + private final IExtensionsServiceStorage extensionsServiceStorage = getNoSqlStorage().getExtensionsServiceStorage(); private final IAdapterStorage adapterDescriptionStorage = getNoSqlStorage().getAdapterDescriptionStorage(); private final IAdapterStorage adapterStorage = getNoSqlStorage().getAdapterInstanceStorage(); diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/ServiceRegistrationResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/ServiceRegistrationResource.java index fc243d5d56..a7dc91431e 100644 --- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/ServiceRegistrationResource.java +++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/ServiceRegistrationResource.java @@ -24,7 +24,7 @@ import org.apache.streampipes.model.message.Notifications; import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource; import org.apache.streampipes.rest.security.AuthConstants; import org.apache.streampipes.rest.shared.exception.SpMessageException; -import org.apache.streampipes.storage.api.CRUDStorage; +import org.apache.streampipes.storage.api.IExtensionsServiceStorage; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -44,7 +44,7 @@ import java.util.List; @PreAuthorize(AuthConstants.IS_ADMIN_ROLE) public class ServiceRegistrationResource extends AbstractAuthGuardedRestResource { - private final CRUDStorage<SpServiceRegistration> extensionsServiceStorage = + private final IExtensionsServiceStorage extensionsServiceStorage = getNoSqlStorage().getExtensionsServiceStorage(); @GetMapping(produces = MediaType.APPLICATION_JSON_VALUE) diff --git a/streampipes-service-discovery/src/main/java/org/apache/streampipes/svcdiscovery/SpServiceDiscoveryCore.java b/streampipes-service-discovery/src/main/java/org/apache/streampipes/svcdiscovery/SpServiceDiscoveryCore.java index 651be518bd..8f303d07b0 100644 --- a/streampipes-service-discovery/src/main/java/org/apache/streampipes/svcdiscovery/SpServiceDiscoveryCore.java +++ b/streampipes-service-discovery/src/main/java/org/apache/streampipes/svcdiscovery/SpServiceDiscoveryCore.java @@ -22,7 +22,7 @@ import org.apache.streampipes.model.extensions.svcdiscovery.SpServiceRegistratio import org.apache.streampipes.model.extensions.svcdiscovery.SpServiceStatus; import org.apache.streampipes.model.extensions.svcdiscovery.SpServiceTag; import org.apache.streampipes.model.extensions.svcdiscovery.SpServiceTagPrefix; -import org.apache.streampipes.storage.api.CRUDStorage; +import org.apache.streampipes.storage.api.IExtensionsServiceStorage; import org.apache.streampipes.svcdiscovery.api.ISpServiceDiscovery; import org.slf4j.Logger; @@ -39,9 +39,9 @@ public class SpServiceDiscoveryCore implements ISpServiceDiscovery { private static final Logger LOG = LoggerFactory.getLogger(SpServiceDiscoveryCore.class); private static final int MAX_RETRIES = 3; - private final CRUDStorage<SpServiceRegistration> serviceStorage; + private final IExtensionsServiceStorage serviceStorage; - public SpServiceDiscoveryCore(CRUDStorage<SpServiceRegistration> serviceStorage) { + public SpServiceDiscoveryCore(IExtensionsServiceStorage serviceStorage) { this.serviceStorage = serviceStorage; } diff --git a/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/IExtensionsServiceStorage.java b/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/IExtensionsServiceStorage.java new file mode 100644 index 0000000000..8717775902 --- /dev/null +++ b/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/IExtensionsServiceStorage.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.extensions.svcdiscovery.SpServiceRegistration; + +public interface IExtensionsServiceStorage extends CRUDStorage<SpServiceRegistration> { +} 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 e4b9fd3129..984b23f7b0 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 @@ -22,7 +22,6 @@ import org.apache.streampipes.model.client.user.Privilege; import org.apache.streampipes.model.client.user.Role; import org.apache.streampipes.model.connect.ConnectTransformationScriptTemplate; import org.apache.streampipes.model.extensions.configuration.SpServiceConfiguration; -import org.apache.streampipes.model.extensions.svcdiscovery.SpServiceRegistration; import org.apache.streampipes.model.opcua.Certificate; import org.apache.streampipes.model.template.CompactPipelineTemplate; @@ -70,7 +69,7 @@ public interface INoSqlStorage { IUserActivationTokenStorage getUserActivationTokenStorage(); - CRUDStorage<SpServiceRegistration> getExtensionsServiceStorage(); + IExtensionsServiceStorage getExtensionsServiceStorage(); CRUDStorage<SpServiceConfiguration> getExtensionsServiceConfigurationStorage(); 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 e9081505a5..2f02099f5a 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.Role; import org.apache.streampipes.model.connect.ConnectTransformationScriptTemplate; import org.apache.streampipes.model.datalake.DataLakeMeasure; import org.apache.streampipes.model.extensions.configuration.SpServiceConfiguration; -import org.apache.streampipes.model.extensions.svcdiscovery.SpServiceRegistration; import org.apache.streampipes.model.opcua.Certificate; import org.apache.streampipes.model.template.CompactPipelineTemplate; import org.apache.streampipes.storage.api.CRUDStorage; @@ -34,6 +33,7 @@ import org.apache.streampipes.storage.api.IDataExplorerWidgetStorage; import org.apache.streampipes.storage.api.IDataProcessorStorage; import org.apache.streampipes.storage.api.IDataSinkStorage; import org.apache.streampipes.storage.api.IDataStreamStorage; +import org.apache.streampipes.storage.api.IExtensionsServiceStorage; import org.apache.streampipes.storage.api.IFileMetadataStorage; import org.apache.streampipes.storage.api.IGenericStorage; import org.apache.streampipes.storage.api.IImageStorage; @@ -60,6 +60,7 @@ import org.apache.streampipes.storage.couchdb.impl.DataSinkStorageImpl; import org.apache.streampipes.storage.couchdb.impl.DataStreamStorageImpl; import org.apache.streampipes.storage.couchdb.impl.DefaultCrudStorage; import org.apache.streampipes.storage.couchdb.impl.DefaultViewCrudStorage; +import org.apache.streampipes.storage.couchdb.impl.ExtensionsServiceStorageImpl; import org.apache.streampipes.storage.couchdb.impl.GenericStorageImpl; import org.apache.streampipes.storage.couchdb.impl.FileMetadataStorageImpl; import org.apache.streampipes.storage.couchdb.impl.ImageStorageImpl; @@ -186,11 +187,8 @@ public class CouchDbStorageManager implements INoSqlStorage { } @Override - public CRUDStorage<SpServiceRegistration> getExtensionsServiceStorage() { - return new DefaultCrudStorage<>( - () -> Utils.getCouchDbGsonClient("extensions-services"), - SpServiceRegistration.class - ); + public IExtensionsServiceStorage getExtensionsServiceStorage() { + return new ExtensionsServiceStorageImpl(); } @Override diff --git a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/ExtensionsServiceStorageImpl.java b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/ExtensionsServiceStorageImpl.java new file mode 100644 index 0000000000..1be5402091 --- /dev/null +++ b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/ExtensionsServiceStorageImpl.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.extensions.svcdiscovery.SpServiceRegistration; +import org.apache.streampipes.storage.api.IExtensionsServiceStorage; +import org.apache.streampipes.storage.couchdb.utils.Utils; + +public class ExtensionsServiceStorageImpl extends DefaultCrudStorage<SpServiceRegistration> + implements IExtensionsServiceStorage { + + public ExtensionsServiceStorageImpl() { + super( + () -> Utils.getCouchDbGsonClient("extensions-services"), + SpServiceRegistration.class + ); + } +}
