You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2019/05/08 16:28:16 UTC

[airavata] branch develop updated: AIRAVATA-3030 Bug fix: always update exp entity in sharing registry

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

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


The following commit(s) were added to refs/heads/develop by this push:
     new 44d176a  AIRAVATA-3030 Bug fix: always update exp entity in sharing registry
44d176a is described below

commit 44d176ad8e5b9745401d1aef788d384eadb73bc6
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Wed May 8 12:28:04 2019 -0400

    AIRAVATA-3030 Bug fix: always update exp entity in sharing registry
---
 .../api/server/handler/AiravataServerHandler.java    | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 306d791..7b59f00 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -1629,27 +1629,33 @@ public class AiravataServerHandler implements Airavata.Iface {
         SharingRegistryService.Client sharingClient = sharingClientPool.getResource();
         try {
             ExperimentModel experimentModel = regClient.getExperiment(airavataExperimentId);
+            String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
             if(ServerSettings.isEnableSharing() && !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.USER_NAME).equals(experimentModel.getUserName())
                     || !authzToken.getClaimsMap().get(org.apache.airavata.common.utils.Constants.GATEWAY_ID).equals(experimentModel.getGatewayId())){
                 try {
                     // Verify WRITE access
-                    String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
                     String userId = authzToken.getClaimsMap().get(Constants.USER_NAME);
                     if (!sharingClient.userHasAccess(gatewayId, userId + "@" + gatewayId,
                             airavataExperimentId, gatewayId + ":WRITE")){
                         throw new AuthorizationException("User does not have permission to access this resource");
                     }
-                    // Update name, description and parent on Entity
-                    Entity entity = sharingClient.getEntity(gatewayId, airavataExperimentId);
-                    entity.setName(experiment.getExperimentName());
-                    entity.setDescription(experiment.getDescription());
-                    entity.setParentEntityId(experiment.getProjectId());
-                    sharingClient.updateEntity(entity);
                 } catch (Exception e) {
                     throw new AuthorizationException("User does not have permission to access this resource");
                 }
             }
 
+            try {
+                // Update name, description and parent on Entity
+                // TODO: update the experiment via a DB event
+                Entity entity = sharingClient.getEntity(gatewayId, airavataExperimentId);
+                entity.setName(experiment.getExperimentName());
+                entity.setDescription(experiment.getDescription());
+                entity.setParentEntityId(experiment.getProjectId());
+                sharingClient.updateEntity(entity);
+            } catch (Exception e) {
+                throw new Exception("Failed to update entity in sharing registry", e);
+            }
+
             regClient.updateExperiment(airavataExperimentId, experiment);
             registryClientPool.returnResource(regClient);
             sharingClientPool.returnResource(sharingClient);