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();