git-svn-id: https://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/Common/storagehub-client@169547 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
12de03715f
commit
918784b355
|
@ -3,6 +3,7 @@ package org.gcube.common.storagehub.client.proxies;
|
|||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.ws.rs.client.Entity;
|
||||
import javax.ws.rs.client.Invocation;
|
||||
|
@ -16,19 +17,21 @@ 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.acls.ACL;
|
||||
import org.gcube.common.storagehub.model.acls.AccessType;
|
||||
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.gcube.common.storagehub.model.service.ItemList;
|
||||
import org.gcube.common.storagehub.model.service.ItemWrapper;
|
||||
import org.gcube.common.storagehub.model.types.ACLList;
|
||||
import org.glassfish.jersey.media.multipart.FormDataMultiPart;
|
||||
import org.glassfish.jersey.media.multipart.MultiPartFeature;
|
||||
|
||||
public class DefaultItemManager implements ItemManagerClient {
|
||||
|
||||
private final ProxyDelegate<WebTarget> delegate;
|
||||
|
||||
|
||||
|
||||
public DefaultItemManager(ProxyDelegate<WebTarget> config){
|
||||
this.delegate = config;
|
||||
}
|
||||
|
@ -55,7 +58,7 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public StreamDescriptor download(String id) {
|
||||
Call<WebTarget, StreamDescriptor> call = new Call<WebTarget, StreamDescriptor>() {
|
||||
|
@ -118,7 +121,7 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public URL getPublickLink(String id) {
|
||||
|
@ -138,7 +141,7 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<? extends Item> getChildren(String id, int start, int limit, String... excludeNodes) {
|
||||
Call<WebTarget, ItemList> call = new Call<WebTarget, ItemList>() {
|
||||
|
@ -181,7 +184,7 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public Integer childrenCount(String id) {
|
||||
|
@ -230,11 +233,11 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
WebTarget myManager = manager.path(parentId)
|
||||
.path("create").path("FOLDER").queryParam("name", name).queryParam("description", description);
|
||||
Invocation.Builder builder = myManager.request();
|
||||
|
||||
|
||||
MultivaluedMap<String, String> formData = new MultivaluedHashMap<String, String>();
|
||||
formData.add("name", name);
|
||||
formData.add("description", description);
|
||||
String response = builder.post(Entity.form(formData),String.class);
|
||||
formData.add("name", name);
|
||||
formData.add("description", description);
|
||||
String response = builder.post(Entity.form(formData),String.class);
|
||||
return response;
|
||||
}
|
||||
};
|
||||
|
@ -245,6 +248,30 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String shareFolder(String id, Set<String> users, AccessType accessType) {
|
||||
Call<WebTarget, String> call = new Call<WebTarget, String>() {
|
||||
@Override
|
||||
public String call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.register(MultiPartFeature.class).path(id)
|
||||
.path("share");
|
||||
Invocation.Builder builder = myManager.request();
|
||||
|
||||
try (FormDataMultiPart multipart = new FormDataMultiPart()){
|
||||
multipart.field("defaultAccessType", accessType, MediaType.APPLICATION_JSON_TYPE);
|
||||
multipart.field("users", users, MediaType.APPLICATION_JSON_TYPE);
|
||||
String response = builder.put(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE),String.class);
|
||||
return response;
|
||||
}
|
||||
}
|
||||
};
|
||||
try {
|
||||
return delegate.make(call);
|
||||
}catch(Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(String id) {
|
||||
Call<WebTarget, Void> call = new Call<WebTarget, Void>() {
|
||||
|
@ -252,8 +279,8 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
public Void call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path(id);
|
||||
Invocation.Builder builder = myManager.request();
|
||||
builder.delete();
|
||||
return null;
|
||||
builder.delete();
|
||||
return null;
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
@ -262,8 +289,8 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public List<? extends Item> getAnchestors(String id, String... excludeNodes) {
|
||||
Call<WebTarget, ItemList> call = new Call<WebTarget, ItemList>() {
|
||||
|
@ -284,7 +311,7 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<ACL> getACL(String id) {
|
||||
Call<WebTarget, ACLList> call = new Call<WebTarget, ACLList>() {
|
||||
|
|
|
@ -3,16 +3,16 @@ package org.gcube.common.storagehub.client.proxies;
|
|||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.gcube.common.storagehub.client.StreamDescriptor;
|
||||
import org.gcube.common.storagehub.model.acls.ACL;
|
||||
import org.gcube.common.storagehub.model.acls.AccessType;
|
||||
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);
|
||||
|
||||
|
@ -39,5 +39,7 @@ public interface ItemManagerClient {
|
|||
List<? extends Item> findChildrenByNamePattern(String id, String name, String ... excludeNodes);
|
||||
|
||||
Item getRootSharedFolder(String id);
|
||||
|
||||
String shareFolder(String id, Set<String> users, AccessType accessType);
|
||||
|
||||
}
|
||||
|
|
|
@ -41,7 +41,6 @@ public class Items {
|
|||
e.printStackTrace();
|
||||
}
|
||||
|
||||
shc.getWSRoot().
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -4,7 +4,9 @@ import java.io.BufferedInputStream;
|
|||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||
|
@ -15,6 +17,7 @@ import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
|
|||
import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient;
|
||||
import org.gcube.common.storagehub.model.Paths;
|
||||
import org.gcube.common.storagehub.model.acls.ACL;
|
||||
import org.gcube.common.storagehub.model.acls.AccessType;
|
||||
import org.gcube.common.storagehub.model.expressions.GenericSearchableItem;
|
||||
import org.gcube.common.storagehub.model.expressions.OrderField;
|
||||
import org.gcube.common.storagehub.model.expressions.OrderField.MODE;
|
||||
|
@ -164,7 +167,14 @@ public class TestCall {
|
|||
itemclient.createFolder(id,"sesto tentativo","6 tentativo");
|
||||
System.out.println("creating folder took total "+(System.currentTimeMillis()-start));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void share() {
|
||||
ItemManagerClient itemclient = AbstractPlugin.item().build();
|
||||
itemclient.shareFolder("4fd4a4ca-c615-4076-8eaa-70268e4f6166", new HashSet<>(Arrays.asList("francesco.mangiacrapa","massimiliano.assante","giancarlo.panichi")), AccessType.WRITE_OWNER);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void search() {
|
||||
|
||||
|
|
Loading…
Reference in New Issue