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

yasith pushed a commit to branch feat/airavata-service-layer
in repository https://gitbox.apache.org/repos/asf/airavata.git

commit fdb2394d66acc71c7cd83913159de627b7dae263
Author: yasithdev <[email protected]>
AuthorDate: Thu Mar 26 10:14:39 2026 -0500

    refactor: rewire handler credential methods to service layer
    
    Replace all 6 credential method bodies in AiravataServerHandler with
    ThriftAdapter one-liners delegating to CredentialService.
---
 .../api/server/handler/AiravataServerHandler.java  | 168 ++-------------------
 1 file changed, 9 insertions(+), 159 deletions(-)

diff --git 
a/airavata-api/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
 
b/airavata-api/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 933e3da931..8621f0bc79 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -97,6 +97,7 @@ import org.apache.airavata.model.workspace.Notification;
 import org.apache.airavata.model.workspace.Project;
 import org.apache.airavata.registry.api.exception.RegistryServiceException;
 import org.apache.airavata.registry.api.service.handler.RegistryServerHandler;
+import org.apache.airavata.service.credential.CredentialService;
 import org.apache.airavata.service.experiment.ExperimentService;
 import org.apache.airavata.service.gateway.GatewayService;
 import org.apache.airavata.service.messaging.EventPublisher;
@@ -118,6 +119,7 @@ public class AiravataServerHandler implements 
Airavata.Iface {
     private final RegistryServerHandler registryHandler;
     private final SharingRegistryServerHandler sharingHandler;
     private final CredentialStoreServerHandler credentialHandler;
+    private final CredentialService credentialService;
     private final ExperimentService experimentService;
     private final GatewayService gatewayService;
     private final NotificationService notificationService;
@@ -142,6 +144,7 @@ public class AiravataServerHandler implements 
Airavata.Iface {
             logger.error("Error occured while reading airavata-server 
properties..", e);
         }
         EventPublisher eventPub = new EventPublisher(statusPublisher, 
experimentPublisher);
+        this.credentialService = new CredentialService(credentialHandler, 
sharingHandler);
         this.experimentService = new ExperimentService(registryHandler, 
sharingHandler, eventPub);
         this.gatewayService = new GatewayService(registryHandler, 
sharingHandler);
         this.notificationService = new NotificationService(registryHandler);
@@ -434,41 +437,7 @@ public class AiravataServerHandler implements 
Airavata.Iface {
     @SecurityCheck
     public String generateAndRegisterSSHKeys(AuthzToken authzToken, String 
description)
             throws InvalidRequestException, AiravataClientException, 
AiravataSystemException, TException {
-        String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
-        String userName = authzToken.getClaimsMap().get(Constants.USER_NAME);
-        try {
-            SSHCredential sshCredential = new SSHCredential();
-            sshCredential.setUsername(userName);
-            sshCredential.setGatewayId(gatewayId);
-            sshCredential.setDescription(description);
-            String key = credentialHandler.addSSHCredential(sshCredential);
-            try {
-                Entity entity = new Entity();
-                entity.setEntityId(key);
-                entity.setDomainId(gatewayId);
-                entity.setEntityTypeId(gatewayId + ":" + 
ResourceType.CREDENTIAL_TOKEN);
-                entity.setOwnerId(userName + "@" + gatewayId);
-                entity.setName(key);
-                entity.setDescription(description);
-                sharingHandler.createEntity(entity);
-            } catch (Exception ex) {
-                logger.error(ex.getMessage(), ex);
-                logger.error("Rolling back ssh key creation for user " + 
userName + " and description [" + description
-                        + "]");
-                credentialHandler.deleteSSHCredential(key, gatewayId);
-                AiravataSystemException ase = new AiravataSystemException();
-                ase.setMessage("Failed to create sharing registry record");
-                throw ase;
-            }
-            logger.debug("Airavata generated SSH keys for gateway : " + 
gatewayId + " and for user : " + userName);
-            return key;
-        } catch (Exception e) {
-            logger.error("Error occurred while registering SSH Credential", e);
-            AiravataSystemException exception = new AiravataSystemException();
-            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
-            exception.setMessage("Error occurred while registering SSH 
Credential. More info : " + e.getMessage());
-            throw exception;
-        }
+        return ThriftAdapter.execute(authzToken, null, ctx -> 
credentialService.generateAndRegisterSSHKeys(ctx, description));
     }
 
     /**
@@ -485,44 +454,7 @@ public class AiravataServerHandler implements 
Airavata.Iface {
     public String registerPwdCredential(
             AuthzToken authzToken, String loginUserName, String password, 
String description)
             throws InvalidRequestException, AiravataClientException, 
AiravataSystemException, TException {
-        String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
-        String userName = authzToken.getClaimsMap().get(Constants.USER_NAME);
-        try {
-            PasswordCredential pwdCredential = new PasswordCredential();
-            pwdCredential.setPortalUserName(userName);
-            pwdCredential.setLoginUserName(loginUserName);
-            pwdCredential.setPassword(password);
-            pwdCredential.setDescription(description);
-            pwdCredential.setGatewayId(gatewayId);
-            String key = 
credentialHandler.addPasswordCredential(pwdCredential);
-            try {
-                Entity entity = new Entity();
-                entity.setEntityId(key);
-                entity.setDomainId(gatewayId);
-                entity.setEntityTypeId(gatewayId + ":" + 
ResourceType.CREDENTIAL_TOKEN);
-                entity.setOwnerId(userName + "@" + gatewayId);
-                entity.setName(key);
-                entity.setDescription(description);
-                sharingHandler.createEntity(entity);
-            } catch (Exception ex) {
-                logger.error(ex.getMessage(), ex);
-                logger.error("Rolling back password registration for user " + 
userName + " and description ["
-                        + description + "]");
-                credentialHandler.deletePWDCredential(key, gatewayId);
-                AiravataSystemException ase = new AiravataSystemException();
-                ase.setMessage("Failed to create sharing registry record");
-                throw ase;
-            }
-            logger.debug("Airavata generated PWD credential for gateway : " + 
gatewayId + " and for user : "
-                    + loginUserName);
-            return key;
-        } catch (Exception e) {
-            logger.error("Error occurred while registering PWD Credential", e);
-            AiravataSystemException exception = new AiravataSystemException();
-            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
-            exception.setMessage("Error occurred while registering PWD 
Credential. More info : " + e.getMessage());
-            throw exception;
-        }
+        return ThriftAdapter.execute(authzToken, null, ctx -> 
credentialService.registerPwdCredential(ctx, loginUserName, password, 
description));
     }
 
     @Override
@@ -530,110 +462,28 @@ public class AiravataServerHandler implements 
Airavata.Iface {
     public CredentialSummary getCredentialSummary(AuthzToken authzToken, 
String tokenId)
             throws InvalidRequestException, AiravataClientException, 
AiravataSystemException, AuthorizationException,
                     TException {
-        String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
-        try {
-            if (!userHasAccessInternal(authzToken, tokenId, 
ResourcePermissionType.READ)) {
-                throw new AuthorizationException("User does not have 
permission to access this resource");
-            }
-            CredentialSummary credentialSummary = 
credentialHandler.getCredentialSummary(tokenId, gatewayId);
-            logger.debug("Airavata retrived the credential summary for token " 
+ tokenId + "GatewayId: " + gatewayId);
-            return credentialSummary;
-        } catch (AuthorizationException ae) {
-            String userName = 
authzToken.getClaimsMap().get(Constants.USER_NAME);
-            logger.info("User " + userName + " not allowed to access 
credential store token " + tokenId);
-            throw ae;
-        } catch (Exception e) {
-            String msg = "Error retrieving credential summary for token " + 
tokenId + ". GatewayId: " + gatewayId;
-            logger.error(msg, e);
-            AiravataSystemException exception = new 
AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
-            exception.setMessage(msg + " More info : " + e.getMessage());
-            throw exception;
-        }
+        return ThriftAdapter.execute(authzToken, null, ctx -> 
credentialService.getCredentialSummary(ctx, tokenId));
     }
 
     @Override
     @SecurityCheck
     public List<CredentialSummary> getAllCredentialSummaries(AuthzToken 
authzToken, SummaryType type)
             throws InvalidRequestException, AiravataClientException, 
AiravataSystemException, TException {
-        String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
-        String userName = authzToken.getClaimsMap().get(Constants.USER_NAME);
-        try {
-            List<SearchCriteria> filters = new ArrayList<>();
-            SearchCriteria searchCriteria = new SearchCriteria();
-            searchCriteria.setSearchField(EntitySearchField.ENTITY_TYPE_ID);
-            searchCriteria.setSearchCondition(SearchCondition.EQUAL);
-            searchCriteria.setValue(gatewayId + ":" + 
ResourceType.CREDENTIAL_TOKEN.name());
-            filters.add(searchCriteria);
-            List<String> accessibleTokenIds =
-                    sharingHandler.searchEntities(gatewayId, userName + "@" + 
gatewayId, filters, 0, -1).stream()
-                            .map(p -> p.getEntityId())
-                            .collect(Collectors.toList());
-            List<CredentialSummary> credentialSummaries =
-                    credentialHandler.getAllCredentialSummaries(type, 
accessibleTokenIds, gatewayId);
-            logger.debug(
-                    "Airavata successfully retrived credential summaries of 
type " + type + " GatewayId: " + gatewayId);
-            return credentialSummaries;
-        } catch (Exception e) {
-            String msg = "Error retrieving credential summaries of type " + 
type + ". GatewayId: " + gatewayId;
-            logger.error(msg, e);
-            AiravataSystemException exception = new 
AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
-            exception.setMessage(msg + " More info : " + e.getMessage());
-            throw exception;
-        }
+        return ThriftAdapter.execute(authzToken, null, ctx -> 
credentialService.getAllCredentialSummaries(ctx, type));
     }
 
     @Override
     @SecurityCheck
     public boolean deleteSSHPubKey(AuthzToken authzToken, String 
airavataCredStoreToken)
             throws InvalidRequestException, AiravataClientException, 
AiravataSystemException, TException {
-        String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
-        try {
-            if (!userHasAccessInternal(authzToken, airavataCredStoreToken, 
ResourcePermissionType.WRITE)) {
-                throw new AuthorizationException("User does not have 
permission to delete this resource.");
-            }
-            logger.debug("Airavata deleted SSH pub key for gateway Id : " + 
gatewayId + " and with token id : "
-                    + airavataCredStoreToken);
-            boolean result = 
credentialHandler.deleteSSHCredential(airavataCredStoreToken, gatewayId);
-            return result;
-        } catch (AuthorizationException ae) {
-            String userName = 
authzToken.getClaimsMap().get(Constants.USER_NAME);
-            logger.info("User " + userName + " not allowed to delete (no WRITE 
permission) credential store token "
-                    + airavataCredStoreToken);
-            throw ae;
-        } catch (Exception e) {
-            logger.error("Error occurred while deleting SSH credential", e);
-            AiravataSystemException exception = new AiravataSystemException();
-            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
-            exception.setMessage("Error occurred while deleting SSH 
credential. More info : " + e.getMessage());
-            throw exception;
-        }
+        return ThriftAdapter.execute(authzToken, null, ctx -> 
credentialService.deleteSSHPubKey(ctx, airavataCredStoreToken));
     }
 
     @Override
     @SecurityCheck
     public boolean deletePWDCredential(AuthzToken authzToken, String 
airavataCredStoreToken)
             throws InvalidRequestException, AiravataClientException, 
AiravataSystemException, TException {
-        String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
-        try {
-            if (!userHasAccessInternal(authzToken, airavataCredStoreToken, 
ResourcePermissionType.WRITE)) {
-                throw new AuthorizationException("User does not have 
permission to delete this resource.");
-            }
-            logger.debug("Airavata deleted PWD credential for gateway Id : " + 
gatewayId + " and with token id : "
-                    + airavataCredStoreToken);
-            boolean result = 
credentialHandler.deletePWDCredential(airavataCredStoreToken, gatewayId);
-            return result;
-        } catch (AuthorizationException ae) {
-            String userName = 
authzToken.getClaimsMap().get(Constants.USER_NAME);
-            logger.info("User " + userName + " not allowed to delete (no WRITE 
permission) credential store token "
-                    + airavataCredStoreToken);
-            throw ae;
-        } catch (Exception e) {
-            logger.error("Error occurred while deleting PWD credential", e);
-            AiravataSystemException exception = new AiravataSystemException();
-            exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
-            exception.setMessage("Error occurred while deleting PWD 
credential. More info : " + e.getMessage());
-            throw exception;
-        }
+        return ThriftAdapter.execute(authzToken, null, ctx -> 
credentialService.deletePWDCredential(ctx, airavataCredStoreToken));
     }
 
     /**

Reply via email to