diff --git a/CHANGELOG.md b/CHANGELOG.md index 7275702..37cb186 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm # Changelog for org.gcube.data.transfer.data-transfer-library +##[v1.2.3-SNAPSHOT] 2020-12-01 + +* Deletion method +* GetInfo method +* GetStream method + ##[v1.2.2] 2020-07-16 ### Fixes diff --git a/pom.xml b/pom.xml index 1199fa8..778119c 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ org.gcube.data.transfer data-transfer-library - 1.2.2 + 1.2.3-SNAPSHOT DataTransfer-library Data Transfer Service client library @@ -53,19 +53,19 @@ org.gcube.data.transfer data-transfer-model - [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + [1.0.0,2.0.0) org.gcube.contentmanagement storage-manager-core - [2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT) + [2.0.0, 3.0.0) org.gcube.contentmanagement storage-manager-wrapper - [2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT) + [2.0.0, 3.0.0) @@ -94,26 +94,6 @@ slf4j-api - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/java/org/gcube/data/transfer/library/client/Client.java b/src/main/java/org/gcube/data/transfer/library/client/Client.java index dd3ac11..1db9e4e 100644 --- a/src/main/java/org/gcube/data/transfer/library/client/Client.java +++ b/src/main/java/org/gcube/data/transfer/library/client/Client.java @@ -1,5 +1,7 @@ package org.gcube.data.transfer.library.client; +import java.io.InputStream; + import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; @@ -9,6 +11,7 @@ import javax.ws.rs.core.Response; import org.gcube.data.transfer.library.faults.CommunicationException; import org.gcube.data.transfer.library.faults.RemoteServiceException; import org.gcube.data.transfer.library.faults.ServiceNotFoundException; +import org.gcube.data.transfer.model.RemoteFileDescriptor; import org.gcube.data.transfer.model.ServiceConstants; import org.gcube.data.transfer.model.TransferCapabilities; import org.gcube.data.transfer.model.TransferRequest; @@ -87,11 +90,57 @@ public class Client { } } - protected void checkResponse(Response toCheck) throws Exception{ switch(toCheck.getStatusInfo().getFamily()){ case SUCCESSFUL : break; default : throw new Exception("Unexpected Response code : "+toCheck.getStatus()); } } + + + public void delete(RemoteFileDescriptor remote) throws RemoteServiceException { + delete(remote.getPersistenceId()+"/"+remote.getPath()); + } + + public RemoteFileDescriptor getInfo(RemoteFileDescriptor remote) throws RemoteServiceException { + return getInfo(remote.getPersistenceId()+"/"+remote.getPath()); + } + + public InputStream getInputStream(RemoteFileDescriptor remote) throws RemoteServiceException { + return getInputStream(remote.getPersistenceId()+"/"+remote.getPath()); + } + + + public void delete(String path) throws RemoteServiceException { + log.debug("Deleting {} at []",path,endpoint); + try { + Response resp=rootTarget.path(ServiceConstants.REST_SERVLET_NAME).path(path).request().delete(); + checkResponse(resp); + }catch(Exception e){ + throw new RemoteServiceException(e); + } + } + + public RemoteFileDescriptor getInfo(String path) throws RemoteServiceException { + log.debug("GetInfo of {} at []",path,endpoint); + try { + + Response resp= rootTarget.path(ServiceConstants.REST_SERVLET_NAME).path(path).queryParam("descriptor",true).request(MediaType.APPLICATION_JSON_TYPE).get(); + checkResponse(resp); + return resp.readEntity(RemoteFileDescriptor.class); + }catch(Exception e){ + throw new RemoteServiceException(e); + } + } + + public InputStream getInputStream(String path) throws RemoteServiceException { + log.debug("Get InputStream of {} at []",path,endpoint); + try { + Response resp=rootTarget.path(ServiceConstants.REST_SERVLET_NAME).path(path).queryParam("descriptor",true).request().get(); + checkResponse(resp); + return resp.readEntity(InputStream.class); + }catch(Exception e){ + throw new RemoteServiceException(e); + } + } } diff --git a/src/test/java/org/gcube/data/transfer/library/TestClientCalls.java b/src/test/java/org/gcube/data/transfer/library/TestClientCalls.java index 51c573c..b5aa12e 100644 --- a/src/test/java/org/gcube/data/transfer/library/TestClientCalls.java +++ b/src/test/java/org/gcube/data/transfer/library/TestClientCalls.java @@ -14,6 +14,7 @@ import org.gcube.data.transfer.library.faults.RemoteServiceException; import org.gcube.data.transfer.library.faults.ServiceNotFoundException; import org.gcube.data.transfer.model.Destination; import org.gcube.data.transfer.model.DestinationClashPolicy; +import org.gcube.data.transfer.model.RemoteFileDescriptor; import org.gcube.data.transfer.model.ServiceConstants; import org.gcube.data.transfer.model.TransferCapabilities; import org.gcube.data.transfer.model.TransferRequest; @@ -28,11 +29,10 @@ import org.junit.Test; public class TestClientCalls { -// static String hostname="http://thredds-d-d4s.d4science.org:80"; - static String hostname="https://geoserver1.dev.d4science.org"; -// static String hostname="https://geoserver1-spatial-dev.d4science.org"; - static String scope="/gcube/devNext/NextNext"; // static String scope="/pred4s/preprod/preVRE"; +// static String hostname="https://thredds-pre-d4s.d4science.org"; + static String hostname="https://geoserver1.dev.d4science.org"; + static String scope="/gcube/devsec/devVRE"; static Client client; @@ -48,15 +48,25 @@ public class TestClientCalls { System.out.println(client.getCapabilties()); } +// @Test +// public void list() throws RemoteServiceException, CommunicationException { +// for(String persistanceID:client.getCapabilties().getAvailablePersistenceIds()) +// System.out.println(client.getInfo(persistanceID)); +// } + @Test public void doTheTransfer() throws MalformedURLException, RemoteServiceException{ - Destination dest=new Destination("outputFile"); + System.out.println("Transferred "+transfer()); + } + + private RemoteFileDescriptor transfer() throws RemoteServiceException, MalformedURLException { + Destination dest=new Destination("readme.md"); dest.setCreateSubfolders(true); dest.setSubFolder("bla/bla/bllaaa"); dest.setOnExistingFileName(DestinationClashPolicy.ADD_SUFFIX); dest.setOnExistingSubFolder(DestinationClashPolicy.APPEND); - TransferRequest request= new TransferRequest("", new HttpDownloadSettings(new URL("http://no.com"), HttpDownloadOptions.DEFAULT),dest); + TransferRequest request= new TransferRequest("", new HttpDownloadSettings(new URL("https://code-repo.d4science.org/gCubeSystem/data-transfer-library/raw/branch/master/README.md"), HttpDownloadOptions.DEFAULT),dest); System.out.println("Submitting "+request); TransferTicket ticket=client.submit(request); System.out.println("Ticket is "+ticket); @@ -70,9 +80,11 @@ public class TestClientCalls { Thread.sleep(1000); }catch(InterruptedException e){} }while(continuePolling); + + Destination result=ticket.getDestinationSettings(); + return client.getInfo(result.getPersistenceId()+"/"+dest.getSubFolder()+ticket.getDestinationFileName().substring(ticket.getDestinationFileName().lastIndexOf("/"))); } - @Test public void directCall(){ @@ -89,4 +101,28 @@ public class TestClientCalls { System.out.println(cap.getAvailablePersistenceIds()); } + + @Test + public void delete() throws RemoteServiceException, MalformedURLException { + RemoteFileDescriptor remote=transfer(); + client.delete(remote); + // try to delete parent + client.delete(remote.getPersistenceId()+"/"+remote.getPath()); + } + + @Test + public void openStream() throws RemoteServiceException, MalformedURLException { + RemoteFileDescriptor remote=transfer(); + client.getInputStream(remote); + //try stream parent + client.getInputStream(remote.getPersistenceId()+"/"+remote.getPath()); + } + + @Test + public void inspect() throws RemoteServiceException, MalformedURLException { + transfer(); + RemoteFileDescriptor remote=transfer(); + System.out.println("Remote folder children are : "+client.getInfo(remote.getPersistenceId()+"/"+remote.getPath())); + client.getInfo(remote); + } } diff --git a/src/test/java/org/gcube/data/transfer/library/TransfererTest.java b/src/test/java/org/gcube/data/transfer/library/TransfererTest.java index e6826c5..9d22e9e 100644 --- a/src/test/java/org/gcube/data/transfer/library/TransfererTest.java +++ b/src/test/java/org/gcube/data/transfer/library/TransfererTest.java @@ -32,9 +32,9 @@ import org.junit.Test; public class TransfererTest { - static String hostname="http://geoserver1.dev.d4science.org:80"; + static String hostname="http://geoserver1.dev.d4science.org"; // static String nodeId="462b68c5-463f-4295-86da-37d6c0abc7ea"; - static String scope="/gcube/devsec/devVRE"; + static String scope="/gcube/devNext/NextNext"; static DataTransferClient client;