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 26457232a7ddc1955e7cb160df8d242c6fb6baa8
Author: Philipp Zehnder <[email protected]>
AuthorDate: Thu Feb 12 21:33:10 2026 +0100

    refactor(#4172): introduce IPasswordRecoveryTokenStorage and migrate 
getPasswordRecoveryTokenStorage to typed interface
---
 .../resource/management/UserResourceManager.java   |  3 +-
 .../streampipes/storage/api/INoSqlStorage.java     |  3 +-
 .../storage/api/IPasswordRecoveryTokenStorage.java | 23 +++++++++++++++
 .../storage/couchdb/CouchDbStorageManager.java     | 11 +++----
 .../impl/PasswordRecoveryTokenStorageImpl.java     | 34 ++++++++++++++++++++++
 5 files changed, 64 insertions(+), 10 deletions(-)

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 8de0292491..0b3421a48d 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
@@ -31,6 +31,7 @@ import org.apache.streampipes.model.client.user.UserAccount;
 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.IPasswordRecoveryTokenStorage;
 import org.apache.streampipes.storage.api.IUserStorage;
 import org.apache.streampipes.storage.management.StorageDispatcher;
 import org.apache.streampipes.user.management.util.PasswordUtil;
@@ -184,7 +185,7 @@ public class UserResourceManager extends 
AbstractResourceManager<IUserStorage> {
     
getPasswordRecoveryTokenStorage().persist(PasswordRecoveryToken.create(recoveryCode,
 username));
   }
 
-  private CRUDStorage<PasswordRecoveryToken> getPasswordRecoveryTokenStorage() 
{
+  private IPasswordRecoveryTokenStorage getPasswordRecoveryTokenStorage() {
     return 
StorageDispatcher.INSTANCE.getNoSqlStore().getPasswordRecoveryTokenStorage();
   }
 
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 e3bddc583a..af452ab334 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
@@ -18,7 +18,6 @@
 package org.apache.streampipes.storage.api;
 
 import org.apache.streampipes.model.assets.SpAssetModel;
-import org.apache.streampipes.model.client.user.PasswordRecoveryToken;
 import org.apache.streampipes.model.client.user.Privilege;
 import org.apache.streampipes.model.client.user.Role;
 import org.apache.streampipes.model.client.user.UserActivationToken;
@@ -68,7 +67,7 @@ public interface INoSqlStorage {
 
   IDataStreamStorage getDataStreamStorage();
 
-  CRUDStorage<PasswordRecoveryToken> getPasswordRecoveryTokenStorage();
+  IPasswordRecoveryTokenStorage getPasswordRecoveryTokenStorage();
 
   CRUDStorage<UserActivationToken> getUserActivationTokenStorage();
 
diff --git 
a/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/IPasswordRecoveryTokenStorage.java
 
b/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/IPasswordRecoveryTokenStorage.java
new file mode 100644
index 0000000000..9002091503
--- /dev/null
+++ 
b/streampipes-storage-api/src/main/java/org/apache/streampipes/storage/api/IPasswordRecoveryTokenStorage.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.client.user.PasswordRecoveryToken;
+
+public interface IPasswordRecoveryTokenStorage extends 
CRUDStorage<PasswordRecoveryToken> {
+}
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 d6f380875d..a5fa79f435 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
@@ -18,7 +18,6 @@
 package org.apache.streampipes.storage.couchdb;
 
 import org.apache.streampipes.model.assets.SpAssetModel;
-import org.apache.streampipes.model.client.user.PasswordRecoveryToken;
 import org.apache.streampipes.model.client.user.Privilege;
 import org.apache.streampipes.model.client.user.Role;
 import org.apache.streampipes.model.client.user.UserActivationToken;
@@ -41,6 +40,7 @@ import org.apache.streampipes.storage.api.IGenericStorage;
 import org.apache.streampipes.storage.api.IImageStorage;
 import org.apache.streampipes.storage.api.INoSqlStorage;
 import org.apache.streampipes.storage.api.INotificationStorage;
+import org.apache.streampipes.storage.api.IPasswordRecoveryTokenStorage;
 import org.apache.streampipes.storage.api.IPermissionStorage;
 import org.apache.streampipes.storage.api.IPipelineCanvasMetadataStorage;
 import org.apache.streampipes.storage.api.IPipelineElementDescriptionStorage;
@@ -64,6 +64,7 @@ import 
org.apache.streampipes.storage.couchdb.impl.GenericStorageImpl;
 import org.apache.streampipes.storage.couchdb.impl.FileMetadataStorageImpl;
 import org.apache.streampipes.storage.couchdb.impl.ImageStorageImpl;
 import org.apache.streampipes.storage.couchdb.impl.NotificationStorageImpl;
+import 
org.apache.streampipes.storage.couchdb.impl.PasswordRecoveryTokenStorageImpl;
 import org.apache.streampipes.storage.couchdb.impl.PermissionStorageImpl;
 import 
org.apache.streampipes.storage.couchdb.impl.PipelineCanvasMetadataStorageImpl;
 import 
org.apache.streampipes.storage.couchdb.impl.PipelineElementDescriptionStorageImpl;
@@ -174,12 +175,8 @@ public class CouchDbStorageManager implements 
INoSqlStorage {
   }
 
   @Override
-  public CRUDStorage<PasswordRecoveryToken> getPasswordRecoveryTokenStorage() {
-    return new DefaultViewCrudStorage<>(
-        Utils::getCouchDbUserClient,
-        PasswordRecoveryToken.class,
-        "users/password-recovery"
-    );
+  public IPasswordRecoveryTokenStorage getPasswordRecoveryTokenStorage() {
+    return new PasswordRecoveryTokenStorageImpl();
   }
 
   @Override
diff --git 
a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/PasswordRecoveryTokenStorageImpl.java
 
b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/PasswordRecoveryTokenStorageImpl.java
new file mode 100644
index 0000000000..acc69b22bf
--- /dev/null
+++ 
b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/PasswordRecoveryTokenStorageImpl.java
@@ -0,0 +1,34 @@
+/*
+ * 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.PasswordRecoveryToken;
+import org.apache.streampipes.storage.api.IPasswordRecoveryTokenStorage;
+import org.apache.streampipes.storage.couchdb.utils.Utils;
+
+public class PasswordRecoveryTokenStorageImpl extends 
DefaultViewCrudStorage<PasswordRecoveryToken>
+    implements IPasswordRecoveryTokenStorage {
+
+  public PasswordRecoveryTokenStorageImpl() {
+    super(
+        Utils::getCouchDbUserClient,
+        PasswordRecoveryToken.class,
+        "users/password-recovery"
+    );
+  }
+}

Reply via email to