diff --git a/pom.xml b/pom.xml
index 2cc853a..4b5be37 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,6 +21,12 @@
2.0.0-SNAPSHOT
storagehub-client-library
+
+ 1.8
+ 1.8
+
+
+
@@ -33,6 +39,8 @@
+
+
@@ -81,7 +89,8 @@
org.slf4j
slf4j-api
-
+
+
junit
diff --git a/src/main/java/org/gcube/common/storagehub/client/dsl/FileContainer.java b/src/main/java/org/gcube/common/storagehub/client/dsl/FileContainer.java
index 5661821..ab7dbb2 100644
--- a/src/main/java/org/gcube/common/storagehub/client/dsl/FileContainer.java
+++ b/src/main/java/org/gcube/common/storagehub/client/dsl/FileContainer.java
@@ -39,6 +39,11 @@ public class FileContainer extends ItemContainer {
return itemclient.downloadSpecificVersion(this.itemId, versionName);
}
+ public FileContainer deleteVersion(String version) throws StorageHubException{
+ itemclient.deleteFileVersion(this.itemId, version);
+ return this;
+ }
+
public FileContainer copy(FolderContainer folder, String newFileName) throws StorageHubException {
return new FileContainer(itemclient, itemclient.copy(this.itemId, folder.get().getId(), newFileName));
}
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 9c64fa2..f5e68a0 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
@@ -5,7 +5,6 @@ import java.io.InputStream;
import java.net.URI;
import java.net.URL;
import java.net.URLEncoder;
-import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -36,10 +35,8 @@ import org.gcube.common.storagehub.model.service.Version;
import org.gcube.common.storagehub.model.service.VersionList;
import org.gcube.common.storagehub.model.types.ACLList;
import org.glassfish.jersey.media.multipart.BodyPart;
-import org.glassfish.jersey.media.multipart.ContentDisposition;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
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;
@@ -55,8 +52,6 @@ public class DefaultItemManager extends DefaultManagerClient implements ItemMana
super(delegate);
}
-
-
@Override
public StreamDescriptor resolvePublicLink(String identifier) throws StorageHubException{
@@ -414,6 +409,37 @@ public class DefaultItemManager extends DefaultManagerClient implements ItemMana
}
}
+ @Override
+ public void deleteFileVersion(String id, String versionName) throws StorageHubException {
+ Call call = new Call() {
+ @Override
+ public Void call(GXWebTargetAdapterRequest manager) throws Exception {
+ Objects.requireNonNull(id, "id cannot be null");
+ Objects.requireNonNull(versionName, "version name cannot be null");
+ GXWebTargetAdapterRequest myManager = manager.path(id).path("versions").path(versionName);
+
+ GXInboundResponse response = myManager.queryParams(initQueryParameters()).delete();
+
+ if (response.isErrorResponse()) {
+ if (response.hasException())
+ throw response.getException();
+ else
+ throw new BackendGenericError("HTTP error code is "+response.getHTTPCode());
+ }
+
+ return null;
+ }
+ };
+ try {
+ delegate.make(call);
+ }catch(StorageHubException e) {
+ throw e;
+ }catch(Exception e1) {
+ throw new RuntimeException(e1);
+ }
+ }
+
+
@Override
public Item get(String id, String... excludeNodes) throws StorageHubException {
Call> call = new Call>() {
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 84d7ebb..5ed19d0 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
@@ -92,6 +92,8 @@ public interface ItemManagerClient extends ManagerClient{
StreamDescriptor downloadSpecificVersion(String id, String version) throws StorageHubException;
+ void deleteFileVersion(String id, String versionName) throws StorageHubException;
+
String setMetadata(String id,Metadata metadata) throws StorageHubException;
String setHidden(String id,Boolean value) throws StorageHubException;
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 3c0d0b9..3b3322b 100644
--- a/src/test/java/org/gcube/data/access/fs/Items.java
+++ b/src/test/java/org/gcube/data/access/fs/Items.java
@@ -14,6 +14,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map.Entry;
import java.util.Properties;
+import java.util.stream.Collectors;
import java.util.stream.IntStream;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
@@ -31,6 +32,7 @@ import org.gcube.common.storagehub.client.proxies.UserManagerClient;
import org.gcube.common.storagehub.model.Metadata;
import org.gcube.common.storagehub.model.acls.AccessType;
import org.gcube.common.storagehub.model.exceptions.StorageHubException;
+import org.gcube.common.storagehub.model.items.AbstractFileItem;
import org.gcube.common.storagehub.model.items.FolderItem;
import org.gcube.common.storagehub.model.items.Item;
import org.junit.BeforeClass;
@@ -94,6 +96,19 @@ public class Items {
}
+
+
+ @Test
+ public void removeVersion() throws Exception {
+
+
+ StorageHubClient shc = new StorageHubClient();
+ String id = "024c8cab-f9f7-4fd8-bed2-f6076e5edf91";
+ FileContainer file = shc.open(id).asFile();
+ file.deleteVersion("1.0");
+
+ }
+
@Test
public void uploadTovolatile() throws StorageHubException {
StorageHubClient shc = new StorageHubClient();
@@ -112,6 +127,22 @@ public class Items {
}
+ @Test
+ public void uploadfile() {
+ try{
+ StorageHubClient shc = new StorageHubClient();
+ shc.impersonate("pasquale.pagano");
+ URI toUpload = new URI("https://data.d4science.org/shub/E_RGNhNU9aaVhZM3ovNEN2dEdtdXpCWitac0tScmMvcGZSeDlISUtOb2JOMklRQkxrdjBCWnJ4YlJHVlM4VnVjVQ==");
+ String fileName = "DRR014055.fastq.gz";
+
+ shc.open("514295c6-2176-49d5-9487-99fb0fb85372").asFolder().uploadFile(toUpload, fileName, "description");
+ //shc.uploadFileOnVolatile(fileIS, "zoom_amd645.deb", file.length());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+
@Test
public void removeTest() {
try {
@@ -130,11 +161,11 @@ public class Items {
}
}
-
-
-
-
-
+
+
+
+
+
@Test
public void stressTest() {
try {
@@ -184,7 +215,7 @@ public class Items {
for (int length; (length = is.read(buffer)) != -1; ) {}
}
System.out.println("downloaded file "+fileName);
-
+
}catch (Exception e) {
System.err.println("error downloading public link for id "+id);
e.printStackTrace();
@@ -566,8 +597,8 @@ public class Items {
}
}
-
-
+
+
@Test
public void deleteUnusefulUsers() throws Exception{
final UserManagerClient client = AbstractPlugin.users().build();