This is an automated email from the ASF dual-hosted git repository. machristie pushed a commit to branch custos-integration in repository https://gitbox.apache.org/repos/asf/airavata-data-catalog.git
commit 9f3c7b6c0c44db56a0815fb069b6a294250f154f Author: Marcus Christie <[email protected]> AuthorDate: Wed Mar 29 09:31:04 2023 -0400 Adds SharingException to SharingManager methods for sharing errors --- .../api/DataCatalogApiServiceApplication.java | 9 +- .../api/exception/SharingException.java | 24 ++++++ .../datacatalog/api/sharing/SharingManager.java | 24 +++--- .../api/sharing/SharingManagerImpl.java | 97 +++++++++++++++------- 4 files changed, 111 insertions(+), 43 deletions(-) diff --git a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/DataCatalogApiServiceApplication.java b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/DataCatalogApiServiceApplication.java index b330f6c..7b6bd4e 100644 --- a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/DataCatalogApiServiceApplication.java +++ b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/DataCatalogApiServiceApplication.java @@ -4,13 +4,14 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.context.annotation.ComponentScan; -import org.springframework.data.jpa.repository.config.EnableJpaAuditing; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -@ComponentScan(basePackages = {"org.apache.airavata.datacatalog.api","org.apache.custos.sharing.core"}) +@ComponentScan(basePackages = { "org.apache.airavata.datacatalog.api", "org.apache.custos.sharing.core" }) @SpringBootApplication -@EnableJpaRepositories({"org.apache.custos.sharing.core.persistance.repository","org.apache.airavata.datacatalog.api.repository"}) -@EntityScan(basePackages = {"org.apache.airavata.datacatalog.api.model","org.apache.custos.sharing.core.persistance.model"}) +@EnableJpaRepositories({ "org.apache.custos.sharing.core.persistance.repository", + "org.apache.airavata.datacatalog.api.repository" }) +@EntityScan(basePackages = { "org.apache.airavata.datacatalog.api.model", + "org.apache.custos.sharing.core.persistance.model" }) public class DataCatalogApiServiceApplication { public static void main(String[] args) { diff --git a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/exception/SharingException.java b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/exception/SharingException.java new file mode 100644 index 0000000..d8b0368 --- /dev/null +++ b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/exception/SharingException.java @@ -0,0 +1,24 @@ +package org.apache.airavata.datacatalog.api.exception; + +public class SharingException extends Exception { + + public SharingException() { + } + + public SharingException(String message) { + super(message); + } + + public SharingException(Throwable cause) { + super(cause); + } + + public SharingException(String message, Throwable cause) { + super(message, cause); + } + + public SharingException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } + +} diff --git a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/sharing/SharingManager.java b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/sharing/SharingManager.java index 65c61df..1a5c3f7 100644 --- a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/sharing/SharingManager.java +++ b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/sharing/SharingManager.java @@ -4,8 +4,8 @@ import org.apache.airavata.datacatalog.api.DataProduct; import org.apache.airavata.datacatalog.api.GroupInfo; import org.apache.airavata.datacatalog.api.Permission; import org.apache.airavata.datacatalog.api.UserInfo; +import org.apache.airavata.datacatalog.api.exception.SharingException; import org.apache.airavata.datacatalog.api.model.UserEntity; -import org.apache.custos.sharing.core.exceptions.CustosSharingException; public interface SharingManager { @@ -15,7 +15,7 @@ public interface SharingManager { * @param userInfo * @return */ - UserEntity resolveUser(UserInfo userInfo); + UserEntity resolveUser(UserInfo userInfo) throws SharingException; /** * Return true if the user has access to the data product with the given @@ -26,7 +26,7 @@ public interface SharingManager { * @param permission * @return */ - boolean userHasAccess(UserInfo userInfo, DataProduct dataProduct, Permission permission) throws Exception; + boolean userHasAccess(UserInfo userInfo, DataProduct dataProduct, Permission permission) throws SharingException; /** * Return the name of the database view that includes sharing information @@ -45,7 +45,8 @@ public interface SharingManager { * @param dataProduct * @param permission */ - void grantPermissionToUser(UserInfo userInfo, DataProduct dataProduct, Permission permission) throws Exception; + void grantPermissionToUser(UserInfo userInfo, DataProduct dataProduct, Permission permission) + throws SharingException; /** * Revoke permission from the user for the given data product. @@ -54,7 +55,8 @@ public interface SharingManager { * @param dataProduct * @param permission */ - void revokePermissionFromUser(UserInfo userInfo, DataProduct dataProduct, Permission permission) throws Exception; + void revokePermissionFromUser(UserInfo userInfo, DataProduct dataProduct, Permission permission) + throws SharingException; /** * Grant permission to the group for the given data product. @@ -63,7 +65,8 @@ public interface SharingManager { * @param dataProduct * @param permission */ - void grantPermissionToGroup(GroupInfo groupInfo, DataProduct dataProduct, Permission permission) throws Exception; + void grantPermissionToGroup(GroupInfo groupInfo, DataProduct dataProduct, Permission permission) + throws SharingException; /** * Revoke permission from the group for the given data product. @@ -72,7 +75,8 @@ public interface SharingManager { * @param dataProduct * @param permission */ - void revokePermissionFromGroup(GroupInfo groupInfo, DataProduct dataProduct, Permission permission) throws Exception; + void revokePermissionFromGroup(GroupInfo groupInfo, DataProduct dataProduct, Permission permission) + throws SharingException; /** * Return true if public access at the given permission is granted for the @@ -83,7 +87,7 @@ public interface SharingManager { * @param permission * @return */ - boolean hasPublicAccess(DataProduct dataProduct, Permission permission) throws Exception; + boolean hasPublicAccess(DataProduct dataProduct, Permission permission) throws SharingException; /** * Grant public access to the given data product. @@ -91,7 +95,7 @@ public interface SharingManager { * @param dataProduct * @param permission */ - void grantPublicAccess(DataProduct dataProduct, Permission permission) throws Exception; + void grantPublicAccess(DataProduct dataProduct, Permission permission) throws SharingException; /** * Revoke public access from the given data product. @@ -99,5 +103,5 @@ public interface SharingManager { * @param dataProduct * @param permission */ - void revokePublicAccess(DataProduct dataProduct, Permission permission) throws Exception; + void revokePublicAccess(DataProduct dataProduct, Permission permission) throws SharingException; } diff --git a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/sharing/SharingManagerImpl.java b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/sharing/SharingManagerImpl.java index 7eab638..4cf34ce 100644 --- a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/sharing/SharingManagerImpl.java +++ b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/sharing/SharingManagerImpl.java @@ -1,9 +1,13 @@ package org.apache.airavata.datacatalog.api.sharing; +import java.util.ArrayList; +import java.util.List; + import org.apache.airavata.datacatalog.api.DataProduct; import org.apache.airavata.datacatalog.api.GroupInfo; import org.apache.airavata.datacatalog.api.Permission; import org.apache.airavata.datacatalog.api.UserInfo; +import org.apache.airavata.datacatalog.api.exception.SharingException; import org.apache.airavata.datacatalog.api.model.UserEntity; import org.apache.custos.sharing.core.exceptions.CustosSharingException; import org.apache.custos.sharing.core.impl.SharingImpl; @@ -11,9 +15,6 @@ import org.apache.custos.sharing.core.utils.Constants; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.List; - @Component public class SharingManagerImpl implements SharingManager { @@ -22,16 +23,21 @@ public class SharingManagerImpl implements SharingManager { private static final String PUBLIC_ACCESS_GROUP = "public_access_group"; - @Override public UserEntity resolveUser(UserInfo userInfo) { return null; } @Override - public boolean userHasAccess(UserInfo userInfo, DataProduct dataProduct, Permission permission) throws CustosSharingException { - return custosSharingImpl.userHasAccess(userInfo.getTenantId(), dataProduct.getDataProductId(), permission.name(), - userInfo.getUserId()); + public boolean userHasAccess(UserInfo userInfo, DataProduct dataProduct, Permission permission) + throws SharingException { + try { + return custosSharingImpl.userHasAccess(userInfo.getTenantId(), dataProduct.getDataProductId(), + permission.name(), + userInfo.getUserId()); + } catch (CustosSharingException e) { + throw new SharingException(e); + } } @Override @@ -40,63 +46,96 @@ public class SharingManagerImpl implements SharingManager { } @Override - public void grantPermissionToUser(UserInfo userInfo, DataProduct dataProduct, Permission permission) throws CustosSharingException { + public void grantPermissionToUser(UserInfo userInfo, DataProduct dataProduct, Permission permission) + throws SharingException { List<String> userIds = new ArrayList<>(); userIds.add(userInfo.getUserId()); - custosSharingImpl.shareEntity(userInfo.getTenantId(), - dataProduct.getDataProductId(), permission.name(), userIds, true, Constants.USER, null); + try { + custosSharingImpl.shareEntity(userInfo.getTenantId(), + dataProduct.getDataProductId(), permission.name(), userIds, true, Constants.USER, null); + } catch (CustosSharingException e) { + throw new SharingException(e); + } } @Override - public void revokePermissionFromUser(UserInfo userInfo, DataProduct dataProduct, Permission permission) throws CustosSharingException { + public void revokePermissionFromUser(UserInfo userInfo, DataProduct dataProduct, Permission permission) + throws SharingException { List<String> userIds = new ArrayList<>(); userIds.add(userInfo.getUserId()); - custosSharingImpl.revokePermission(userInfo.getTenantId(), - dataProduct.getDataProductId(), permission.name(), userIds); + try { + custosSharingImpl.revokePermission(userInfo.getTenantId(), + dataProduct.getDataProductId(), permission.name(), userIds); + } catch (CustosSharingException e) { + throw new SharingException(e); + } } @Override - public void grantPermissionToGroup(GroupInfo groupInfo, DataProduct dataProduct, Permission permission) throws CustosSharingException { + public void grantPermissionToGroup(GroupInfo groupInfo, DataProduct dataProduct, Permission permission) + throws SharingException { List<String> userIds = new ArrayList<>(); userIds.add(groupInfo.getGroupId()); - custosSharingImpl.shareEntity(groupInfo.getTenantId(), - dataProduct.getDataProductId(), permission.name(), userIds, true, Constants.GROUP, null); + try { + custosSharingImpl.shareEntity(groupInfo.getTenantId(), + dataProduct.getDataProductId(), permission.name(), userIds, true, Constants.GROUP, null); + } catch (CustosSharingException e) { + throw new SharingException(e); + } } @Override - public void revokePermissionFromGroup(GroupInfo groupInfo, DataProduct dataProduct, Permission permission) throws CustosSharingException { + public void revokePermissionFromGroup(GroupInfo groupInfo, DataProduct dataProduct, Permission permission) + throws SharingException { List<String> userIds = new ArrayList<>(); userIds.add(groupInfo.getGroupId()); - custosSharingImpl.revokePermission(groupInfo.getTenantId(), - dataProduct.getDataProductId(), permission.name(), userIds); + try { + custosSharingImpl.revokePermission(groupInfo.getTenantId(), + dataProduct.getDataProductId(), permission.name(), userIds); + } catch (CustosSharingException e) { + throw new SharingException(e); + } } @Override - public boolean hasPublicAccess(DataProduct dataProduct, Permission permission) throws CustosSharingException{ - return custosSharingImpl.userHasAccess(dataProduct.getTenantId(), dataProduct.getDataProductId(), permission.name(), - PUBLIC_ACCESS_GROUP); + public boolean hasPublicAccess(DataProduct dataProduct, Permission permission) throws SharingException { + try { + return custosSharingImpl.userHasAccess(dataProduct.getTenantId(), dataProduct.getDataProductId(), + permission.name(), + PUBLIC_ACCESS_GROUP); + } catch (CustosSharingException e) { + throw new SharingException(e); + } } @Override - public void grantPublicAccess(DataProduct dataProduct, Permission permission) throws CustosSharingException{ + public void grantPublicAccess(DataProduct dataProduct, Permission permission) throws SharingException { - //TODO: create PUBLIC GROUP If not exists + // TODO: create PUBLIC GROUP If not exists List<String> userIds = new ArrayList<>(); userIds.add(PUBLIC_ACCESS_GROUP); - custosSharingImpl.shareEntity(dataProduct.getTenantId(), - dataProduct.getDataProductId(), permission.name(), userIds, true, Constants.GROUP, null); + try { + custosSharingImpl.shareEntity(dataProduct.getTenantId(), + dataProduct.getDataProductId(), permission.name(), userIds, true, Constants.GROUP, null); + } catch (CustosSharingException e) { + throw new SharingException(e); + } } @Override - public void revokePublicAccess(DataProduct dataProduct, Permission permission) throws CustosSharingException{ + public void revokePublicAccess(DataProduct dataProduct, Permission permission) throws SharingException { List<String> userIds = new ArrayList<>(); userIds.add(PUBLIC_ACCESS_GROUP); - custosSharingImpl.revokePermission(dataProduct.getTenantId(), - dataProduct.getDataProductId(), permission.name(), userIds); + try { + custosSharingImpl.revokePermission(dataProduct.getTenantId(), + dataProduct.getDataProductId(), permission.name(), userIds); + } catch (CustosSharingException e) { + throw new SharingException(e); + } } }
