diff --git a/pom.xml b/pom.xml index 3f79fe5..57e92a1 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ org.gcube.common storagehub-client-library - 1.0.7-SNAPSHOT + 1.0.8-SNAPSHOT storagehub-client-library diff --git a/src/main/java/org/gcube/common/storagehub/client/dsl/FolderContainer.java b/src/main/java/org/gcube/common/storagehub/client/dsl/FolderContainer.java index fee5edd..97ef4d5 100644 --- a/src/main/java/org/gcube/common/storagehub/client/dsl/FolderContainer.java +++ b/src/main/java/org/gcube/common/storagehub/client/dsl/FolderContainer.java @@ -155,10 +155,10 @@ public class FolderContainer extends ItemContainer{ * @throws {@InvalidItemException} * @throws {@UserNotAuthorizedException} if user is not administrator of this folder */ - /*public FolderContainer changeAcls(String user, AccessType accessType) throws StorageHubException { + public FolderContainer changeAcls(String user, AccessType accessType) throws StorageHubException { itemclient.changeACL(this.itemId, user, accessType); return this; - }*/ + } public boolean canWrite() throws Exception { return itemclient.canWriteInto(this.itemId); diff --git a/src/main/java/org/gcube/common/storagehub/client/dsl/StorageHubClient.java b/src/main/java/org/gcube/common/storagehub/client/dsl/StorageHubClient.java index 246f679..965e52b 100644 --- a/src/main/java/org/gcube/common/storagehub/client/dsl/StorageHubClient.java +++ b/src/main/java/org/gcube/common/storagehub/client/dsl/StorageHubClient.java @@ -1,6 +1,7 @@ package org.gcube.common.storagehub.client.dsl; import org.gcube.common.storagehub.client.plugins.AbstractPlugin; +import org.gcube.common.storagehub.client.proxies.GroupManagerClient; import org.gcube.common.storagehub.client.proxies.ItemManagerClient; import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient; import org.gcube.common.storagehub.model.exceptions.StorageHubException; @@ -10,6 +11,7 @@ public class StorageHubClient { private WorkspaceManagerClient wsClient = AbstractPlugin.workspace().build(); private ItemManagerClient itemclient = AbstractPlugin.item().build(); + private GroupManagerClient groupClient = AbstractPlugin.groups().build(); public FolderContainer getWSRoot(){ return new FolderContainer(itemclient, wsClient.getWorkspace()); @@ -28,11 +30,15 @@ public class StorageHubClient { public FolderContainer openVREFolder() { return new FolderContainer(itemclient, wsClient.getVreFolder()); } - + public ListResolver getVREFolders() { return new ListResolver((onlyType, includeHidden, excludes) -> wsClient.getVreFolders(excludes), itemclient); } + public VREFolderManager getVreFolderManager() { + return new VREFolderManager(wsClient, groupClient); + } + public FolderContainer openTrash() { return new FolderContainer(itemclient, wsClient.getTrashFolder()); } @@ -48,9 +54,7 @@ public class StorageHubClient { public long getTotalItemCount() { return wsClient.getTotalItemCount(); } - - - + public GenericItemContainer restoreThrashItem(String itemId) { return new GenericItemContainer(itemclient, wsClient.restoreFromTrash(itemId)); } diff --git a/src/main/java/org/gcube/common/storagehub/client/dsl/VREFolderManager.java b/src/main/java/org/gcube/common/storagehub/client/dsl/VREFolderManager.java new file mode 100644 index 0000000..4ac1b82 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/client/dsl/VREFolderManager.java @@ -0,0 +1,36 @@ +package org.gcube.common.storagehub.client.dsl; + +import org.gcube.common.storagehub.client.proxies.GroupManagerClient; +import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient; +import org.gcube.common.storagehub.model.Excludes; +import org.gcube.common.storagehub.model.exceptions.StorageHubException; +import org.gcube.common.storagehub.model.items.Item; + +public class VREFolderManager { + + private WorkspaceManagerClient wsClient; + private GroupManagerClient groupClient; + + public VREFolderManager(WorkspaceManagerClient wsClient, GroupManagerClient groupClient) { + super(); + this.wsClient = wsClient; + this.groupClient = groupClient; + } + + public void removeUser(String userId) throws StorageHubException{ + groupClient.removeUserFromGroup(userId, getVreFolder().getTitle()); + } + + public void addUser(String userId) throws StorageHubException{ + groupClient.addUserToGroup(userId, getVreFolder().getTitle()); + } + + public void getUsers() throws StorageHubException{ + getVreFolder(); + groupClient.getUsersOfGroup(getVreFolder().getTitle()); + } + + private Item getVreFolder() { + return wsClient.getVreFolder(Excludes.ALL.toArray(new String[0])); + } +} diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultGroupManager.java b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultGroupManager.java index b57d386..93dafa0 100644 --- a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultGroupManager.java +++ b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultGroupManager.java @@ -48,8 +48,10 @@ private final ProxyDelegate delegate; try { delegate.make(call); return; - }catch(Exception e) { - throw new RuntimeException(e); + }catch(StorageHubException e) { + throw e; + }catch(Exception e1) { + throw new RuntimeException(e1); } } @@ -75,8 +77,10 @@ private final ProxyDelegate delegate; try { delegate.make(call); return; - }catch(Exception e) { - throw new RuntimeException(e); + }catch(StorageHubException e) { + throw e; + }catch(Exception e1) { + throw new RuntimeException(e1); } } @@ -103,8 +107,10 @@ private final ProxyDelegate delegate; try { List users = delegate.make(call); return users; - }catch(Exception e) { - throw new RuntimeException(e); + }catch(StorageHubException e) { + throw e; + }catch(Exception e1) { + throw new RuntimeException(e1); } } @@ -130,8 +136,10 @@ private final ProxyDelegate delegate; try { delegate.make(call); return; - }catch(Exception e) { - throw new RuntimeException(e); + }catch(StorageHubException e) { + throw e; + }catch(Exception e1) { + throw new RuntimeException(e1); } diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultUserManager.java b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultUserManager.java index 6607b80..6da83a0 100644 --- a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultUserManager.java +++ b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultUserManager.java @@ -48,8 +48,10 @@ public class DefaultUserManager implements UserManagerClient { try { delegate.make(call); return; - }catch(Exception e) { - throw new RuntimeException(e); + }catch(StorageHubException e) { + throw e; + }catch(Exception e1) { + throw new RuntimeException(e1); } } @@ -75,8 +77,10 @@ public class DefaultUserManager implements UserManagerClient { try { delegate.make(call); return; - }catch(Exception e) { - throw new RuntimeException(e); + }catch(StorageHubException e) { + throw e; + }catch(Exception e1) { + throw new RuntimeException(e1); } } @@ -102,8 +106,10 @@ public class DefaultUserManager implements UserManagerClient { try { List users = delegate.make(call); return users; - }catch(Exception e) { - throw new RuntimeException(e); + }catch(StorageHubException e) { + throw e; + }catch(Exception e1) { + throw new RuntimeException(e1); } } diff --git a/src/test/java/org/gcube/data/access/fs/Items.java b/src/test/java/org/gcube/data/access/fs/Items.java index 4f5813f..5404275 100644 --- a/src/test/java/org/gcube/data/access/fs/Items.java +++ b/src/test/java/org/gcube/data/access/fs/Items.java @@ -30,10 +30,21 @@ public class Items { @BeforeClass public static void setUp(){ - SecurityTokenProvider.instance.set("9bec07ef-5d19-42ad-8a56-0af28c9b08ed-98187548"); - ScopeProvider.instance.set("/gcube"); + SecurityTokenProvider.instance.set("d9431600-9fef-41a7-946d-a5b402de30d6-98187548"); + ScopeProvider.instance.set("/gcube/devsec/devVRE"); } + @Test + public void removeUserFromVRE() throws StorageHubException { + StorageHubClient shc = new StorageHubClient(); + shc.getVreFolderManager().removeUser("andrea.rossi"); + } + + @Test + public void addUserFromVRE() throws StorageHubException { + StorageHubClient shc = new StorageHubClient(); + shc.getVreFolderManager().addUser("andrea.rossi"); + } @Test public void emptyStatisticaManagerTrash() { diff --git a/src/test/java/org/gcube/data/access/fs/TestCall.java b/src/test/java/org/gcube/data/access/fs/TestCall.java index 2e0fc3f..eb079a7 100644 --- a/src/test/java/org/gcube/data/access/fs/TestCall.java +++ b/src/test/java/org/gcube/data/access/fs/TestCall.java @@ -23,12 +23,14 @@ import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.common.storagehub.client.StreamDescriptor; import org.gcube.common.storagehub.client.plugins.AbstractPlugin; +import org.gcube.common.storagehub.client.proxies.GroupManagerClient; import org.gcube.common.storagehub.client.proxies.ItemManagerClient; import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient; import org.gcube.common.storagehub.model.Metadata; import org.gcube.common.storagehub.model.Paths; import org.gcube.common.storagehub.model.acls.ACL; import org.gcube.common.storagehub.model.acls.AccessType; +import org.gcube.common.storagehub.model.exceptions.StorageHubException; import org.gcube.common.storagehub.model.exceptions.UserNotAuthorizedException; import org.gcube.common.storagehub.model.expressions.GenericSearchableItem; import org.gcube.common.storagehub.model.expressions.OrderField; @@ -53,10 +55,22 @@ public class TestCall { @BeforeClass public static void setUp(){ - SecurityTokenProvider.instance.set("b7c80297-e4ed-42ab-ab42-fdc0b8b0eabf-98187548"); + SecurityTokenProvider.instance.set("d9431600-9fef-41a7-946d-a5b402de30d6-98187548"); ScopeProvider.instance.set("/gcube"); } + @Test + public void removeUserFromGroup() throws StorageHubException { + GroupManagerClient client = AbstractPlugin.groups().build(); + client.removeUserFromGroup("andrea.rossi", "gcube-devsec-devVRE"); + } + + @Test + public void addUserToGroup() throws StorageHubException { + GroupManagerClient client = AbstractPlugin.groups().build(); + client.addUserToGroup("andrea.rossi", "gcube-devsec-devVRE"); + } + @Test(expected=UserNotAuthorizedException.class) public void createNotAuthorized() throws Exception{ ItemManagerClient itemclient = AbstractPlugin.item().build();