From 3dce6154d22037cdcc4181fdaf1ad8854e267f2a Mon Sep 17 00:00:00 2001 From: lucio lelii Date: Mon, 28 Mar 2022 18:28:06 +0200 Subject: [PATCH] update --- CHANGELOG.md | 6 ++ pom.xml | 2 +- .../client/dsl/FolderContainer.java | 15 +++ .../client/dsl/ImpersonatorClient.java | 2 + .../client/dsl/StorageHubClient.java | 24 ++++- .../client/dsl/VREFolderManager.java | 6 +- .../client/plugins/AbstractPlugin.java | 13 ++- .../client/plugins/GroupManagerPlugin.java | 5 + .../client/plugins/ItemManagerPlugin.java | 1 + .../client/plugins/MessageManagerPlugin.java | 1 + .../client/plugins/UserManagerPlugin.java | 1 + .../plugins/WorkspaceManagerPlugin.java | 1 + .../client/proxies/DefaultGroupManager.java | 10 +- .../client/proxies/DefaultItemManager.java | 97 +++++++++--------- .../client/proxies/DefaultManagerClient.java | 36 +++++++ .../client/proxies/DefaultMessageManager.java | 11 +- .../client/proxies/DefaultUserManager.java | 6 +- .../proxies/DefaultWorkspaceManager.java | 32 +++--- .../client/proxies/GroupManagerClient.java | 2 +- .../client/proxies/ItemManagerClient.java | 2 +- .../client/proxies/ManagerClient.java | 9 ++ .../client/proxies/MessageManagerClient.java | 2 +- .../client/proxies/UserManagerClient.java | 2 +- .../proxies/WorkspaceManagerClient.java | 2 +- .../java/org/gcube/data/access/fs/Items.java | 17 ++- .../org/gcube/data/access/fs/TestCall.java | 16 +-- .../access/fs/TestWithLocalContainer.java | 69 +++++++++++++ src/test/resources/output.xlsx | Bin 0 -> 8278 bytes 28 files changed, 274 insertions(+), 116 deletions(-) create mode 100644 src/main/java/org/gcube/common/storagehub/client/dsl/ImpersonatorClient.java create mode 100644 src/main/java/org/gcube/common/storagehub/client/proxies/DefaultManagerClient.java create mode 100644 src/main/java/org/gcube/common/storagehub/client/proxies/ManagerClient.java create mode 100644 src/test/java/org/gcube/data/access/fs/TestWithLocalContainer.java create mode 100644 src/test/resources/output.xlsx diff --git a/CHANGELOG.md b/CHANGELOG.md index eb27048..f6b5f68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ 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). +## [v2.0.0-SNAPSHOT] - [2022-02-07] + +### Feature + +porting to model 2.0 + ## [v1.3.0] - [2021-06-18] ### Feature diff --git a/pom.xml b/pom.xml index be4db1a..1445b28 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,7 @@ junit junit - 4.10 + 4.11 test 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 f5eb23f..1337e93 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 @@ -1,5 +1,6 @@ package org.gcube.common.storagehub.client.dsl; +import java.io.File; import java.io.InputStream; import java.net.URL; import java.util.List; @@ -58,6 +59,20 @@ public class FolderContainer extends ItemContainer{ return new FileContainer(itemclient, itemclient.uploadFile(stream, this.itemId , filename, description)); } + /** + * + * creates a {@AbstractFileItem} inside the folder represented by this FolderContainer + * + * @param file the file + * @param description the description of the item in the workspace + * @return {@FileContainer} of the Item created + * @throws {@InvalidItemException} + * @throws {@UserNotAuthorizedException} if user is not authorized to write in this folder + */ + public FileContainer uploadFile(File file, String description) throws StorageHubException { + return new FileContainer(itemclient, itemclient.uploadFile(file, this.itemId , file.getName(), description)); + } + /** * * creates a {@ExternalLink} inside the folder represented by this FolderContainer diff --git a/src/main/java/org/gcube/common/storagehub/client/dsl/ImpersonatorClient.java b/src/main/java/org/gcube/common/storagehub/client/dsl/ImpersonatorClient.java new file mode 100644 index 0000000..1b56edb --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/client/dsl/ImpersonatorClient.java @@ -0,0 +1,2 @@ +package org.gcube.common.storagehub.client.dsl; + 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 0d623a9..9cee561 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,5 +1,7 @@ package org.gcube.common.storagehub.client.dsl; +import java.net.URI; + import org.gcube.common.storagehub.client.plugins.AbstractPlugin; import org.gcube.common.storagehub.client.proxies.GroupManagerClient; import org.gcube.common.storagehub.client.proxies.ItemManagerClient; @@ -10,11 +12,25 @@ import org.gcube.common.storagehub.model.items.Item; public class StorageHubClient { - private WorkspaceManagerClient wsClient = AbstractPlugin.workspace().build(); - private ItemManagerClient itemclient = AbstractPlugin.item().build(); - private GroupManagerClient groupClient = AbstractPlugin.groups().build(); - private UserManagerClient userClient = AbstractPlugin.users().build(); + protected WorkspaceManagerClient wsClient = AbstractPlugin.workspace().build(); + protected ItemManagerClient itemclient = AbstractPlugin.item().build(); + protected GroupManagerClient groupClient = AbstractPlugin.groups().build(); + protected UserManagerClient userClient = AbstractPlugin.users().build(); + public StorageHubClient() {} + + public StorageHubClient(URI uri) { + wsClient = AbstractPlugin.workspace().at(uri).build(); + itemclient = AbstractPlugin.item().at(uri).build(); + groupClient = AbstractPlugin.groups().at(uri).build(); + userClient = AbstractPlugin.users().at(uri).build(); + } + + public void impersonate(String user){ + wsClient.impersonate(user); + itemclient.impersonate(user); + } + public FolderContainer getWSRoot(){ return new FolderContainer(itemclient, wsClient.getWorkspace()); } 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 e62c3b1..662ff93 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 @@ -9,14 +9,14 @@ import org.gcube.common.storagehub.model.exceptions.StorageHubException; public class VREFolderManager { - private WorkspaceManagerClient wsClient; + //private WorkspaceManagerClient wsClient; private GroupManagerClient groupClient; private String vreTitle; - public VREFolderManager(WorkspaceManagerClient wsClient, GroupManagerClient groupClient, String vreTitle) { + protected VREFolderManager(WorkspaceManagerClient wsClient, GroupManagerClient groupClient, String vreTitle) { super(); - this.wsClient = wsClient; + //this.wsClient = wsClient; this.groupClient = groupClient; this.vreTitle = vreTitle; } diff --git a/src/main/java/org/gcube/common/storagehub/client/plugins/AbstractPlugin.java b/src/main/java/org/gcube/common/storagehub/client/plugins/AbstractPlugin.java index 009a1cc..36ef82d 100644 --- a/src/main/java/org/gcube/common/storagehub/client/plugins/AbstractPlugin.java +++ b/src/main/java/org/gcube/common/storagehub/client/plugins/AbstractPlugin.java @@ -1,5 +1,9 @@ package org.gcube.common.storagehub.client.plugins; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + import org.gcube.common.clients.Plugin; import org.gcube.common.clients.ProxyBuilder; import org.gcube.common.clients.ProxyBuilderImpl; @@ -15,8 +19,7 @@ import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient; public abstract class AbstractPlugin implements Plugin { - - + private static final ItemManagerPlugin item_plugin = new ItemManagerPlugin(); private static final WorkspaceManagerPlugin workspace_plugin = new WorkspaceManagerPlugin(); private static final UserManagerPlugin user_plugin = new UserManagerPlugin(); @@ -29,6 +32,7 @@ public abstract class AbstractPlugin implements Plugin { } public static ProxyBuilder groups() { + return new ProxyBuilderImpl(group_plugin); } @@ -46,6 +50,8 @@ public abstract class AbstractPlugin implements Plugin { public final String name; + protected List> customClasses = Collections.emptyList(); + public AbstractPlugin(String name) { this.name=name; } @@ -70,4 +76,7 @@ public abstract class AbstractPlugin implements Plugin { return name; } + public void register(Class ... _classes) { + customClasses = Arrays.asList(_classes); + } } \ No newline at end of file diff --git a/src/main/java/org/gcube/common/storagehub/client/plugins/GroupManagerPlugin.java b/src/main/java/org/gcube/common/storagehub/client/plugins/GroupManagerPlugin.java index 405a753..3a0cd9c 100644 --- a/src/main/java/org/gcube/common/storagehub/client/plugins/GroupManagerPlugin.java +++ b/src/main/java/org/gcube/common/storagehub/client/plugins/GroupManagerPlugin.java @@ -27,6 +27,7 @@ public class GroupManagerPlugin extends AbstractPlugin delegate) { return new DefaultGroupManager(delegate); @@ -46,6 +47,10 @@ public class GroupManagerPlugin extends AbstractPlugin requestAdapter.register(c)); return requestAdapter; } + + + } \ No newline at end of file diff --git a/src/main/java/org/gcube/common/storagehub/client/plugins/ItemManagerPlugin.java b/src/main/java/org/gcube/common/storagehub/client/plugins/ItemManagerPlugin.java index e2b3ab6..a89dbea 100644 --- a/src/main/java/org/gcube/common/storagehub/client/plugins/ItemManagerPlugin.java +++ b/src/main/java/org/gcube/common/storagehub/client/plugins/ItemManagerPlugin.java @@ -47,6 +47,7 @@ public class ItemManagerPlugin extends AbstractPlugin requestAdapter.register(c)); return requestAdapter; } diff --git a/src/main/java/org/gcube/common/storagehub/client/plugins/MessageManagerPlugin.java b/src/main/java/org/gcube/common/storagehub/client/plugins/MessageManagerPlugin.java index ec03afa..6c6ed8a 100644 --- a/src/main/java/org/gcube/common/storagehub/client/plugins/MessageManagerPlugin.java +++ b/src/main/java/org/gcube/common/storagehub/client/plugins/MessageManagerPlugin.java @@ -46,6 +46,7 @@ public class MessageManagerPlugin extends AbstractPlugin requestAdapter.register(c)); return requestAdapter; } diff --git a/src/main/java/org/gcube/common/storagehub/client/plugins/UserManagerPlugin.java b/src/main/java/org/gcube/common/storagehub/client/plugins/UserManagerPlugin.java index 91fd651..c85d18c 100644 --- a/src/main/java/org/gcube/common/storagehub/client/plugins/UserManagerPlugin.java +++ b/src/main/java/org/gcube/common/storagehub/client/plugins/UserManagerPlugin.java @@ -46,6 +46,7 @@ public class UserManagerPlugin extends AbstractPlugin requestAdapter.register(c)); return requestAdapter; } } diff --git a/src/main/java/org/gcube/common/storagehub/client/plugins/WorkspaceManagerPlugin.java b/src/main/java/org/gcube/common/storagehub/client/plugins/WorkspaceManagerPlugin.java index 81354b6..5456fcb 100644 --- a/src/main/java/org/gcube/common/storagehub/client/plugins/WorkspaceManagerPlugin.java +++ b/src/main/java/org/gcube/common/storagehub/client/plugins/WorkspaceManagerPlugin.java @@ -42,6 +42,7 @@ public class WorkspaceManagerPlugin extends AbstractPlugin requestAdapter.register(c)); return requestAdapter; } } 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 55c3b5e..e5a5b44 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 @@ -17,14 +17,14 @@ import org.gcube.common.storagehub.model.exceptions.StorageHubException; import org.gcube.common.storagehub.model.exceptions.UserNotAuthorizedException; import org.glassfish.jersey.media.multipart.FormDataMultiPart; -public class DefaultGroupManager implements GroupManagerClient { - -private final ProxyDelegate delegate; +public class DefaultGroupManager extends DefaultManagerClient implements GroupManagerClient { + public DefaultGroupManager(ProxyDelegate delegate) { - this.delegate = delegate; + super(delegate); } - + + @Override public void addUserToGroup(String userId, String groupId) throws StorageHubException { Call call = new Call() { 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 69c4ecf..deffb37 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 @@ -6,7 +6,6 @@ import java.net.URI; import java.net.URL; import java.net.URLEncoder; import java.util.Arrays; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -43,18 +42,19 @@ import org.glassfish.jersey.media.multipart.MultiPartFeature; import org.glassfish.jersey.media.multipart.file.FileDataBodyPart; import org.glassfish.jersey.media.multipart.file.StreamDataBodyPart; -public class DefaultItemManager implements ItemManagerClient { - - private final ProxyDelegate delegate; +public class DefaultItemManager extends DefaultManagerClient implements ItemManagerClient { + private static final String CONTENT_DISPOSITION= "Content-Disposition"; private static final String CONTENT_TYPE= "Content-Type"; private static final String CONTENT_LENGHT= "Content-Length"; - public DefaultItemManager(ProxyDelegate config){ - this.delegate = config; + public DefaultItemManager(ProxyDelegate delegate) { + super(delegate); } + + @Override public StreamDescriptor resolvePublicLink(String identifier) throws StorageHubException{ @@ -64,7 +64,7 @@ public class DefaultItemManager implements ItemManagerClient { Objects.requireNonNull(identifier, "id cannot be null"); GXWebTargetAdapterRequest myManager = manager.path("publiclink").path(identifier); - Map params = new HashMap<>(); + Map params = initQueryParameters(); GXInboundResponse response = myManager.queryParams(params).get(); @@ -104,14 +104,15 @@ public class DefaultItemManager implements ItemManagerClient { public ItemList call(GXWebTargetAdapterRequest manager) throws StorageHubException, Exception { Objects.requireNonNull(id, "id cannot be null"); GXWebTargetAdapterRequest myManager = manager.path(id).path("children"); - Map params = new HashMap<>(); + Map params = initQueryParameters(); if (excludeNodes !=null && excludeNodes.length>0) params.put("exclude",excludeNodes); if (onlyOfType!=null) params.put("onlyType", new Object[] {resolveNodeType(onlyOfType)}); params.put("showHidden", new Object[] {showHidden}); - + + GXInboundResponse response = myManager.queryParams(params).get(); if (response.isErrorResponse()) { @@ -145,7 +146,7 @@ public class DefaultItemManager implements ItemManagerClient { Objects.requireNonNull(id, "id cannot be null"); try { GXWebTargetAdapterRequest myManager = manager.path(id).path("children").path("paged"); - Map params = new HashMap<>(); + Map params = initQueryParameters(); if (excludeNodes !=null && excludeNodes.length>0) @@ -158,6 +159,7 @@ public class DefaultItemManager implements ItemManagerClient { params.put("limit", new Object[] {limit}); params.put("showHidden", new Object[] {showHidden}); + GXInboundResponse response = myManager.queryParams(params).get(); if (response.isErrorResponse()) { @@ -211,7 +213,7 @@ public class DefaultItemManager implements ItemManagerClient { public ItemList call(GXWebTargetAdapterRequest manager) throws StorageHubException, Exception { Objects.requireNonNull(id, "id cannot be null"); GXWebTargetAdapterRequest myManager = manager.path(id).path("search"); - Map params = new HashMap<>(); + Map params = initQueryParameters(); if (excludeNodes !=null && excludeNodes.length>0) params.put("exclude",excludeNodes); @@ -221,6 +223,7 @@ public class DefaultItemManager implements ItemManagerClient { params.put("name", new String[] {URLEncoder.encode( nameToMatch, "UTF-8" )}); params.put("excludeTrashed", new Object[] {excludeTrashed}); + GXInboundResponse response = myManager.queryParams(params).get(); if (response.isErrorResponse()) { @@ -259,12 +262,13 @@ public class DefaultItemManager implements ItemManagerClient { public Integer call(GXWebTargetAdapterRequest manager) throws Exception { Objects.requireNonNull(id, "id cannot be null"); GXWebTargetAdapterRequest myManager = manager.path(id).path("children").path("count"); - Map params = new HashMap<>(); + Map params = initQueryParameters(); if (onlyOfType!=null) params.put("onlyType", new Object[] {resolveNodeType(onlyOfType)}); params.put("showHidden", new Object[] {showHidden}); - + + GXInboundResponse response = myManager.queryParams(params).get(); if (response.isErrorResponse()) { @@ -312,11 +316,11 @@ public class DefaultItemManager implements ItemManagerClient { public StreamDescriptor call(GXWebTargetAdapterRequest manager) throws Exception { Objects.requireNonNull(id, "id cannot be null"); GXWebTargetAdapterRequest myManager = manager.path(id).path("download"); - Map params = new HashMap<>(); + Map params = initQueryParameters(); if (excludeNodes !=null && excludeNodes.length>0) params.put("exclude",excludeNodes); - + GXInboundResponse response = myManager.queryParams(params).get(); if (response.isErrorResponse()) { @@ -349,7 +353,7 @@ public class DefaultItemManager implements ItemManagerClient { Objects.requireNonNull(id, "id cannot be null"); Objects.requireNonNull(version, "version cannot be null"); - GXWebTargetAdapterRequest myManager = manager.path(id).path("versions").path(version).path("download"); + GXWebTargetAdapterRequest myManager = manager.path(id).queryParams(initQueryParameters()).path("versions").path(version).path("download"); GXInboundResponse response = myManager.get(); @@ -384,7 +388,7 @@ public class DefaultItemManager implements ItemManagerClient { Objects.requireNonNull(id, "id cannot be null"); GXWebTargetAdapterRequest myManager = manager.path(id).path("versions"); - GXInboundResponse response = myManager.get(); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).get(); if (response.isErrorResponse()) { if (response.hasException()) @@ -415,7 +419,7 @@ public class DefaultItemManager implements ItemManagerClient { public ItemWrapper call(GXWebTargetAdapterRequest manager) throws Exception { Objects.requireNonNull(id, "id cannot be null"); GXWebTargetAdapterRequest myManager = manager.path(id); - Map params = new HashMap<>(); + Map params = initQueryParameters(); if (excludeNodes !=null && excludeNodes.length>0) params.put("exclude",excludeNodes); @@ -454,7 +458,7 @@ public class DefaultItemManager implements ItemManagerClient { Objects.requireNonNull(path, "path cannot be null"); GXWebTargetAdapterRequest myManager = manager.path(id).path("path"); - Map params = new HashMap<>(); + Map params = initQueryParameters(); params.put("path",new String[] {path}); @@ -492,7 +496,7 @@ public class DefaultItemManager implements ItemManagerClient { @Override public ItemWrapper call(GXWebTargetAdapterRequest manager) throws Exception { Objects.requireNonNull(id, "id cannot be null"); - GXWebTargetAdapterRequest myManager = manager.path(id).path("rootSharedFolder"); + GXWebTargetAdapterRequest myManager = manager.path(id).queryParams(initQueryParameters()).path("rootSharedFolder"); GXInboundResponse response = myManager.get(); if (response.isErrorResponse()) { @@ -526,7 +530,7 @@ public class DefaultItemManager implements ItemManagerClient { public URL call(GXWebTargetAdapterRequest manager) throws Exception { Objects.requireNonNull(id, "id cannot be null"); GXWebTargetAdapterRequest myManager = manager.path(id).path("publiclink"); - GXInboundResponse response = myManager.get(); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).get(); if (response.isErrorResponse()) { if (response.hasException()) @@ -559,7 +563,7 @@ public class DefaultItemManager implements ItemManagerClient { Objects.requireNonNull(version, "version cannot be null"); GXWebTargetAdapterRequest myManager = manager.path(id).path("publiclink"); - Map params = new HashMap<>(); + Map params = initQueryParameters(); params.put("version",new Object[] {version}); GXInboundResponse response = myManager.queryParams(params).get(); @@ -595,7 +599,7 @@ public class DefaultItemManager implements ItemManagerClient { Objects.requireNonNull(id, "name cannot be null"); GXWebTargetAdapterRequest myManager = manager.path(id).path("items"); - Map params = new HashMap<>(); + Map params = initQueryParameters(); if (excludeNodes !=null && excludeNodes.length>0) params.put("exclude",excludeNodes); @@ -657,13 +661,12 @@ public class DefaultItemManager implements ItemManagerClient { BodyPart fdp = new StreamDataBodyPart("file", stream); - fdp.getHeaders().put("Content-Disposition",Arrays.asList(contentDisposition.toString())); - + multipart.bodyPart(fdp); Entity entity = Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA); - response = myManager.post(entity); + response = myManager.queryParams(initQueryParameters()).header("Content-Disposition",Arrays.asList(contentDisposition.toString())).post(entity); if (response.isErrorResponse()) { if (response.hasException()) { @@ -709,7 +712,7 @@ public class DefaultItemManager implements ItemManagerClient { Entity entity = Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA); - response = myManager.post(entity); + response = myManager.queryParams(initQueryParameters()).post(entity); if (response.isErrorResponse()) { if (response.hasException()) { @@ -749,7 +752,7 @@ public class DefaultItemManager implements ItemManagerClient { formData.add("description", description); - GXInboundResponse response = myManager.post(Entity.entity(formData, MediaType.APPLICATION_FORM_URLENCODED)); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).post(Entity.entity(formData, MediaType.APPLICATION_FORM_URLENCODED)); if (response.isErrorResponse()) { @@ -791,7 +794,7 @@ public class DefaultItemManager implements ItemManagerClient { if (contentLength >0) myManager = myManager.header("Content-Length", contentLength); - GXInboundResponse response = myManager.post(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE)); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).post(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE)); if (response.isErrorResponse()) { if (response.hasException()) @@ -856,7 +859,7 @@ public class DefaultItemManager implements ItemManagerClient { formData.add("hidden", Boolean.toString(hidden)); - GXInboundResponse response = myManager.post(Entity.entity(formData, MediaType.APPLICATION_FORM_URLENCODED)); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).post(Entity.entity(formData, MediaType.APPLICATION_FORM_URLENCODED)); if (response.isErrorResponse()) { if (response.hasException()) @@ -897,7 +900,7 @@ public class DefaultItemManager implements ItemManagerClient { formData.add("value", url.toString()); - GXInboundResponse response = myManager.post(Entity.entity(formData, MediaType.APPLICATION_FORM_URLENCODED)); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).post(Entity.entity(formData, MediaType.APPLICATION_FORM_URLENCODED)); if (response.isErrorResponse()) { if (response.hasException()) @@ -932,7 +935,7 @@ public class DefaultItemManager implements ItemManagerClient { .path("create").path("GCUBEITEM"); - GXInboundResponse response = myManager.post(Entity.json(item)); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).post(Entity.json(item)); if (response.isErrorResponse()) { if (response.hasException()) @@ -970,7 +973,7 @@ public class DefaultItemManager implements ItemManagerClient { multipart.field("defaultAccessType", accessType, MediaType.APPLICATION_JSON_TYPE); multipart.field("users", users, MediaType.APPLICATION_JSON_TYPE); - GXInboundResponse response = myManager.put(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE)); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).put(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE)); if (response.isErrorResponse()) { if (response.hasException()) @@ -1005,7 +1008,7 @@ public class DefaultItemManager implements ItemManagerClient { try (FormDataMultiPart multipart = new FormDataMultiPart()){ multipart.field("users", users, MediaType.APPLICATION_JSON_TYPE); - GXInboundResponse response = myManager.put(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE)); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).put(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE)); if (response.isErrorResponse()) { if (response.hasException()) @@ -1040,7 +1043,7 @@ public class DefaultItemManager implements ItemManagerClient { public Void call(GXWebTargetAdapterRequest manager) throws Exception { Objects.requireNonNull(id, "id cannot be null"); - HashMap queryParam = new HashMap(); + Map queryParam = initQueryParameters(); queryParam.put("force", new Object[] {force}); GXWebTargetAdapterRequest myManager = manager.path(id); @@ -1074,7 +1077,7 @@ public class DefaultItemManager implements ItemManagerClient { Objects.requireNonNull(id, "id cannot be null"); GXWebTargetAdapterRequest myManager = manager.path(id).path("anchestors"); - Map params = new HashMap<>(); + Map params = initQueryParameters(); if (excludeNodes !=null && excludeNodes.length>0) params.put("exclude",excludeNodes); @@ -1108,7 +1111,7 @@ public class DefaultItemManager implements ItemManagerClient { public ACLList call(GXWebTargetAdapterRequest manager) throws Exception { Objects.requireNonNull(id, "id cannot be null"); - GXWebTargetAdapterRequest myManager = manager.path(id).path("acls"); + GXWebTargetAdapterRequest myManager = manager.queryParams(initQueryParameters()).path(id).path("acls"); GXInboundResponse response = myManager.get(); if (response.isErrorResponse()) { @@ -1139,7 +1142,7 @@ public class DefaultItemManager implements ItemManagerClient { public Boolean call(GXWebTargetAdapterRequest manager) throws Exception { Objects.requireNonNull(id, "id cannot be null"); - GXWebTargetAdapterRequest myManager = manager.path(id).path("acls").path("write"); + GXWebTargetAdapterRequest myManager = manager.queryParams(initQueryParameters()).path(id).path("acls").path("write"); GXInboundResponse response = myManager.get(); @@ -1177,7 +1180,7 @@ public class DefaultItemManager implements ItemManagerClient { Objects.requireNonNull(user, "user cannot be null"); - GXWebTargetAdapterRequest myManager = manager.path(id).path("acls"); + GXWebTargetAdapterRequest myManager = manager.queryParams(initQueryParameters()).path(id).path("acls"); try (FormDataMultiPart multipart = new FormDataMultiPart()){ multipart.field("access", accessType, MediaType.APPLICATION_JSON_TYPE); @@ -1216,7 +1219,7 @@ public class DefaultItemManager implements ItemManagerClient { Objects.requireNonNull(user, "user cannot be null"); - GXWebTargetAdapterRequest myManager = manager.path(id).path("acls").path(user); + GXWebTargetAdapterRequest myManager = manager.queryParams(initQueryParameters()).path(id).path("acls").path(user); GXInboundResponse response = myManager.delete(); @@ -1260,7 +1263,7 @@ public class DefaultItemManager implements ItemManagerClient { formData.add("fileName", newFilename); - GXInboundResponse response = myManager.put(Entity.form(formData)); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).put(Entity.form(formData)); if (response.isErrorResponse()) { if (response.hasException()) @@ -1298,7 +1301,7 @@ public class DefaultItemManager implements ItemManagerClient { formData.add("publish", Boolean.toString(publish)); - GXInboundResponse response = myManager.put(Entity.form(formData)); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).put(Entity.form(formData)); if (response.isErrorResponse()) { if (response.hasException()) @@ -1336,7 +1339,7 @@ public class DefaultItemManager implements ItemManagerClient { formData.add("destinationId", destinationFolderId); - GXInboundResponse response = myManager.put(Entity.form(formData)); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).put(Entity.form(formData)); if (response.isErrorResponse()) { if (response.hasException()) @@ -1372,7 +1375,7 @@ public class DefaultItemManager implements ItemManagerClient { formData.add("newName", newName); - GXInboundResponse response = myManager.put(Entity.form(formData)); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).put(Entity.form(formData)); if (response.isErrorResponse()) { if (response.hasException()) @@ -1408,7 +1411,7 @@ public class DefaultItemManager implements ItemManagerClient { GXWebTargetAdapterRequest myManager = manager.path(id) .path("hidden"); - GXInboundResponse response = myManager.put(Entity.json(value)); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).put(Entity.json(value)); if (response.isErrorResponse()) { if (response.hasException()) @@ -1442,7 +1445,7 @@ public class DefaultItemManager implements ItemManagerClient { GXWebTargetAdapterRequest myManager = manager.path(id) .path("description"); - GXInboundResponse response = myManager.put(Entity.json(description)); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).put(Entity.json(description)); if (response.isErrorResponse()) { if (response.hasException()) @@ -1477,7 +1480,7 @@ public class DefaultItemManager implements ItemManagerClient { .path("metadata"); - GXInboundResponse response = myManager.put(Entity.json(metadata)); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).put(Entity.json(metadata)); if (response.isErrorResponse()) { if (response.hasException()) diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultManagerClient.java b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultManagerClient.java new file mode 100644 index 0000000..a75b0b6 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultManagerClient.java @@ -0,0 +1,36 @@ +package org.gcube.common.storagehub.client.proxies; + +import java.util.HashMap; +import java.util.Map; + +import org.gcube.common.clients.delegates.ProxyDelegate; +import org.gcube.common.gxrest.request.GXWebTargetAdapterRequest; +import org.gcube.common.storagehub.client.plugins.AbstractPlugin; + +public abstract class DefaultManagerClient implements ManagerClient{ + + protected ProxyDelegate delegate; + + private String impersonedUser= null; + + public DefaultManagerClient(ProxyDelegate delegate) { + this.delegate = delegate; + } + + @Override + public void register(Class _classes) { + ((AbstractPlugin) delegate.config().plugin()).register(_classes); + } + + @Override + public void impersonate(String user) { + this.impersonedUser = user; + } + + protected Map initQueryParameters() { + Map params = new HashMap(); + if (impersonedUser != null) + params.put("impersonate", new Object[] {impersonedUser}); + return params; + } +} diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultMessageManager.java b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultMessageManager.java index 33248ad..8b309b9 100644 --- a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultMessageManager.java +++ b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultMessageManager.java @@ -21,16 +21,13 @@ import org.gcube.common.storagehub.model.messages.Message; import org.gcube.common.storagehub.model.service.ItemList; import org.gcube.common.storagehub.model.types.MessageList; -public class DefaultMessageManager implements MessageManagerClient { +public class DefaultMessageManager extends DefaultManagerClient implements MessageManagerClient { - private final ProxyDelegate delegate; - - - public DefaultMessageManager(ProxyDelegate config){ - this.delegate = config; + + public DefaultMessageManager(ProxyDelegate delegate) { + super(delegate); } - @Override public Message get(String id) throws StorageHubException { Call call = new Call() { 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 f0ab384..f5f496a 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 @@ -16,12 +16,12 @@ import org.gcube.common.storagehub.model.exceptions.IdNotFoundException; import org.gcube.common.storagehub.model.exceptions.StorageHubException; import org.gcube.common.storagehub.model.exceptions.UserNotAuthorizedException; -public class DefaultUserManager implements UserManagerClient { +public class DefaultUserManager extends DefaultManagerClient implements UserManagerClient { - private final ProxyDelegate delegate; + public DefaultUserManager(ProxyDelegate delegate) { - this.delegate = delegate; + super(delegate); } @Override diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultWorkspaceManager.java b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultWorkspaceManager.java index bf06b6f..cc645f4 100644 --- a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultWorkspaceManager.java +++ b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultWorkspaceManager.java @@ -2,7 +2,6 @@ package org.gcube.common.storagehub.client.proxies; import java.net.URLEncoder; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -27,13 +26,10 @@ import org.gcube.common.storagehub.model.service.ItemWrapper; import com.fasterxml.jackson.databind.ObjectMapper; -public class DefaultWorkspaceManager implements WorkspaceManagerClient { +public class DefaultWorkspaceManager extends DefaultManagerClient implements WorkspaceManagerClient { - private final ProxyDelegate delegate; - - - public DefaultWorkspaceManager(ProxyDelegate config){ - this.delegate = config; + public DefaultWorkspaceManager(ProxyDelegate delegate) { + super(delegate); } @Override @@ -43,7 +39,7 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient { public ItemWrapper call(GXWebTargetAdapterRequest manager) throws Exception { GXWebTargetAdapterRequest myManager = manager; - Map params = new HashMap<>(); + Map params = initQueryParameters(); if (excludeNodes !=null && excludeNodes.length>0) params.put("exclude",excludeNodes); @@ -98,7 +94,7 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient { @Override public ItemList call(GXWebTargetAdapterRequest manager) throws Exception { GXWebTargetAdapterRequest myManager = manager.path("vrefolders"); - Map params = new HashMap<>(); + Map params = initQueryParameters(); if (excludeNodes !=null && excludeNodes.length>0) params.put("exclude",excludeNodes); @@ -129,7 +125,7 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient { @Override public ItemList call(GXWebTargetAdapterRequest manager) throws Exception { GXWebTargetAdapterRequest myManager = manager.path("vrefolders").path("paged"); - Map params = new HashMap<>(); + Map params = initQueryParameters(); if (excludeNodes !=null && excludeNodes.length>0) params.put("exclude",excludeNodes); @@ -165,7 +161,7 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient { @Override public ItemWrapper call(GXWebTargetAdapterRequest manager) throws Exception { GXWebTargetAdapterRequest myManager = manager.path("vrefolder"); - Map params = new HashMap<>(); + Map params = initQueryParameters(); if (excludeNodes !=null && excludeNodes.length>0) params.put("exclude",excludeNodes); @@ -197,7 +193,7 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient { public ItemList call(GXWebTargetAdapterRequest manager) throws Exception { GXWebTargetAdapterRequest myManager = manager.path("vrefolder").path("recents"); - GXInboundResponse response = myManager.get(); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).get(); if (response.isErrorResponse()) { if (response.hasException()) @@ -225,7 +221,7 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient { @Override public ItemWrapper call(GXWebTargetAdapterRequest manager) throws Exception { GXWebTargetAdapterRequest myManager = manager.path("trash"); - Map params = new HashMap<>(); + Map params = initQueryParameters(); if (excludeNodes !=null && excludeNodes.length>0) params.put("exclude",excludeNodes); @@ -257,7 +253,7 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient { public Void call(GXWebTargetAdapterRequest manager) throws Exception { GXWebTargetAdapterRequest myManager = manager.path("trash").path("empty"); - GXInboundResponse response = myManager.delete(); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).delete(); if (response.isErrorResponse()) { if (response.hasException()) @@ -292,7 +288,7 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient { formData.add("destinationId", destinationFolderId); - GXInboundResponse response = myManager.put(Entity.entity(formData, MediaType.APPLICATION_FORM_URLENCODED)); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).put(Entity.entity(formData, MediaType.APPLICATION_FORM_URLENCODED)); if (response.isErrorResponse()) { if (response.hasException()) @@ -319,7 +315,7 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient { @Override public ItemList call(GXWebTargetAdapterRequest manager) throws Exception { GXWebTargetAdapterRequest myManager = manager.path("query"); - Map params = new HashMap<>(); + Map params = initQueryParameters(); if (excludeNodes !=null && excludeNodes.length>0) params.put("exclude",excludeNodes); @@ -373,7 +369,7 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient { public String call(GXWebTargetAdapterRequest manager) throws Exception { GXWebTargetAdapterRequest myManager = manager.path("count"); - GXInboundResponse response = myManager.get(); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).get(); if (response.isErrorResponse()) { if (response.hasException()) @@ -400,7 +396,7 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient { public String call(GXWebTargetAdapterRequest manager) throws Exception { GXWebTargetAdapterRequest myManager = manager.path("size"); - GXInboundResponse response = myManager.get(); + GXInboundResponse response = myManager.queryParams(initQueryParameters()).get(); if (response.isErrorResponse()) { if (response.hasException()) 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 aa066bc..e243f98 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 @@ -5,7 +5,7 @@ import java.util.List; import org.gcube.common.storagehub.model.acls.AccessType; import org.gcube.common.storagehub.model.exceptions.StorageHubException; -public interface GroupManagerClient { +public interface GroupManagerClient extends ManagerClient{ void addUserToGroup(String userId, 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 48b57d6..84d7ebb 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 @@ -18,7 +18,7 @@ import org.gcube.common.storagehub.model.service.Version; -public interface ItemManagerClient { +public interface ItemManagerClient extends ManagerClient{ List getChildren(String id, boolean includeHidden, String ... excludeNodes) throws StorageHubException; diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/ManagerClient.java b/src/main/java/org/gcube/common/storagehub/client/proxies/ManagerClient.java new file mode 100644 index 0000000..a9cc953 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/client/proxies/ManagerClient.java @@ -0,0 +1,9 @@ +package org.gcube.common.storagehub.client.proxies; + +public interface ManagerClient { + + void register(Class _classes); + + void impersonate(String user); +} + diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/MessageManagerClient.java b/src/main/java/org/gcube/common/storagehub/client/proxies/MessageManagerClient.java index 67a6ab7..18bab3c 100644 --- a/src/main/java/org/gcube/common/storagehub/client/proxies/MessageManagerClient.java +++ b/src/main/java/org/gcube/common/storagehub/client/proxies/MessageManagerClient.java @@ -6,7 +6,7 @@ import org.gcube.common.storagehub.model.exceptions.StorageHubException; import org.gcube.common.storagehub.model.items.Item; import org.gcube.common.storagehub.model.messages.Message; -public interface MessageManagerClient { +public interface MessageManagerClient extends ManagerClient{ Message get(String id) throws StorageHubException; diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/UserManagerClient.java b/src/main/java/org/gcube/common/storagehub/client/proxies/UserManagerClient.java index e7a797b..65a78cb 100644 --- a/src/main/java/org/gcube/common/storagehub/client/proxies/UserManagerClient.java +++ b/src/main/java/org/gcube/common/storagehub/client/proxies/UserManagerClient.java @@ -4,7 +4,7 @@ import java.util.List; import org.gcube.common.storagehub.model.exceptions.StorageHubException; -public interface UserManagerClient { +public interface UserManagerClient extends ManagerClient{ void createUser(String userId) throws StorageHubException; diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/WorkspaceManagerClient.java b/src/main/java/org/gcube/common/storagehub/client/proxies/WorkspaceManagerClient.java index d53833e..2eba7ea 100644 --- a/src/main/java/org/gcube/common/storagehub/client/proxies/WorkspaceManagerClient.java +++ b/src/main/java/org/gcube/common/storagehub/client/proxies/WorkspaceManagerClient.java @@ -8,7 +8,7 @@ import org.gcube.common.storagehub.model.expressions.SearchableItem; import org.gcube.common.storagehub.model.items.Item; import org.gcube.common.storagehub.model.query.Query; -public interface WorkspaceManagerClient { +public interface WorkspaceManagerClient extends ManagerClient{ T getWorkspace(String ... excludeNodes); 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 b09ee95..204d08b 100644 --- a/src/test/java/org/gcube/data/access/fs/Items.java +++ b/src/test/java/org/gcube/data/access/fs/Items.java @@ -41,7 +41,7 @@ public class Items { private static final String propFile = "/home/lucio/tokens.properties"; - private static final String tokens = "prod-root"; + private static final String tokens = "dev-root"; //private static final String tokens = "prod-root"; @BeforeClass @@ -169,18 +169,16 @@ public class Items { StorageHubClient shc = new StorageHubClient(); - FolderContainer myRoot = shc.getWSRoot(); + FolderContainer myRoot = shc.open("11cbdc0c-e873-418c-bc53-5f6329eb88fb").asFolder(); long start = System.currentTimeMillis(); - File inFile = new File("C:\\Users\\tilli\\Downloads\\testup.zip"); + File inFile = new File("/home/lucio/Downloads/scimmia braccia aperte.mp4"); try(InputStream is = new FileInputStream(inFile)){ - myRoot.uploadFile(is, "testUp.zip", "file"); + myRoot.uploadFile(is, "scimmia braccia aperte.mp4", "file"); - } catch (Exception e) { - e.printStackTrace(); - } + } System.out.println("Response in "+(System.currentTimeMillis()-start)); } @@ -228,10 +226,11 @@ public class Items { @Test public void addUser() throws Exception { + ScopeProvider.instance.set("/gcube"); + SecurityTokenProvider.instance.set("b7c80297-e4ed-42ab-ab42-fdc0b8b0eabf-98187548"); StorageHubClient shc = new StorageHubClient(); - shc.createUserAccount("service-account-sergencovid19"); - shc.getVreFolderManager("d4science.research-infrastructures.eu-FARM-SerGen-Covid19_Ricercatore").addUser("service-account-sergencovid19"); + shc.getVreFolderManager("gcube-devsec-devVre").addUser("vincenzo.cestone"); } @Test 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 d80200a..15964d6 100644 --- a/src/test/java/org/gcube/data/access/fs/TestCall.java +++ b/src/test/java/org/gcube/data/access/fs/TestCall.java @@ -5,7 +5,6 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; -import java.net.URI; import java.nio.file.Files; import java.util.Arrays; import java.util.HashMap; @@ -15,13 +14,6 @@ import java.util.Properties; import java.util.regex.Matcher; import java.util.regex.Pattern; -import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.client.Entity; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.common.storagehub.client.StreamDescriptor; @@ -44,7 +36,6 @@ import org.gcube.common.storagehub.model.items.GCubeItem; import org.gcube.common.storagehub.model.items.Item; import org.gcube.common.storagehub.model.query.Queries; import org.gcube.common.storagehub.model.query.Query; -import org.glassfish.jersey.client.ClientProperties; import org.junit.BeforeClass; import org.junit.Test; import org.slf4j.Logger; @@ -54,7 +45,7 @@ public class TestCall { private static Logger log = LoggerFactory.getLogger(TestCall.class); - private static final String propFile = "/home/lucio/tokens.properties"; + private static final String propFile = "/home/lucio/secret.properties"; private static final String tokens = "dev-root"; @@ -67,8 +58,9 @@ public class TestCall { String value =(String)prop.get(tokens); String[] splitValue = value.split(","); String context = splitValue[0]; - String token = splitValue[1]; - SecurityTokenProvider.instance.set(token); + String clientID = splitValue[1]; + String secret = splitValue[2]; + ScopeProvider.instance.set(context); } catch (Exception e) { e.printStackTrace(); diff --git a/src/test/java/org/gcube/data/access/fs/TestWithLocalContainer.java b/src/test/java/org/gcube/data/access/fs/TestWithLocalContainer.java new file mode 100644 index 0000000..e901cd4 --- /dev/null +++ b/src/test/java/org/gcube/data/access/fs/TestWithLocalContainer.java @@ -0,0 +1,69 @@ +package org.gcube.data.access.fs; + +import static org.junit.Assert.assertTrue; + +import java.io.InputStream; +import java.net.URI; +import java.net.URL; + +import org.gcube.common.authorization.library.provider.AccessTokenProvider; +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.common.storagehub.client.dsl.FolderContainer; +import org.gcube.common.storagehub.client.dsl.StorageHubClient; +import org.gcube.common.storagehub.client.dsl.VREFolderManager; +import org.gcube.common.storagehub.model.acls.AccessType; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class TestWithLocalContainer { + + private static StorageHubClient client; + + private static Logger log = LoggerFactory.getLogger(TestWithLocalContainer.class); + + public static URI storagehubUri; + + @BeforeClass + public static void initialize() throws Exception{ + storagehubUri = new URL(String.format("http://%s:%d/storagehub", "localhost",8080)).toURI(); + AccessTokenProvider.instance.set("eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSSklZNEpoNF9qdDdvNmREY0NlUDFfS1l0akcxVExXVW9oMkQ2Tzk1bFNBIn0.eyJleHAiOjE2NDQyNDM4ODUsImlhdCI6MTY0NDI0MzU4NSwiYXV0aF90aW1lIjoxNjQ0MjQzNTg1LCJqdGkiOiI1NWQ4ZDc5OS1kNTIzLTQ0YmEtYTRkMC1iZjIyYzVlMTg4NzQiLCJpc3MiOiJodHRwczovL2FjY291bnRzLmRldi5kNHNjaWVuY2Uub3JnL2F1dGgvcmVhbG1zL2Q0c2NpZW5jZSIsImF1ZCI6IiUyRmdjdWJlIiwic3ViIjoiNGMxMWRlODQtZGRjOS00ZGQxLWI5N2EtZWE4MmQyZDEzOGE2IiwidHlwIjoiQmVhcmVyIiwiYXpwIjoibmV4dC5kNHNjaWVuY2Uub3JnIiwic2Vzc2lvbl9zdGF0ZSI6ImZkZTA3MGE2LTVkOTUtNDc3Ni1hMTFiLTBhZTI1MzQ5NGQyMyIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiLyoiXSwicmVzb3VyY2VfYWNjZXNzIjp7IiUyRmdjdWJlIjp7InJvbGVzIjpbIkluZnJhc3RydWN0dXJlLU1hbmFnZXIiLCJNZW1iZXIiXX19LCJhdXRob3JpemF0aW9uIjp7InBlcm1pc3Npb25zIjpbeyJyc2lkIjoiMTU5ZDcyMDQtNjlmYS00ZmY0LTlhOTQtMzVlMWUyMzA5MDQyIiwicnNuYW1lIjoiRGVmYXVsdCBSZXNvdXJjZSJ9XX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoiTHVjaW8gTGVsaWkiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJsdWNpby5sZWxpaSIsImdpdmVuX25hbWUiOiJMdWNpbyIsImZhbWlseV9uYW1lIjoiTGVsaWkiLCJlbWFpbCI6Imx1Y2lvLmxlbGlpQGlzdGkuY25yLml0In0.SGuGXnY63WJ45tdypywaopO--FCxY6ZWAX74MGVw_zdNMMQI5zgtGfhZQewFWQ6HhVINDStXqvdSDluhF9JwFXCUGvxB2BipfKQYsAQnm3I4K3kgMl26kuQIL5Im-apw2XWvImTgLshX1AzpyqzFR1Jpf_p65GCMpcHLEwo_nTGLkrZNtfRdtqakZ8S8lowGaV2J2mNf4AHhtARSLJF3GqwynF5pPUXR2iOMUrjw_FLnIuPMfAjk_jHMeYKIxXNBLsoEpELju3pr2gEkv1ZRH9bZkyg7_3hW4mGzxq_Ea9w1FBVJOlkp6vypuISLNyJZcVOnBa4Dg1KRxxlp3aZ6vA"); + ScopeProvider.instance.set("/gcube"); + //client = new StorageHubClient(storagehubUri); + //createUser(); + } + + @Before + public void reset() throws Exception { + AccessTokenProvider.instance.set("eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSSklZNEpoNF9qdDdvNmREY0NlUDFfS1l0akcxVExXVW9oMkQ2Tzk1bFNBIn0.eyJleHAiOjE2NDQyNDM4ODUsImlhdCI6MTY0NDI0MzU4NSwiYXV0aF90aW1lIjoxNjQ0MjQzNTg1LCJqdGkiOiI1NWQ4ZDc5OS1kNTIzLTQ0YmEtYTRkMC1iZjIyYzVlMTg4NzQiLCJpc3MiOiJodHRwczovL2FjY291bnRzLmRldi5kNHNjaWVuY2Uub3JnL2F1dGgvcmVhbG1zL2Q0c2NpZW5jZSIsImF1ZCI6IiUyRmdjdWJlIiwic3ViIjoiNGMxMWRlODQtZGRjOS00ZGQxLWI5N2EtZWE4MmQyZDEzOGE2IiwidHlwIjoiQmVhcmVyIiwiYXpwIjoibmV4dC5kNHNjaWVuY2Uub3JnIiwic2Vzc2lvbl9zdGF0ZSI6ImZkZTA3MGE2LTVkOTUtNDc3Ni1hMTFiLTBhZTI1MzQ5NGQyMyIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiLyoiXSwicmVzb3VyY2VfYWNjZXNzIjp7IiUyRmdjdWJlIjp7InJvbGVzIjpbIkluZnJhc3RydWN0dXJlLU1hbmFnZXIiLCJNZW1iZXIiXX19LCJhdXRob3JpemF0aW9uIjp7InBlcm1pc3Npb25zIjpbeyJyc2lkIjoiMTU5ZDcyMDQtNjlmYS00ZmY0LTlhOTQtMzVlMWUyMzA5MDQyIiwicnNuYW1lIjoiRGVmYXVsdCBSZXNvdXJjZSJ9XX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoiTHVjaW8gTGVsaWkiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJsdWNpby5sZWxpaSIsImdpdmVuX25hbWUiOiJMdWNpbyIsImZhbWlseV9uYW1lIjoiTGVsaWkiLCJlbWFpbCI6Imx1Y2lvLmxlbGlpQGlzdGkuY25yLml0In0.SGuGXnY63WJ45tdypywaopO--FCxY6ZWAX74MGVw_zdNMMQI5zgtGfhZQewFWQ6HhVINDStXqvdSDluhF9JwFXCUGvxB2BipfKQYsAQnm3I4K3kgMl26kuQIL5Im-apw2XWvImTgLshX1AzpyqzFR1Jpf_p65GCMpcHLEwo_nTGLkrZNtfRdtqakZ8S8lowGaV2J2mNf4AHhtARSLJF3GqwynF5pPUXR2iOMUrjw_FLnIuPMfAjk_jHMeYKIxXNBLsoEpELju3pr2gEkv1ZRH9bZkyg7_3hW4mGzxq_Ea9w1FBVJOlkp6vypuISLNyJZcVOnBa4Dg1KRxxlp3aZ6vA"); + ScopeProvider.instance.set("/gcube"); + client = new StorageHubClient(storagehubUri); + } + + private static void createUser() throws Exception{ + client.createUserAccount("test.user"); + client.createUserAccount("test.user2"); + VREFolderManager vremanager = client.getVreFolderManager("gcube-devVre-myvre"); + vremanager.createVRE(AccessType.WRITE_OWNER, "test.user"); + vremanager.addUser("test.user2"); + } + + //impersonating test.user + @Test + public void uploadFile() throws Exception{ + + client.impersonate("test.user"); + FolderContainer vreFolder = (FolderContainer) client.getVREFolders().getContainers().stream().findFirst().get(); + try(InputStream stream = this.getClass().getResourceAsStream("/output.xlsx")){ + vreFolder.uploadFile(stream, "userTestfile2", "userTestfile" ); + } + + assertTrue(vreFolder.list().getItems().size()>0); + + } + +} + + diff --git a/src/test/resources/output.xlsx b/src/test/resources/output.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..abf6da79cc9e171ecc76cee92bde027ef513e0c2 GIT binary patch literal 8278 zcmb_h1z1$;)}}*3K~lP#p*sYmLr_2(1{ivVk)fnJq#Fd4MnOOtM7kxV8)+nzM*1K0 zoa2$-bMJqj|L*76d(Yl`-nG`Z_WIVh*1Oe}kx>W`erz-d3!z8K38)ANSNm=FO??@A zh$9H%Xsr1J3W6DOx`OS*B;f~YXOIKT+8!cK%gxC}OAUgU*_&HKEX8THH03yiXsKb2 zK!`ce&K?31r+or~(Mn2)eV0HD$3kG@v{sIeP!RwCW@ZHf17V!@P!I(E#KPVI40MEF zI#>drKr>sQB?!R7#U%hR`(Xu#Ql&{F?l?v*Za zT5Ir?09THyCxG9Bpb*R7g0AlW1H=Xj`aS0RgMR?Q2X{>m5DK-kHUm1sod~#k`VT+{ zkR9w_Ae|xR*PO@khvPWm$nVl&R@P7$+rLm@Y7P0%G}v2MSet>&?aiFP@X+A2w*%cb zwE>wqUX9^CJTM%r%|X=E>OcoaH6R%N9suyasyo<2VF37`uR`emr4DrU%FRLM98kDO zkb|Q&=&#ZJYvpG44xs;B`=9Q-LjPY?y4nF;>>X@jRv?fg4DkKL{hw>T=4Kew0R%Mv zE(~nP`Ir1Z-|TP44mZRRKEpsij{kofz6<+z8evvI2ax$gM+bO9fc=+;{fq2>Yl!0$ zJJ5gKg6~5Ao$9OCV`^`2`(GbEJfb+kKx@dK1^~XNRSES!vN#4jXVV~9Gpn*;AtE4D z!}pu;JAcIEp9V#!H>tI7VV@^-x+FSV`KzkBNQKNqlWe9j8rc>q=F^u?&BZyhE_QZ# zRi3?=V{;}RDy8(KwnSYD!zR&N=9|!KT%A9dC)EiVw3!eILn0Qf>`%nC(nXFMhHnrbKb4)k?3vr<7kXmVKI}@drdSw50pdd-nE~Fet{+F~-EQf_AM`yR2xjor59f#9V1LC>j^sN|S0%L^iG_jJi@FJaH6VQEGwNjXKsL5V`pQ(Ipb?>*LwsEa~oNBK50&waQ_E zG3<%`=s7quSk!JWRIDGjK@wcHV~OST4Qsd?@eH-zn|#&f?DRu;kf^CA9Cl-d8U6V> zwr=Jt^R;`jPscR3>*kZq6*B?_I;ALAJey3tQSvbNtIsRs`m@6l$*bMzFsrwKG+4w7 zi306S(G2SKW^&8v>1wlvHl4X9YKXZ9r(s7;1Ksp5aF8aEcfVAy00BX$=noSyw1qLa z&Y=5wL;O2QeNtp)*-QKBgoKp4cRpew=yTCjdb!tYxs0#gIQDzlP0)hthWng^R#cXs zC+QKB-q^zKWT!aqlUiCz79Ch&(4F*y$$Zq!cIhAwq*}z1Z)f60wI)0TV$N%kB)p0(b1f~utgw5xFUxSNv59~_-K|s6=>dqB(Z#12E18{ z2)8#fK31&lD@Zavt5=~EyXou<7_DHk!M?xKpEt7Fw!#u6zh}iyr7Br6Va2TvmMi=0 zRxz;@#vD1?fcEtmxwz(hz0rzsD2MP9=$)zP?$m7Jf-nBssl+)cCL=TbSrsVe;xzdj z?bmoCW_-DE2R=uE$Os5mH5h!J{*vIXvWL^dZb&ON_8DPoo$|Y2Ev>-Kj0X+rr-;mA ze(`q&7)K7j+IF(q1j61Dh*fs*1{|Iw%N>G=wz(B9+-!t+GomKZnU1$M_Ld`f6%xf_cOv7$+w(V{&Rti6blPMTD1s67@y#3M^mWDw(2YkW_V1LR^<%@Pvql~wtG z-gi4FcHB?{~$l#eD&0f z>C|o$vIjTk8hOx_nRoH^b=x$?IYJ2wD@WswnmV%sX!lnxC*#>|mWD!iwH71SKN4Pk zv^uf4HFYi;TZ6uJ=ImbX6mV#Fv+ymp8)x=w@PNh}8ZX3P#Ye)xrVLweR}_iZFT}t4 zas-bEa|P~0RrvhHf}f4ADks2I6$C4c)lf#}#`d{X>N+i|!lW&Q0A$8fJI@eHdS?=9 z1#%+XPLGJB9xt?0de}YlIL0rX?E^lrj}Ke5GMOk(XV!C;I7EAK^JbW+x-6GSnoz7S z9pN}+^gdt4a4gR^O-)d%smU$HBRyhK^~OPHrjEBrA7YLKtoZgMp8H@yW!=az6S7*0 z($;g|_b!6zxE=S#8f!M*=TJjN!30 zGCZ_K;rlJPJFb^t&tpE?v``ZS88f)fB`4s?373RB0{u&IV{x5X++sWN2`h4*oa)LA zMa~@bU0yDU$_E@+lgHAD6o+$m$~=ofso;9>xrq8SS5GXa6}^aoD!koKWv%O3Q!p=) zq54`J^FTedCx)}^Yhv-p={&p*1-(T%N>fJ)esBQ_BwQ%`6|$j)uG$WPx^g_0C{|bT zV<+q*r5wD~^D|4{i8ZrryRCGTn>!J9NA>5ES|j?$(tG>dhPlE6`nWly9AmeUMP6ps z%RPp&s<0!wkLH!5k>Njh?sFx<*r1ZT&e=D9>2kr?%e?NVyFU|4I2V`*BT#Py_ z?!vtIEu|NAU?b@*)vxgrWH2B{19uiSJbv*0?yx`0MsSR=atjwhTZ2-kdunbfkJ6Oy zhZh33(wOT5_lvLuycJ5FP7iZS3e?b_)TGUc3m?roJc*?c@pFu)_iZXJBU-ghS z50%mse#_7lAm*qe^mHEgfF1v#ZloEZ!;(hlLyx=$1^cp&ysaB!PZC!ZKxMC}pwX zh}_3Y&oY^aclESocP0?I+K10SJJ)LEJ@prlGbk!RHk1{G{@Jdw5KM{Yney23YXX^z zddRH=+b6xO%uDfvkoHe#dKn)BKr zmSDmbli`7xf77jda#u1C8DmMBvxoe?Cw=P-O92pz$+Yz;5cpamF_7q)IO+!^Hf{IY z8U*rj8$=nzdU?LiHZqX7sjjWopz?QIsvsi|ETTCTd!iB?-u(k;<07qYzy-5G(fza~hJeisFFX>O03!y%)O{xx$H?}qXf=;>p<_l2bwvRAQW{*kLj6tsR zFPjJWo%JZS5vq!v$gL}V@}kpKzSb2G@HM}Q6CCc@2{?L)kDZ;3<$C9NorN1pL?$Jj zkj^1PPjq2=t0f@y^S;gqii`#cd0bc=bA1WK;PiyHToRe=2~I#sd7|`0$ntJcLQ8&( zg)j#>f+Ednk7l{(!Af^A(14v9z%R#P-2;)5#6jY|3uWj}DoIg#Ba=hnE~)U|JLO{d zl(_6GWg`9uSo~8wMM3b`dIg`eu?5*%TH8aM4?c8;!=x*wD=4*?yz9?L7SM^7Ju%73 z8xGuNv|J)-td(BnWQf=njR@@uq8#M~R4p9aoi zO&k!M1d6$m;h%!Px#MI>ZM;nqNhh2tce_72>{c2nh-?292m6A!c<*M^PSraF6{3*D=A;XSlVans4XC8Qla$nL$SAlgiifd8ATK^$!AzNzF4#P5j z6!qQHU3`ds(SxR(2a1zi;mfF$x2RUy4P14avY<+IzEM6SW;r%B)9g=@Pl$F)(6g)B z&1`P-4aAQ!O2bYl{Uz&TxdNIsQbRpO3CPj)K6+G}I;y8g2KGC!)~ck-^h^?kQ0-(P z))ce1zSZRVSovYTgOx)_2@O-7t0J67ZtSKcqhUDp@LQWfOv~y|1^XLh#8q*VnmFJa zpX!W?rwZtEI_AeKo3au-p1L(?eWvGA@FC(uedgF5;UFHzSg6YJ(jsfq`v3^vMhagqNksQ6@96uPSpuY1XebC~ zeMN+2OeVP`(kv}cA&5$6*bm7ijx2;V7dpbweKt>125}Gz7gXZ)hkc^Cp5G78AM7|C$ zru3GFvI(%_d$)`F zcdVLsmfwJCApO=ZG+^rN$@amBkQOb)uRM}1S|f6X_FbP(@*O9&hxHPUMxL&*&^33t zs@NrvE|9L5yzf=E&o|46JO1L=30e?qsE?cpx5 zPdE}0XDd5&=S^|t?uP2Uq`r{Ai!Q@Xu48kd`K+N`!!3@JqIB(-r(f(m1q&!znJP3s z;0a7WMUhi@6kORB=pejb+nD2Q+$hW1EeA#Rv&j|rNxtAVs0|`#6j?RMNb!j`L8}t3 zkf)$$E(b2(kaiyFSuAF%e9$X49?W3JNUudVG&>-1gNK}tJ~#l!QP_SxqBL66{{H6= zwx3|q0^D}mV;Mu2bF*?A1+#KvkI%VPUKQ^VJp#OIYl}1`vjlBDi`p9@tSX!oYFqU1 zNeJ7g64KBB@|x!Kj4>S|&iTKW3426^k>4d>sQcI$8@EZmuv|;8l4z%X+V{RRPfPOc zdY21SMfOpLqRP)Y`oT1Lw`?QA)w?^tj?k(`feym9-9)@MYJ|xY&XbZQka52H22GiV zGpTe9+Qm;lLULKX>_B?MRbn!JcCE(~tjSoq>ha#gYxFxmmYg4L-rwoAKU%(Cn-;EH z0mibMb&1b|)Rp25q-n;6JrQUMId1FYPi{rc)hi)~B7@hOn7GR}dpa@?4sF-k&>7eL z9;p*DVC*xF_f_4PT~7*Ty45K(#P6(!lT!>KZsFfvZV&K1Z!+ZiitKigBZD91 zxk6l_#!>25#_53DDS1L=x#c2~;kg`NEZUYl>0(U;8-&ibv9(2srH&Ye*rjd(^erkqcXk+ZL)jfu+YqKos>HPL-mZ6a?JZgg{L z>PoR?qGjfii`mk!WdfN6Gx8Z2YEZR6Az4-g+5wM;xePwQgj(HtdEDqq!Ll_F1$vIq zpf#-~n}e=HQOPhslKIUPulB_N*CAKEdLi-o0v*Ocd|UC(dk1)v)`>&V$*!^weVA`( zcb)W&5gy}o73y^Dr$&6l3`yg8PKDp4mpi2NT=sUJ`UwSZ1T4MTyOZCpX4{wjSf*4% zIWax`1E;;9fkG*3h9`Jpz|_L>(%i8)?b7%2dcv(@3utOTo?Va&O@3ZDi5{frsNN(Sh?803k>Udd3|~+Z z_DxEP=fe*WRBMk744r0LC@tnjYudlehRPeROchnhdu&eWM^%^AxD9t09h4M!P1AWV z*p8mIg0(&9&mMM6-F~oeyZ?o=JUDQX^VD!~XQAjQXJbo4^1yok{(8QTJ8r;mUb8a% zSClB7W8at_PZ5>P>068&)yAK=(>F8fW7r$a(kAi9Kk!csxYG(^GbTFX?0+;NmtE`< z3Umjjsb#i?08-1QH-<7RUjW4@RD(2lRG%p_>tGhjjx6#4HLTNI-S(xL^e|>t&q7W@ z*TEETlw#|QcFrC(@l}voK>ZEFK8Tf2E8>2YcpLicqnv{)-vs-74s%YlNl!|?@~#|A zCs8qn%J=NFQZMBIU}`qppIO%{(cYj_geA%zVE)z5_QCA1U8EeeAI-#Xd8-8yX+u*% zuaeama83;#tr_22_1i^vt-B+yx_sL`?~qeHm`rq>^_>`QKDXqZh}Z9}Ij0$gsfXBM zw7z=$PDYb{(n;hvQ+eA9-s;MT@ND+aUtr-A`ET2AzQ_I)@O$$A3JvEq;9EPK*1q;B z;5zs^1AYbj0lt8j`d9qqUwrs==yfvlClrGDdusE#gzFUEPYLgC{6gqm2VN(;egeDT zx$rvmbsc@3`T2=H!TuZiPafzx{5sL`6Rw1Ny({|u1@5|l>y6Y;0c`NT>VLOY*YVd^ x#h>^W@MQpw|A#g5x}59l$4@!$Nx#ea?P{W~j0%s8E6x=Qp%EU*J``71{{x1}=-U7Q literal 0 HcmV?d00001