This is an automated email from the ASF dual-hosted git repository.

riemer pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/streampipes.git


The following commit(s) were added to refs/heads/dev by this push:
     new 6af17ffe46 refactor: Remove direct references to couchdb manager 
(#4159)
6af17ffe46 is described below

commit 6af17ffe4632afe3f83f8852cbed6f0ba88ab400
Author: Dominik Riemer <[email protected]>
AuthorDate: Tue Feb 10 18:28:45 2026 +0100

    refactor: Remove direct references to couchdb manager (#4159)
---
 .../management/CompactAdapterManagement.java       |  4 +--
 .../management/DescriptionManagement.java          |  5 ++--
 .../influx/DataExplorerQueryManagementInflux.java  |  2 ++
 .../dataexplorer/DataExplorerSchemaManagement.java |  3 +-
 .../dataexplorer/QueryResultProvider.java          |  4 +++
 .../dataexplorer/StreamedQueryResultProvider.java  |  7 +++--
 .../dataexplorer/utils/DataExplorerUtils.java      | 33 ----------------------
 .../resource/management/UserResourceManager.java   |  3 +-
 .../rest/impl/datalake/DataLakeDataWriter.java     |  4 +--
 .../CertificateExpiryEmailScheduler.java           |  5 ++--
 .../svcdiscovery/SpServiceDiscovery.java           |  3 +-
 .../svcdiscovery/SpServiceDiscoveryCore.java       |  5 ++--
 .../storage/couchdb/CouchDbStorageManager.java     | 19 +++++--------
 .../storage/couchdb/impl/AssetStorageImpl.java     | 32 ---------------------
 .../storage/couchdb/impl/DefaultCrudStorage.java   |  2 +-
 .../storage/couchdb/impl/PrivilegeStorageImpl.java | 29 -------------------
 .../storage/couchdb/impl/RoleStorageImpl.java      | 30 --------------------
 .../storage/management/StorageDispatcher.java      |  2 +-
 18 files changed, 33 insertions(+), 159 deletions(-)

diff --git 
a/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/CompactAdapterManagement.java
 
b/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/CompactAdapterManagement.java
index 6e49240c0c..11c06ec341 100644
--- 
a/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/CompactAdapterManagement.java
+++ 
b/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/CompactAdapterManagement.java
@@ -23,7 +23,7 @@ import 
org.apache.streampipes.connect.management.compact.generator.CompactAdapte
 import org.apache.streampipes.model.connect.adapter.AdapterDescription;
 import org.apache.streampipes.model.connect.adapter.compact.CompactAdapter;
 import org.apache.streampipes.storage.api.IAdapterStorage;
-import org.apache.streampipes.storage.couchdb.CouchDbStorageManager;
+import org.apache.streampipes.storage.management.StorageDispatcher;
 
 import java.util.List;
 
@@ -75,7 +75,7 @@ public class CompactAdapterManagement {
   }
 
   private AdapterDescription findAdapterDescription(String appId) {
-    IAdapterStorage adapterStorage = 
CouchDbStorageManager.INSTANCE.getAdapterDescriptionStorage();
+    IAdapterStorage adapterStorage = 
StorageDispatcher.INSTANCE.getNoSqlStore().getAdapterDescriptionStorage();
     return adapterStorage.findAll()
         .stream()
         .filter(desc -> desc.getAppId()
diff --git 
a/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/DescriptionManagement.java
 
b/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/DescriptionManagement.java
index 49306186b3..d43eed3d0e 100644
--- 
a/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/DescriptionManagement.java
+++ 
b/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/DescriptionManagement.java
@@ -22,7 +22,6 @@ import 
org.apache.streampipes.commons.exceptions.SpRuntimeException;
 import org.apache.streampipes.commons.exceptions.connect.AdapterException;
 import org.apache.streampipes.model.connect.adapter.AdapterDescription;
 import org.apache.streampipes.storage.api.IAdapterStorage;
-import org.apache.streampipes.storage.couchdb.CouchDbStorageManager;
 import org.apache.streampipes.storage.management.StorageDispatcher;
 
 import java.util.List;
@@ -31,7 +30,7 @@ import java.util.Optional;
 public class DescriptionManagement {
 
   public List<AdapterDescription> getAdapters() {
-    IAdapterStorage adapterStorage = 
CouchDbStorageManager.INSTANCE.getAdapterDescriptionStorage();
+    IAdapterStorage adapterStorage = 
StorageDispatcher.INSTANCE.getNoSqlStore().getAdapterDescriptionStorage();
     return adapterStorage.findAll();
   }
 
@@ -42,7 +41,7 @@ public class DescriptionManagement {
   }
 
   public void deleteAdapterDescription(String id) throws SpRuntimeException {
-    var adapterStorage = 
CouchDbStorageManager.INSTANCE.getAdapterDescriptionStorage();
+    var adapterStorage = 
StorageDispatcher.INSTANCE.getNoSqlStore().getAdapterDescriptionStorage();
     var adapter = adapterStorage.getElementById(id);
     if (!isAdapterUsed(adapter)) {
       adapterStorage.deleteElementById(id);
diff --git 
a/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/DataExplorerQueryManagementInflux.java
 
b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/DataExplorerQueryManagementInflux.java
index 01129f1ec2..b6bf82e659 100644
--- 
a/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/DataExplorerQueryManagementInflux.java
+++ 
b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/DataExplorerQueryManagementInflux.java
@@ -50,6 +50,7 @@ public class DataExplorerQueryManagementInflux implements 
IDataExplorerQueryMana
     return new QueryResultProvider(queryParams,
                                    this,
                                    new DataExplorerInfluxQueryExecutor(),
+                                   dataExplorerSchemaManagement,
                                    ignoreMissingData
     ).getData();
   }
@@ -63,6 +64,7 @@ public class DataExplorerQueryManagementInflux implements 
IDataExplorerQueryMana
     new StreamedQueryResultProvider(params, format,
                                     this,
                                     new DataExplorerInfluxQueryExecutor(),
+                                    dataExplorerSchemaManagement,
                                     ignoreMissingValues
     ).getDataAsStream(outputStream);
   }
diff --git 
a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/DataExplorerSchemaManagement.java
 
b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/DataExplorerSchemaManagement.java
index c9a5c9db78..e9de8e549b 100644
--- 
a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/DataExplorerSchemaManagement.java
+++ 
b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/DataExplorerSchemaManagement.java
@@ -19,7 +19,6 @@
 package org.apache.streampipes.dataexplorer;
 
 import org.apache.streampipes.dataexplorer.api.IDataExplorerSchemaManagement;
-import org.apache.streampipes.dataexplorer.utils.DataExplorerUtils;
 import org.apache.streampipes.manager.permission.DataLakePermissionManager;
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
 import 
org.apache.streampipes.model.datalake.DataLakeMeasureSchemaUpdateStrategy;
@@ -47,7 +46,7 @@ public class DataExplorerSchemaManagement implements 
IDataExplorerSchemaManageme
 
   @Override
   public List<DataLakeMeasure> getAllMeasurements() {
-    return DataExplorerUtils.getInfos();
+    return dataLakeStorage.findAll();
   }
 
   @Override
diff --git 
a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/QueryResultProvider.java
 
b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/QueryResultProvider.java
index eeeadec24f..a05fb871cd 100644
--- 
a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/QueryResultProvider.java
+++ 
b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/QueryResultProvider.java
@@ -19,6 +19,7 @@
 package org.apache.streampipes.dataexplorer;
 
 import org.apache.streampipes.dataexplorer.api.IDataExplorerQueryManagement;
+import org.apache.streampipes.dataexplorer.api.IDataExplorerSchemaManagement;
 import 
org.apache.streampipes.dataexplorer.param.ProvidedRestQueryParamConverter;
 import org.apache.streampipes.dataexplorer.param.SelectQueryParams;
 import org.apache.streampipes.dataexplorer.query.DataExplorerQueryExecutor;
@@ -34,17 +35,20 @@ public class QueryResultProvider {
   public static final String FOR_ID_KEY = "forId";
   protected final boolean ignoreMissingData;
   protected final IDataExplorerQueryManagement dataExplorerQueryManagement;
+  protected final IDataExplorerSchemaManagement schemaManagement;
   protected final DataExplorerQueryExecutor<?, ?> queryExecutor;
   protected ProvidedRestQueryParams queryParams;
 
   public QueryResultProvider(ProvidedRestQueryParams queryParams,
                              IDataExplorerQueryManagement 
dataExplorerQueryManagement,
                              DataExplorerQueryExecutor<?, ?> queryExecutor,
+                             IDataExplorerSchemaManagement schemaManagement,
                              boolean ignoreMissingData) {
     this.queryParams = queryParams;
     this.ignoreMissingData = ignoreMissingData;
     this.dataExplorerQueryManagement = dataExplorerQueryManagement;
     this.queryExecutor = queryExecutor;
+    this.schemaManagement = schemaManagement;
   }
 
   public SpQueryResult getData() {
diff --git 
a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/StreamedQueryResultProvider.java
 
b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/StreamedQueryResultProvider.java
index 936fc093d4..24cc28d6ea 100644
--- 
a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/StreamedQueryResultProvider.java
+++ 
b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/StreamedQueryResultProvider.java
@@ -19,10 +19,10 @@
 package org.apache.streampipes.dataexplorer;
 
 import org.apache.streampipes.dataexplorer.api.IDataExplorerQueryManagement;
+import org.apache.streampipes.dataexplorer.api.IDataExplorerSchemaManagement;
 import org.apache.streampipes.dataexplorer.export.ConfiguredOutputWriter;
 import org.apache.streampipes.dataexplorer.export.OutputFormat;
 import org.apache.streampipes.dataexplorer.query.DataExplorerQueryExecutor;
-import org.apache.streampipes.dataexplorer.utils.DataExplorerUtils;
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
 import org.apache.streampipes.model.datalake.SpQueryResult;
 import org.apache.streampipes.model.datalake.param.ProvidedRestQueryParams;
@@ -44,8 +44,9 @@ public class StreamedQueryResultProvider extends 
QueryResultProvider {
                                      OutputFormat format,
                                      IDataExplorerQueryManagement 
dataExplorerQueryManagement,
                                      DataExplorerQueryExecutor<?, ?> 
queryExecutor,
+                                     IDataExplorerSchemaManagement 
schemaManagement,
                                      boolean ignoreMissingValues) {
-    super(params, dataExplorerQueryManagement, queryExecutor, 
ignoreMissingValues);
+    super(params, dataExplorerQueryManagement, queryExecutor, 
schemaManagement, ignoreMissingValues);
     this.format = format;
   }
 
@@ -97,7 +98,7 @@ public class StreamedQueryResultProvider extends 
QueryResultProvider {
   }
 
   private Optional<DataLakeMeasure> findByMeasurementName(String 
measurementName) {
-    return DataExplorerUtils.getInfos()
+    return schemaManagement.getAllMeasurements()
         .stream()
         .filter(measurement -> 
measurement.getMeasureName().equals(measurementName))
         .findFirst();
diff --git 
a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/utils/DataExplorerUtils.java
 
b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/utils/DataExplorerUtils.java
deleted file mode 100644
index b9c5942fd9..0000000000
--- 
a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/utils/DataExplorerUtils.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.dataexplorer.utils;
-
-import org.apache.streampipes.model.datalake.DataLakeMeasure;
-import org.apache.streampipes.storage.management.StorageDispatcher;
-
-import java.util.List;
-
-public class DataExplorerUtils {
-
-  public static List<DataLakeMeasure> getInfos() {
-    return StorageDispatcher.INSTANCE
-        .getNoSqlStore()
-        .getDataLakeStorage()
-        .findAll();
-  }
-}
diff --git 
a/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/UserResourceManager.java
 
b/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/UserResourceManager.java
index 343ecf0b3c..8de0292491 100644
--- 
a/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/UserResourceManager.java
+++ 
b/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/UserResourceManager.java
@@ -32,7 +32,6 @@ import 
org.apache.streampipes.model.client.user.UserActivationToken;
 import org.apache.streampipes.model.client.user.UserRegistrationData;
 import org.apache.streampipes.storage.api.CRUDStorage;
 import org.apache.streampipes.storage.api.IUserStorage;
-import org.apache.streampipes.storage.couchdb.CouchDbStorageManager;
 import org.apache.streampipes.storage.management.StorageDispatcher;
 import org.apache.streampipes.user.management.util.PasswordUtil;
 import org.apache.streampipes.user.management.util.TokenUtil;
@@ -78,7 +77,7 @@ public class UserResourceManager extends 
AbstractResourceManager<IUserStorage> {
   }
 
   public Principal getAdminUser() {
-    return CouchDbStorageManager.INSTANCE
+    return StorageDispatcher.INSTANCE.getNoSqlStore()
         .getUserStorageAPI()
         .getAllUserAccounts()
         .stream()
diff --git 
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeDataWriter.java
 
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeDataWriter.java
index 0d3549f8a2..5bbdaa8bd6 100644
--- 
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeDataWriter.java
+++ 
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeDataWriter.java
@@ -27,7 +27,7 @@ import org.apache.streampipes.model.datalake.DataSeries;
 import org.apache.streampipes.model.datalake.SpQueryResult;
 import org.apache.streampipes.model.runtime.Event;
 import org.apache.streampipes.model.runtime.EventFactory;
-import org.apache.streampipes.storage.couchdb.CouchDbStorageManager;
+import org.apache.streampipes.storage.management.StorageDispatcher;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -45,7 +45,7 @@ public class DataLakeDataWriter {
   }
 
   public void writeData(String measureName, SpQueryResult queryResult) {
-    var measure = 
CouchDbStorageManager.INSTANCE.getDataLakeStorage().getByMeasureName(measureName);
+    var measure = 
StorageDispatcher.INSTANCE.getNoSqlStore().getDataLakeStorage().getByMeasureName(measureName);
     if (measure == null) {
       throw new SpRuntimeException("Measure \"" + measureName + "\" not 
found");
     }
diff --git 
a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/scheduler/certificates/CertificateExpiryEmailScheduler.java
 
b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/scheduler/certificates/CertificateExpiryEmailScheduler.java
index 42ad863df0..eb4dd58fc2 100644
--- 
a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/scheduler/certificates/CertificateExpiryEmailScheduler.java
+++ 
b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/scheduler/certificates/CertificateExpiryEmailScheduler.java
@@ -25,7 +25,7 @@ import org.apache.streampipes.model.client.user.Principal;
 import org.apache.streampipes.model.mail.SpEmail;
 import org.apache.streampipes.model.opcua.Certificate;
 import org.apache.streampipes.storage.api.IUserStorage;
-import org.apache.streampipes.storage.couchdb.CouchDbStorageManager;
+import org.apache.streampipes.storage.management.StorageDispatcher;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -141,8 +141,7 @@ public class CertificateExpiryEmailScheduler implements 
SchedulingConfigurer {
   }
 
   private IUserStorage getUserStorageAPI() {
-    return CouchDbStorageManager.INSTANCE
-        .getUserStorageAPI();
+    return StorageDispatcher.INSTANCE.getNoSqlStore().getUserStorageAPI();
   }
 
 }
diff --git 
a/streampipes-service-discovery/src/main/java/org/apache/streampipes/svcdiscovery/SpServiceDiscovery.java
 
b/streampipes-service-discovery/src/main/java/org/apache/streampipes/svcdiscovery/SpServiceDiscovery.java
index ff2d96aa03..8f054e9063 100644
--- 
a/streampipes-service-discovery/src/main/java/org/apache/streampipes/svcdiscovery/SpServiceDiscovery.java
+++ 
b/streampipes-service-discovery/src/main/java/org/apache/streampipes/svcdiscovery/SpServiceDiscovery.java
@@ -17,12 +17,13 @@
  */
 package org.apache.streampipes.svcdiscovery;
 
+import org.apache.streampipes.storage.management.StorageDispatcher;
 import org.apache.streampipes.svcdiscovery.api.ISpServiceDiscovery;
 
 public class SpServiceDiscovery {
 
   public static ISpServiceDiscovery getServiceDiscovery() {
-    return new SpServiceDiscoveryCore();
+    return new 
SpServiceDiscoveryCore(StorageDispatcher.INSTANCE.getNoSqlStore().getExtensionsServiceStorage());
   }
 
 }
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 26deec5803..651be518bd 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
@@ -23,7 +23,6 @@ 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.management.StorageDispatcher;
 import org.apache.streampipes.svcdiscovery.api.ISpServiceDiscovery;
 
 import org.slf4j.Logger;
@@ -42,8 +41,8 @@ public class SpServiceDiscoveryCore implements 
ISpServiceDiscovery {
 
   private final CRUDStorage<SpServiceRegistration> serviceStorage;
 
-  public SpServiceDiscoveryCore() {
-    this.serviceStorage = 
StorageDispatcher.INSTANCE.getNoSqlStore().getExtensionsServiceStorage();
+  public SpServiceDiscoveryCore(CRUDStorage<SpServiceRegistration> 
serviceStorage) {
+    this.serviceStorage = serviceStorage;
   }
 
   @Override
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 e7dd4cb98f..b8d8a05eb4 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
@@ -51,7 +51,6 @@ import 
org.apache.streampipes.storage.api.ISpCoreConfigurationStorage;
 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.AssetStorageImpl;
 import 
org.apache.streampipes.storage.couchdb.impl.CoreConfigurationStorageImpl;
 import org.apache.streampipes.storage.couchdb.impl.DataLakeMeasureStorage;
 import org.apache.streampipes.storage.couchdb.impl.DataProcessorStorageImpl;
@@ -67,14 +66,10 @@ import 
org.apache.streampipes.storage.couchdb.impl.PipelineCanvasMetadataStorage
 import 
org.apache.streampipes.storage.couchdb.impl.PipelineElementDescriptionStorageImpl;
 import 
org.apache.streampipes.storage.couchdb.impl.PipelineElementTemplateStorageImpl;
 import org.apache.streampipes.storage.couchdb.impl.PipelineStorageImpl;
-import org.apache.streampipes.storage.couchdb.impl.PrivilegeStorageImpl;
-import org.apache.streampipes.storage.couchdb.impl.RoleStorageImpl;
 import org.apache.streampipes.storage.couchdb.impl.UserStorage;
 import org.apache.streampipes.storage.couchdb.utils.Utils;
 
-public enum CouchDbStorageManager implements INoSqlStorage {
-
-  INSTANCE;
+public class CouchDbStorageManager implements INoSqlStorage {
 
   @Override
   public IAdapterStorage getAdapterDescriptionStorage() {
@@ -228,12 +223,12 @@ public enum CouchDbStorageManager implements 
INoSqlStorage {
 
   @Override
   public CRUDStorage<Role> getRoleStorage() {
-    return new RoleStorageImpl();
+    return new DefaultViewCrudStorage<>(Utils::getCouchDbUserClient, 
Role.class, "users/role");
   }
 
   @Override
   public CRUDStorage<Privilege> getPrivilegeStorage() {
-    return new PrivilegeStorageImpl();
+    return new DefaultViewCrudStorage<>(Utils::getCouchDbUserClient, 
Privilege.class, "users/privilege");
   }
 
   @Override
@@ -254,8 +249,10 @@ public enum CouchDbStorageManager implements INoSqlStorage 
{
 
   @Override
   public CRUDStorage<SpAssetModel> getAssetStorage() {
-    return new AssetStorageImpl(
-        () -> Utils.getCouchDbGsonClient("genericstorage")
+    return new DefaultViewCrudStorage<>(
+        () -> Utils.getCouchDbGsonClient("genericstorage"),
+        SpAssetModel.class,
+        "assets/all-assets"
     );
   }
 
@@ -267,6 +264,4 @@ public enum CouchDbStorageManager implements INoSqlStorage {
         "transformation-scripts/all-transformations"
     );
   }
-
-
 }
diff --git 
a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/AssetStorageImpl.java
 
b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/AssetStorageImpl.java
deleted file mode 100644
index 3b1f39d68f..0000000000
--- 
a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/AssetStorageImpl.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.assets.SpAssetModel;
-
-import org.lightcouch.CouchDbClient;
-
-import java.util.function.Supplier;
-
-public class AssetStorageImpl extends DefaultViewCrudStorage<SpAssetModel> {
-
-  public AssetStorageImpl(Supplier<CouchDbClient> clientSupplier) {
-    super(clientSupplier, SpAssetModel.class, "assets/all-assets");
-  }
-}
diff --git 
a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/DefaultCrudStorage.java
 
b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/DefaultCrudStorage.java
index bb4d06352b..2275c52679 100644
--- 
a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/DefaultCrudStorage.java
+++ 
b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/DefaultCrudStorage.java
@@ -53,7 +53,7 @@ public class DefaultCrudStorage<T extends Storable> extends 
AbstractDao<T> imple
   @Override
   public void deleteElement(T element) {
     try {
-      
CouchDbStorageManager.INSTANCE.getGenericStorage().deleteAssetLinkToResource(element.getElementId());
+      new 
CouchDbStorageManager().getGenericStorage().deleteAssetLinkToResource(element.getElementId());
     } catch (IOException e) {
       LOG.error("Asset link for " + element.getElementId() + " could not be 
deleted.");
     }
diff --git 
a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/PrivilegeStorageImpl.java
 
b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/PrivilegeStorageImpl.java
deleted file mode 100644
index 5476220f02..0000000000
--- 
a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/PrivilegeStorageImpl.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.client.user.Privilege;
-import org.apache.streampipes.storage.couchdb.utils.Utils;
-
-public class PrivilegeStorageImpl extends DefaultViewCrudStorage<Privilege> {
-
-  public PrivilegeStorageImpl() {
-    super(Utils::getCouchDbUserClient, Privilege.class, "users/privilege");
-  }
-}
diff --git 
a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/RoleStorageImpl.java
 
b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/RoleStorageImpl.java
deleted file mode 100644
index d24f5f36f4..0000000000
--- 
a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/RoleStorageImpl.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.client.user.Role;
-import org.apache.streampipes.storage.couchdb.utils.Utils;
-
-public class RoleStorageImpl extends DefaultViewCrudStorage<Role> {
-
-  public RoleStorageImpl() {
-    super(Utils::getCouchDbUserClient, Role.class, "users/role");
-  }
-
-}
diff --git 
a/streampipes-storage-management/src/main/java/org/apache/streampipes/storage/management/StorageDispatcher.java
 
b/streampipes-storage-management/src/main/java/org/apache/streampipes/storage/management/StorageDispatcher.java
index 1b6d57991b..8f45d03602 100644
--- 
a/streampipes-storage-management/src/main/java/org/apache/streampipes/storage/management/StorageDispatcher.java
+++ 
b/streampipes-storage-management/src/main/java/org/apache/streampipes/storage/management/StorageDispatcher.java
@@ -25,7 +25,7 @@ public enum StorageDispatcher {
   INSTANCE;
 
   public INoSqlStorage getNoSqlStore() {
-    return CouchDbStorageManager.INSTANCE;
+    return new CouchDbStorageManager();
   }
 
 }

Reply via email to