diff --git a/CHANGELOG.md b/CHANGELOG.md
index 22e92dd..aa4f81a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,7 +3,7 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## [v1.1.2-SNAPSHOT] - 2022-04-28
+## [v1.2.0-SNAPSHOT] - 2022-04-28
#### Enhancements
diff --git a/pom.xml b/pom.xml
index 70bd2aa..5389de7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
org.gcube.common
storagehub-client-wrapper
- 1.1.2-SNAPSHOT
+ 1.2.0-SNAPSHOT
storagehub-client-wrapper
This is a wrapper of storagehub-client library. It allows to interact with storagehub in a simplified way by exposing several utilities. Moreover, It exposes by another inteface java beans as defined in (the old) HL interfaces
diff --git a/src/main/java/org/gcube/common/storagehubwrapper/server/StorageHubClientService.java b/src/main/java/org/gcube/common/storagehubwrapper/server/StorageHubClientService.java
index a6f0a61..8f0ac62 100644
--- a/src/main/java/org/gcube/common/storagehubwrapper/server/StorageHubClientService.java
+++ b/src/main/java/org/gcube/common/storagehubwrapper/server/StorageHubClientService.java
@@ -19,6 +19,7 @@ import org.gcube.common.storagehub.client.dsl.ListResolver;
import org.gcube.common.storagehub.client.dsl.ListResolverTyped;
import org.gcube.common.storagehub.client.dsl.OpenResolver;
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
+import org.gcube.common.storagehub.client.dsl.Util;
import org.gcube.common.storagehub.client.plugins.AbstractPlugin;
import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient;
@@ -38,6 +39,8 @@ import org.gcube.common.storagehub.model.items.nodes.ImageContent;
import org.gcube.common.storagehub.model.service.Version;
import org.gcube.common.storagehubwrapper.server.converter.HLMapper;
import org.gcube.common.storagehubwrapper.shared.ACLType;
+import org.gcube.common.storagehubwrapper.shared.Member;
+import org.gcube.common.storagehubwrapper.shared.Member.TYPE;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceSharedFolder;
import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.ItemNotFoundException;
import org.slf4j.Logger;
@@ -568,37 +571,38 @@ public class StorageHubClientService {
* @return the shared folder members
* @throws Exception the exception
*/
- public List getSharedFolderMembers(String folderId) throws Exception {
+ public List getSharedFolderMembers(String folderId) throws Exception {
setContextProviders(scope, authorizationToken);
Item item = getItem(folderId, false, true);
- List users = null;
+ List members = null;
if (item instanceof SharedFolder) {
SharedFolder sharedFolder = (SharedFolder) item;
+ String vreGroupName = null;
if (sharedFolder.isVreFolder()) {
- logger.info("Reading users from VRE folder by shClient.getVreFolderManager");
- users = shClient.getVreFolderManager(sharedFolder.getTitle()).getUsers();
- if (users == null) {
- logger.warn("No users found, returning empty list of logins");
- return new ArrayList(1);
- }
- } else {
- logger.info("Reading users from ACLs");
- List listACL = shClient.open(folderId).asFolder().getAcls();
- if (listACL == null) {
- throw new Exception("The item with " + folderId + " has not a valid ACLs");
- }
- users = new ArrayList(listACL.size());
- for (ACL acl : listACL) {
- users.add(acl.getPricipal());
+ vreGroupName = Util.getVREGroupFromContext(scope);
+ logger.info("vreGroupName is: " + vreGroupName);
+ }
+
+ logger.info("Reading users from ACLs");
+ List listACL = shClient.open(folderId).asFolder().getAcls();
+ if (listACL == null) {
+ throw new Exception("The item with " + folderId + " has not a valid ACLs");
+ }
+ members = new ArrayList(listACL.size());
+ for (ACL acl : listACL) {
+ Member member = new Member(acl.getPricipal(), Member.TYPE.USER);
+ if (vreGroupName != null && item.getTitle() != null && item.getTitle().compareTo(vreGroupName) == 0) {
+ member.setMemberType(TYPE.GROUP);
}
}
+
} else {
throw new Exception("The item with " + folderId + " is not a Shared Folder");
}
- logger.info("Returning " + users.size() + " user/s");
- return users;
+ logger.info("Returning " + members.size() + " user/s");
+ return members;
}
diff --git a/src/main/java/org/gcube/common/storagehubwrapper/server/WorkspaceStorageHubClientService.java b/src/main/java/org/gcube/common/storagehubwrapper/server/WorkspaceStorageHubClientService.java
index 745151f..1d739fc 100644
--- a/src/main/java/org/gcube/common/storagehubwrapper/server/WorkspaceStorageHubClientService.java
+++ b/src/main/java/org/gcube/common/storagehubwrapper/server/WorkspaceStorageHubClientService.java
@@ -27,6 +27,7 @@ import org.gcube.common.storagehub.model.service.Version;
import org.gcube.common.storagehubwrapper.server.converter.HLMapper;
import org.gcube.common.storagehubwrapper.server.tohl.Workspace;
import org.gcube.common.storagehubwrapper.shared.ACLType;
+import org.gcube.common.storagehubwrapper.shared.Member;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceSharedFolder;
import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.InsufficientPrivilegesException;
@@ -684,7 +685,7 @@ public final class WorkspaceStorageHubClientService implements Workspace{
* @see org.gcube.portal.storagehubwrapper.server.tohl.Workspace#getSharedFolderMembers(java.lang.String)
*/
@Override
- public List getSharedFolderMembers(String folderId) throws Exception {
+ public List getSharedFolderMembers(String folderId) throws Exception {
try{
LOGGER.debug("called Shared Folder Members");
diff --git a/src/main/java/org/gcube/common/storagehubwrapper/server/tohl/Workspace.java b/src/main/java/org/gcube/common/storagehubwrapper/server/tohl/Workspace.java
index ba35d98..a081947 100644
--- a/src/main/java/org/gcube/common/storagehubwrapper/server/tohl/Workspace.java
+++ b/src/main/java/org/gcube/common/storagehubwrapper/server/tohl/Workspace.java
@@ -13,6 +13,7 @@ import org.gcube.common.storagehub.model.items.Item;
import org.gcube.common.storagehub.model.items.nodes.accounting.AccountEntry;
import org.gcube.common.storagehubwrapper.server.WorkspaceStorageHubClientService;
import org.gcube.common.storagehubwrapper.shared.ACLType;
+import org.gcube.common.storagehubwrapper.shared.Member;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceFolder;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceSharedFolder;
@@ -193,7 +194,7 @@ public interface Workspace {
* @return the shared folder members
* @throws Exception the exception
*/
- public List getSharedFolderMembers(String folderid) throws Exception;
+ public List getSharedFolderMembers(String folderid) throws Exception;
/**
* Check if an item with the specified name exists in the specified folder.
diff --git a/src/main/java/org/gcube/common/storagehubwrapper/shared/Member.java b/src/main/java/org/gcube/common/storagehubwrapper/shared/Member.java
new file mode 100644
index 0000000..c5b2b9b
--- /dev/null
+++ b/src/main/java/org/gcube/common/storagehubwrapper/shared/Member.java
@@ -0,0 +1,98 @@
+package org.gcube.common.storagehubwrapper.shared;
+
+import java.io.Serializable;
+
+/**
+ * The Class Member.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
+ *
+ * Apr 29, 2022
+ */
+public class Member implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1454948336452658186L;
+
+ /**
+ * The Enum TYPE.
+ *
+ * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
+ *
+ * Apr 29, 2022
+ */
+ public static enum TYPE {
+ USER, GROUP
+ }
+
+ private String identity;
+ private TYPE memberType;
+
+ /**
+ * Instantiates a new member.
+ */
+ public Member() {
+
+ }
+
+ public Member(String identity, TYPE memberType) {
+ super();
+ this.identity = identity;
+ this.memberType = memberType;
+ }
+
+ /**
+ * Gets the identity.
+ *
+ * @return the identity
+ */
+ public String getIdentity() {
+ return identity;
+ }
+
+ /**
+ * Gets the member type.
+ *
+ * @return the member type
+ */
+ public TYPE getMemberType() {
+ return memberType;
+ }
+
+ /**
+ * Sets the identity.
+ *
+ * @param identity the new identity
+ */
+ public void setIdentity(String identity) {
+ this.identity = identity;
+ }
+
+ /**
+ * Sets the member type.
+ *
+ * @param memberType the new member type
+ */
+ public void setMemberType(TYPE memberType) {
+ this.memberType = memberType;
+ }
+
+ /**
+ * To string.
+ *
+ * @return the string
+ */
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("Member [identity=");
+ builder.append(identity);
+ builder.append(", memberType=");
+ builder.append(memberType);
+ builder.append("]");
+ return builder.toString();
+ }
+
+}