diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..ace8266
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.project b/.project
new file mode 100644
index 0000000..11d6da0
--- /dev/null
+++ b/.project
@@ -0,0 +1,23 @@
+
+
+ storagehub-client
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.m2e.core.maven2Nature
+
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..29abf99
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/resources=UTF-8
+encoding/=UTF-8
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..672496e
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..53ed5a2
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,96 @@
+
+ 4.0.0
+
+
+ maven-parent
+ org.gcube.tools
+ 1.0.0
+
+
+
+ org.gcube.common
+ storagehub-client-library
+ 1.0.0-SNAPSHOT
+ toragehub-client-library
+
+
+
+
+ org.gcube.distribution
+ gcube-bom
+ LATEST
+ pom
+ import
+
+
+
+
+
+
+ junit
+ junit
+ 4.10
+ test
+
+
+ org.gcube.common
+ storagehub-model
+ 1.0.0-SNAPSHOT
+
+
+ org.glassfish.jersey.core
+ jersey-client
+ 2.24.1
+
+
+ com.fasterxml.jackson.jaxrs
+ jackson-jaxrs-json-provider
+ 2.3.0
+
+
+ org.glassfish.jersey.media
+ jersey-media-json-jackson
+ 2.24.1
+
+
+ org.glassfish.jersey.media
+ jersey-media-multipart
+ 2.24.1
+
+
+ javax.ws.rs
+ javax.ws.rs-api
+ 2.0
+
+
+
+ org.gcube.core
+ common-gcube-calls
+
+
+ org.gcube.common
+ common-jaxrs-client
+ [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT)
+
+
+
+ org.gcube.core
+ common-generic-clients
+
+
+
+
+
+
+
+ maven-compiler-plugin
+ 2.3.2
+
+ 1.8
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/common/storagehub/client/Constants.java b/src/main/java/org/gcube/common/storagehub/client/Constants.java
new file mode 100644
index 0000000..dfe3dd2
--- /dev/null
+++ b/src/main/java/org/gcube/common/storagehub/client/Constants.java
@@ -0,0 +1,36 @@
+package org.gcube.common.storagehub.client;
+
+import java.util.concurrent.TimeUnit;
+
+import javax.xml.namespace.QName;
+
+public class Constants {
+
+ /** Service name. */
+ public static final String SERVICE_NAME = "StorageHub";
+
+ /** Service class. */
+ public static final String SERVICE_CLASS = "DataAccess";
+
+ public static final int DEFAULT_TIMEOUT= (int) TimeUnit.SECONDS.toMillis(10);
+
+ public static final String NAMESPACE = "http://gcube-system.org/namespaces/common/storagehub";
+
+ public static final QName MANAGER_QNAME = new QName(NAMESPACE, "itemmanager");
+
+
+/*
+ public static final GcubeService manager = service().withName(org.gcube.data.spd.model.service.Constants.manager_name).andInterface(ManagerStubs.class);
+
+ public static final GcubeService classification = service().withName(org.gcube.data.spd.model.service.Constants.classification_name).andInterface(ClassificationStubs.class);
+
+ public static final GcubeService executor = service().withName(org.gcube.data.spd.model.service.Constants.executor_name).andInterface(ExecutorStubs.class);
+
+ public static final GcubeService occurrence = service().withName(org.gcube.data.spd.model.service.Constants.occurrence_name).andInterface(OccurrenceStubs.class);
+
+ private static final GcubeService remoteDispatcher = service().withName(org.gcube.data.spd.model.service.Constants.remoteDispatcher_name).andInterface(RemoteDispatcher.class);
+
+ public static final RemoteDispatcher getRemoteDispatcherService(String address){
+ return stubFor(remoteDispatcher).at(address);
+ }*/
+}
diff --git a/src/main/java/org/gcube/common/storagehub/client/StreamDescriptor.java b/src/main/java/org/gcube/common/storagehub/client/StreamDescriptor.java
new file mode 100644
index 0000000..46ffbd8
--- /dev/null
+++ b/src/main/java/org/gcube/common/storagehub/client/StreamDescriptor.java
@@ -0,0 +1,24 @@
+package org.gcube.common.storagehub.client;
+
+import java.io.InputStream;
+
+public class StreamDescriptor {
+
+ private InputStream stream;
+ private String fileName;
+
+ public StreamDescriptor(InputStream stream, String fileName) {
+ super();
+ this.stream = stream;
+ this.fileName = fileName;
+ }
+
+ public InputStream getStream() {
+ return stream;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
+
+}
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
new file mode 100644
index 0000000..930217a
--- /dev/null
+++ b/src/main/java/org/gcube/common/storagehub/client/plugins/AbstractPlugin.java
@@ -0,0 +1,56 @@
+package org.gcube.common.storagehub.client.plugins;
+
+import javax.ws.rs.client.WebTarget;
+
+import org.gcube.common.clients.Plugin;
+import org.gcube.common.clients.ProxyBuilder;
+import org.gcube.common.clients.ProxyBuilderImpl;
+import org.gcube.common.storagehub.client.Constants;
+import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
+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();
+
+
+ public static ProxyBuilder item() {
+ return new ProxyBuilderImpl(item_plugin);
+ }
+
+ public static ProxyBuilder workspace() {
+ return new ProxyBuilderImpl(workspace_plugin);
+ }
+
+ public final String name;
+
+ public AbstractPlugin(String name) {
+ this.name=name;
+ }
+
+ @Override
+ public String serviceClass() {
+ return Constants.SERVICE_CLASS;
+ }
+
+ @Override
+ public String serviceName() {
+ return Constants.SERVICE_NAME;
+ }
+
+ @Override
+ public String namespace() {
+ return Constants.NAMESPACE;
+ }
+
+ @Override
+ public String name() {
+ return name;
+ }
+
+}
\ 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
new file mode 100644
index 0000000..83780f8
--- /dev/null
+++ b/src/main/java/org/gcube/common/storagehub/client/plugins/ItemManagerPlugin.java
@@ -0,0 +1,45 @@
+package org.gcube.common.storagehub.client.plugins;
+
+import javax.ws.rs.client.WebTarget;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.ws.EndpointReference;
+
+import org.gcube.common.calls.jaxrs.GcubeService;
+import org.gcube.common.calls.jaxrs.TargetFactory;
+import org.gcube.common.clients.config.ProxyConfig;
+import org.gcube.common.clients.delegates.ProxyDelegate;
+import org.gcube.common.storagehub.client.Constants;
+import org.gcube.common.storagehub.client.proxies.DefaultItemManager;
+import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
+import org.w3c.dom.Node;
+
+public class ItemManagerPlugin extends AbstractPlugin {
+
+ public ItemManagerPlugin() {
+ super("storagehub/workspace");
+ }
+
+ @Override
+ public Exception convert(Exception e, ProxyConfig, ?> arg1) {
+ return e;
+ }
+
+ @Override
+ public ItemManagerClient newProxy(ProxyDelegate delegate) {
+ return new DefaultItemManager(delegate);
+ }
+
+ @Override
+ public WebTarget resolve(EndpointReference epr, ProxyConfig, ?> config)
+ throws Exception {
+ DOMResult result = new DOMResult();
+ epr.writeTo(result);
+ Node node =result.getNode();
+ Node child=node.getFirstChild();
+ String address = child.getTextContent();
+ GcubeService service = GcubeService.service().withName(Constants.MANAGER_QNAME).andPath("item");
+ return TargetFactory.stubFor(service).at(address);
+
+ }
+
+}
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
new file mode 100644
index 0000000..c4fcc72
--- /dev/null
+++ b/src/main/java/org/gcube/common/storagehub/client/plugins/WorkspaceManagerPlugin.java
@@ -0,0 +1,44 @@
+package org.gcube.common.storagehub.client.plugins;
+
+import javax.ws.rs.client.WebTarget;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.ws.EndpointReference;
+
+import org.gcube.common.calls.jaxrs.GcubeService;
+import org.gcube.common.calls.jaxrs.TargetFactory;
+import org.gcube.common.clients.config.ProxyConfig;
+import org.gcube.common.clients.delegates.ProxyDelegate;
+import org.gcube.common.storagehub.client.Constants;
+import org.gcube.common.storagehub.client.proxies.DefaultWorkspaceManager;
+import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient;
+import org.w3c.dom.Node;
+
+public class WorkspaceManagerPlugin extends AbstractPlugin {
+
+ public WorkspaceManagerPlugin() {
+ super("storagehub/workspace");
+ }
+
+ @Override
+ public Exception convert(Exception e, ProxyConfig, ?> arg1) {
+ return e;
+ }
+
+ @Override
+ public WorkspaceManagerClient newProxy(ProxyDelegate delegate) {
+ return new DefaultWorkspaceManager(delegate);
+ }
+
+ @Override
+ public WebTarget resolve(EndpointReference epr, ProxyConfig, ?> config)
+ throws Exception {
+ DOMResult result = new DOMResult();
+ epr.writeTo(result);
+ Node node =result.getNode();
+ Node child=node.getFirstChild();
+ String address = child.getTextContent();
+ GcubeService service = GcubeService.service().withName(Constants.MANAGER_QNAME).useRootPath();
+ return TargetFactory.stubFor(service).at(address);
+
+ }
+}
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
new file mode 100644
index 0000000..9d86aad
--- /dev/null
+++ b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultItemManager.java
@@ -0,0 +1,71 @@
+package org.gcube.common.storagehub.client.proxies;
+
+import java.io.InputStream;
+import java.util.List;
+
+import javax.ws.rs.client.Invocation;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.gcube.common.clients.Call;
+import org.gcube.common.clients.delegates.ProxyDelegate;
+import org.gcube.common.storagehub.client.StreamDescriptor;
+import org.gcube.common.storagehub.model.items.Item;
+import org.gcube.common.storagehub.model.service.ItemList;
+
+public class DefaultItemManager implements ItemManagerClient {
+
+ private final ProxyDelegate delegate;
+
+
+ public DefaultItemManager(ProxyDelegate config){
+ this.delegate = config;
+ }
+
+
+ @Override
+ public List extends Item> getChildren(String id, String ... excludeNodes) {
+ Call call = new Call() {
+ @Override
+ public ItemList call(WebTarget manager) throws Exception {
+ WebTarget myManager = manager.path(id).path("children");
+ if (excludeNodes !=null && excludeNodes.length>0)
+ myManager = myManager.queryParam("exclude",excludeNodes);
+ Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
+ ItemList response = builder.get(ItemList.class);
+ return response;
+ }
+ };
+ try {
+ ItemList result = delegate.make(call);
+ return result.getItemlist();
+ }catch(Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+
+ @Override
+ public StreamDescriptor download(String id) {
+ Call call = new Call() {
+ @Override
+ public StreamDescriptor call(WebTarget manager) throws Exception {
+ WebTarget myManager = manager.path(id).path("download");
+ Invocation.Builder builder = myManager.request(MediaType.APPLICATION_OCTET_STREAM);
+ Response resp = builder.get();
+ InputStream stream = resp.readEntity(InputStream.class);
+ String disposition = resp.getHeaderString("Content-Disposition");
+ String fileName = disposition.replaceFirst("attachment; filename = ([^/s]+)?", "$1");
+ return new StreamDescriptor(stream, fileName);
+ }
+ };
+ try {
+ StreamDescriptor result = delegate.make(call);
+ return result;
+ }catch(Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
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
new file mode 100644
index 0000000..b83a424
--- /dev/null
+++ b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultWorkspaceManager.java
@@ -0,0 +1,46 @@
+package org.gcube.common.storagehub.client.proxies;
+
+import java.util.List;
+
+import javax.ws.rs.client.Invocation;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.MediaType;
+
+import org.gcube.common.clients.Call;
+import org.gcube.common.clients.delegates.ProxyDelegate;
+import org.gcube.common.storagehub.model.items.Item;
+import org.gcube.common.storagehub.model.service.ItemList;
+
+public class DefaultWorkspaceManager implements WorkspaceManagerClient {
+
+ private final ProxyDelegate delegate;
+
+
+ public DefaultWorkspaceManager(ProxyDelegate config){
+ this.delegate = config;
+ }
+
+
+ @Override
+ public List extends Item> getWorkspace(String... excludeNodes) {
+ Call call = new Call() {
+ @Override
+ public ItemList call(WebTarget manager) throws Exception {
+ WebTarget myManager = manager;
+ if (excludeNodes !=null && excludeNodes.length>0)
+ myManager = myManager.queryParam("exclude",excludeNodes);
+ Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
+ ItemList response = builder.get(ItemList.class);
+ System.out.println(myManager.getUri().toString());
+ return response;
+ }
+ };
+ try {
+ ItemList result = delegate.make(call);
+ return result.getItemlist();
+ }catch(Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
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
new file mode 100644
index 0000000..ab86457
--- /dev/null
+++ b/src/main/java/org/gcube/common/storagehub/client/proxies/ItemManagerClient.java
@@ -0,0 +1,19 @@
+package org.gcube.common.storagehub.client.proxies;
+
+import java.io.InputStream;
+import java.util.List;
+
+import org.gcube.common.storagehub.client.StreamDescriptor;
+import org.gcube.common.storagehub.model.items.Item;
+
+
+
+public interface ItemManagerClient {
+
+ //List extends Item> listByPath(String path, String ... excludeNodes);
+
+ List extends Item> getChildren(String id, String ... excludeNodes);
+
+ StreamDescriptor download(String id);
+
+}
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
new file mode 100644
index 0000000..2811841
--- /dev/null
+++ b/src/main/java/org/gcube/common/storagehub/client/proxies/WorkspaceManagerClient.java
@@ -0,0 +1,11 @@
+package org.gcube.common.storagehub.client.proxies;
+
+import java.util.List;
+
+import org.gcube.common.storagehub.model.items.Item;
+
+public interface WorkspaceManagerClient {
+
+ List extends Item> 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
new file mode 100644
index 0000000..6a313e3
--- /dev/null
+++ b/src/test/java/org/gcube/data/access/fs/Items.java
@@ -0,0 +1,127 @@
+package org.gcube.data.access.fs;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.List;
+
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.Invocation;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.gcube.common.storagehub.model.Path;
+import org.gcube.common.storagehub.model.items.FolderItem;
+import org.gcube.common.storagehub.model.items.GenericFileItem;
+import org.gcube.common.storagehub.model.items.Item;
+import org.gcube.common.storagehub.model.query.ItemFilter;
+import org.gcube.common.storagehub.model.query.OrderBy;
+import org.gcube.common.storagehub.model.service.ItemList;
+import org.gcube.common.storagehub.model.service.ItemWrapper;
+import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.media.multipart.FormDataMultiPart;
+import org.glassfish.jersey.media.multipart.MultiPart;
+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 Items {
+
+ /*
+
+ static String baseUrl="http://workspace-repository1-d.d4science.org/storagehub";
+
+
+
+ public static List extends Item> list(OrderBy order, Path path, ItemFilter> ... filters){
+ Client client = ClientBuilder.newClient();
+ WebTarget webTarget = client.target(baseUrl+"/list/byPath?gcube-token=595ca591-9921-423c-bfca-f8be19f05882-98187548");
+ Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
+ List extends Item> r = invocationBuilder.get(ItemList.class).getItemlist();
+ return r;
+
+ }
+
+ public static void createFolder(){
+ //Client client = ClientBuilder.newClient();
+ Client client = ClientBuilder.newBuilder()
+ .register(MultiPartFeature.class).build();
+ WebTarget webTarget = client.target(baseUrl+"/item/create?gcube-token=595ca591-9921-423c-bfca-f8be19f05882-98187548");
+
+ FolderItem folder= new FolderItem();
+ folder.setName("My third folder");
+ folder.setTitle("My third title");
+ final MultiPart multiPart = new FormDataMultiPart()
+ .field("item", new ItemWrapper(folder), MediaType.APPLICATION_JSON_TYPE)
+ /* .field("characterProfile", jsonToSend, MediaType.APPLICATION_JSON_TYPE)
+ .field("filename", fileToUpload.getName(), MediaType.TEXT_PLAIN_TYPE)
+ .bodyPart(fileDataBodyPart)*/;
+/*
+ Response res = webTarget.request().post(Entity.entity(multiPart, multiPart.getMediaType()));
+ System.out.println("status is "+res.getStatus());
+
+ }
+
+ public static void create() throws Exception{
+
+
+ ClientConfig clientConfig = new ClientConfig();
+ clientConfig.property("DEFAULT_CHUNK_SIZE", 2048);
+
+ Clie
+
+ //Client client = ClientBuilder.newClient();
+ Client client = ClientBuilder.newClient(clientConfig)
+ .register(MultiPartFeature.class);
+
+ WebTarget webTarget = client.target(baseUrl+"/item/create?gcube-token=595ca591-9921-423c-bfca-f8be19f05882-98187548");
+
+ GenericFileItem folder= new GenericFileItem();
+ folder.setName("testUpload.tar.gz");
+ folder.setTitle("testUpload.tar.gz");
+
+ FileDataBodyPart fileDataBodyPart = new FileDataBodyPart("file", new File("/home/lucio/Downloads/testUpload.tar.gz"));
+ final MultiPart multiPart = new FormDataMultiPart().field("item", new ItemWrapper(folder), MediaType.APPLICATION_JSON_TYPE)
+ .bodyPart(fileDataBodyPart, MediaType.APPLICATION_OCTET_STREAM_TYPE);
+ multiPart.close();
+
+ Response res = webTarget.request().post(Entity.entity(multiPart, multiPart.getMediaType()));
+ System.out.println("status is "+res.getStatus());
+
+ }
+
+ public static void get() throws Exception{
+ Client client = ClientBuilder.newClient();
+ WebTarget webTarget = client.target(baseUrl+"/item/6e9b8350-4854-4c22-8aa1-ba2d8135ad6d/download?gcube-token=950a0702-6ada-40e9-92dc-d243d1b45206-98187548");
+ Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_OCTET_STREAM);
+ Response res = invocationBuilder.get();
+
+
+ byte[] buf = new byte[1024];
+ /*while (is.read(buf)!=-1)
+ System.out.println("reading the buffer");
+ */
+
+/*
+ }
+
+
+ public static T copy(T item, Path path){
+ return null;
+ }
+
+ public static T move(T item, Path path){
+ return null;
+ }
+
+ public static T unshareAll(T item){
+ return null;
+ }
+*/
+
+ }
diff --git a/src/test/java/org/gcube/data/access/fs/TestCall.java b/src/test/java/org/gcube/data/access/fs/TestCall.java
new file mode 100644
index 0000000..3e72867
--- /dev/null
+++ b/src/test/java/org/gcube/data/access/fs/TestCall.java
@@ -0,0 +1,75 @@
+package org.gcube.data.access.fs;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.util.List;
+
+import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
+import org.gcube.common.scope.api.ScopeProvider;
+import org.gcube.common.storagehub.client.StreamDescriptor;
+import org.gcube.common.storagehub.client.plugins.AbstractPlugin;
+import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
+import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient;
+import org.gcube.common.storagehub.model.items.Item;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class TestCall {
+
+ @BeforeClass
+ public static void setUp(){
+ SecurityTokenProvider.instance.set("94a3b80a-c66f-4000-ae2f-230f5dfad793-98187548");
+ ScopeProvider.instance.set("/gcube/devNext");
+ }
+
+ @Test
+ public void getListByPath(){
+ long start = System.currentTimeMillis();
+ WorkspaceManagerClient client = AbstractPlugin.workspace().build();
+ List extends Item> items =client.getWorkspace("hl:accounting");
+ System.out.println("took: "+(System.currentTimeMillis()-start)+" for items "+items.size());
+ items.forEach(i -> System.out.println(i.getTitle()+" "+i.getId()+" "+i.isLocked()));
+ }
+
+ @Test
+ public void getById() throws Exception{
+ long start = System.currentTimeMillis();
+ ItemManagerClient client = AbstractPlugin.item().build();
+ client.getChildren("07cd8d55-a35b-4445-9680-c98f158c55de", "hl:accounting", "jcr:content").forEach(i -> System.out.println(i.getName()+" "+i.getId()));
+ System.out.println("took: "+(System.currentTimeMillis()-start) );
+
+ }
+
+ @Test
+ public void download() throws Exception{
+ ItemManagerClient client = AbstractPlugin.item().build();
+ StreamDescriptor streamDescr = client.download("07cd8d55-a35b-4445-9680-c98f158c55de");
+ File output = Files.createTempFile("down", streamDescr.getFileName()).toFile();
+ try (BufferedInputStream bi = new BufferedInputStream(streamDescr.getStream()); FileOutputStream fo = new FileOutputStream(output)){
+ byte[] buf = new byte[2048];
+ int read = -1;
+ while ((read=bi.read(buf))!=-1) {
+ fo.write(buf, 0, read);
+ }
+ }
+
+ System.out.println("file written "+output.getAbsolutePath());
+
+
+ }
+
+/*
+ @Test
+ public void createFolder() throws Exception{
+ Items.createFolder();
+ }
+
+ @Test
+ public void createFile() throws Exception{
+ Items.create();
+ }*/
+}