From 3227f329900c8d71573437fc51f0394544b39573 Mon Sep 17 00:00:00 2001 From: Lucio Lelii Date: Wed, 5 Jun 2019 16:10:28 +0000 Subject: [PATCH] git-svn-id: https://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/Common/storagehub-client@179675 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/dsl/FolderContainer.java | 5 +++ .../client/proxies/DefaultItemManager.java | 41 +++++++++++++++++-- .../client/proxies/ItemManagerClient.java | 2 + 3 files changed, 45 insertions(+), 3 deletions(-) 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 75f2309..15f4499 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 @@ -4,6 +4,7 @@ import java.io.InputStream; import java.util.List; import java.util.Set; +import org.gcube.common.authorization.library.AuthorizationEntry; import org.gcube.common.storagehub.client.proxies.ItemManagerClient; import org.gcube.common.storagehub.model.acls.ACL; import org.gcube.common.storagehub.model.acls.AccessType; @@ -58,6 +59,10 @@ public class FolderContainer extends ItemContainer{ return itemclient.getACL(this.itemId); } + public boolean canWrite() throws Exception { + return itemclient.canWriteInto(this.itemId); + } + public ListResolver findByName(String namePattern) throws StorageHubException { return new ListResolver((onlyType, includeHidden, excludes) -> itemclient.findChildrenByNamePattern(itemId, namePattern , excludes), itemclient); } 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 f5fc38f..e5fbf03 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 @@ -1,8 +1,6 @@ package org.gcube.common.storagehub.client.proxies; -import java.io.IOException; import java.io.InputStream; -import java.io.StreamCorruptedException; import java.net.URL; import java.util.HashMap; import java.util.List; @@ -10,7 +8,6 @@ import java.util.Map; import java.util.Objects; import java.util.Set; -import javax.ws.rs.ProcessingException; import javax.ws.rs.client.Entity; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedHashMap; @@ -889,6 +886,44 @@ public class DefaultItemManager implements ItemManagerClient { } } + + + @Override + public boolean canWriteInto(String id) throws StorageHubException { + Call call = new Call() { + @Override + public Boolean call(GXWebTargetAdapterRequest manager) throws Exception { + Objects.requireNonNull(id, "id cannot be null"); + + GXWebTargetAdapterRequest myManager = manager.path(id).path("acls").path("write"); + + + GXInboundResponse response = myManager.get(); + + if (response.isErrorResponse()) { + if (response.hasException()) + throw response.getException(); + else + throw new BackendGenericError(); + } + + + return response.getSource().readEntity(Boolean.class); + + + } + }; + try { + return delegate.make(call); + }catch(StorageHubException e) { + throw e; + }catch(Exception e1) { + throw new RuntimeException(e1); + } + } + + + @Override public String changeACL(String id, String user, AccessType accessType) 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 1383f60..2f441d6 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 @@ -94,6 +94,8 @@ public interface ItemManagerClient { void delete(String id, boolean force) throws StorageHubException; + boolean canWriteInto(String id) throws StorageHubException; + }