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 2023/03/31 13:16:56 UTC
[airavata-data-catalog] 01/04: Adds SharingException to SharingManager methods for sharing errors
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 <ma...@apache.org>
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);
+ }
}
}