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 2018/06/08 21:16:25 UTC

[airavata] branch group-based-auth updated (28cb205 -> 5ba95f9)

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

machristie pushed a change to branch group-based-auth
in repository https://gitbox.apache.org/repos/asf/airavata.git.


    from 28cb205  AIRAVATA-2819 addExperiment implicitly adds CREATED status
     add 358a3f8  Adding demo gateway1 for ACS workshop
     add fb59d8d  Adding demo gateways for ACS workshop
     add e9dd9a4  Change Git URL to dREG's repo
     add afe33c8  Merge remote-tracking branch 'origin/master'
     add b0987c5  Merge remote-tracking branch 'origin/AIRAVATA-2500'
     add 9d83c91  Travis: clone full repo for git-describe to work
     add 7d4c711  IU Cybergateway: disable password login, IU CAS only
     add d365755  IU Cybergateway: automatically assign gateway-user role
     add f2b5d2b  Added the new google analytics ID
     add d900060  Use pga_default_http_port (defaults to 80) in http vhost conf
     add c516b73  Added the new google analytics ID for CSBG LSU
     add ea1691f  Adding analytics var to Simvascular pga_config template
     add db71389  Adding supermic email for monitoring
     add 957dc95  Fixing output files not staging issues when wildcards are specified
     add 0ff8b18  Merge pull request #190 from DImuthuUpe/AIRAVATA-2467
     add 3cdb2e3  Removing dev.ultrascan from production deployment
     add c303184  Merge remote-tracking branch 'origin/master'
     add 3df3bc5  Changed USD Login page wordings on login buttons and headings. Request from gateway PI.
     add ed59794  Changed USD Login page wordings on login buttons and headings. Request from gateway PI.
     add f2fd1c2  Adding Next Gen Thermodynamics gateway directories
     add d15cad4  NextGen Thermodynamics gateway: SSL/CILogon config
     add 173b9d6  Changed the CILogon name for next gen TDB
     add 1d5b3f2  Changed the CILogon into GSU Login in the Login page CILogon button on request by the gateway PI
     add 3f84204  Changed the CILogon name and logo in CILogon button
     add c8573c1  Changed the new URL of Searching SRA gateway and added certificates
     add f79c7f7  Added vhost server alias for searching SRA
     add baf6974  Adding missing emails to gfac config
     add a6e5782  Logging improvements
     add af87650  Adding max-wall-time-limit into simvascular pga config
     add 3dd7c72  Changed the max walltie for SimVascular gateway to 300
     add 49f6f1a  Bumping prefetch.count to 400
     add a0fc98b  pga role gains vhost_server_redirect variable, used for CSBGLSU gateway
     add e8530a1  Reorganizing DB migration scripts in prep for 0.17 release
     add 0f9a519  Fixed the table column constraint
     add 61dc421  Merge pull request #199 from rkunalan/fixes
     add edba8d3  Added Suranga's email for gateway user account creation notifications
     add 433210b  Added Rob's gmail to get new user notifications
     add 359434f  Added new theme to CSBG LSU gateway
     add 2dbbfd5  Added new gateway folder: InterACTWEL
     add 35e1c12  Switched dreg notification email to sgrc-iu-group@iu.edu from SGG old mail
     new a79b484  Add isUserEnabled to IamAdminServices
     new 32a58cf  Thrift stub generation for isUserEnabled
     new 5ba95f9  Merge branch 'is-user-enabled' into group-based-auth

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../Iam/Admin/Services/CPI/IamAdminServices.php    |  294 +++++
 .../core/impl/TenantManagementKeycloakImpl.java    |   19 +
 .../core/interfaces/TenantManagementInterface.java |   10 +
 .../profile/handlers/IamAdminServicesHandler.java  |   14 +
 .../iam/admin/services/cpi/IamAdminServices.java   | 1200 ++++++++++++++++++++
 .../scigap/dreg-production/group_vars/pga/vars.yml |    4 +-
 .../scigap/production/pga_config/csbglsu/vars.yml  |   17 +-
 .../pga_config/{searchingSRA => demo1}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo1/vault.yml   |   17 +
 .../pga_config/{searchingSRA => demo10}/vars.yml   |   14 +-
 .../scigap/production/pga_config/demo10/vault.yml  |   17 +
 .../pga_config/{searchingSRA => demo2}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo2/vault.yml   |   17 +
 .../pga_config/{searchingSRA => demo3}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo3/vault.yml   |   17 +
 .../pga_config/{searchingSRA => demo4}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo4/vault.yml   |   17 +
 .../pga_config/{searchingSRA => demo5}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo5/vault.yml   |   17 +
 .../pga_config/{searchingSRA => demo6}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo6/vault.yml   |   17 +
 .../pga_config/{searchingSRA => demo7}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo7/vault.yml   |   17 +
 .../pga_config/{searchingSRA => demo8}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo8/vault.yml   |   17 +
 .../pga_config/{searchingSRA => demo9}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo9/vault.yml   |   17 +
 .../production/pga_config/georgiastate/vars.yml    |    6 +-
 .../pga_config/{csbglsu => interactwel}/vars.yml   |   25 +-
 .../production/pga_config/interactwel/vault.yml    |   18 +
 .../production/pga_config/iugateway/vars.yml       |    4 +-
 .../production/pga_config/newUltrascan/vars.yml    |   73 --
 .../production/pga_config/newUltrascan/vault.yml   |   18 -
 .../pga_config/{Kentucky => nexttdb}/vars.yml      |   20 +-
 .../scigap/production/pga_config/nexttdb/vault.yml |   18 +
 .../production/pga_config/searchingSRA/vars.yml    |   15 +-
 .../pga_config/simvascular/files/pga_config.php.j2 |    7 +-
 .../production/pga_config/southdakota/vars.yml     |    8 +-
 dev-tools/ansible/pga-scigap-prod.yml              |    1 -
 .../gfac/templates/airavata-server.properties.j2   |    2 +-
 .../roles/gfac/templates/gfac-config.yaml.j2       |    4 +
 .../roles/pga/templates/pga-ssl-vhost.conf.j2      |    7 +
 .../ansible/roles/pga/templates/pga-vhost.conf.j2  |    9 +-
 .../airavata/gfac/impl/HPCRemoteCluster.java       |    5 +-
 .../airavata/gfac/impl/task/SCPDataStageTask.java  |   23 +-
 .../src/main/resources/appcatalog-mysql.sql        |    2 +-
 .../DeltaScripts/appCatalog_schema_delta.sql       |   38 +-
 .../DeltaScripts/credentialStore_schema_delta.sql  |    8 -
 .../DeltaScripts/expCatalog_schema_delta.sql       |    8 -
 .../DeltaScripts/replicaCatalog_schema_delta.sql   |    8 -
 .../DeltaScripts/sharingCatalog_schema_delta.sql   |   21 +
 .../DeltaScripts/workFlow_schema_delta.sql         |    8 -
 ...licaCatalog_lowercase_user_data_dir_example.sql |    0
 .../credentialStore_keycloak_migration.sql         |    0
 .../expCatalog_keycloak_migration.sql              |    0
 .../profileService_keycloak_migration.sql          |    0
 .../sharingCatalog_keycloak_migration.sql          |    0
 .../0.16-0.17/migration-notes.md                   |    9 +-
 .../DeltaScripts/appCatalog_schema_delta.sql       |   30 -
 .../0.17-0.18/migration-notes.md                   |   17 -
 .../DeltaScripts/appCatalog_schema_delta.sql       |   36 -
 .../iam-admin-services-cpi.thrift                  |    5 +
 62 files changed, 1974 insertions(+), 347 deletions(-)
 copy dev-tools/ansible/inventories/scigap/production/pga_config/{searchingSRA => demo1}/vars.yml (79%)
 create mode 100644 dev-tools/ansible/inventories/scigap/production/pga_config/demo1/vault.yml
 copy dev-tools/ansible/inventories/scigap/production/pga_config/{searchingSRA => demo10}/vars.yml (79%)
 create mode 100644 dev-tools/ansible/inventories/scigap/production/pga_config/demo10/vault.yml
 copy dev-tools/ansible/inventories/scigap/production/pga_config/{searchingSRA => demo2}/vars.yml (79%)
 create mode 100644 dev-tools/ansible/inventories/scigap/production/pga_config/demo2/vault.yml
 copy dev-tools/ansible/inventories/scigap/production/pga_config/{searchingSRA => demo3}/vars.yml (79%)
 create mode 100644 dev-tools/ansible/inventories/scigap/production/pga_config/demo3/vault.yml
 copy dev-tools/ansible/inventories/scigap/production/pga_config/{searchingSRA => demo4}/vars.yml (79%)
 create mode 100644 dev-tools/ansible/inventories/scigap/production/pga_config/demo4/vault.yml
 copy dev-tools/ansible/inventories/scigap/production/pga_config/{searchingSRA => demo5}/vars.yml (79%)
 create mode 100644 dev-tools/ansible/inventories/scigap/production/pga_config/demo5/vault.yml
 copy dev-tools/ansible/inventories/scigap/production/pga_config/{searchingSRA => demo6}/vars.yml (79%)
 create mode 100644 dev-tools/ansible/inventories/scigap/production/pga_config/demo6/vault.yml
 copy dev-tools/ansible/inventories/scigap/production/pga_config/{searchingSRA => demo7}/vars.yml (79%)
 create mode 100644 dev-tools/ansible/inventories/scigap/production/pga_config/demo7/vault.yml
 copy dev-tools/ansible/inventories/scigap/production/pga_config/{searchingSRA => demo8}/vars.yml (79%)
 create mode 100644 dev-tools/ansible/inventories/scigap/production/pga_config/demo8/vault.yml
 copy dev-tools/ansible/inventories/scigap/production/pga_config/{searchingSRA => demo9}/vars.yml (79%)
 create mode 100644 dev-tools/ansible/inventories/scigap/production/pga_config/demo9/vault.yml
 copy dev-tools/ansible/inventories/scigap/production/pga_config/{csbglsu => interactwel}/vars.yml (64%)
 create mode 100644 dev-tools/ansible/inventories/scigap/production/pga_config/interactwel/vault.yml
 delete mode 100644 dev-tools/ansible/inventories/scigap/production/pga_config/newUltrascan/vars.yml
 delete mode 100644 dev-tools/ansible/inventories/scigap/production/pga_config/newUltrascan/vault.yml
 copy dev-tools/ansible/inventories/scigap/production/pga_config/{Kentucky => nexttdb}/vars.yml (70%)
 create mode 100644 dev-tools/ansible/inventories/scigap/production/pga_config/nexttdb/vault.yml
 rename modules/registry/release-migration-scripts/{0.17-0.18 => 0.16-0.17}/DeltaScripts/sharingCatalog_schema_delta.sql (54%)
 rename modules/registry/release-migration-scripts/{0.17-0.18 => 0.16-0.17}/keycloak-migration-replica-catalog/replicaCatalog_lowercase_user_data_dir_example.sql (100%)
 rename modules/registry/release-migration-scripts/{0.17-0.18 => 0.16-0.17}/keycloak-migration/credentialStore_keycloak_migration.sql (100%)
 rename modules/registry/release-migration-scripts/{0.17-0.18 => 0.16-0.17}/keycloak-migration/expCatalog_keycloak_migration.sql (100%)
 rename modules/registry/release-migration-scripts/{0.17-0.18 => 0.16-0.17}/keycloak-migration/profileService_keycloak_migration.sql (100%)
 rename modules/registry/release-migration-scripts/{0.17-0.18 => 0.16-0.17}/keycloak-migration/sharingCatalog_keycloak_migration.sql (100%)
 delete mode 100644 modules/registry/release-migration-scripts/0.17-0.18/DeltaScripts/appCatalog_schema_delta.sql
 delete mode 100644 modules/registry/release-migration-scripts/0.17-0.18/migration-notes.md
 delete mode 100644 modules/registry/release-migration-scripts/0.18-0.19/DeltaScripts/appCatalog_schema_delta.sql

-- 
To stop receiving notification emails like this one, please contact
machristie@apache.org.

[airavata] 02/03: Thrift stub generation for isUserEnabled

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch group-based-auth
in repository https://gitbox.apache.org/repos/asf/airavata.git

commit 32a58cf879aa7582409b912c153a4faefb4bb87e
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Fri Jun 8 17:09:20 2018 -0400

    Thrift stub generation for isUserEnabled
---
 .../Iam/Admin/Services/CPI/IamAdminServices.php    |  294 +++++
 .../iam/admin/services/cpi/IamAdminServices.java   | 1196 ++++++++++++++++++++
 2 files changed, 1490 insertions(+)

diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Service/Iam/Admin/Services/CPI/IamAdminServices.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Service/Iam/Admin/Services/CPI/IamAdminServices.php
index 963fc80..0393df3 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Service/Iam/Admin/Services/CPI/IamAdminServices.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Service/Iam/Admin/Services/CPI/IamAdminServices.php
@@ -55,6 +55,14 @@ interface IamAdminServicesIf {
   /**
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $username
+   * @return bool
+   * @throws \Airavata\Service\Iam\Admin\Services\CPI\Error\IamAdminServicesException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function isUserEnabled(\Airavata\Model\Security\AuthzToken $authzToken, $username);
+  /**
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param string $username
    * @param string $newPassword
    * @return bool
    * @throws \Airavata\Service\Iam\Admin\Services\CPI\Error\IamAdminServicesException
@@ -351,6 +359,64 @@ class IamAdminServicesClient implements \Airavata\Service\Iam\Admin\Services\CPI
     throw new \Exception("enableUser failed: unknown result");
   }
 
+  public function isUserEnabled(\Airavata\Model\Security\AuthzToken $authzToken, $username)
+  {
+    $this->send_isUserEnabled($authzToken, $username);
+    return $this->recv_isUserEnabled();
+  }
+
+  public function send_isUserEnabled(\Airavata\Model\Security\AuthzToken $authzToken, $username)
+  {
+    $args = new \Airavata\Service\Iam\Admin\Services\CPI\IamAdminServices_isUserEnabled_args();
+    $args->authzToken = $authzToken;
+    $args->username = $username;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'isUserEnabled', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('isUserEnabled', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_isUserEnabled()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\Service\Iam\Admin\Services\CPI\IamAdminServices_isUserEnabled_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\Service\Iam\Admin\Services\CPI\IamAdminServices_isUserEnabled_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->Idse !== null) {
+      throw $result->Idse;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("isUserEnabled failed: unknown result");
+  }
+
   public function resetUserPassword(\Airavata\Model\Security\AuthzToken $authzToken, $username, $newPassword)
   {
     $this->send_resetUserPassword($authzToken, $username, $newPassword);
@@ -1695,6 +1761,234 @@ class IamAdminServices_enableUser_result {
 
 }
 
+class IamAdminServices_isUserEnabled_args {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Security\AuthzToken
+   */
+  public $authzToken = null;
+  /**
+   * @var string
+   */
+  public $username = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'authzToken',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Security\AuthzToken',
+          ),
+        2 => array(
+          'var' => 'username',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['authzToken'])) {
+        $this->authzToken = $vals['authzToken'];
+      }
+      if (isset($vals['username'])) {
+        $this->username = $vals['username'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'IamAdminServices_isUserEnabled_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
+            $xfer += $this->authzToken->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->username);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('IamAdminServices_isUserEnabled_args');
+    if ($this->authzToken !== null) {
+      if (!is_object($this->authzToken)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
+      $xfer += $this->authzToken->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->username !== null) {
+      $xfer += $output->writeFieldBegin('username', TType::STRING, 2);
+      $xfer += $output->writeString($this->username);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class IamAdminServices_isUserEnabled_result {
+  static $_TSPEC;
+
+  /**
+   * @var bool
+   */
+  public $success = null;
+  /**
+   * @var \Airavata\Service\Iam\Admin\Services\CPI\Error\IamAdminServicesException
+   */
+  public $Idse = null;
+  /**
+   * @var \Airavata\API\Error\AuthorizationException
+   */
+  public $ae = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::BOOL,
+          ),
+        1 => array(
+          'var' => 'Idse',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Service\Iam\Admin\Services\CPI\Error\IamAdminServicesException',
+          ),
+        2 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['Idse'])) {
+        $this->Idse = $vals['Idse'];
+      }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'IamAdminServices_isUserEnabled_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->Idse = new \Airavata\Service\Iam\Admin\Services\CPI\Error\IamAdminServicesException();
+            $xfer += $this->Idse->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('IamAdminServices_isUserEnabled_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->Idse !== null) {
+      $xfer += $output->writeFieldBegin('Idse', TType::STRUCT, 1);
+      $xfer += $this->Idse->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 2);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
 class IamAdminServices_resetUserPassword_args {
   static $_TSPEC;
 
diff --git a/airavata-services/profile-service/profile-service-stubs/src/main/java/org/apache/airavata/service/profile/iam/admin/services/cpi/IamAdminServices.java b/airavata-services/profile-service/profile-service-stubs/src/main/java/org/apache/airavata/service/profile/iam/admin/services/cpi/IamAdminServices.java
index d15c780..1366bd1 100644
--- a/airavata-services/profile-service/profile-service-stubs/src/main/java/org/apache/airavata/service/profile/iam/admin/services/cpi/IamAdminServices.java
+++ b/airavata-services/profile-service/profile-service-stubs/src/main/java/org/apache/airavata/service/profile/iam/admin/services/cpi/IamAdminServices.java
@@ -63,6 +63,8 @@ public class IamAdminServices {
 
     public boolean enableUser(org.apache.airavata.model.security.AuthzToken authzToken, String username) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
+    public boolean isUserEnabled(org.apache.airavata.model.security.AuthzToken authzToken, String username) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
+
     public boolean resetUserPassword(org.apache.airavata.model.security.AuthzToken authzToken, String username, String newPassword) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 
     public List<org.apache.airavata.model.user.UserProfile> findUsers(org.apache.airavata.model.security.AuthzToken authzToken, String email, String userId) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
@@ -87,6 +89,8 @@ public class IamAdminServices {
 
     public void enableUser(org.apache.airavata.model.security.AuthzToken authzToken, String username, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
+    public void isUserEnabled(org.apache.airavata.model.security.AuthzToken authzToken, String username, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
     public void resetUserPassword(org.apache.airavata.model.security.AuthzToken authzToken, String username, String newPassword, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 
     public void findUsers(org.apache.airavata.model.security.AuthzToken authzToken, String email, String userId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
@@ -244,6 +248,36 @@ public class IamAdminServices {
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "enableUser failed: unknown result");
     }
 
+    public boolean isUserEnabled(org.apache.airavata.model.security.AuthzToken authzToken, String username) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException
+    {
+      send_isUserEnabled(authzToken, username);
+      return recv_isUserEnabled();
+    }
+
+    public void send_isUserEnabled(org.apache.airavata.model.security.AuthzToken authzToken, String username) throws org.apache.thrift.TException
+    {
+      isUserEnabled_args args = new isUserEnabled_args();
+      args.setAuthzToken(authzToken);
+      args.setUsername(username);
+      sendBase("isUserEnabled", args);
+    }
+
+    public boolean recv_isUserEnabled() throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException
+    {
+      isUserEnabled_result result = new isUserEnabled_result();
+      receiveBase(result, "isUserEnabled");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.Idse != null) {
+        throw result.Idse;
+      }
+      if (result.ae != null) {
+        throw result.ae;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "isUserEnabled failed: unknown result");
+    }
+
     public boolean resetUserPassword(org.apache.airavata.model.security.AuthzToken authzToken, String username, String newPassword) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException
     {
       send_resetUserPassword(authzToken, username, newPassword);
@@ -592,6 +626,41 @@ public class IamAdminServices {
       }
     }
 
+    public void isUserEnabled(org.apache.airavata.model.security.AuthzToken authzToken, String username, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      isUserEnabled_call method_call = new isUserEnabled_call(authzToken, username, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class isUserEnabled_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private org.apache.airavata.model.security.AuthzToken authzToken;
+      private String username;
+      public isUserEnabled_call(org.apache.airavata.model.security.AuthzToken authzToken, String username, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.authzToken = authzToken;
+        this.username = username;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("isUserEnabled", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        isUserEnabled_args args = new isUserEnabled_args();
+        args.setAuthzToken(authzToken);
+        args.setUsername(username);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public boolean getResult() throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_isUserEnabled();
+      }
+    }
+
     public void resetUserPassword(org.apache.airavata.model.security.AuthzToken authzToken, String username, String newPassword, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
       checkReady();
       resetUserPassword_call method_call = new resetUserPassword_call(authzToken, username, newPassword, resultHandler, this, ___protocolFactory, ___transport);
@@ -831,6 +900,7 @@ public class IamAdminServices {
       processMap.put("setUpGateway", new setUpGateway());
       processMap.put("registerUser", new registerUser());
       processMap.put("enableUser", new enableUser());
+      processMap.put("isUserEnabled", new isUserEnabled());
       processMap.put("resetUserPassword", new resetUserPassword());
       processMap.put("findUsers", new findUsers());
       processMap.put("updateUserProfile", new updateUserProfile());
@@ -946,6 +1016,33 @@ public class IamAdminServices {
       }
     }
 
+    public static class isUserEnabled<I extends Iface> extends org.apache.thrift.ProcessFunction<I, isUserEnabled_args> {
+      public isUserEnabled() {
+        super("isUserEnabled");
+      }
+
+      public isUserEnabled_args getEmptyArgsInstance() {
+        return new isUserEnabled_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public isUserEnabled_result getResult(I iface, isUserEnabled_args args) throws org.apache.thrift.TException {
+        isUserEnabled_result result = new isUserEnabled_result();
+        try {
+          result.success = iface.isUserEnabled(args.authzToken, args.username);
+          result.setSuccessIsSet(true);
+        } catch (org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException Idse) {
+          result.Idse = Idse;
+        } catch (org.apache.airavata.model.error.AuthorizationException ae) {
+          result.ae = ae;
+        }
+        return result;
+      }
+    }
+
     public static class resetUserPassword<I extends Iface> extends org.apache.thrift.ProcessFunction<I, resetUserPassword_args> {
       public resetUserPassword() {
         super("resetUserPassword");
@@ -1122,6 +1219,7 @@ public class IamAdminServices {
       processMap.put("setUpGateway", new setUpGateway());
       processMap.put("registerUser", new registerUser());
       processMap.put("enableUser", new enableUser());
+      processMap.put("isUserEnabled", new isUserEnabled());
       processMap.put("resetUserPassword", new resetUserPassword());
       processMap.put("findUsers", new findUsers());
       processMap.put("updateUserProfile", new updateUserProfile());
@@ -1381,6 +1479,69 @@ public class IamAdminServices {
       }
     }
 
+    public static class isUserEnabled<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, isUserEnabled_args, Boolean> {
+      public isUserEnabled() {
+        super("isUserEnabled");
+      }
+
+      public isUserEnabled_args getEmptyArgsInstance() {
+        return new isUserEnabled_args();
+      }
+
+      public AsyncMethodCallback<Boolean> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<Boolean>() { 
+          public void onComplete(Boolean o) {
+            isUserEnabled_result result = new isUserEnabled_result();
+            result.success = o;
+            result.setSuccessIsSet(true);
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
+          }
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            isUserEnabled_result result = new isUserEnabled_result();
+            if (e instanceof org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException) {
+                        result.Idse = (org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException) e;
+                        result.setIdseIsSet(true);
+                        msg = result;
+            }
+            else             if (e instanceof org.apache.airavata.model.error.AuthorizationException) {
+                        result.ae = (org.apache.airavata.model.error.AuthorizationException) e;
+                        result.setAeIsSet(true);
+                        msg = result;
+            }
+             else 
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, isUserEnabled_args args, org.apache.thrift.async.AsyncMethodCallback<Boolean> resultHandler) throws TException {
+        iface.isUserEnabled(args.authzToken, args.username,resultHandler);
+      }
+    }
+
     public static class resetUserPassword<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, resetUserPassword_args, Boolean> {
       public resetUserPassword() {
         super("resetUserPassword");
@@ -6210,6 +6371,1041 @@ public class IamAdminServices {
 
   }
 
+  public static class isUserEnabled_args implements org.apache.thrift.TBase<isUserEnabled_args, isUserEnabled_args._Fields>, java.io.Serializable, Cloneable, Comparable<isUserEnabled_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("isUserEnabled_args");
+
+    private static final org.apache.thrift.protocol.TField AUTHZ_TOKEN_FIELD_DESC = new org.apache.thrift.protocol.TField("authzToken", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+    private static final org.apache.thrift.protocol.TField USERNAME_FIELD_DESC = new org.apache.thrift.protocol.TField("username", org.apache.thrift.protocol.TType.STRING, (short)2);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new isUserEnabled_argsStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new isUserEnabled_argsTupleSchemeFactory());
+    }
+
+    public org.apache.airavata.model.security.AuthzToken authzToken; // required
+    public String username; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      AUTHZ_TOKEN((short)1, "authzToken"),
+      USERNAME((short)2, "username");
+
+      private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+      static {
+        for (_Fields field : EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 1: // AUTHZ_TOKEN
+            return AUTHZ_TOKEN;
+          case 2: // USERNAME
+            return USERNAME;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final String _fieldName;
+
+      _Fields(short thriftId, String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+    public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.AUTHZ_TOKEN, new org.apache.thrift.meta_data.FieldMetaData("authzToken", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.security.AuthzToken.class)));
+      tmpMap.put(_Fields.USERNAME, new org.apache.thrift.meta_data.FieldMetaData("username", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(isUserEnabled_args.class, metaDataMap);
+    }
+
+    public isUserEnabled_args() {
+    }
+
+    public isUserEnabled_args(
+      org.apache.airavata.model.security.AuthzToken authzToken,
+      String username)
+    {
+      this();
+      this.authzToken = authzToken;
+      this.username = username;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public isUserEnabled_args(isUserEnabled_args other) {
+      if (other.isSetAuthzToken()) {
+        this.authzToken = new org.apache.airavata.model.security.AuthzToken(other.authzToken);
+      }
+      if (other.isSetUsername()) {
+        this.username = other.username;
+      }
+    }
+
+    public isUserEnabled_args deepCopy() {
+      return new isUserEnabled_args(this);
+    }
+
+    @Override
+    public void clear() {
+      this.authzToken = null;
+      this.username = null;
+    }
+
+    public org.apache.airavata.model.security.AuthzToken getAuthzToken() {
+      return this.authzToken;
+    }
+
+    public isUserEnabled_args setAuthzToken(org.apache.airavata.model.security.AuthzToken authzToken) {
+      this.authzToken = authzToken;
+      return this;
+    }
+
+    public void unsetAuthzToken() {
+      this.authzToken = null;
+    }
+
+    /** Returns true if field authzToken is set (has been assigned a value) and false otherwise */
+    public boolean isSetAuthzToken() {
+      return this.authzToken != null;
+    }
+
+    public void setAuthzTokenIsSet(boolean value) {
+      if (!value) {
+        this.authzToken = null;
+      }
+    }
+
+    public String getUsername() {
+      return this.username;
+    }
+
+    public isUserEnabled_args setUsername(String username) {
+      this.username = username;
+      return this;
+    }
+
+    public void unsetUsername() {
+      this.username = null;
+    }
+
+    /** Returns true if field username is set (has been assigned a value) and false otherwise */
+    public boolean isSetUsername() {
+      return this.username != null;
+    }
+
+    public void setUsernameIsSet(boolean value) {
+      if (!value) {
+        this.username = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case AUTHZ_TOKEN:
+        if (value == null) {
+          unsetAuthzToken();
+        } else {
+          setAuthzToken((org.apache.airavata.model.security.AuthzToken)value);
+        }
+        break;
+
+      case USERNAME:
+        if (value == null) {
+          unsetUsername();
+        } else {
+          setUsername((String)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case AUTHZ_TOKEN:
+        return getAuthzToken();
+
+      case USERNAME:
+        return getUsername();
+
+      }
+      throw new IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new IllegalArgumentException();
+      }
+
+      switch (field) {
+      case AUTHZ_TOKEN:
+        return isSetAuthzToken();
+      case USERNAME:
+        return isSetUsername();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof isUserEnabled_args)
+        return this.equals((isUserEnabled_args)that);
+      return false;
+    }
+
+    public boolean equals(isUserEnabled_args that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_authzToken = true && this.isSetAuthzToken();
+      boolean that_present_authzToken = true && that.isSetAuthzToken();
+      if (this_present_authzToken || that_present_authzToken) {
+        if (!(this_present_authzToken && that_present_authzToken))
+          return false;
+        if (!this.authzToken.equals(that.authzToken))
+          return false;
+      }
+
+      boolean this_present_username = true && this.isSetUsername();
+      boolean that_present_username = true && that.isSetUsername();
+      if (this_present_username || that_present_username) {
+        if (!(this_present_username && that_present_username))
+          return false;
+        if (!this.username.equals(that.username))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_authzToken = true && (isSetAuthzToken());
+      list.add(present_authzToken);
+      if (present_authzToken)
+        list.add(authzToken);
+
+      boolean present_username = true && (isSetUsername());
+      list.add(present_username);
+      if (present_username)
+        list.add(username);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(isUserEnabled_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetAuthzToken()).compareTo(other.isSetAuthzToken());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAuthzToken()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.authzToken, other.authzToken);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetUsername()).compareTo(other.isSetUsername());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetUsername()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.username, other.username);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+    }
+
+    @Override
+    public String toString() {
+      StringBuilder sb = new StringBuilder("isUserEnabled_args(");
+      boolean first = true;
+
+      sb.append("authzToken:");
+      if (this.authzToken == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.authzToken);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("username:");
+      if (this.username == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.username);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      if (authzToken == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'authzToken' was not present! Struct: " + toString());
+      }
+      if (username == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'username' was not present! Struct: " + toString());
+      }
+      // check for sub-struct validity
+      if (authzToken != null) {
+        authzToken.validate();
+      }
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+      try {
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private static class isUserEnabled_argsStandardSchemeFactory implements SchemeFactory {
+      public isUserEnabled_argsStandardScheme getScheme() {
+        return new isUserEnabled_argsStandardScheme();
+      }
+    }
+
+    private static class isUserEnabled_argsStandardScheme extends StandardScheme<isUserEnabled_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, isUserEnabled_args struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TField schemeField;
+        iprot.readStructBegin();
+        while (true)
+        {
+          schemeField = iprot.readFieldBegin();
+          if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+            break;
+          }
+          switch (schemeField.id) {
+            case 1: // AUTHZ_TOKEN
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.authzToken = new org.apache.airavata.model.security.AuthzToken();
+                struct.authzToken.read(iprot);
+                struct.setAuthzTokenIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // USERNAME
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.username = iprot.readString();
+                struct.setUsernameIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            default:
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+          }
+          iprot.readFieldEnd();
+        }
+        iprot.readStructEnd();
+
+        // check for required fields of primitive type, which can't be checked in the validate method
+        struct.validate();
+      }
+
+      public void write(org.apache.thrift.protocol.TProtocol oprot, isUserEnabled_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.authzToken != null) {
+          oprot.writeFieldBegin(AUTHZ_TOKEN_FIELD_DESC);
+          struct.authzToken.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        if (struct.username != null) {
+          oprot.writeFieldBegin(USERNAME_FIELD_DESC);
+          oprot.writeString(struct.username);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class isUserEnabled_argsTupleSchemeFactory implements SchemeFactory {
+      public isUserEnabled_argsTupleScheme getScheme() {
+        return new isUserEnabled_argsTupleScheme();
+      }
+    }
+
+    private static class isUserEnabled_argsTupleScheme extends TupleScheme<isUserEnabled_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, isUserEnabled_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        struct.authzToken.write(oprot);
+        oprot.writeString(struct.username);
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, isUserEnabled_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        struct.authzToken = new org.apache.airavata.model.security.AuthzToken();
+        struct.authzToken.read(iprot);
+        struct.setAuthzTokenIsSet(true);
+        struct.username = iprot.readString();
+        struct.setUsernameIsSet(true);
+      }
+    }
+
+  }
+
+  public static class isUserEnabled_result implements org.apache.thrift.TBase<isUserEnabled_result, isUserEnabled_result._Fields>, java.io.Serializable, Cloneable, Comparable<isUserEnabled_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("isUserEnabled_result");
+
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.BOOL, (short)0);
+    private static final org.apache.thrift.protocol.TField IDSE_FIELD_DESC = new org.apache.thrift.protocol.TField("Idse", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+    private static final org.apache.thrift.protocol.TField AE_FIELD_DESC = new org.apache.thrift.protocol.TField("ae", org.apache.thrift.protocol.TType.STRUCT, (short)2);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new isUserEnabled_resultStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new isUserEnabled_resultTupleSchemeFactory());
+    }
+
+    public boolean success; // required
+    public org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException Idse; // required
+    public org.apache.airavata.model.error.AuthorizationException ae; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SUCCESS((short)0, "success"),
+      IDSE((short)1, "Idse"),
+      AE((short)2, "ae");
+
+      private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+      static {
+        for (_Fields field : EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 0: // SUCCESS
+            return SUCCESS;
+          case 1: // IDSE
+            return IDSE;
+          case 2: // AE
+            return AE;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final String _fieldName;
+
+      _Fields(short thriftId, String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+    private static final int __SUCCESS_ISSET_ID = 0;
+    private byte __isset_bitfield = 0;
+    public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+      tmpMap.put(_Fields.IDSE, new org.apache.thrift.meta_data.FieldMetaData("Idse", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+      tmpMap.put(_Fields.AE, new org.apache.thrift.meta_data.FieldMetaData("ae", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(isUserEnabled_result.class, metaDataMap);
+    }
+
+    public isUserEnabled_result() {
+    }
+
+    public isUserEnabled_result(
+      boolean success,
+      org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException Idse,
+      org.apache.airavata.model.error.AuthorizationException ae)
+    {
+      this();
+      this.success = success;
+      setSuccessIsSet(true);
+      this.Idse = Idse;
+      this.ae = ae;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public isUserEnabled_result(isUserEnabled_result other) {
+      __isset_bitfield = other.__isset_bitfield;
+      this.success = other.success;
+      if (other.isSetIdse()) {
+        this.Idse = new org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException(other.Idse);
+      }
+      if (other.isSetAe()) {
+        this.ae = new org.apache.airavata.model.error.AuthorizationException(other.ae);
+      }
+    }
+
+    public isUserEnabled_result deepCopy() {
+      return new isUserEnabled_result(this);
+    }
+
+    @Override
+    public void clear() {
+      setSuccessIsSet(false);
+      this.success = false;
+      this.Idse = null;
+      this.ae = null;
+    }
+
+    public boolean isSuccess() {
+      return this.success;
+    }
+
+    public isUserEnabled_result setSuccess(boolean success) {
+      this.success = success;
+      setSuccessIsSet(true);
+      return this;
+    }
+
+    public void unsetSuccess() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
+    }
+
+    public org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException getIdse() {
+      return this.Idse;
+    }
+
+    public isUserEnabled_result setIdse(org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException Idse) {
+      this.Idse = Idse;
+      return this;
+    }
+
+    public void unsetIdse() {
+      this.Idse = null;
+    }
+
+    /** Returns true if field Idse is set (has been assigned a value) and false otherwise */
+    public boolean isSetIdse() {
+      return this.Idse != null;
+    }
+
+    public void setIdseIsSet(boolean value) {
+      if (!value) {
+        this.Idse = null;
+      }
+    }
+
+    public org.apache.airavata.model.error.AuthorizationException getAe() {
+      return this.ae;
+    }
+
+    public isUserEnabled_result setAe(org.apache.airavata.model.error.AuthorizationException ae) {
+      this.ae = ae;
+      return this;
+    }
+
+    public void unsetAe() {
+      this.ae = null;
+    }
+
+    /** Returns true if field ae is set (has been assigned a value) and false otherwise */
+    public boolean isSetAe() {
+      return this.ae != null;
+    }
+
+    public void setAeIsSet(boolean value) {
+      if (!value) {
+        this.ae = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((Boolean)value);
+        }
+        break;
+
+      case IDSE:
+        if (value == null) {
+          unsetIdse();
+        } else {
+          setIdse((org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException)value);
+        }
+        break;
+
+      case AE:
+        if (value == null) {
+          unsetAe();
+        } else {
+          setAe((org.apache.airavata.model.error.AuthorizationException)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SUCCESS:
+        return isSuccess();
+
+      case IDSE:
+        return getIdse();
+
+      case AE:
+        return getAe();
+
+      }
+      throw new IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new IllegalArgumentException();
+      }
+
+      switch (field) {
+      case SUCCESS:
+        return isSetSuccess();
+      case IDSE:
+        return isSetIdse();
+      case AE:
+        return isSetAe();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof isUserEnabled_result)
+        return this.equals((isUserEnabled_result)that);
+      return false;
+    }
+
+    public boolean equals(isUserEnabled_result that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_success = true;
+      boolean that_present_success = true;
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (this.success != that.success)
+          return false;
+      }
+
+      boolean this_present_Idse = true && this.isSetIdse();
+      boolean that_present_Idse = true && that.isSetIdse();
+      if (this_present_Idse || that_present_Idse) {
+        if (!(this_present_Idse && that_present_Idse))
+          return false;
+        if (!this.Idse.equals(that.Idse))
+          return false;
+      }
+
+      boolean this_present_ae = true && this.isSetAe();
+      boolean that_present_ae = true && that.isSetAe();
+      if (this_present_ae || that_present_ae) {
+        if (!(this_present_ae && that_present_ae))
+          return false;
+        if (!this.ae.equals(that.ae))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_success = true;
+      list.add(present_success);
+      if (present_success)
+        list.add(success);
+
+      boolean present_Idse = true && (isSetIdse());
+      list.add(present_Idse);
+      if (present_Idse)
+        list.add(Idse);
+
+      boolean present_ae = true && (isSetAe());
+      list.add(present_ae);
+      if (present_ae)
+        list.add(ae);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(isUserEnabled_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetIdse()).compareTo(other.isSetIdse());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetIdse()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.Idse, other.Idse);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetAe()).compareTo(other.isSetAe());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAe()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ae, other.ae);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+      }
+
+    @Override
+    public String toString() {
+      StringBuilder sb = new StringBuilder("isUserEnabled_result(");
+      boolean first = true;
+
+      sb.append("success:");
+      sb.append(this.success);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("Idse:");
+      if (this.Idse == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.Idse);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("ae:");
+      if (this.ae == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ae);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      // check for sub-struct validity
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+      try {
+        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+        __isset_bitfield = 0;
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private static class isUserEnabled_resultStandardSchemeFactory implements SchemeFactory {
+      public isUserEnabled_resultStandardScheme getScheme() {
+        return new isUserEnabled_resultStandardScheme();
+      }
+    }
+
+    private static class isUserEnabled_resultStandardScheme extends StandardScheme<isUserEnabled_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, isUserEnabled_result struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TField schemeField;
+        iprot.readStructBegin();
+        while (true)
+        {
+          schemeField = iprot.readFieldBegin();
+          if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+            break;
+          }
+          switch (schemeField.id) {
+            case 0: // SUCCESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+                struct.success = iprot.readBool();
+                struct.setSuccessIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 1: // IDSE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.Idse = new org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException();
+                struct.Idse.read(iprot);
+                struct.setIdseIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // AE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ae = new org.apache.airavata.model.error.AuthorizationException();
+                struct.ae.read(iprot);
+                struct.setAeIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            default:
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+          }
+          iprot.readFieldEnd();
+        }
+        iprot.readStructEnd();
+
+        // check for required fields of primitive type, which can't be checked in the validate method
+        struct.validate();
+      }
+
+      public void write(org.apache.thrift.protocol.TProtocol oprot, isUserEnabled_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.isSetSuccess()) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          oprot.writeBool(struct.success);
+          oprot.writeFieldEnd();
+        }
+        if (struct.Idse != null) {
+          oprot.writeFieldBegin(IDSE_FIELD_DESC);
+          struct.Idse.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        if (struct.ae != null) {
+          oprot.writeFieldBegin(AE_FIELD_DESC);
+          struct.ae.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class isUserEnabled_resultTupleSchemeFactory implements SchemeFactory {
+      public isUserEnabled_resultTupleScheme getScheme() {
+        return new isUserEnabled_resultTupleScheme();
+      }
+    }
+
+    private static class isUserEnabled_resultTupleScheme extends TupleScheme<isUserEnabled_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, isUserEnabled_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetSuccess()) {
+          optionals.set(0);
+        }
+        if (struct.isSetIdse()) {
+          optionals.set(1);
+        }
+        if (struct.isSetAe()) {
+          optionals.set(2);
+        }
+        oprot.writeBitSet(optionals, 3);
+        if (struct.isSetSuccess()) {
+          oprot.writeBool(struct.success);
+        }
+        if (struct.isSetIdse()) {
+          struct.Idse.write(oprot);
+        }
+        if (struct.isSetAe()) {
+          struct.ae.write(oprot);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, isUserEnabled_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(3);
+        if (incoming.get(0)) {
+          struct.success = iprot.readBool();
+          struct.setSuccessIsSet(true);
+        }
+        if (incoming.get(1)) {
+          struct.Idse = new org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException();
+          struct.Idse.read(iprot);
+          struct.setIdseIsSet(true);
+        }
+        if (incoming.get(2)) {
+          struct.ae = new org.apache.airavata.model.error.AuthorizationException();
+          struct.ae.read(iprot);
+          struct.setAeIsSet(true);
+        }
+      }
+    }
+
+  }
+
   public static class resetUserPassword_args implements org.apache.thrift.TBase<resetUserPassword_args, resetUserPassword_args._Fields>, java.io.Serializable, Cloneable, Comparable<resetUserPassword_args>   {
     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("resetUserPassword_args");
 

-- 
To stop receiving notification emails like this one, please contact
machristie@apache.org.

[airavata] 01/03: Add isUserEnabled to IamAdminServices

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch group-based-auth
in repository https://gitbox.apache.org/repos/asf/airavata.git

commit a79b48465d9edc844fada683d2eb777e4eb0cf7d
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Fri Jun 8 17:09:03 2018 -0400

    Add isUserEnabled to IamAdminServices
---
 .../core/impl/TenantManagementKeycloakImpl.java       | 19 +++++++++++++++++++
 .../core/interfaces/TenantManagementInterface.java    | 10 ++++++++++
 .../profile/handlers/IamAdminServicesHandler.java     | 14 ++++++++++++++
 .../iam-admin-services/iam-admin-services-cpi.thrift  |  5 +++++
 4 files changed, 48 insertions(+)

diff --git a/airavata-services/profile-service/iam-admin-services-core/src/main/java/org/apache/airavata/service/profile/iam/admin/services/core/impl/TenantManagementKeycloakImpl.java b/airavata-services/profile-service/iam-admin-services-core/src/main/java/org/apache/airavata/service/profile/iam/admin/services/core/impl/TenantManagementKeycloakImpl.java
index 4296bca..3e2fc1a 100644
--- a/airavata-services/profile-service/iam-admin-services-core/src/main/java/org/apache/airavata/service/profile/iam/admin/services/core/impl/TenantManagementKeycloakImpl.java
+++ b/airavata-services/profile-service/iam-admin-services-core/src/main/java/org/apache/airavata/service/profile/iam/admin/services/core/impl/TenantManagementKeycloakImpl.java
@@ -346,6 +346,25 @@ public class TenantManagementKeycloakImpl implements TenantManagementInterface {
     }
 
     @Override
+    public boolean isUserAccountEnabled(PasswordCredential realmAdminCreds, String tenantId, String username) throws IamAdminServicesException{
+        Keycloak client = null;
+        try{
+            client = TenantManagementKeycloakImpl.getClient(ServerSettings.getIamServerUrl(), tenantId, realmAdminCreds);
+            List<UserRepresentation> userResourceList = client.realm(tenantId).users().search(username,0,1);
+            return userResourceList.size() == 1 && userResourceList.get(0).isEnabled();
+        } catch (ApplicationSettingsException ex) {
+            logger.error("Error getting values from property file, reason: " + ex.getMessage(), ex);
+            IamAdminServicesException exception = new IamAdminServicesException();
+            exception.setMessage("Error getting values from property file, reason " + ex.getMessage());
+            throw exception;
+        } finally {
+            if (client != null) {
+                client.close();
+            }
+        }
+    }
+
+    @Override
     public boolean resetUserPassword(PasswordCredential realmAdminCreds, String tenantId, String username, String newPassword) throws IamAdminServicesException{
         Keycloak client = null;
         try{
diff --git a/airavata-services/profile-service/iam-admin-services-core/src/main/java/org/apache/airavata/service/profile/iam/admin/services/core/interfaces/TenantManagementInterface.java b/airavata-services/profile-service/iam-admin-services-core/src/main/java/org/apache/airavata/service/profile/iam/admin/services/core/interfaces/TenantManagementInterface.java
index 429453c..b097c04 100644
--- a/airavata-services/profile-service/iam-admin-services-core/src/main/java/org/apache/airavata/service/profile/iam/admin/services/core/interfaces/TenantManagementInterface.java
+++ b/airavata-services/profile-service/iam-admin-services-core/src/main/java/org/apache/airavata/service/profile/iam/admin/services/core/interfaces/TenantManagementInterface.java
@@ -83,6 +83,16 @@ public interface TenantManagementInterface {
     boolean enableUserAccount(PasswordCredential realmAdminCreds, String tenantId, String username) throws IamAdminServicesException;
 
     /**
+     * Method to check if user is enabled in Identity Server
+     *
+     * @param realmAdminCreds identity server realm admin credentials
+     * @param tenantId
+     * @param username
+     * @return boolean.
+     */
+    boolean isUserAccountEnabled(PasswordCredential realmAdminCreds, String tenantId, String username) throws IamAdminServicesException;
+
+    /**
      * Method to reset user password in Identity Server
      *
      * @param realmAdminCreds identity server realm admin credentials
diff --git a/airavata-services/profile-service/profile-service-server/src/main/java/org/apache/airavata/service/profile/handlers/IamAdminServicesHandler.java b/airavata-services/profile-service/profile-service-server/src/main/java/org/apache/airavata/service/profile/handlers/IamAdminServicesHandler.java
index 6ad75f3..1d15285 100644
--- a/airavata-services/profile-service/profile-service-server/src/main/java/org/apache/airavata/service/profile/handlers/IamAdminServicesHandler.java
+++ b/airavata-services/profile-service/profile-service-server/src/main/java/org/apache/airavata/service/profile/handlers/IamAdminServicesHandler.java
@@ -127,6 +127,20 @@ public class IamAdminServicesHandler implements IamAdminServices.Iface {
     }
 
     @Override
+    public boolean isUserEnabled(AuthzToken authzToken, String username) throws IamAdminServicesException, AuthorizationException, TException {
+        TenantManagementKeycloakImpl keycloakclient = new TenantManagementKeycloakImpl();
+        String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
+        try {
+            PasswordCredential isRealmAdminCredentials = getTenantAdminPasswordCredential(gatewayId);
+            return keycloakclient.isUserAccountEnabled(isRealmAdminCredentials, gatewayId, username);
+        } catch (TException | ApplicationSettingsException ex) {
+            String msg = "Error while checking if user account is enabled, reason: " + ex.getMessage();
+            logger.error(msg, ex);
+            throw new IamAdminServicesException(msg);
+        }
+    }
+
+    @Override
     @SecurityCheck
     public boolean resetUserPassword(AuthzToken authzToken, String username, String newPassword) throws IamAdminServicesException, AuthorizationException, TException {
         TenantManagementKeycloakImpl keycloakclient = new TenantManagementKeycloakImpl();
diff --git a/thrift-interface-descriptions/service-cpis/profile-service/iam-admin-services/iam-admin-services-cpi.thrift b/thrift-interface-descriptions/service-cpis/profile-service/iam-admin-services/iam-admin-services-cpi.thrift
index d75847a..b5d9cb2 100644
--- a/thrift-interface-descriptions/service-cpis/profile-service/iam-admin-services/iam-admin-services-cpi.thrift
+++ b/thrift-interface-descriptions/service-cpis/profile-service/iam-admin-services/iam-admin-services-cpi.thrift
@@ -62,6 +62,11 @@ service IamAdminServices {
                             throws (1: iam_admin_services_cpi_errors.IamAdminServicesException Idse,
                                                         2: airavata_errors.AuthorizationException ae)
 
+    bool isUserEnabled(1: required security_model.AuthzToken authzToken,
+                        2: required string username)
+                            throws (1: iam_admin_services_cpi_errors.IamAdminServicesException Idse,
+                                                        2: airavata_errors.AuthorizationException ae)
+
     bool resetUserPassword(1: required security_model.AuthzToken authzToken,
                             2: required string username,
                             3: required string newPassword)

-- 
To stop receiving notification emails like this one, please contact
machristie@apache.org.

[airavata] 03/03: Merge branch 'is-user-enabled' into group-based-auth

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch group-based-auth
in repository https://gitbox.apache.org/repos/asf/airavata.git

commit 5ba95f9ed8ac28e21017a792e97ece1943fc3146
Merge: 28cb205 32a58cf
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Fri Jun 8 17:15:41 2018 -0400

    Merge branch 'is-user-enabled' into group-based-auth

 .../Iam/Admin/Services/CPI/IamAdminServices.php    |  294 +++++
 .../core/impl/TenantManagementKeycloakImpl.java    |   19 +
 .../core/interfaces/TenantManagementInterface.java |   10 +
 .../profile/handlers/IamAdminServicesHandler.java  |   14 +
 .../iam/admin/services/cpi/IamAdminServices.java   | 1200 ++++++++++++++++++++
 .../scigap/dreg-production/group_vars/pga/vars.yml |    4 +-
 .../scigap/production/pga_config/csbglsu/vars.yml  |   17 +-
 .../pga_config/{searchingSRA => demo1}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo1/vault.yml   |   17 +
 .../pga_config/{searchingSRA => demo10}/vars.yml   |   14 +-
 .../scigap/production/pga_config/demo10/vault.yml  |   17 +
 .../pga_config/{searchingSRA => demo2}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo2/vault.yml   |   17 +
 .../pga_config/{searchingSRA => demo3}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo3/vault.yml   |   17 +
 .../pga_config/{searchingSRA => demo4}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo4/vault.yml   |   17 +
 .../pga_config/{searchingSRA => demo5}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo5/vault.yml   |   17 +
 .../pga_config/{searchingSRA => demo6}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo6/vault.yml   |   17 +
 .../pga_config/{searchingSRA => demo7}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo7/vault.yml   |   17 +
 .../pga_config/{searchingSRA => demo8}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo8/vault.yml   |   17 +
 .../pga_config/{searchingSRA => demo9}/vars.yml    |   14 +-
 .../scigap/production/pga_config/demo9/vault.yml   |   17 +
 .../production/pga_config/georgiastate/vars.yml    |    6 +-
 .../pga_config/{csbglsu => interactwel}/vars.yml   |   25 +-
 .../production/pga_config/interactwel/vault.yml    |   18 +
 .../production/pga_config/iugateway/vars.yml       |    4 +-
 .../production/pga_config/newUltrascan/vars.yml    |   73 --
 .../production/pga_config/newUltrascan/vault.yml   |   18 -
 .../pga_config/{csbglsu => nexttdb}/vars.yml       |   25 +-
 .../scigap/production/pga_config/nexttdb/vault.yml |   18 +
 .../production/pga_config/searchingSRA/vars.yml    |   15 +-
 .../pga_config/simvascular/files/pga_config.php.j2 |    7 +-
 .../production/pga_config/southdakota/vars.yml     |    8 +-
 dev-tools/ansible/pga-scigap-prod.yml              |    1 -
 .../gfac/templates/airavata-server.properties.j2   |    2 +-
 .../roles/gfac/templates/gfac-config.yaml.j2       |    4 +
 .../roles/pga/templates/pga-ssl-vhost.conf.j2      |    7 +
 .../ansible/roles/pga/templates/pga-vhost.conf.j2  |    9 +-
 .../airavata/gfac/impl/HPCRemoteCluster.java       |    5 +-
 .../airavata/gfac/impl/task/SCPDataStageTask.java  |   23 +-
 .../src/main/resources/appcatalog-mysql.sql        |    2 +-
 .../DeltaScripts/appCatalog_schema_delta.sql       |   38 +-
 .../DeltaScripts/credentialStore_schema_delta.sql  |    8 -
 .../DeltaScripts/expCatalog_schema_delta.sql       |    8 -
 .../DeltaScripts/replicaCatalog_schema_delta.sql   |    8 -
 .../DeltaScripts/sharingCatalog_schema_delta.sql   |   21 +
 .../DeltaScripts/workFlow_schema_delta.sql         |    8 -
 ...licaCatalog_lowercase_user_data_dir_example.sql |    0
 .../credentialStore_keycloak_migration.sql         |    0
 .../expCatalog_keycloak_migration.sql              |    0
 .../profileService_keycloak_migration.sql          |    0
 .../sharingCatalog_keycloak_migration.sql          |    0
 .../0.16-0.17/migration-notes.md                   |    9 +-
 .../DeltaScripts/appCatalog_schema_delta.sql       |   30 -
 .../0.17-0.18/migration-notes.md                   |   17 -
 .../DeltaScripts/appCatalog_schema_delta.sql       |   36 -
 .../iam-admin-services-cpi.thrift                  |    5 +
 62 files changed, 1978 insertions(+), 348 deletions(-)

diff --cc airavata-services/profile-service/profile-service-stubs/src/main/java/org/apache/airavata/service/profile/iam/admin/services/cpi/IamAdminServices.java
index ba5055a,1366bd1..5fe5f6b
--- a/airavata-services/profile-service/profile-service-stubs/src/main/java/org/apache/airavata/service/profile/iam/admin/services/cpi/IamAdminServices.java
+++ b/airavata-services/profile-service/profile-service-stubs/src/main/java/org/apache/airavata/service/profile/iam/admin/services/cpi/IamAdminServices.java
@@@ -32,13 -59,15 +32,15 @@@ public class IamAdminServices 
  
      public org.apache.airavata.model.workspace.Gateway setUpGateway(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.workspace.Gateway gateway) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
  
 -    public boolean registerUser(org.apache.airavata.model.security.AuthzToken authzToken, String username, String emailAddress, String firstName, String lastName, String newPassword) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 +    public boolean registerUser(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String username, java.lang.String emailAddress, java.lang.String firstName, java.lang.String lastName, java.lang.String newPassword) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
  
 -    public boolean enableUser(org.apache.airavata.model.security.AuthzToken authzToken, String username) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 +    public boolean enableUser(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String username) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
  
 -    public boolean isUserEnabled(org.apache.airavata.model.security.AuthzToken authzToken, String username) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
++    public boolean isUserEnabled(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String username) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
+ 
 -    public boolean resetUserPassword(org.apache.airavata.model.security.AuthzToken authzToken, String username, String newPassword) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 +    public boolean resetUserPassword(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String username, java.lang.String newPassword) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
  
 -    public List<org.apache.airavata.model.user.UserProfile> findUsers(org.apache.airavata.model.security.AuthzToken authzToken, String email, String userId) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
 +    public java.util.List<org.apache.airavata.model.user.UserProfile> findUsers(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String email, java.lang.String userId) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
  
      public void updateUserProfile(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.user.UserProfile userDetails) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException;
  
@@@ -52,25 -81,27 +54,27 @@@
  
    public interface AsyncIface {
  
 -    public void getAPIVersion(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 +    public void getAPIVersion(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException;
  
 -    public void setUpGateway(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.workspace.Gateway gateway, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 +    public void setUpGateway(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.workspace.Gateway gateway, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.model.workspace.Gateway> resultHandler) throws org.apache.thrift.TException;
  
 -    public void registerUser(org.apache.airavata.model.security.AuthzToken authzToken, String username, String emailAddress, String firstName, String lastName, String newPassword, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 +    public void registerUser(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String username, java.lang.String emailAddress, java.lang.String firstName, java.lang.String lastName, java.lang.String newPassword, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;
  
 -    public void enableUser(org.apache.airavata.model.security.AuthzToken authzToken, String username, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 +    public void enableUser(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String username, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;
  
 -    public void isUserEnabled(org.apache.airavata.model.security.AuthzToken authzToken, String username, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
++    public void isUserEnabled(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String username, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;
+ 
 -    public void resetUserPassword(org.apache.airavata.model.security.AuthzToken authzToken, String username, String newPassword, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 +    public void resetUserPassword(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String username, java.lang.String newPassword, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;
  
 -    public void findUsers(org.apache.airavata.model.security.AuthzToken authzToken, String email, String userId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 +    public void findUsers(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String email, java.lang.String userId, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.user.UserProfile>> resultHandler) throws org.apache.thrift.TException;
  
 -    public void updateUserProfile(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.user.UserProfile userDetails, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 +    public void updateUserProfile(org.apache.airavata.model.security.AuthzToken authzToken, org.apache.airavata.model.user.UserProfile userDetails, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws org.apache.thrift.TException;
  
 -    public void addRoleToUser(org.apache.airavata.model.security.AuthzToken authzToken, String username, String roleName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 +    public void addRoleToUser(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String username, java.lang.String roleName, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;
  
 -    public void removeRoleFromUser(org.apache.airavata.model.security.AuthzToken authzToken, String username, String roleName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 +    public void removeRoleFromUser(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String username, java.lang.String roleName, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;
  
 -    public void getUsersWithRole(org.apache.airavata.model.security.AuthzToken authzToken, String roleName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
 +    public void getUsersWithRole(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String roleName, org.apache.thrift.async.AsyncMethodCallback<java.util.List<org.apache.airavata.model.user.UserProfile>> resultHandler) throws org.apache.thrift.TException;
  
    }
  
@@@ -217,7 -248,37 +221,37 @@@
        throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "enableUser failed: unknown result");
      }
  
 -    public boolean isUserEnabled(org.apache.airavata.model.security.AuthzToken authzToken, String username) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException
++    public boolean isUserEnabled(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String username) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException
+     {
+       send_isUserEnabled(authzToken, username);
+       return recv_isUserEnabled();
+     }
+ 
 -    public void send_isUserEnabled(org.apache.airavata.model.security.AuthzToken authzToken, String username) throws org.apache.thrift.TException
++    public void send_isUserEnabled(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String username) throws org.apache.thrift.TException
+     {
+       isUserEnabled_args args = new isUserEnabled_args();
+       args.setAuthzToken(authzToken);
+       args.setUsername(username);
+       sendBase("isUserEnabled", args);
+     }
+ 
+     public boolean recv_isUserEnabled() throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException
+     {
+       isUserEnabled_result result = new isUserEnabled_result();
+       receiveBase(result, "isUserEnabled");
+       if (result.isSetSuccess()) {
+         return result.success;
+       }
+       if (result.Idse != null) {
+         throw result.Idse;
+       }
+       if (result.ae != null) {
+         throw result.ae;
+       }
+       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "isUserEnabled failed: unknown result");
+     }
+ 
 -    public boolean resetUserPassword(org.apache.airavata.model.security.AuthzToken authzToken, String username, String newPassword) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException
 +    public boolean resetUserPassword(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String username, java.lang.String newPassword) throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException
      {
        send_resetUserPassword(authzToken, username, newPassword);
        return recv_resetUserPassword();
@@@ -565,7 -626,42 +599,42 @@@
        }
      }
  
 -    public void isUserEnabled(org.apache.airavata.model.security.AuthzToken authzToken, String username, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
++    public void isUserEnabled(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String username, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
+       checkReady();
+       isUserEnabled_call method_call = new isUserEnabled_call(authzToken, username, resultHandler, this, ___protocolFactory, ___transport);
+       this.___currentMethod = method_call;
+       ___manager.call(method_call);
+     }
+ 
 -    public static class isUserEnabled_call extends org.apache.thrift.async.TAsyncMethodCall {
++    public static class isUserEnabled_call extends org.apache.thrift.async.TAsyncMethodCall<java.lang.Boolean> {
+       private org.apache.airavata.model.security.AuthzToken authzToken;
 -      private String username;
 -      public isUserEnabled_call(org.apache.airavata.model.security.AuthzToken authzToken, String username, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
++      private java.lang.String username;
++      public isUserEnabled_call(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String username, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+         super(client, protocolFactory, transport, resultHandler, false);
+         this.authzToken = authzToken;
+         this.username = username;
+       }
+ 
+       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("isUserEnabled", org.apache.thrift.protocol.TMessageType.CALL, 0));
+         isUserEnabled_args args = new isUserEnabled_args();
+         args.setAuthzToken(authzToken);
+         args.setUsername(username);
+         args.write(prot);
+         prot.writeMessageEnd();
+       }
+ 
 -      public boolean getResult() throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException {
++      public java.lang.Boolean getResult() throws org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException, org.apache.airavata.model.error.AuthorizationException, org.apache.thrift.TException {
+         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
 -          throw new IllegalStateException("Method call not finished!");
++          throw new java.lang.IllegalStateException("Method call not finished!");
+         }
+         org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+         org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+         return (new Client(prot)).recv_isUserEnabled();
+       }
+     }
+ 
 -    public void resetUserPassword(org.apache.airavata.model.security.AuthzToken authzToken, String username, String newPassword, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
 +    public void resetUserPassword(org.apache.airavata.model.security.AuthzToken authzToken, java.lang.String username, java.lang.String newPassword, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
        checkReady();
        resetUserPassword_call method_call = new resetUserPassword_call(authzToken, username, newPassword, resultHandler, this, ___protocolFactory, ___transport);
        this.___currentMethod = method_call;
@@@ -1382,7 -1479,70 +1480,77 @@@
        }
      }
  
 -    public static class isUserEnabled<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, isUserEnabled_args, Boolean> {
++    public static class isUserEnabled<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, isUserEnabled_args, java.lang.Boolean> {
+       public isUserEnabled() {
+         super("isUserEnabled");
+       }
+ 
+       public isUserEnabled_args getEmptyArgsInstance() {
+         return new isUserEnabled_args();
+       }
+ 
 -      public AsyncMethodCallback<Boolean> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
++      public org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> getResultHandler(final org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final int seqid) {
+         final org.apache.thrift.AsyncProcessFunction fcall = this;
 -        return new AsyncMethodCallback<Boolean>() { 
 -          public void onComplete(Boolean o) {
++        return new org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean>() { 
++          public void onComplete(java.lang.Boolean o) {
+             isUserEnabled_result result = new isUserEnabled_result();
+             result.success = o;
+             result.setSuccessIsSet(true);
+             try {
 -              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
 -              return;
 -            } catch (Exception e) {
 -              LOGGER.error("Exception writing to internal frame buffer", e);
++              fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
++            } catch (org.apache.thrift.transport.TTransportException e) {
++              _LOGGER.error("TTransportException writing to internal frame buffer", e);
++              fb.close();
++            } catch (java.lang.Exception e) {
++              _LOGGER.error("Exception writing to internal frame buffer", e);
++              onError(e);
+             }
 -            fb.close();
+           }
 -          public void onError(Exception e) {
++          public void onError(java.lang.Exception e) {
+             byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
 -            org.apache.thrift.TBase msg;
++            org.apache.thrift.TSerializable msg;
+             isUserEnabled_result result = new isUserEnabled_result();
+             if (e instanceof org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException) {
 -                        result.Idse = (org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException) e;
 -                        result.setIdseIsSet(true);
 -                        msg = result;
 -            }
 -            else             if (e instanceof org.apache.airavata.model.error.AuthorizationException) {
 -                        result.ae = (org.apache.airavata.model.error.AuthorizationException) e;
 -                        result.setAeIsSet(true);
 -                        msg = result;
 -            }
 -             else 
 -            {
++              result.Idse = (org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException) e;
++              result.setIdseIsSet(true);
++              msg = result;
++            } else if (e instanceof org.apache.airavata.model.error.AuthorizationException) {
++              result.ae = (org.apache.airavata.model.error.AuthorizationException) e;
++              result.setAeIsSet(true);
++              msg = result;
++            } else if (e instanceof org.apache.thrift.transport.TTransportException) {
++              _LOGGER.error("TTransportException inside handler", e);
++              fb.close();
++              return;
++            } else if (e instanceof org.apache.thrift.TApplicationException) {
++              _LOGGER.error("TApplicationException inside handler", e);
++              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
++              msg = (org.apache.thrift.TApplicationException)e;
++            } else {
++              _LOGGER.error("Exception inside handler", e);
+               msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
 -              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
++              msg = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+             }
+             try {
+               fcall.sendResponse(fb,msg,msgType,seqid);
 -              return;
 -            } catch (Exception ex) {
 -              LOGGER.error("Exception writing to internal frame buffer", ex);
++            } catch (java.lang.Exception ex) {
++              _LOGGER.error("Exception writing to internal frame buffer", ex);
++              fb.close();
+             }
 -            fb.close();
+           }
+         };
+       }
+ 
+       protected boolean isOneway() {
+         return false;
+       }
+ 
 -      public void start(I iface, isUserEnabled_args args, org.apache.thrift.async.AsyncMethodCallback<Boolean> resultHandler) throws TException {
++      public void start(I iface, isUserEnabled_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
+         iface.isUserEnabled(args.authzToken, args.username,resultHandler);
+       }
+     }
+ 
 -    public static class resetUserPassword<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, resetUserPassword_args, Boolean> {
 +    public static class resetUserPassword<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, resetUserPassword_args, java.lang.Boolean> {
        public resetUserPassword() {
          super("resetUserPassword");
        }
@@@ -6230,6 -6362,1041 +6398,1038 @@@
            struct.setIdseIsSet(true);
          }
          if (incoming.get(2)) {
+           struct.ae = new org.apache.airavata.model.error.AuthorizationException();
+           struct.ae.read(iprot);
+           struct.setAeIsSet(true);
+         }
+       }
+     }
+ 
++    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
++      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
++    }
+   }
+ 
+   public static class isUserEnabled_args implements org.apache.thrift.TBase<isUserEnabled_args, isUserEnabled_args._Fields>, java.io.Serializable, Cloneable, Comparable<isUserEnabled_args>   {
+     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("isUserEnabled_args");
+ 
+     private static final org.apache.thrift.protocol.TField AUTHZ_TOKEN_FIELD_DESC = new org.apache.thrift.protocol.TField("authzToken", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+     private static final org.apache.thrift.protocol.TField USERNAME_FIELD_DESC = new org.apache.thrift.protocol.TField("username", org.apache.thrift.protocol.TType.STRING, (short)2);
+ 
 -    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
 -    static {
 -      schemes.put(StandardScheme.class, new isUserEnabled_argsStandardSchemeFactory());
 -      schemes.put(TupleScheme.class, new isUserEnabled_argsTupleSchemeFactory());
 -    }
++    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new isUserEnabled_argsStandardSchemeFactory();
++    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new isUserEnabled_argsTupleSchemeFactory();
+ 
+     public org.apache.airavata.model.security.AuthzToken authzToken; // required
 -    public String username; // required
++    public java.lang.String username; // required
+ 
+     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+       AUTHZ_TOKEN((short)1, "authzToken"),
+       USERNAME((short)2, "username");
+ 
 -      private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
++      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
+ 
+       static {
 -        for (_Fields field : EnumSet.allOf(_Fields.class)) {
++        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
+           byName.put(field.getFieldName(), field);
+         }
+       }
+ 
+       /**
+        * Find the _Fields constant that matches fieldId, or null if its not found.
+        */
+       public static _Fields findByThriftId(int fieldId) {
+         switch(fieldId) {
+           case 1: // AUTHZ_TOKEN
+             return AUTHZ_TOKEN;
+           case 2: // USERNAME
+             return USERNAME;
+           default:
+             return null;
+         }
+       }
+ 
+       /**
+        * Find the _Fields constant that matches fieldId, throwing an exception
+        * if it is not found.
+        */
+       public static _Fields findByThriftIdOrThrow(int fieldId) {
+         _Fields fields = findByThriftId(fieldId);
 -        if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
++        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+         return fields;
+       }
+ 
+       /**
+        * Find the _Fields constant that matches name, or null if its not found.
+        */
 -      public static _Fields findByName(String name) {
++      public static _Fields findByName(java.lang.String name) {
+         return byName.get(name);
+       }
+ 
+       private final short _thriftId;
 -      private final String _fieldName;
++      private final java.lang.String _fieldName;
+ 
 -      _Fields(short thriftId, String fieldName) {
++      _Fields(short thriftId, java.lang.String fieldName) {
+         _thriftId = thriftId;
+         _fieldName = fieldName;
+       }
+ 
+       public short getThriftFieldId() {
+         return _thriftId;
+       }
+ 
 -      public String getFieldName() {
++      public java.lang.String getFieldName() {
+         return _fieldName;
+       }
+     }
+ 
+     // isset id assignments
 -    public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
++    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+     static {
 -      Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
++      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+       tmpMap.put(_Fields.AUTHZ_TOKEN, new org.apache.thrift.meta_data.FieldMetaData("authzToken", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+           new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.security.AuthzToken.class)));
+       tmpMap.put(_Fields.USERNAME, new org.apache.thrift.meta_data.FieldMetaData("username", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
 -      metaDataMap = Collections.unmodifiableMap(tmpMap);
++      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+       org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(isUserEnabled_args.class, metaDataMap);
+     }
+ 
+     public isUserEnabled_args() {
+     }
+ 
+     public isUserEnabled_args(
+       org.apache.airavata.model.security.AuthzToken authzToken,
 -      String username)
++      java.lang.String username)
+     {
+       this();
+       this.authzToken = authzToken;
+       this.username = username;
+     }
+ 
+     /**
+      * Performs a deep copy on <i>other</i>.
+      */
+     public isUserEnabled_args(isUserEnabled_args other) {
+       if (other.isSetAuthzToken()) {
+         this.authzToken = new org.apache.airavata.model.security.AuthzToken(other.authzToken);
+       }
+       if (other.isSetUsername()) {
+         this.username = other.username;
+       }
+     }
+ 
+     public isUserEnabled_args deepCopy() {
+       return new isUserEnabled_args(this);
+     }
+ 
+     @Override
+     public void clear() {
+       this.authzToken = null;
+       this.username = null;
+     }
+ 
+     public org.apache.airavata.model.security.AuthzToken getAuthzToken() {
+       return this.authzToken;
+     }
+ 
+     public isUserEnabled_args setAuthzToken(org.apache.airavata.model.security.AuthzToken authzToken) {
+       this.authzToken = authzToken;
+       return this;
+     }
+ 
+     public void unsetAuthzToken() {
+       this.authzToken = null;
+     }
+ 
+     /** Returns true if field authzToken is set (has been assigned a value) and false otherwise */
+     public boolean isSetAuthzToken() {
+       return this.authzToken != null;
+     }
+ 
+     public void setAuthzTokenIsSet(boolean value) {
+       if (!value) {
+         this.authzToken = null;
+       }
+     }
+ 
 -    public String getUsername() {
++    public java.lang.String getUsername() {
+       return this.username;
+     }
+ 
 -    public isUserEnabled_args setUsername(String username) {
++    public isUserEnabled_args setUsername(java.lang.String username) {
+       this.username = username;
+       return this;
+     }
+ 
+     public void unsetUsername() {
+       this.username = null;
+     }
+ 
+     /** Returns true if field username is set (has been assigned a value) and false otherwise */
+     public boolean isSetUsername() {
+       return this.username != null;
+     }
+ 
+     public void setUsernameIsSet(boolean value) {
+       if (!value) {
+         this.username = null;
+       }
+     }
+ 
 -    public void setFieldValue(_Fields field, Object value) {
++    public void setFieldValue(_Fields field, java.lang.Object value) {
+       switch (field) {
+       case AUTHZ_TOKEN:
+         if (value == null) {
+           unsetAuthzToken();
+         } else {
+           setAuthzToken((org.apache.airavata.model.security.AuthzToken)value);
+         }
+         break;
+ 
+       case USERNAME:
+         if (value == null) {
+           unsetUsername();
+         } else {
 -          setUsername((String)value);
++          setUsername((java.lang.String)value);
+         }
+         break;
+ 
+       }
+     }
+ 
 -    public Object getFieldValue(_Fields field) {
++    public java.lang.Object getFieldValue(_Fields field) {
+       switch (field) {
+       case AUTHZ_TOKEN:
+         return getAuthzToken();
+ 
+       case USERNAME:
+         return getUsername();
+ 
+       }
 -      throw new IllegalStateException();
++      throw new java.lang.IllegalStateException();
+     }
+ 
+     /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+     public boolean isSet(_Fields field) {
+       if (field == null) {
 -        throw new IllegalArgumentException();
++        throw new java.lang.IllegalArgumentException();
+       }
+ 
+       switch (field) {
+       case AUTHZ_TOKEN:
+         return isSetAuthzToken();
+       case USERNAME:
+         return isSetUsername();
+       }
 -      throw new IllegalStateException();
++      throw new java.lang.IllegalStateException();
+     }
+ 
+     @Override
 -    public boolean equals(Object that) {
++    public boolean equals(java.lang.Object that) {
+       if (that == null)
+         return false;
+       if (that instanceof isUserEnabled_args)
+         return this.equals((isUserEnabled_args)that);
+       return false;
+     }
+ 
+     public boolean equals(isUserEnabled_args that) {
+       if (that == null)
+         return false;
++      if (this == that)
++        return true;
+ 
+       boolean this_present_authzToken = true && this.isSetAuthzToken();
+       boolean that_present_authzToken = true && that.isSetAuthzToken();
+       if (this_present_authzToken || that_present_authzToken) {
+         if (!(this_present_authzToken && that_present_authzToken))
+           return false;
+         if (!this.authzToken.equals(that.authzToken))
+           return false;
+       }
+ 
+       boolean this_present_username = true && this.isSetUsername();
+       boolean that_present_username = true && that.isSetUsername();
+       if (this_present_username || that_present_username) {
+         if (!(this_present_username && that_present_username))
+           return false;
+         if (!this.username.equals(that.username))
+           return false;
+       }
+ 
+       return true;
+     }
+ 
+     @Override
+     public int hashCode() {
 -      List<Object> list = new ArrayList<Object>();
++      int hashCode = 1;
+ 
 -      boolean present_authzToken = true && (isSetAuthzToken());
 -      list.add(present_authzToken);
 -      if (present_authzToken)
 -        list.add(authzToken);
++      hashCode = hashCode * 8191 + ((isSetAuthzToken()) ? 131071 : 524287);
++      if (isSetAuthzToken())
++        hashCode = hashCode * 8191 + authzToken.hashCode();
+ 
 -      boolean present_username = true && (isSetUsername());
 -      list.add(present_username);
 -      if (present_username)
 -        list.add(username);
++      hashCode = hashCode * 8191 + ((isSetUsername()) ? 131071 : 524287);
++      if (isSetUsername())
++        hashCode = hashCode * 8191 + username.hashCode();
+ 
 -      return list.hashCode();
++      return hashCode;
+     }
+ 
+     @Override
+     public int compareTo(isUserEnabled_args other) {
+       if (!getClass().equals(other.getClass())) {
+         return getClass().getName().compareTo(other.getClass().getName());
+       }
+ 
+       int lastComparison = 0;
+ 
 -      lastComparison = Boolean.valueOf(isSetAuthzToken()).compareTo(other.isSetAuthzToken());
++      lastComparison = java.lang.Boolean.valueOf(isSetAuthzToken()).compareTo(other.isSetAuthzToken());
+       if (lastComparison != 0) {
+         return lastComparison;
+       }
+       if (isSetAuthzToken()) {
+         lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.authzToken, other.authzToken);
+         if (lastComparison != 0) {
+           return lastComparison;
+         }
+       }
 -      lastComparison = Boolean.valueOf(isSetUsername()).compareTo(other.isSetUsername());
++      lastComparison = java.lang.Boolean.valueOf(isSetUsername()).compareTo(other.isSetUsername());
+       if (lastComparison != 0) {
+         return lastComparison;
+       }
+       if (isSetUsername()) {
+         lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.username, other.username);
+         if (lastComparison != 0) {
+           return lastComparison;
+         }
+       }
+       return 0;
+     }
+ 
+     public _Fields fieldForId(int fieldId) {
+       return _Fields.findByThriftId(fieldId);
+     }
+ 
+     public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
 -      schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
++      scheme(iprot).read(iprot, this);
+     }
+ 
+     public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
 -      schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
++      scheme(oprot).write(oprot, this);
+     }
+ 
+     @Override
 -    public String toString() {
 -      StringBuilder sb = new StringBuilder("isUserEnabled_args(");
++    public java.lang.String toString() {
++      java.lang.StringBuilder sb = new java.lang.StringBuilder("isUserEnabled_args(");
+       boolean first = true;
+ 
+       sb.append("authzToken:");
+       if (this.authzToken == null) {
+         sb.append("null");
+       } else {
+         sb.append(this.authzToken);
+       }
+       first = false;
+       if (!first) sb.append(", ");
+       sb.append("username:");
+       if (this.username == null) {
+         sb.append("null");
+       } else {
+         sb.append(this.username);
+       }
+       first = false;
+       sb.append(")");
+       return sb.toString();
+     }
+ 
+     public void validate() throws org.apache.thrift.TException {
+       // check for required fields
+       if (authzToken == null) {
+         throw new org.apache.thrift.protocol.TProtocolException("Required field 'authzToken' was not present! Struct: " + toString());
+       }
+       if (username == null) {
+         throw new org.apache.thrift.protocol.TProtocolException("Required field 'username' was not present! Struct: " + toString());
+       }
+       // check for sub-struct validity
+       if (authzToken != null) {
+         authzToken.validate();
+       }
+     }
+ 
+     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+       try {
+         write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+       } catch (org.apache.thrift.TException te) {
+         throw new java.io.IOException(te);
+       }
+     }
+ 
 -    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
++    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
+       try {
+         read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+       } catch (org.apache.thrift.TException te) {
+         throw new java.io.IOException(te);
+       }
+     }
+ 
 -    private static class isUserEnabled_argsStandardSchemeFactory implements SchemeFactory {
++    private static class isUserEnabled_argsStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+       public isUserEnabled_argsStandardScheme getScheme() {
+         return new isUserEnabled_argsStandardScheme();
+       }
+     }
+ 
 -    private static class isUserEnabled_argsStandardScheme extends StandardScheme<isUserEnabled_args> {
++    private static class isUserEnabled_argsStandardScheme extends org.apache.thrift.scheme.StandardScheme<isUserEnabled_args> {
+ 
+       public void read(org.apache.thrift.protocol.TProtocol iprot, isUserEnabled_args struct) throws org.apache.thrift.TException {
+         org.apache.thrift.protocol.TField schemeField;
+         iprot.readStructBegin();
+         while (true)
+         {
+           schemeField = iprot.readFieldBegin();
+           if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+             break;
+           }
+           switch (schemeField.id) {
+             case 1: // AUTHZ_TOKEN
+               if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                 struct.authzToken = new org.apache.airavata.model.security.AuthzToken();
+                 struct.authzToken.read(iprot);
+                 struct.setAuthzTokenIsSet(true);
+               } else { 
+                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+               }
+               break;
+             case 2: // USERNAME
+               if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                 struct.username = iprot.readString();
+                 struct.setUsernameIsSet(true);
+               } else { 
+                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+               }
+               break;
+             default:
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+           }
+           iprot.readFieldEnd();
+         }
+         iprot.readStructEnd();
+ 
+         // check for required fields of primitive type, which can't be checked in the validate method
+         struct.validate();
+       }
+ 
+       public void write(org.apache.thrift.protocol.TProtocol oprot, isUserEnabled_args struct) throws org.apache.thrift.TException {
+         struct.validate();
+ 
+         oprot.writeStructBegin(STRUCT_DESC);
+         if (struct.authzToken != null) {
+           oprot.writeFieldBegin(AUTHZ_TOKEN_FIELD_DESC);
+           struct.authzToken.write(oprot);
+           oprot.writeFieldEnd();
+         }
+         if (struct.username != null) {
+           oprot.writeFieldBegin(USERNAME_FIELD_DESC);
+           oprot.writeString(struct.username);
+           oprot.writeFieldEnd();
+         }
+         oprot.writeFieldStop();
+         oprot.writeStructEnd();
+       }
+ 
+     }
+ 
 -    private static class isUserEnabled_argsTupleSchemeFactory implements SchemeFactory {
++    private static class isUserEnabled_argsTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+       public isUserEnabled_argsTupleScheme getScheme() {
+         return new isUserEnabled_argsTupleScheme();
+       }
+     }
+ 
 -    private static class isUserEnabled_argsTupleScheme extends TupleScheme<isUserEnabled_args> {
++    private static class isUserEnabled_argsTupleScheme extends org.apache.thrift.scheme.TupleScheme<isUserEnabled_args> {
+ 
+       @Override
+       public void write(org.apache.thrift.protocol.TProtocol prot, isUserEnabled_args struct) throws org.apache.thrift.TException {
 -        TTupleProtocol oprot = (TTupleProtocol) prot;
++        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+         struct.authzToken.write(oprot);
+         oprot.writeString(struct.username);
+       }
+ 
+       @Override
+       public void read(org.apache.thrift.protocol.TProtocol prot, isUserEnabled_args struct) throws org.apache.thrift.TException {
 -        TTupleProtocol iprot = (TTupleProtocol) prot;
++        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+         struct.authzToken = new org.apache.airavata.model.security.AuthzToken();
+         struct.authzToken.read(iprot);
+         struct.setAuthzTokenIsSet(true);
+         struct.username = iprot.readString();
+         struct.setUsernameIsSet(true);
+       }
+     }
+ 
++    private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
++      return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
++    }
+   }
+ 
+   public static class isUserEnabled_result implements org.apache.thrift.TBase<isUserEnabled_result, isUserEnabled_result._Fields>, java.io.Serializable, Cloneable, Comparable<isUserEnabled_result>   {
+     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("isUserEnabled_result");
+ 
+     private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.BOOL, (short)0);
+     private static final org.apache.thrift.protocol.TField IDSE_FIELD_DESC = new org.apache.thrift.protocol.TField("Idse", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+     private static final org.apache.thrift.protocol.TField AE_FIELD_DESC = new org.apache.thrift.protocol.TField("ae", org.apache.thrift.protocol.TType.STRUCT, (short)2);
+ 
 -    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
 -    static {
 -      schemes.put(StandardScheme.class, new isUserEnabled_resultStandardSchemeFactory());
 -      schemes.put(TupleScheme.class, new isUserEnabled_resultTupleSchemeFactory());
 -    }
++    private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new isUserEnabled_resultStandardSchemeFactory();
++    private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new isUserEnabled_resultTupleSchemeFactory();
+ 
+     public boolean success; // required
+     public org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException Idse; // required
+     public org.apache.airavata.model.error.AuthorizationException ae; // required
+ 
+     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+     public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+       SUCCESS((short)0, "success"),
+       IDSE((short)1, "Idse"),
+       AE((short)2, "ae");
+ 
 -      private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
++      private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
+ 
+       static {
 -        for (_Fields field : EnumSet.allOf(_Fields.class)) {
++        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
+           byName.put(field.getFieldName(), field);
+         }
+       }
+ 
+       /**
+        * Find the _Fields constant that matches fieldId, or null if its not found.
+        */
+       public static _Fields findByThriftId(int fieldId) {
+         switch(fieldId) {
+           case 0: // SUCCESS
+             return SUCCESS;
+           case 1: // IDSE
+             return IDSE;
+           case 2: // AE
+             return AE;
+           default:
+             return null;
+         }
+       }
+ 
+       /**
+        * Find the _Fields constant that matches fieldId, throwing an exception
+        * if it is not found.
+        */
+       public static _Fields findByThriftIdOrThrow(int fieldId) {
+         _Fields fields = findByThriftId(fieldId);
 -        if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
++        if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+         return fields;
+       }
+ 
+       /**
+        * Find the _Fields constant that matches name, or null if its not found.
+        */
 -      public static _Fields findByName(String name) {
++      public static _Fields findByName(java.lang.String name) {
+         return byName.get(name);
+       }
+ 
+       private final short _thriftId;
 -      private final String _fieldName;
++      private final java.lang.String _fieldName;
+ 
 -      _Fields(short thriftId, String fieldName) {
++      _Fields(short thriftId, java.lang.String fieldName) {
+         _thriftId = thriftId;
+         _fieldName = fieldName;
+       }
+ 
+       public short getThriftFieldId() {
+         return _thriftId;
+       }
+ 
 -      public String getFieldName() {
++      public java.lang.String getFieldName() {
+         return _fieldName;
+       }
+     }
+ 
+     // isset id assignments
+     private static final int __SUCCESS_ISSET_ID = 0;
+     private byte __isset_bitfield = 0;
 -    public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
++    public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+     static {
 -      Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
++      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+       tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+       tmpMap.put(_Fields.IDSE, new org.apache.thrift.meta_data.FieldMetaData("Idse", org.apache.thrift.TFieldRequirementType.DEFAULT, 
 -          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
++          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException.class)));
+       tmpMap.put(_Fields.AE, new org.apache.thrift.meta_data.FieldMetaData("ae", org.apache.thrift.TFieldRequirementType.DEFAULT, 
 -          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
 -      metaDataMap = Collections.unmodifiableMap(tmpMap);
++          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.error.AuthorizationException.class)));
++      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+       org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(isUserEnabled_result.class, metaDataMap);
+     }
+ 
+     public isUserEnabled_result() {
+     }
+ 
+     public isUserEnabled_result(
+       boolean success,
+       org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException Idse,
+       org.apache.airavata.model.error.AuthorizationException ae)
+     {
+       this();
+       this.success = success;
+       setSuccessIsSet(true);
+       this.Idse = Idse;
+       this.ae = ae;
+     }
+ 
+     /**
+      * Performs a deep copy on <i>other</i>.
+      */
+     public isUserEnabled_result(isUserEnabled_result other) {
+       __isset_bitfield = other.__isset_bitfield;
+       this.success = other.success;
+       if (other.isSetIdse()) {
+         this.Idse = new org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException(other.Idse);
+       }
+       if (other.isSetAe()) {
+         this.ae = new org.apache.airavata.model.error.AuthorizationException(other.ae);
+       }
+     }
+ 
+     public isUserEnabled_result deepCopy() {
+       return new isUserEnabled_result(this);
+     }
+ 
+     @Override
+     public void clear() {
+       setSuccessIsSet(false);
+       this.success = false;
+       this.Idse = null;
+       this.ae = null;
+     }
+ 
+     public boolean isSuccess() {
+       return this.success;
+     }
+ 
+     public isUserEnabled_result setSuccess(boolean success) {
+       this.success = success;
+       setSuccessIsSet(true);
+       return this;
+     }
+ 
+     public void unsetSuccess() {
 -      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
++      __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
+     }
+ 
+     /** Returns true if field success is set (has been assigned a value) and false otherwise */
+     public boolean isSetSuccess() {
 -      return EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
++      return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
+     }
+ 
+     public void setSuccessIsSet(boolean value) {
 -      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
++      __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
+     }
+ 
+     public org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException getIdse() {
+       return this.Idse;
+     }
+ 
+     public isUserEnabled_result setIdse(org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException Idse) {
+       this.Idse = Idse;
+       return this;
+     }
+ 
+     public void unsetIdse() {
+       this.Idse = null;
+     }
+ 
+     /** Returns true if field Idse is set (has been assigned a value) and false otherwise */
+     public boolean isSetIdse() {
+       return this.Idse != null;
+     }
+ 
+     public void setIdseIsSet(boolean value) {
+       if (!value) {
+         this.Idse = null;
+       }
+     }
+ 
+     public org.apache.airavata.model.error.AuthorizationException getAe() {
+       return this.ae;
+     }
+ 
+     public isUserEnabled_result setAe(org.apache.airavata.model.error.AuthorizationException ae) {
+       this.ae = ae;
+       return this;
+     }
+ 
+     public void unsetAe() {
+       this.ae = null;
+     }
+ 
+     /** Returns true if field ae is set (has been assigned a value) and false otherwise */
+     public boolean isSetAe() {
+       return this.ae != null;
+     }
+ 
+     public void setAeIsSet(boolean value) {
+       if (!value) {
+         this.ae = null;
+       }
+     }
+ 
 -    public void setFieldValue(_Fields field, Object value) {
++    public void setFieldValue(_Fields field, java.lang.Object value) {
+       switch (field) {
+       case SUCCESS:
+         if (value == null) {
+           unsetSuccess();
+         } else {
 -          setSuccess((Boolean)value);
++          setSuccess((java.lang.Boolean)value);
+         }
+         break;
+ 
+       case IDSE:
+         if (value == null) {
+           unsetIdse();
+         } else {
+           setIdse((org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException)value);
+         }
+         break;
+ 
+       case AE:
+         if (value == null) {
+           unsetAe();
+         } else {
+           setAe((org.apache.airavata.model.error.AuthorizationException)value);
+         }
+         break;
+ 
+       }
+     }
+ 
 -    public Object getFieldValue(_Fields field) {
++    public java.lang.Object getFieldValue(_Fields field) {
+       switch (field) {
+       case SUCCESS:
+         return isSuccess();
+ 
+       case IDSE:
+         return getIdse();
+ 
+       case AE:
+         return getAe();
+ 
+       }
 -      throw new IllegalStateException();
++      throw new java.lang.IllegalStateException();
+     }
+ 
+     /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+     public boolean isSet(_Fields field) {
+       if (field == null) {
 -        throw new IllegalArgumentException();
++        throw new java.lang.IllegalArgumentException();
+       }
+ 
+       switch (field) {
+       case SUCCESS:
+         return isSetSuccess();
+       case IDSE:
+         return isSetIdse();
+       case AE:
+         return isSetAe();
+       }
 -      throw new IllegalStateException();
++      throw new java.lang.IllegalStateException();
+     }
+ 
+     @Override
 -    public boolean equals(Object that) {
++    public boolean equals(java.lang.Object that) {
+       if (that == null)
+         return false;
+       if (that instanceof isUserEnabled_result)
+         return this.equals((isUserEnabled_result)that);
+       return false;
+     }
+ 
+     public boolean equals(isUserEnabled_result that) {
+       if (that == null)
+         return false;
++      if (this == that)
++        return true;
+ 
+       boolean this_present_success = true;
+       boolean that_present_success = true;
+       if (this_present_success || that_present_success) {
+         if (!(this_present_success && that_present_success))
+           return false;
+         if (this.success != that.success)
+           return false;
+       }
+ 
+       boolean this_present_Idse = true && this.isSetIdse();
+       boolean that_present_Idse = true && that.isSetIdse();
+       if (this_present_Idse || that_present_Idse) {
+         if (!(this_present_Idse && that_present_Idse))
+           return false;
+         if (!this.Idse.equals(that.Idse))
+           return false;
+       }
+ 
+       boolean this_present_ae = true && this.isSetAe();
+       boolean that_present_ae = true && that.isSetAe();
+       if (this_present_ae || that_present_ae) {
+         if (!(this_present_ae && that_present_ae))
+           return false;
+         if (!this.ae.equals(that.ae))
+           return false;
+       }
+ 
+       return true;
+     }
+ 
+     @Override
+     public int hashCode() {
 -      List<Object> list = new ArrayList<Object>();
++      int hashCode = 1;
+ 
 -      boolean present_success = true;
 -      list.add(present_success);
 -      if (present_success)
 -        list.add(success);
++      hashCode = hashCode * 8191 + ((success) ? 131071 : 524287);
+ 
 -      boolean present_Idse = true && (isSetIdse());
 -      list.add(present_Idse);
 -      if (present_Idse)
 -        list.add(Idse);
++      hashCode = hashCode * 8191 + ((isSetIdse()) ? 131071 : 524287);
++      if (isSetIdse())
++        hashCode = hashCode * 8191 + Idse.hashCode();
+ 
 -      boolean present_ae = true && (isSetAe());
 -      list.add(present_ae);
 -      if (present_ae)
 -        list.add(ae);
++      hashCode = hashCode * 8191 + ((isSetAe()) ? 131071 : 524287);
++      if (isSetAe())
++        hashCode = hashCode * 8191 + ae.hashCode();
+ 
 -      return list.hashCode();
++      return hashCode;
+     }
+ 
+     @Override
+     public int compareTo(isUserEnabled_result other) {
+       if (!getClass().equals(other.getClass())) {
+         return getClass().getName().compareTo(other.getClass().getName());
+       }
+ 
+       int lastComparison = 0;
+ 
 -      lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
++      lastComparison = java.lang.Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+       if (lastComparison != 0) {
+         return lastComparison;
+       }
+       if (isSetSuccess()) {
+         lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+         if (lastComparison != 0) {
+           return lastComparison;
+         }
+       }
 -      lastComparison = Boolean.valueOf(isSetIdse()).compareTo(other.isSetIdse());
++      lastComparison = java.lang.Boolean.valueOf(isSetIdse()).compareTo(other.isSetIdse());
+       if (lastComparison != 0) {
+         return lastComparison;
+       }
+       if (isSetIdse()) {
+         lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.Idse, other.Idse);
+         if (lastComparison != 0) {
+           return lastComparison;
+         }
+       }
 -      lastComparison = Boolean.valueOf(isSetAe()).compareTo(other.isSetAe());
++      lastComparison = java.lang.Boolean.valueOf(isSetAe()).compareTo(other.isSetAe());
+       if (lastComparison != 0) {
+         return lastComparison;
+       }
+       if (isSetAe()) {
+         lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ae, other.ae);
+         if (lastComparison != 0) {
+           return lastComparison;
+         }
+       }
+       return 0;
+     }
+ 
+     public _Fields fieldForId(int fieldId) {
+       return _Fields.findByThriftId(fieldId);
+     }
+ 
+     public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
 -      schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
++      scheme(iprot).read(iprot, this);
+     }
+ 
+     public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
 -      schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
++      scheme(oprot).write(oprot, this);
+       }
+ 
+     @Override
 -    public String toString() {
 -      StringBuilder sb = new StringBuilder("isUserEnabled_result(");
++    public java.lang.String toString() {
++      java.lang.StringBuilder sb = new java.lang.StringBuilder("isUserEnabled_result(");
+       boolean first = true;
+ 
+       sb.append("success:");
+       sb.append(this.success);
+       first = false;
+       if (!first) sb.append(", ");
+       sb.append("Idse:");
+       if (this.Idse == null) {
+         sb.append("null");
+       } else {
+         sb.append(this.Idse);
+       }
+       first = false;
+       if (!first) sb.append(", ");
+       sb.append("ae:");
+       if (this.ae == null) {
+         sb.append("null");
+       } else {
+         sb.append(this.ae);
+       }
+       first = false;
+       sb.append(")");
+       return sb.toString();
+     }
+ 
+     public void validate() throws org.apache.thrift.TException {
+       // check for required fields
+       // check for sub-struct validity
+     }
+ 
+     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+       try {
+         write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+       } catch (org.apache.thrift.TException te) {
+         throw new java.io.IOException(te);
+       }
+     }
+ 
 -    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
++    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
+       try {
+         // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+         __isset_bitfield = 0;
+         read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+       } catch (org.apache.thrift.TException te) {
+         throw new java.io.IOException(te);
+       }
+     }
+ 
 -    private static class isUserEnabled_resultStandardSchemeFactory implements SchemeFactory {
++    private static class isUserEnabled_resultStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+       public isUserEnabled_resultStandardScheme getScheme() {
+         return new isUserEnabled_resultStandardScheme();
+       }
+     }
+ 
 -    private static class isUserEnabled_resultStandardScheme extends StandardScheme<isUserEnabled_result> {
++    private static class isUserEnabled_resultStandardScheme extends org.apache.thrift.scheme.StandardScheme<isUserEnabled_result> {
+ 
+       public void read(org.apache.thrift.protocol.TProtocol iprot, isUserEnabled_result struct) throws org.apache.thrift.TException {
+         org.apache.thrift.protocol.TField schemeField;
+         iprot.readStructBegin();
+         while (true)
+         {
+           schemeField = iprot.readFieldBegin();
+           if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+             break;
+           }
+           switch (schemeField.id) {
+             case 0: // SUCCESS
+               if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+                 struct.success = iprot.readBool();
+                 struct.setSuccessIsSet(true);
+               } else { 
+                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+               }
+               break;
+             case 1: // IDSE
+               if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                 struct.Idse = new org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException();
+                 struct.Idse.read(iprot);
+                 struct.setIdseIsSet(true);
+               } else { 
+                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+               }
+               break;
+             case 2: // AE
+               if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                 struct.ae = new org.apache.airavata.model.error.AuthorizationException();
+                 struct.ae.read(iprot);
+                 struct.setAeIsSet(true);
+               } else { 
+                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+               }
+               break;
+             default:
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+           }
+           iprot.readFieldEnd();
+         }
+         iprot.readStructEnd();
+ 
+         // check for required fields of primitive type, which can't be checked in the validate method
+         struct.validate();
+       }
+ 
+       public void write(org.apache.thrift.protocol.TProtocol oprot, isUserEnabled_result struct) throws org.apache.thrift.TException {
+         struct.validate();
+ 
+         oprot.writeStructBegin(STRUCT_DESC);
+         if (struct.isSetSuccess()) {
+           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+           oprot.writeBool(struct.success);
+           oprot.writeFieldEnd();
+         }
+         if (struct.Idse != null) {
+           oprot.writeFieldBegin(IDSE_FIELD_DESC);
+           struct.Idse.write(oprot);
+           oprot.writeFieldEnd();
+         }
+         if (struct.ae != null) {
+           oprot.writeFieldBegin(AE_FIELD_DESC);
+           struct.ae.write(oprot);
+           oprot.writeFieldEnd();
+         }
+         oprot.writeFieldStop();
+         oprot.writeStructEnd();
+       }
+ 
+     }
+ 
 -    private static class isUserEnabled_resultTupleSchemeFactory implements SchemeFactory {
++    private static class isUserEnabled_resultTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+       public isUserEnabled_resultTupleScheme getScheme() {
+         return new isUserEnabled_resultTupleScheme();
+       }
+     }
+ 
 -    private static class isUserEnabled_resultTupleScheme extends TupleScheme<isUserEnabled_result> {
++    private static class isUserEnabled_resultTupleScheme extends org.apache.thrift.scheme.TupleScheme<isUserEnabled_result> {
+ 
+       @Override
+       public void write(org.apache.thrift.protocol.TProtocol prot, isUserEnabled_result struct) throws org.apache.thrift.TException {
 -        TTupleProtocol oprot = (TTupleProtocol) prot;
 -        BitSet optionals = new BitSet();
++        org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
++        java.util.BitSet optionals = new java.util.BitSet();
+         if (struct.isSetSuccess()) {
+           optionals.set(0);
+         }
+         if (struct.isSetIdse()) {
+           optionals.set(1);
+         }
+         if (struct.isSetAe()) {
+           optionals.set(2);
+         }
+         oprot.writeBitSet(optionals, 3);
+         if (struct.isSetSuccess()) {
+           oprot.writeBool(struct.success);
+         }
+         if (struct.isSetIdse()) {
+           struct.Idse.write(oprot);
+         }
+         if (struct.isSetAe()) {
+           struct.ae.write(oprot);
+         }
+       }
+ 
+       @Override
+       public void read(org.apache.thrift.protocol.TProtocol prot, isUserEnabled_result struct) throws org.apache.thrift.TException {
 -        TTupleProtocol iprot = (TTupleProtocol) prot;
 -        BitSet incoming = iprot.readBitSet(3);
++        org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
++        java.util.BitSet incoming = iprot.readBitSet(3);
+         if (incoming.get(0)) {
+           struct.success = iprot.readBool();
+           struct.setSuccessIsSet(true);
+         }
+         if (incoming.get(1)) {
+           struct.Idse = new org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException();
+           struct.Idse.read(iprot);
+           struct.setIdseIsSet(true);
+         }
+         if (incoming.get(2)) {
            struct.ae = new org.apache.airavata.model.error.AuthorizationException();
            struct.ae.read(iprot);
            struct.setAeIsSet(true);
diff --cc modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
index 39a5ab9,3a6b0dc..f1df955
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/SCPDataStageTask.java
@@@ -57,9 -57,9 +57,10 @@@ import java.io.IOException
  import java.net.URI;
  import java.net.URISyntaxException;
  import java.util.Arrays;
+ import java.util.Collections;
  import java.util.List;
  import java.util.Map;
 +import java.util.Optional;
  
  /**
   * This will be used for both Input file staging and output file staging, hence if you do any changes to a part of logic
@@@ -177,23 -179,25 +180,25 @@@ public class SCPDataStageTask implement
  
                  OutputDataObjectType processOutput = taskContext.getProcessOutput();
  
-                 for(int i=0; i<fileNames.size(); i++){
-                     String temp = fileNames.get(i);
-                     if(temp != null && temp != ""){
+                 for (String temp : fileNames) {
+                     if (temp != null && !"".equals(temp)) {
                          fileName = temp;
                      }
-                     if(destParentPath.endsWith(File.separator)){
+ 
+                     if (destParentPath.endsWith(File.separator)) {
                          destinationURI = new URI(destParentPath + fileName);
-                     }else{
+                     } else {
                          destinationURI = new URI(destParentPath + File.separator + fileName);
                      }
- 
                      //Wildcard support is only enabled for output data staging
                      if (processState == ProcessState.OUTPUT_DATA_STAGING) {
+                         URI newSourceURI = new URI((sourceParentPath.endsWith(File.separator) ?
+                                 sourceParentPath : sourceParentPath + File.separator) +
+                                 fileName);
                          processOutput.setName(fileName);
  
 -                        experimentCatalog.add(ExpCatChildDataType.EXPERIMENT_OUTPUT, Collections.singletonList(processOutput), experimentId);
 -                        experimentCatalog.add(ExpCatChildDataType.PROCESS_OUTPUT, Collections.singletonList(processOutput), processId);
 +                        registryClient.addExperimentProcessOutputs(GFacConstants.EXPERIMENT_OUTPUT, Arrays.asList(processOutput), experimentId);
 +                        registryClient.addExperimentProcessOutputs(GFacConstants.PROCESS_OUTPUT, Arrays.asList(processOutput), processId);
  
                          taskContext.setProcessOutput(processOutput);
  

-- 
To stop receiving notification emails like this one, please contact
machristie@apache.org.