This commit is contained in:
Lucio Lelii 2018-06-29 13:03:05 +00:00
parent 12de03715f
commit 918784b355
4 changed files with 56 additions and 18 deletions

View File

@ -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>() {

View File

@ -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);
}

View File

@ -41,7 +41,6 @@ public class Items {
e.printStackTrace();
}
shc.getWSRoot().
}

View File

@ -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() {