fixed the method getSharedFolderMembers
This commit is contained in:
parent
4081445ef7
commit
1d24ded221
12
.classpath
12
.classpath
|
@ -13,7 +13,12 @@
|
|||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" path="src/test/resources"/>
|
||||
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="test" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
|
@ -31,10 +36,9 @@
|
|||
<attribute name="optional" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="owner.project.facets" value="java"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
|
||||
org.eclipse.jdt.core.compiler.compliance=11
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
|
@ -9,4 +9,4 @@ org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
|||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
|
||||
org.eclipse.jdt.core.compiler.processAnnotations=enabled
|
||||
org.eclipse.jdt.core.compiler.release=disabled
|
||||
org.eclipse.jdt.core.compiler.source=11
|
||||
org.eclipse.jdt.core.compiler.source=1.8
|
||||
|
|
|
@ -1,19 +1,25 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
|
||||
|
||||
|
||||
|
||||
<wb-module deploy-name="storagehub-client-wrapper">
|
||||
|
||||
|
||||
|
||||
<wb-resource deploy-path="/" source-path="/src/main/java"/>
|
||||
|
||||
|
||||
|
||||
<wb-resource deploy-path="/" source-path="/src/main/resources"/>
|
||||
|
||||
|
||||
|
||||
<wb-resource deploy-path="/" source-path="/.apt_generated"/>
|
||||
|
||||
|
||||
|
||||
</wb-module>
|
||||
|
||||
|
||||
|
||||
</project-modules>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<faceted-project>
|
||||
<installed facet="jst.utility" version="1.0"/>
|
||||
<installed facet="java" version="11"/>
|
||||
<installed facet="java" version="1.8"/>
|
||||
</faceted-project>
|
||||
|
|
|
@ -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.2.0-SNAPSHOT] - 2022-04-28
|
||||
## [v1.2.0-SNAPSHOT] - 2022-05-02
|
||||
|
||||
#### Enhancements
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ import java.util.Set;
|
|||
import org.apache.commons.lang.Validate;
|
||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||
import org.gcube.common.scope.api.ScopeProvider;
|
||||
import org.gcube.common.scope.impl.ScopeBean;
|
||||
import org.gcube.common.storagehub.client.StreamDescriptor;
|
||||
import org.gcube.common.storagehub.client.dsl.FileContainer;
|
||||
import org.gcube.common.storagehub.client.dsl.FolderContainer;
|
||||
|
@ -19,7 +20,6 @@ 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;
|
||||
|
@ -155,6 +155,7 @@ public class StorageHubClientService {
|
|||
* @param id the id
|
||||
* @param withAccounting the with accounting
|
||||
* @param withMapProperties the with map properties
|
||||
* @param includeHidden the include hidden
|
||||
* @return the children
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
|
@ -231,11 +232,12 @@ public class StorageHubClientService {
|
|||
}
|
||||
|
||||
/**
|
||||
* Gets the item by path.
|
||||
*
|
||||
* @param folderId
|
||||
* @param relativePath
|
||||
* @return
|
||||
* @throws Exception
|
||||
* @param folderId the folder id
|
||||
* @param relativePath the relative path
|
||||
* @return the item by path
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
public Item getItemByPath(String folderId, String relativePath) throws Exception {
|
||||
setContextProviders(scope, authorizationToken);
|
||||
|
@ -575,37 +577,72 @@ public class StorageHubClientService {
|
|||
|
||||
setContextProviders(scope, authorizationToken);
|
||||
Item item = getItem(folderId, false, true);
|
||||
List<Member> members = null;
|
||||
if (item instanceof SharedFolder) {
|
||||
SharedFolder sharedFolder = (SharedFolder) item;
|
||||
String vreGroupName = null;
|
||||
if (sharedFolder.isVreFolder()) {
|
||||
vreGroupName = Util.getVREGroupFromContext(scope);
|
||||
logger.info("vreGroupName is: " + vreGroupName);
|
||||
}
|
||||
List<Member> members = new ArrayList<Member>();
|
||||
|
||||
logger.info("Reading users from ACLs");
|
||||
if (item instanceof SharedFolder) {
|
||||
List<ACL> listACL = shClient.open(folderId).asFolder().getAcls();
|
||||
if (listACL == null) {
|
||||
throw new Exception("The item with " + folderId + " has not a valid ACLs");
|
||||
}
|
||||
members = new ArrayList<Member>(listACL.size());
|
||||
logger.info("Reading users from ACLs");
|
||||
for (ACL acl : listACL) {
|
||||
Member member = new Member(acl.getPricipal(), Member.TYPE.USER);
|
||||
if (vreGroupName != null && item.getTitle() != null && item.getTitle().compareTo(vreGroupName) == 0) {
|
||||
logger.trace("acl princial is: " + acl.getPricipal());
|
||||
Member member = new Member(acl.getPricipal(), acl.getPricipal(), Member.TYPE.USER);
|
||||
if (isGroupName(acl.getPricipal())) {
|
||||
logger.info("pricipal: " + acl.getPricipal() + " is a group");
|
||||
member.setMemberType(TYPE.GROUP);
|
||||
// gcube-devsec-devVRE -> devVRE that is the groupName
|
||||
member.setName(acl.getPricipal().substring(acl.getPricipal().lastIndexOf("-") + 1,
|
||||
acl.getPricipal().length()));
|
||||
}
|
||||
members.add(member);
|
||||
logger.debug("added member: " + member);
|
||||
}
|
||||
|
||||
} else {
|
||||
throw new Exception("The item with " + folderId + " is not a Shared Folder");
|
||||
}
|
||||
|
||||
logger.info("Returning " + members.size() + " user/s");
|
||||
logger.info("Returning " + members.size() + " member/s");
|
||||
return members;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if is group name.
|
||||
*
|
||||
* @param pricipal the pricipal
|
||||
* @return true, if is group name E.g. with the input 'gcube-devNext-NextNext'
|
||||
* returns true
|
||||
*/
|
||||
private boolean isGroupName(String pricipal) {
|
||||
|
||||
if (pricipal == null || pricipal.isEmpty())
|
||||
return false;
|
||||
|
||||
String theScope = getScopeFromVREGroupName(pricipal);
|
||||
ScopeBean scope = null;
|
||||
try {
|
||||
scope = new ScopeBean(theScope);
|
||||
logger.info("pricipal '" + pricipal + "' is a valid scope");
|
||||
} catch (IllegalArgumentException e) {
|
||||
logger.trace("principal '" + pricipal + "' is not a scope");
|
||||
return false;
|
||||
}
|
||||
|
||||
return scope != null;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the scope from VRE group name.
|
||||
*
|
||||
* @param context the context
|
||||
* @return the scope from VRE group name. Eg. with the input
|
||||
* 'gcube-devNext-NextNext' returns '/gcube/devNext/NextNext'
|
||||
*/
|
||||
public static String getScopeFromVREGroupName(String context) {
|
||||
String entireScopeName = context.replaceAll("^/(.*)/?$", "$1").replaceAll("-", "/");
|
||||
return entireScopeName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find by name.
|
||||
*
|
||||
|
@ -928,7 +965,7 @@ public class StorageHubClientService {
|
|||
/**
|
||||
* Sets the Folder As Hidden or visible .
|
||||
*
|
||||
* @param itemId the folder id
|
||||
* @param folderId the folder id
|
||||
* @param hide true to set hide, false to set visible
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
|
@ -943,10 +980,13 @@ public class StorageHubClientService {
|
|||
}
|
||||
|
||||
/**
|
||||
* Share folder.
|
||||
*
|
||||
* @param folderId the folder id to share
|
||||
* @param users the users to share
|
||||
* @param type the permission
|
||||
* @return the workspace shared folder
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
public WorkspaceSharedFolder shareFolder(String folderId, Set<String> users, ACLType type) throws Exception {
|
||||
Validate.notNull(folderId, "Bad request to setFolderAsHidden the folderId is null");
|
||||
|
@ -977,9 +1017,12 @@ public class StorageHubClientService {
|
|||
}
|
||||
|
||||
/**
|
||||
* Unshare folder.
|
||||
*
|
||||
* @param folderId the folder id to share
|
||||
* @param users the users to share
|
||||
* @return the workspace shared folder
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
public WorkspaceSharedFolder unshareFolder(String folderId, Set<String> users) throws Exception {
|
||||
Validate.notNull(folderId, "Bad request to setFolderAsHidden the folderId is null");
|
||||
|
@ -1064,7 +1107,7 @@ public class StorageHubClientService {
|
|||
builder.append("StorageHubClientService [scope=");
|
||||
builder.append(scope);
|
||||
builder.append(", authorizationToken=");
|
||||
builder.append(authorizationToken.substring(0, authorizationToken.length() - 5) + "XXXXX");
|
||||
builder.append(authorizationToken.substring(0, authorizationToken.length() - 8) + "XXXXXXXX");
|
||||
builder.append(", itemManagerClient=");
|
||||
builder.append(shClient);
|
||||
builder.append("]");
|
||||
|
|
|
@ -28,7 +28,8 @@ public class Member implements Serializable {
|
|||
}
|
||||
|
||||
private String identity;
|
||||
private TYPE memberType;
|
||||
private String name;
|
||||
private TYPE memberType = TYPE.USER;
|
||||
|
||||
/**
|
||||
* Instantiates a new member.
|
||||
|
@ -37,21 +38,41 @@ public class Member implements Serializable {
|
|||
|
||||
}
|
||||
|
||||
public Member(String identity, TYPE memberType) {
|
||||
/**
|
||||
* Instantiates a new member.
|
||||
*
|
||||
* @param identity the identity is the username of a User or the name of a
|
||||
* Group. In general is key to identify he/she/it in the in
|
||||
* the infrastructure
|
||||
* @param name the name is the name of a User or the name of a Group
|
||||
* @param memberType the member type
|
||||
*/
|
||||
public Member(String identity, String name, TYPE memberType) {
|
||||
super();
|
||||
this.identity = identity;
|
||||
this.name = name;
|
||||
this.memberType = memberType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the identity.
|
||||
*
|
||||
* @return the identity
|
||||
* @return the login in case of user and the groupName stored in SHUB (e.g.
|
||||
* gcube-devsec-devVRE) in case of group
|
||||
*/
|
||||
public String getIdentity() {
|
||||
return identity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the name.
|
||||
*
|
||||
* @return the login in case of user and the groupName in case of group
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the member type.
|
||||
*
|
||||
|
@ -70,6 +91,15 @@ public class Member implements Serializable {
|
|||
this.identity = identity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the name.
|
||||
*
|
||||
* @param name the new name
|
||||
*/
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the member type.
|
||||
*
|
||||
|
@ -79,16 +109,13 @@ public class Member implements Serializable {
|
|||
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(", name=");
|
||||
builder.append(name);
|
||||
builder.append(", memberType=");
|
||||
builder.append(memberType);
|
||||
builder.append("]");
|
||||
|
|
|
@ -6,6 +6,7 @@ import java.util.Map;
|
|||
import org.gcube.common.storagehubwrapper.server.StorageHubWrapper;
|
||||
import org.gcube.common.storagehubwrapper.server.WorkspaceStorageHubClientService;
|
||||
import org.gcube.common.storagehubwrapper.server.tohl.Workspace;
|
||||
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.exceptions.InternalErrorException;
|
||||
|
@ -170,11 +171,14 @@ public class WorkspaceInstance {
|
|||
System.out.println("Getting getSharedFolderMembers");
|
||||
try {
|
||||
|
||||
String sharedFolderId = "b679c6fe-894c-4c4c-aebc-4155321a373a";
|
||||
String sharedFolderId = "7e3c6636-927c-4139-9fcc-64986ea70cbf"; //devNext
|
||||
sharedFolderId = "c141d53d-4cae-4bfc-a6f7-9b8bbd8c0e2b"; //NextNext
|
||||
SCOPE = "/gcube";
|
||||
TOKEN = "0e2c7963-8d3e-4ea6-a56d-ffda530dd0fa-98187548";
|
||||
storageHubWrapper = new StorageHubWrapper(SCOPE, TOKEN);
|
||||
List<String> listLogins = storageHubWrapper.getWorkspace().getSharedFolderMembers(sharedFolderId);
|
||||
List<Member> listMembers = storageHubWrapper.getWorkspace().getSharedFolderMembers(sharedFolderId);
|
||||
|
||||
System.out.println("List: " + listLogins);
|
||||
System.out.println("List: " + listMembers);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
|
Loading…
Reference in New Issue