Repository: airavata Updated Branches: refs/heads/develop 7f3a93928 -> b45fac7a9
Checking for duplicate gateway request Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/98ec4bfa Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/98ec4bfa Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/98ec4bfa Branch: refs/heads/develop Commit: 98ec4bfa32e51af7b50b6252b8f7b5001f94d03b Parents: 59ca27b Author: Sneha Tilak <[email protected]> Authored: Tue Jun 6 16:05:54 2017 -0400 Committer: Sneha Tilak <[email protected]> Committed: Tue Jun 6 16:05:54 2017 -0400 ---------------------------------------------------------------------- .../handlers/TenantProfileServiceHandler.java | 23 ++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/98ec4bfa/airavata-services/profile-service/profile-service-server/src/main/java/org/apache/airavata/service/profile/handlers/TenantProfileServiceHandler.java ---------------------------------------------------------------------- diff --git a/airavata-services/profile-service/profile-service-server/src/main/java/org/apache/airavata/service/profile/handlers/TenantProfileServiceHandler.java b/airavata-services/profile-service/profile-service-server/src/main/java/org/apache/airavata/service/profile/handlers/TenantProfileServiceHandler.java index 04870d9..51fc841 100644 --- a/airavata-services/profile-service/profile-service-server/src/main/java/org/apache/airavata/service/profile/handlers/TenantProfileServiceHandler.java +++ b/airavata-services/profile-service/profile-service-server/src/main/java/org/apache/airavata/service/profile/handlers/TenantProfileServiceHandler.java @@ -72,7 +72,9 @@ public class TenantProfileServiceHandler implements TenantProfileService.Iface { @SecurityCheck public String addGateway(AuthzToken authzToken, Gateway gateway) throws TenantProfileServiceException, AuthorizationException, TException { try { - gateway = tenantProfileRepository.create(gateway); + if (!checkDuplicate(gateway)) { + gateway = tenantProfileRepository.create(gateway); + } if (gateway != null) { logger.info("Added Airavata Gateway with Id: " + gateway.getGatewayId()); // replicate tenant at end-places only if status is APPROVED @@ -146,8 +148,8 @@ public class TenantProfileServiceHandler implements TenantProfileService.Iface { // delete tenant at end-places ProfileServiceUtils.getDbEventPublisher().publish( ProfileServiceUtils.getDBEventMessageContext(EntityType.TENANT, CrudType.DELETE, - // pass along gateway datamodel, with correct gatewayId; - // approvalstatus is not used for delete, hence set dummy value + // pass along gateway datamodel, with correct gatewayId; + // approvalstatus is not used for delete, hence set dummy value new Gateway( gatewayId, GatewayApprovalStatus.DEACTIVATED @@ -183,7 +185,8 @@ public class TenantProfileServiceHandler implements TenantProfileService.Iface { public boolean isGatewayExist(AuthzToken authzToken, String gatewayId) throws TenantProfileServiceException, AuthorizationException, TException { try { Gateway gateway = tenantProfileRepository.getGateway(gatewayId); - return gateway != null; + boolean checkStatus = gateway.getGatewayApprovalStatus().equals(GatewayApprovalStatus.APPROVED); + return (gateway != null && checkStatus); } catch (Exception ex) { logger.error("Error checking if gateway-profile exists, reason: " + ex.getMessage(), ex); TenantProfileServiceException exception = new TenantProfileServiceException(); @@ -191,4 +194,16 @@ public class TenantProfileServiceHandler implements TenantProfileService.Iface { throw exception; } } + + private boolean checkDuplicate(Gateway gateway) throws TenantProfileServiceException { + try { + Gateway duplicateGateway = tenantProfileRepository.getGateway(gateway.getGatewayId()); + return ((duplicateGateway.getGatewayId() == gateway.getGatewayId()) && (duplicateGateway.getGatewayName() == gateway.getGatewayName()) && (duplicateGateway.getGatewayURL() == gateway.getGatewayURL()) && (duplicateGateway.getGatewayApprovalStatus().equals(GatewayApprovalStatus.APPROVED))); + } catch (Exception ex) { + logger.error("Error checking if duplicate gateway-profile exists, reason: " + ex.getMessage(), ex); + TenantProfileServiceException exception = new TenantProfileServiceException(); + exception.setMessage("Error checking if duplicate gateway-profiles exists, reason: " + ex.getMessage()); + throw exception; + } + } }
