diff --git a/pom.xml b/pom.xml
index 57e92a1..fafcb07 100644
--- a/pom.xml
+++ b/pom.xml
@@ -64,12 +64,10 @@
org.glassfish.jersey.media
jersey-media-json-jackson
- 2.24.1
org.glassfish.jersey.media
jersey-media-multipart
- 2.24.1
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 965e52b..5a3ab59 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
@@ -35,8 +35,12 @@ public class StorageHubClient {
return new ListResolver((onlyType, includeHidden, excludes) -> wsClient.getVreFolders(excludes), itemclient);
}
+ public VREFolderManager getVreFolderManager(String vreTitle) {
+ return new VREFolderManager(wsClient, groupClient, vreTitle);
+ }
+
public VREFolderManager getVreFolderManager() {
- return new VREFolderManager(wsClient, groupClient);
+ return new VREFolderManager(wsClient, groupClient, null);
}
public FolderContainer openTrash() {
diff --git a/src/main/java/org/gcube/common/storagehub/client/dsl/Util.java b/src/main/java/org/gcube/common/storagehub/client/dsl/Util.java
index 35461c9..127d317 100644
--- a/src/main/java/org/gcube/common/storagehub/client/dsl/Util.java
+++ b/src/main/java/org/gcube/common/storagehub/client/dsl/Util.java
@@ -1,6 +1,10 @@
package org.gcube.common.storagehub.client.dsl;
+import org.gcube.common.scope.api.ScopeProvider;
+import org.gcube.common.scope.impl.ScopeBean;
+import org.gcube.common.scope.impl.ScopeBean.Type;
import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
+import org.gcube.common.storagehub.model.exceptions.BackendGenericError;
import org.gcube.common.storagehub.model.items.AbstractFileItem;
import org.gcube.common.storagehub.model.items.FolderItem;
import org.gcube.common.storagehub.model.items.Item;
@@ -14,4 +18,11 @@ public class Util {
return new FolderContainer(itemClient, (FolderItem)item);
else return new GenericItemContainer(itemClient, item);
}
+
+ public static String getVREGroupFromContext(String context) throws BackendGenericError{
+ ScopeBean bean = new ScopeBean(context);
+ if (!bean.is(Type.VRE)) throw new BackendGenericError(context+ " is not a VRE context");
+ String entireScopeName= bean.toString().replaceAll("^/(.*)/?$", "$1").replaceAll("/", "-");
+ return entireScopeName;
+ }
}
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
index 4ac1b82..59506e6 100644
--- a/src/main/java/org/gcube/common/storagehub/client/dsl/VREFolderManager.java
+++ b/src/main/java/org/gcube/common/storagehub/client/dsl/VREFolderManager.java
@@ -1,5 +1,7 @@
package org.gcube.common.storagehub.client.dsl;
+import java.util.List;
+
import org.gcube.common.storagehub.client.proxies.GroupManagerClient;
import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient;
import org.gcube.common.storagehub.model.Excludes;
@@ -11,26 +13,41 @@ public class VREFolderManager {
private WorkspaceManagerClient wsClient;
private GroupManagerClient groupClient;
- public VREFolderManager(WorkspaceManagerClient wsClient, GroupManagerClient groupClient) {
+ private String vreTitle;
+
+ public VREFolderManager(WorkspaceManagerClient wsClient, GroupManagerClient groupClient, String vreTitle) {
super();
this.wsClient = wsClient;
this.groupClient = groupClient;
+ this.vreTitle = vreTitle;
}
public void removeUser(String userId) throws StorageHubException{
- groupClient.removeUserFromGroup(userId, getVreFolder().getTitle());
+ groupClient.removeUserFromGroup(userId, vreTitle);
}
public void addUser(String userId) throws StorageHubException{
- groupClient.addUserToGroup(userId, getVreFolder().getTitle());
+ groupClient.addUserToGroup(userId, vreTitle);
}
- public void getUsers() throws StorageHubException{
- getVreFolder();
- groupClient.getUsersOfGroup(getVreFolder().getTitle());
+ public List getUsers() throws StorageHubException{
+ return groupClient.getUsersOfGroup(vreTitle);
}
-
+
private Item getVreFolder() {
return wsClient.getVreFolder(Excludes.ALL.toArray(new String[0]));
}
+
+ public void setAdmin(String userId) throws StorageHubException{
+ groupClient.addAdmin(vreTitle, userId);
+ }
+
+ public void removeAdmin(String userId) throws StorageHubException{
+ groupClient.removeAdmin(vreTitle, userId);
+ }
+
+ public List getAdmins() throws StorageHubException{
+ return groupClient.getAdmins(vreTitle);
+ }
+
}
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 93dafa0..90fe133 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
@@ -33,7 +33,7 @@ private final ProxyDelegate delegate;
MultivaluedMap formData = new MultivaluedHashMap();
formData.add("userId", userId);
- GXInboundResponse response = myManager.path(groupId).put(Entity.entity(formData, MediaType.APPLICATION_FORM_URLENCODED));
+ GXInboundResponse response = myManager.path(groupId).path("users").put(Entity.entity(formData, MediaType.APPLICATION_FORM_URLENCODED));
if (response.isErrorResponse()) {
if (response.hasException())
@@ -204,4 +204,92 @@ private final ProxyDelegate delegate;
}
}
+
+
+ @Override
+ public void addAdmin(String groupId, String userId) throws StorageHubException {
+ Call call = new Call() {
+ @Override
+ public Void call(GXWebTargetAdapterRequest manager) throws Exception {
+ GXWebTargetAdapterRequest myManager = manager;
+
+ MultivaluedMap formData = new MultivaluedHashMap();
+ formData.add("userId", userId);
+
+ GXInboundResponse response = myManager.path(groupId).path("admins").put(Entity.entity(formData, MediaType.APPLICATION_FORM_URLENCODED));
+
+ if (response.isErrorResponse()) {
+ if (response.hasException())
+ throw response.getException();
+ else
+ throw new BackendGenericError();
+ }
+
+ return null;
+ }
+ };
+ try {
+ delegate.make(call);
+ }catch(Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public void removeAdmin(String groupId, String userId) throws StorageHubException {
+ Call call = new Call() {
+ @Override
+ public Void call(GXWebTargetAdapterRequest manager) throws Exception {
+ GXWebTargetAdapterRequest myManager = manager;
+
+ GXInboundResponse response = myManager.path(groupId).path("admins").path(userId).delete();
+
+ if (response.isErrorResponse()) {
+ if (response.hasException())
+ throw response.getException();
+ else
+ throw new BackendGenericError();
+ }
+
+ return null;
+ }
+ };
+ try {
+ delegate.make(call);
+ return;
+ }catch(StorageHubException e) {
+ throw e;
+ }catch(Exception e1) {
+ throw new RuntimeException(e1);
+ }
+
+ }
+
+ @Override
+ public List getAdmins(String groupId) throws StorageHubException {
+ Call> call = new Call>() {
+ @Override
+ public List call(GXWebTargetAdapterRequest manager) throws Exception {
+ GXWebTargetAdapterRequest myManager = manager;
+
+ GXInboundResponse response = myManager.path(groupId).path("admins").get();
+
+ if (response.isErrorResponse()) {
+ if (response.hasException())
+ throw response.getException();
+ else
+ throw new BackendGenericError();
+ }
+
+ return response.getSource().readEntity(List.class);
+ }
+ };
+ try {
+ List users = delegate.make(call);
+ return users;
+ }catch(Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
}
diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultItemManager.java b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultItemManager.java
index c94daf8..c595645 100644
--- a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultItemManager.java
+++ b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultItemManager.java
@@ -1007,9 +1007,8 @@ public class DefaultItemManager implements ItemManagerClient {
}
-/*
@Override
- public String removeSharedFolderAdmin(String id, String user) throws StorageHubException {
+ public String removeAdmin(String id, String user) throws StorageHubException {
Call call = new Call() {
@Override
public String call(GXWebTargetAdapterRequest manager) throws Exception {
@@ -1041,7 +1040,7 @@ public class DefaultItemManager implements ItemManagerClient {
}catch(Exception e1) {
throw new RuntimeException(e1);
}
- }*/
+ }
@Override
diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/GroupManagerClient.java b/src/main/java/org/gcube/common/storagehub/client/proxies/GroupManagerClient.java
index 751827a..f584769 100644
--- a/src/main/java/org/gcube/common/storagehub/client/proxies/GroupManagerClient.java
+++ b/src/main/java/org/gcube/common/storagehub/client/proxies/GroupManagerClient.java
@@ -18,4 +18,11 @@ public interface GroupManagerClient {
List getUsersOfGroup(String groupId) throws StorageHubException;
List getGroups() throws StorageHubException;
+
+ void addAdmin(String groupId, String userId) throws StorageHubException;
+
+ void removeAdmin(String groupId, String userId) throws StorageHubException;
+
+ List getAdmins(String groupId) throws StorageHubException;
+
}
diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/ItemManagerClient.java b/src/main/java/org/gcube/common/storagehub/client/proxies/ItemManagerClient.java
index 0341cde..a27dcda 100644
--- a/src/main/java/org/gcube/common/storagehub/client/proxies/ItemManagerClient.java
+++ b/src/main/java/org/gcube/common/storagehub/client/proxies/ItemManagerClient.java
@@ -49,10 +49,8 @@ public interface ItemManagerClient {
String changeACL(String id, String user, AccessType accessType) throws StorageHubException;
- /*
- String removeSharedFolderAdmin(String id, String user) throws StorageHubException;
- */
-
+ String removeAdmin(String id, String user) throws StorageHubException;
+
@Deprecated
void delete(String id) throws StorageHubException;
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 5404275..7dee045 100644
--- a/src/test/java/org/gcube/data/access/fs/Items.java
+++ b/src/test/java/org/gcube/data/access/fs/Items.java
@@ -7,7 +7,9 @@ import java.io.FileOutputStream;
import java.io.InputStream;
import java.nio.file.Files;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Map.Entry;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
@@ -46,6 +48,27 @@ public class Items {
shc.getVreFolderManager().addUser("andrea.rossi");
}
+
+ @Test
+ public void getAdminsFromVRE() throws StorageHubException {
+ StorageHubClient shc = new StorageHubClient();
+ for (String user: shc.getVreFolderManager().getAdmins()) {
+ System.out.println(user);
+ }
+ }
+ @Test
+ public void removeAdminsFromVRE() throws StorageHubException {
+ StorageHubClient shc = new StorageHubClient();
+ shc.getVreFolderManager().removeAdmin("vfloros");
+
+ }
+
+ @Test
+ public void addAdminToVRE() throws StorageHubException {
+ StorageHubClient shc = new StorageHubClient();
+ shc.getVreFolderManager().setAdmin("vfloros");
+ }
+
@Test
public void emptyStatisticaManagerTrash() {
StorageHubClient shc = new StorageHubClient();
@@ -56,14 +79,26 @@ public class Items {
public void forceDelete() throws Exception{
StorageHubClient shc = new StorageHubClient();
+ /*
+ shc.getWSRoot().newFolder("lucioFolderTestMeta","desclucio" );
+ HashMap prop = new HashMap<>();
+ prop.put("folderProp", "test2");
+ prop.put("folderProp2", "test2");
+ */
+ FolderContainer fc = shc.open("bfb0548b-92d0-47d4-a973-1253dc4694d1").asFolder();
+
+ List> children = fc.list().withMetadata().getContainers();
+
+ for (ItemContainer extends Item> cont : children) {
+ Metadata m = cont.get().getMetadata();
+
+ for (Object v : m.getMap().values())
+ System.out.println(v.toString());
+ }
- long count = shc.getTotalItemCount();
- long volume = shc.getTotalVolume();
-
- System.out.println("items are "+count+" volume "+volume);
}
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 eb079a7..a0c6dd8 100644
--- a/src/test/java/org/gcube/data/access/fs/TestCall.java
+++ b/src/test/java/org/gcube/data/access/fs/TestCall.java
@@ -25,6 +25,7 @@ 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.UserManagerClient;
import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient;
import org.gcube.common.storagehub.model.Metadata;
import org.gcube.common.storagehub.model.Paths;
@@ -55,8 +56,8 @@ public class TestCall {
@BeforeClass
public static void setUp(){
- SecurityTokenProvider.instance.set("d9431600-9fef-41a7-946d-a5b402de30d6-98187548");
- ScopeProvider.instance.set("/gcube");
+ SecurityTokenProvider.instance.set("490eed48-dee3-478d-a856-cfb1132c1b92-843339462");
+ ScopeProvider.instance.set("/d4science.research-infrastructures.eu");
}
@Test
@@ -325,6 +326,8 @@ public class TestCall {
boolean b = m.find();
System.out.println("result: "+!b);
}
+
+
/* private InputStream getThumbnailAsPng(ImagePlus img, int thumbWidth,
int thumbHeight) throws IOException {