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 bf5f33fb78271e8ef153b5ad82e09626f7d0fc37 Author: Philipp Zehnder <[email protected]> AuthorDate: Thu Feb 12 21:45:25 2026 +0100 refactor(#4172): introduce ICertificateStorage and migrate getCertificateStorage to typed interface --- .../management/AdapterResourceManager.java | 6 ++-- .../rest/impl/admin/CertificateResource.java | 4 +-- .../ComputeCertificateThumbprintMigration.java | 4 +-- .../certificates/ExpiringCertificateFinder.java | 6 ++-- .../ExpiringCertificateFinderTest.java | 8 +++--- .../storage/api/ICertificateStorage.java | 23 ++++++++++++++++ .../streampipes/storage/api/INoSqlStorage.java | 3 +- .../storage/couchdb/CouchDbStorageManager.java | 10 +++---- .../couchdb/impl/CertificateStorageImpl.java | 32 ++++++++++++++++++++++ 9 files changed, 74 insertions(+), 22 deletions(-) diff --git a/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/AdapterResourceManager.java b/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/AdapterResourceManager.java index f9f99d4a9d..6b60b6e2f8 100644 --- a/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/AdapterResourceManager.java +++ b/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/AdapterResourceManager.java @@ -22,16 +22,16 @@ import org.apache.streampipes.model.connect.adapter.AdapterDescription; import org.apache.streampipes.model.opcua.Certificate; import org.apache.streampipes.model.util.Cloner; import org.apache.streampipes.resource.management.secret.SecretProvider; -import org.apache.streampipes.storage.api.CRUDStorage; import org.apache.streampipes.storage.api.IAdapterStorage; +import org.apache.streampipes.storage.api.ICertificateStorage; import org.apache.streampipes.storage.management.StorageDispatcher; public class AdapterResourceManager extends AbstractResourceManager<IAdapterStorage> { - private final CRUDStorage<Certificate> certificateStorage; + private final ICertificateStorage certificateStorage; public AdapterResourceManager(IAdapterStorage adapterStorage, - CRUDStorage<Certificate> certificateStorage) { + ICertificateStorage certificateStorage) { super(adapterStorage); this.certificateStorage = certificateStorage; } diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/CertificateResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/CertificateResource.java index d39c172afc..dc7f66da26 100644 --- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/CertificateResource.java +++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/CertificateResource.java @@ -23,7 +23,7 @@ import org.apache.streampipes.model.opcua.CertificateState; import org.apache.streampipes.model.opcua.CertificateUsage; 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.ICertificateStorage; import org.apache.streampipes.storage.management.StorageDispatcher; import org.slf4j.Logger; @@ -49,7 +49,7 @@ public class CertificateResource extends AbstractAuthGuardedRestResource { private static final Logger LOG = LoggerFactory.getLogger(CertificateResource.class); - private final CRUDStorage<Certificate> certificateStorage = StorageDispatcher + private final ICertificateStorage certificateStorage = StorageDispatcher .INSTANCE.getNoSqlStore().getCertificateStorage(); @GetMapping(produces = MediaType.APPLICATION_JSON_VALUE) diff --git a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/ComputeCertificateThumbprintMigration.java b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/ComputeCertificateThumbprintMigration.java index 625c843eb7..abc786e07b 100644 --- a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/ComputeCertificateThumbprintMigration.java +++ b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/migrations/v099/ComputeCertificateThumbprintMigration.java @@ -21,7 +21,7 @@ package org.apache.streampipes.service.core.migrations.v099; import org.apache.streampipes.model.opcua.Certificate; import org.apache.streampipes.model.opcua.CertificateUtils; import org.apache.streampipes.service.core.migrations.Migration; -import org.apache.streampipes.storage.api.CRUDStorage; +import org.apache.streampipes.storage.api.ICertificateStorage; import org.apache.streampipes.storage.management.StorageDispatcher; import org.slf4j.Logger; @@ -35,7 +35,7 @@ public class ComputeCertificateThumbprintMigration implements Migration { private static final Logger LOG = LoggerFactory.getLogger(ComputeCertificateThumbprintMigration.class); - private CRUDStorage<Certificate> certificateStorage = + private ICertificateStorage certificateStorage = StorageDispatcher.INSTANCE.getNoSqlStore().getCertificateStorage(); @Override diff --git a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/scheduler/certificates/ExpiringCertificateFinder.java b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/scheduler/certificates/ExpiringCertificateFinder.java index 54b5131e03..d7eead17cb 100644 --- a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/scheduler/certificates/ExpiringCertificateFinder.java +++ b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/scheduler/certificates/ExpiringCertificateFinder.java @@ -19,7 +19,7 @@ package org.apache.streampipes.service.core.scheduler.certificates; import org.apache.streampipes.model.opcua.Certificate; -import org.apache.streampipes.storage.api.CRUDStorage; +import org.apache.streampipes.storage.api.ICertificateStorage; import org.apache.streampipes.storage.management.StorageDispatcher; import org.slf4j.Logger; @@ -45,10 +45,10 @@ public class ExpiringCertificateFinder { private static final DateTimeFormatter NOT_AFTER_FORMATTER = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH); - private final CRUDStorage<Certificate> certificateStorage; + private final ICertificateStorage certificateStorage; private final Clock clock; - public ExpiringCertificateFinder(CRUDStorage<Certificate> certificateStorage, Clock clock) { + public ExpiringCertificateFinder(ICertificateStorage certificateStorage, Clock clock) { this.certificateStorage = certificateStorage; this.clock = clock; } diff --git a/streampipes-service-core/src/test/java/org/apache/streampipes/service/core/scheduler/certificates/ExpiringCertificateFinderTest.java b/streampipes-service-core/src/test/java/org/apache/streampipes/service/core/scheduler/certificates/ExpiringCertificateFinderTest.java index bcfe0e513b..36a969348a 100644 --- a/streampipes-service-core/src/test/java/org/apache/streampipes/service/core/scheduler/certificates/ExpiringCertificateFinderTest.java +++ b/streampipes-service-core/src/test/java/org/apache/streampipes/service/core/scheduler/certificates/ExpiringCertificateFinderTest.java @@ -21,7 +21,7 @@ package org.apache.streampipes.service.core.scheduler.certificates; import org.apache.streampipes.model.opcua.Certificate; import org.apache.streampipes.model.opcua.CertificateBuilder; -import org.apache.streampipes.storage.api.CRUDStorage; +import org.apache.streampipes.storage.api.ICertificateStorage; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -40,14 +40,14 @@ import static org.mockito.Mockito.when; class ExpiringCertificateFinderTest { - private CRUDStorage<Certificate> storage; + private ICertificateStorage storage; private static final Instant FIXED_NOW = Instant.parse("2026-01-10T12:00:00Z"); private Clock clock; @BeforeEach void setUp() { - storage = mock(CRUDStorage.class); + storage = mock(ICertificateStorage.class); clock = Clock.fixed(FIXED_NOW, ZoneOffset.UTC); } @@ -133,4 +133,4 @@ class ExpiringCertificateFinderTest { .build(); } -} \ No newline at end of file +} diff --git a/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/ICertificateStorage.java b/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/ICertificateStorage.java new file mode 100644 index 0000000000..958158d904 --- /dev/null +++ b/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/ICertificateStorage.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.opcua.Certificate; + +public interface ICertificateStorage extends CRUDStorage<Certificate> { +} 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 394977598f..5056a0fe11 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 @@ -19,7 +19,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; public interface INoSqlStorage { @@ -77,7 +76,7 @@ public interface INoSqlStorage { ICompactPipelineTemplateStorage getPipelineTemplateStorage(); - CRUDStorage<Certificate> getCertificateStorage(); + ICertificateStorage getCertificateStorage(); CRUDStorage<SpAssetModel> getAssetStorage(); 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 b8a5f5e2d7..84c3e14109 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 @@ -20,9 +20,9 @@ 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.model.opcua.Certificate; import org.apache.streampipes.storage.api.CRUDStorage; import org.apache.streampipes.storage.api.IAdapterStorage; +import org.apache.streampipes.storage.api.ICertificateStorage; import org.apache.streampipes.storage.api.ICompactPipelineTemplateStorage; import org.apache.streampipes.storage.api.IDataLakeMeasureStorage; import org.apache.streampipes.storage.api.IDataExplorerDashboardStorage; @@ -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.CertificateStorageImpl; import org.apache.streampipes.storage.couchdb.impl.CoreConfigurationStorageImpl; import org.apache.streampipes.storage.couchdb.impl.CompactPipelineTemplateStorageImpl; import org.apache.streampipes.storage.couchdb.impl.DataLakeMeasureStorage; @@ -221,11 +222,8 @@ public class CouchDbStorageManager implements INoSqlStorage { } @Override - public CRUDStorage<Certificate> getCertificateStorage() { - return new DefaultCrudStorage<>( - () -> Utils.getCouchDbGsonClient("certificates"), - Certificate.class - ); + public ICertificateStorage getCertificateStorage() { + return new CertificateStorageImpl(); } @Override diff --git a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/CertificateStorageImpl.java b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/CertificateStorageImpl.java new file mode 100644 index 0000000000..c08e7bef65 --- /dev/null +++ b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/CertificateStorageImpl.java @@ -0,0 +1,32 @@ +/* + * 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.opcua.Certificate; +import org.apache.streampipes.storage.api.ICertificateStorage; +import org.apache.streampipes.storage.couchdb.utils.Utils; + +public class CertificateStorageImpl extends DefaultCrudStorage<Certificate> implements ICertificateStorage { + + public CertificateStorageImpl() { + super( + () -> Utils.getCouchDbGsonClient("certificates"), + Certificate.class + ); + } +}
