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

yasithdev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata.git


The following commit(s) were added to refs/heads/master by this push:
     new b0243ae2ec refactor: collapse duplicated method families in 
CredentialStoreService (#637)
b0243ae2ec is described below

commit b0243ae2ec87144b2144c60bf86431aaad274898
Author: Yasith Jayawardana <[email protected]>
AuthorDate: Sun Jun 7 20:05:27 2026 -0400

    refactor: collapse duplicated method families in CredentialStoreService 
(#637)
    
    The three typed getters (SSH/Certificate/Password), the two 
SSH-summary-for-gateway methods, and the SSH/PWD delete methods each repeated 
the same fetch-check-log, collect, and delete-and-log scaffolding; they now 
delegate to three private helpers (getTypedCredential, collectSshSummaries with 
a Predicate<SSHCredential>, deleteCredential), whose log statements use SLF4J 
{} placeholders instead of string concatenation. Public/@Override signatures 
are preserved; two getter log lines read [...]
---
 .../credential/service/CredentialStoreService.java | 199 +++++++++------------
 1 file changed, 89 insertions(+), 110 deletions(-)

diff --git 
a/airavata-api/credential-service/src/main/java/org/apache/airavata/credential/service/CredentialStoreService.java
 
b/airavata-api/credential-service/src/main/java/org/apache/airavata/credential/service/CredentialStoreService.java
index e39b0cb3d2..d7c3b7f659 100644
--- 
a/airavata-api/credential-service/src/main/java/org/apache/airavata/credential/service/CredentialStoreService.java
+++ 
b/airavata-api/credential-service/src/main/java/org/apache/airavata/credential/service/CredentialStoreService.java
@@ -21,6 +21,8 @@ package org.apache.airavata.credential.service;
 
 import java.sql.Timestamp;
 import java.util.*;
+import java.util.function.Function;
+import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import org.apache.airavata.credential.model.CredentialEntity;
 import org.apache.airavata.credential.model.CredentialPK;
@@ -114,23 +116,12 @@ public class CredentialStoreService implements 
CredentialProvider {
 
     @Override
     public SSHCredential getSSHCredential(String tokenId, String gatewayId) 
throws CredentialStoreException {
-        try {
-            StoredCredential stored = getCredential(gatewayId, tokenId);
-            if (stored != null && stored.getCredentialCase() == 
StoredCredential.CredentialCase.SSH_CREDENTIAL) {
-                return stored.getSshCredential();
-            } else {
-                log.info("Could not find SSH credentials for token - " + 
tokenId + " and " + "gateway id - "
-                        + gatewayId);
-                return null;
-            }
-        } catch (Exception e) {
-            log.error(
-                    "Error occurred while retrieving SSH credentialfor token - 
" + tokenId + " and gateway id - "
-                            + gatewayId,
-                    e);
-            throw new CredentialStoreException("Error occurred while 
retrieving SSH credential for token - " + tokenId
-                    + " and gateway id - " + gatewayId);
-        }
+        return getTypedCredential(
+                tokenId,
+                gatewayId,
+                "SSH",
+                StoredCredential.CredentialCase.SSH_CREDENTIAL,
+                StoredCredential::getSshCredential);
     }
 
     public CredentialSummary getCredentialSummary(String tokenId, String 
gatewayId) throws CredentialStoreException {
@@ -225,67 +216,30 @@ public class CredentialStoreService implements 
CredentialProvider {
 
     public CertificateCredential getCertificateCredential(String tokenId, 
String gatewayId)
             throws CredentialStoreException {
-        try {
-            StoredCredential stored = getCredential(gatewayId, tokenId);
-            if (stored != null
-                    && stored.getCredentialCase() == 
StoredCredential.CredentialCase.CERTIFICATE_CREDENTIAL) {
-                return stored.getCertificateCredential();
-            } else {
-                log.info("Could not find Certificate credentials for token - " 
+ tokenId + " and " + "gateway id - "
-                        + gatewayId);
-                return null;
-            }
-        } catch (Exception e) {
-            log.error(
-                    "Error occurred while retrieving Certificate credential 
for token - " + tokenId
-                            + " and gateway id - " + gatewayId,
-                    e);
-            throw new CredentialStoreException("Error occurred while 
retrieving Certificate credential for token - "
-                    + tokenId + " and gateway id - " + gatewayId);
-        }
+        return getTypedCredential(
+                tokenId,
+                gatewayId,
+                "Certificate",
+                StoredCredential.CredentialCase.CERTIFICATE_CREDENTIAL,
+                StoredCredential::getCertificateCredential);
     }
 
     @Override
     public PasswordCredential getPasswordCredential(String tokenId, String 
gatewayId) throws CredentialStoreException {
-        try {
-            StoredCredential stored = getCredential(gatewayId, tokenId);
-            if (stored != null && stored.getCredentialCase() == 
StoredCredential.CredentialCase.PASSWORD_CREDENTIAL) {
-                return stored.getPasswordCredential();
-            } else {
-                log.info("Could not find PWD credentials for token - " + 
tokenId + " and " + "gateway id - "
-                        + gatewayId);
-                return null;
-            }
-        } catch (Exception e) {
-            log.error(
-                    "Error occurred while retrieving PWD credentialfor token - 
" + tokenId + " and gateway id - "
-                            + gatewayId,
-                    e);
-            throw new CredentialStoreException("Error occurred while 
retrieving PWD credential for token - " + tokenId
-                    + " and gateway id - " + gatewayId);
-        }
+        return getTypedCredential(
+                tokenId,
+                gatewayId,
+                "PWD",
+                StoredCredential.CredentialCase.PASSWORD_CREDENTIAL,
+                StoredCredential::getPasswordCredential);
     }
 
     public List<CredentialSummary> 
getAllCredentialSummaryForGateway(SummaryType type, String gatewayId)
             throws CredentialStoreException {
         if (type.equals(SummaryType.SSH)) {
-            List<CredentialSummary> summaryList = new ArrayList<>();
-            try {
-                List<StoredCredential> allCredentials = 
getAllCredentialsPerGateway(gatewayId);
-                if (allCredentials != null && !allCredentials.isEmpty()) {
-                    for (StoredCredential stored : allCredentials) {
-                        if (stored.getCredentialCase() == 
StoredCredential.CredentialCase.SSH_CREDENTIAL) {
-                            
summaryList.add(convertToCredentialSummary(stored));
-                        }
-                    }
-                }
-            } catch (Exception e) {
-                log.error("Error occurred while retrieving credential 
Summary", e);
-                throw new CredentialStoreException("Error occurred while 
retrieving credential Summary");
-            }
-            return summaryList;
+            return collectSshSummaries(gatewayId, ssh -> true);
         } else {
-            log.info("Summary type " + type + " not supported for gateway id - 
" + gatewayId);
+            log.info("Summary type {} not supported for gateway id - {}", 
type, gatewayId);
             return Collections.emptyList();
         }
     }
@@ -293,27 +247,9 @@ public class CredentialStoreService implements 
CredentialProvider {
     public List<CredentialSummary> getAllCredentialSummaryForUserInGateway(
             SummaryType type, String gatewayId, String userId) throws 
CredentialStoreException {
         if (type.equals(SummaryType.SSH)) {
-            List<CredentialSummary> summaryList = new ArrayList<>();
-            try {
-                List<StoredCredential> allCredentials = 
getAllCredentialsPerGateway(gatewayId);
-                if (allCredentials != null && !allCredentials.isEmpty()) {
-                    for (StoredCredential stored : allCredentials) {
-                        if (stored.getCredentialCase() == 
StoredCredential.CredentialCase.SSH_CREDENTIAL) {
-                            var sshCred = stored.getSshCredential();
-                            if (userId.equals(sshCred.getUsername())) {
-                                
summaryList.add(convertToCredentialSummary(stored));
-                            }
-                        }
-                    }
-                }
-            } catch (Exception e) {
-                log.error("Error occurred while retrieving credential 
Summary", e);
-                throw new CredentialStoreException("Error occurred while 
retrieving credential Summary");
-            }
-            return summaryList;
+            return collectSshSummaries(gatewayId, ssh -> 
userId.equals(ssh.getUsername()));
         } else {
-            log.info("Summary type " + type + " not supported for user id - " 
+ userId + " and gateway id - "
-                    + gatewayId);
+            log.info("Summary type {} not supported for user id - {} and 
gateway id - {}", type, userId, gatewayId);
             return Collections.emptyList();
         }
     }
@@ -340,31 +276,11 @@ public class CredentialStoreService implements 
CredentialProvider {
 
     @Override
     public boolean deleteSSHCredential(String tokenId, String gatewayId) 
throws CredentialStoreException {
-        try {
-            credentialRepository.deleteById(new CredentialPK(gatewayId, 
tokenId));
-            return true;
-        } catch (Exception e) {
-            log.error(
-                    "Error occurred while deleting SSH credential for token - 
" + tokenId + " and gateway id - "
-                            + gatewayId,
-                    e);
-            throw new CredentialStoreException("Error occurred while deleting 
SSH credential for token - " + tokenId
-                    + " and gateway id - " + gatewayId);
-        }
+        return deleteCredential(tokenId, gatewayId, "SSH");
     }
 
     public boolean deletePWDCredential(String tokenId, String gatewayId) 
throws CredentialStoreException {
-        try {
-            credentialRepository.deleteById(new CredentialPK(gatewayId, 
tokenId));
-            return true;
-        } catch (Exception e) {
-            log.error(
-                    "Error occurred while deleting PWD credential for token - 
" + tokenId + " and gateway id - "
-                            + gatewayId,
-                    e);
-            throw new CredentialStoreException("Error occurred while deleting 
PWD credential for token - " + tokenId
-                    + " and gateway id - " + gatewayId);
-        }
+        return deleteCredential(tokenId, gatewayId, "PWD");
     }
 
     // --- Internal data access methods using Spring Data repos ---
@@ -396,6 +312,69 @@ public class CredentialStoreService implements 
CredentialProvider {
                 .orElse(null);
     }
 
+    private <T> T getTypedCredential(
+            String tokenId,
+            String gatewayId,
+            String label,
+            StoredCredential.CredentialCase expectedCase,
+            Function<StoredCredential, T> accessor)
+            throws CredentialStoreException {
+        try {
+            StoredCredential stored = getCredential(gatewayId, tokenId);
+            if (stored != null && stored.getCredentialCase() == expectedCase) {
+                return accessor.apply(stored);
+            } else {
+                log.info("Could not find {} credentials for token - {} and 
gateway id - {}", label, tokenId, gatewayId);
+                return null;
+            }
+        } catch (Exception e) {
+            log.error(
+                    "Error occurred while retrieving {} credential for token - 
{} and gateway id - {}",
+                    label,
+                    tokenId,
+                    gatewayId,
+                    e);
+            throw new CredentialStoreException("Error occurred while 
retrieving " + label + " credential for token - "
+                    + tokenId + " and gateway id - " + gatewayId);
+        }
+    }
+
+    private List<CredentialSummary> collectSshSummaries(String gatewayId, 
Predicate<SSHCredential> filter)
+            throws CredentialStoreException {
+        List<CredentialSummary> summaryList = new ArrayList<>();
+        try {
+            List<StoredCredential> allCredentials = 
getAllCredentialsPerGateway(gatewayId);
+            if (allCredentials != null && !allCredentials.isEmpty()) {
+                for (StoredCredential stored : allCredentials) {
+                    if (stored.getCredentialCase() == 
StoredCredential.CredentialCase.SSH_CREDENTIAL
+                            && filter.test(stored.getSshCredential())) {
+                        summaryList.add(convertToCredentialSummary(stored));
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error("Error occurred while retrieving credential Summary", e);
+            throw new CredentialStoreException("Error occurred while 
retrieving credential Summary");
+        }
+        return summaryList;
+    }
+
+    private boolean deleteCredential(String tokenId, String gatewayId, String 
label) throws CredentialStoreException {
+        try {
+            credentialRepository.deleteById(new CredentialPK(gatewayId, 
tokenId));
+            return true;
+        } catch (Exception e) {
+            log.error(
+                    "Error occurred while deleting {} credential for token - 
{} and gateway id - {}",
+                    label,
+                    tokenId,
+                    gatewayId,
+                    e);
+            throw new CredentialStoreException("Error occurred while deleting 
" + label + " credential for token - "
+                    + tokenId + " and gateway id - " + gatewayId);
+        }
+    }
+
     private List<StoredCredential> getAllCredentialsPerGateway(String 
gatewayId) throws CredentialStoreException {
         return credentialRepository.findByGatewayId(gatewayId).stream()
                 .map(this::toStoredCredential)

Reply via email to