git-svn-id: https://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/Common/storagehub-client@171537 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
b27b10d794
commit
045c149b70
4
pom.xml
4
pom.xml
|
@ -29,11 +29,11 @@
|
|||
|
||||
<dependencies>
|
||||
|
||||
<!-- <dependency>
|
||||
<dependency>
|
||||
<groupId>org.gcube.common</groupId>
|
||||
<artifactId>gxRest</artifactId>
|
||||
<version>[1.0.0-SNAPSHOT,2.0.0-SNAPSHOT)</version>
|
||||
</dependency> -->
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
|
|
|
@ -15,10 +15,10 @@ public class StorageHubClient {
|
|||
return new FolderContainer(itemclient, wsClient.getWorkspace());
|
||||
}
|
||||
|
||||
public OpenResolver open(Path relativePath) {
|
||||
/* public OpenResolver open(Path relativePath) {
|
||||
Item item = wsClient.retieveItemByPath(relativePath.toPath());
|
||||
return new OpenResolver(item, itemclient);
|
||||
}
|
||||
}*/
|
||||
|
||||
public OpenResolver open(String id) {
|
||||
Item item = itemclient.get(id);
|
||||
|
|
|
@ -5,6 +5,7 @@ import javax.ws.rs.client.WebTarget;
|
|||
import org.gcube.common.clients.Plugin;
|
||||
import org.gcube.common.clients.ProxyBuilder;
|
||||
import org.gcube.common.clients.ProxyBuilderImpl;
|
||||
import org.gcube.common.gxrest.request.GXWebTargetAdapterRequest;
|
||||
import org.gcube.common.storagehub.client.Constants;
|
||||
import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
|
||||
import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient;
|
||||
|
@ -20,11 +21,11 @@ public abstract class AbstractPlugin<S,P> implements Plugin<S,P> {
|
|||
|
||||
|
||||
public static ProxyBuilder<ItemManagerClient> item() {
|
||||
return new ProxyBuilderImpl<WebTarget,ItemManagerClient>(item_plugin);
|
||||
return new ProxyBuilderImpl<GXWebTargetAdapterRequest,ItemManagerClient>(item_plugin);
|
||||
}
|
||||
|
||||
public static ProxyBuilder<WorkspaceManagerClient> workspace() {
|
||||
return new ProxyBuilderImpl<WebTarget,WorkspaceManagerClient>(workspace_plugin);
|
||||
return new ProxyBuilderImpl<GXWebTargetAdapterRequest,WorkspaceManagerClient>(workspace_plugin);
|
||||
}
|
||||
|
||||
public final String name;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package org.gcube.common.storagehub.client.plugins;
|
||||
|
||||
import javax.ws.rs.client.WebTarget;
|
||||
import javax.xml.transform.dom.DOMResult;
|
||||
import javax.xml.ws.EndpointReference;
|
||||
|
||||
|
@ -8,12 +7,13 @@ import org.gcube.common.calls.jaxrs.GcubeService;
|
|||
import org.gcube.common.calls.jaxrs.TargetFactory;
|
||||
import org.gcube.common.clients.config.ProxyConfig;
|
||||
import org.gcube.common.clients.delegates.ProxyDelegate;
|
||||
import org.gcube.common.gxrest.request.GXWebTargetAdapterRequest;
|
||||
import org.gcube.common.storagehub.client.Constants;
|
||||
import org.gcube.common.storagehub.client.proxies.DefaultItemManager;
|
||||
import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
public class ItemManagerPlugin extends AbstractPlugin<WebTarget, ItemManagerClient> {
|
||||
public class ItemManagerPlugin extends AbstractPlugin<GXWebTargetAdapterRequest, ItemManagerClient> {
|
||||
|
||||
public ItemManagerPlugin() {
|
||||
super("storagehub/workspace");
|
||||
|
@ -25,18 +25,19 @@ public class ItemManagerPlugin extends AbstractPlugin<WebTarget, ItemManagerClie
|
|||
}
|
||||
|
||||
@Override
|
||||
public ItemManagerClient newProxy(ProxyDelegate<WebTarget> delegate) {
|
||||
public ItemManagerClient newProxy(ProxyDelegate<GXWebTargetAdapterRequest> delegate) {
|
||||
return new DefaultItemManager(delegate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WebTarget resolve(EndpointReference epr, ProxyConfig<?, ?> config)
|
||||
public GXWebTargetAdapterRequest resolve(EndpointReference epr, ProxyConfig<?, ?> config)
|
||||
throws Exception {
|
||||
DOMResult result = new DOMResult();
|
||||
epr.writeTo(result);
|
||||
Node node =result.getNode();
|
||||
Node child=node.getFirstChild();
|
||||
String address = child.getTextContent();
|
||||
//GXWebTargetAdapterRequest request = GXWebTargetAdapterRequest.newRequest(address).path(this.name).path("items");
|
||||
GcubeService service = GcubeService.service().withName(Constants.MANAGER_QNAME).andPath("items");
|
||||
return TargetFactory.stubFor(service).at(address);
|
||||
|
||||
|
|
|
@ -8,12 +8,13 @@ import org.gcube.common.calls.jaxrs.GcubeService;
|
|||
import org.gcube.common.calls.jaxrs.TargetFactory;
|
||||
import org.gcube.common.clients.config.ProxyConfig;
|
||||
import org.gcube.common.clients.delegates.ProxyDelegate;
|
||||
import org.gcube.common.gxrest.request.GXWebTargetAdapterRequest;
|
||||
import org.gcube.common.storagehub.client.Constants;
|
||||
import org.gcube.common.storagehub.client.proxies.DefaultWorkspaceManager;
|
||||
import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient;
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
public class WorkspaceManagerPlugin extends AbstractPlugin<WebTarget, WorkspaceManagerClient> {
|
||||
public class WorkspaceManagerPlugin extends AbstractPlugin<GXWebTargetAdapterRequest, WorkspaceManagerClient> {
|
||||
|
||||
public WorkspaceManagerPlugin() {
|
||||
super("storagehub/workspace");
|
||||
|
@ -25,12 +26,12 @@ public class WorkspaceManagerPlugin extends AbstractPlugin<WebTarget, WorkspaceM
|
|||
}
|
||||
|
||||
@Override
|
||||
public WorkspaceManagerClient newProxy(ProxyDelegate<WebTarget> delegate) {
|
||||
public WorkspaceManagerClient newProxy(ProxyDelegate<GXWebTargetAdapterRequest> delegate) {
|
||||
return new DefaultWorkspaceManager(delegate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WebTarget resolve(EndpointReference epr, ProxyConfig<?, ?> config)
|
||||
public GXWebTargetAdapterRequest resolve(EndpointReference epr, ProxyConfig<?, ?> config)
|
||||
throws Exception {
|
||||
DOMResult result = new DOMResult();
|
||||
epr.writeTo(result);
|
||||
|
@ -38,7 +39,6 @@ public class WorkspaceManagerPlugin extends AbstractPlugin<WebTarget, WorkspaceM
|
|||
Node child=node.getFirstChild();
|
||||
String address = child.getTextContent();
|
||||
GcubeService service = GcubeService.service().withName(Constants.MANAGER_QNAME).useRootPath();
|
||||
return TargetFactory.stubFor(service).at(address);
|
||||
|
||||
return TargetFactory.stubFor(service).at(address);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,12 +2,13 @@ package org.gcube.common.storagehub.client.proxies;
|
|||
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.ws.rs.client.Entity;
|
||||
import javax.ws.rs.client.Invocation;
|
||||
import javax.ws.rs.client.WebTarget;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.MultivaluedHashMap;
|
||||
import javax.ws.rs.core.MultivaluedMap;
|
||||
|
@ -15,42 +16,46 @@ import javax.ws.rs.core.Response;
|
|||
|
||||
import org.gcube.common.clients.Call;
|
||||
import org.gcube.common.clients.delegates.ProxyDelegate;
|
||||
import org.gcube.common.gxrest.request.GXWebTargetAdapterRequest;
|
||||
import org.gcube.common.gxrest.response.inbound.GXInboundResponse;
|
||||
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.MultiPart;
|
||||
import org.glassfish.jersey.media.multipart.MultiPartFeature;
|
||||
import org.glassfish.jersey.media.multipart.file.FileDataBodyPart;
|
||||
import org.glassfish.jersey.media.multipart.file.StreamDataBodyPart;
|
||||
|
||||
public class DefaultItemManager implements ItemManagerClient {
|
||||
|
||||
private final ProxyDelegate<WebTarget> delegate;
|
||||
private final ProxyDelegate<GXWebTargetAdapterRequest> delegate;
|
||||
|
||||
|
||||
public DefaultItemManager(ProxyDelegate<WebTarget> config){
|
||||
public DefaultItemManager(ProxyDelegate<GXWebTargetAdapterRequest> config){
|
||||
this.delegate = config;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<? extends Item> getChildren(String id, String ... excludeNodes) {
|
||||
Call<WebTarget, ItemList> call = new Call<WebTarget, ItemList>() {
|
||||
Call<GXWebTargetAdapterRequest, ItemList> call = new Call<GXWebTargetAdapterRequest, ItemList>() {
|
||||
@Override
|
||||
public ItemList call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path(id).path("children");
|
||||
public ItemList call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path(id).path("children");
|
||||
Map<String, Object[]> params = new HashMap<>();
|
||||
if (excludeNodes !=null && excludeNodes.length>0)
|
||||
myManager = myManager.queryParam("exclude",excludeNodes);
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
ItemList response = builder.get(ItemList.class);
|
||||
return response;
|
||||
params.put("exclude",excludeNodes);
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.APPLICATION_JSON_TYPE).queryParams(params).get();
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
ItemList items = response.getSource().readEntity(ItemList.class);
|
||||
|
||||
return items;
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
@ -64,14 +69,22 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
|
||||
@Override
|
||||
public StreamDescriptor download(String id, String... excludeNodes) {
|
||||
Call<WebTarget, StreamDescriptor> call = new Call<WebTarget, StreamDescriptor>() {
|
||||
Call<GXWebTargetAdapterRequest, StreamDescriptor> call = new Call<GXWebTargetAdapterRequest, StreamDescriptor>() {
|
||||
@Override
|
||||
public StreamDescriptor call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path(id).path("download");
|
||||
public StreamDescriptor call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path(id).path("download");
|
||||
Map<String, Object[]> params = new HashMap<>();
|
||||
|
||||
if (excludeNodes !=null && excludeNodes.length>0)
|
||||
myManager = myManager.queryParam("exclude",excludeNodes);
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_OCTET_STREAM);
|
||||
Response resp = builder.get();
|
||||
params.put("exclude",excludeNodes);
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.APPLICATION_OCTET_STREAM_TYPE).queryParams(params).get();
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
Response resp = response.getSource();
|
||||
|
||||
InputStream stream = resp.readEntity(InputStream.class);
|
||||
String disposition = resp.getHeaderString("Content-Disposition");
|
||||
String fileName = disposition.replaceFirst("attachment; filename = ([^/s]+)?", "$1");
|
||||
|
@ -89,15 +102,24 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
|
||||
@Override
|
||||
public Item get(String id, String... excludeNodes) {
|
||||
Call<WebTarget, ItemWrapper<Item>> call = new Call<WebTarget, ItemWrapper<Item>>() {
|
||||
Call<GXWebTargetAdapterRequest, ItemWrapper<Item>> call = new Call<GXWebTargetAdapterRequest, ItemWrapper<Item>>() {
|
||||
@Override
|
||||
public ItemWrapper<Item> call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path(id);
|
||||
public ItemWrapper<Item> call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path(id);
|
||||
Map<String, Object[]> params = new HashMap<>();
|
||||
|
||||
if (excludeNodes !=null && excludeNodes.length>0)
|
||||
myManager = myManager.queryParam("exclude",excludeNodes);
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
ItemWrapper<Item> response = builder.get(ItemWrapper.class);
|
||||
return response;
|
||||
params.put("exclude",excludeNodes);
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.APPLICATION_JSON_TYPE).queryParams(params).get();
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
ItemWrapper<Item> item = response.getSource().readEntity(ItemWrapper.class);
|
||||
|
||||
|
||||
return item;
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
@ -110,13 +132,19 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
|
||||
@Override
|
||||
public Item getRootSharedFolder(String id) {
|
||||
Call<WebTarget, ItemWrapper<Item>> call = new Call<WebTarget, ItemWrapper<Item>>() {
|
||||
Call<GXWebTargetAdapterRequest, ItemWrapper<Item>> call = new Call<GXWebTargetAdapterRequest, ItemWrapper<Item>>() {
|
||||
@Override
|
||||
public ItemWrapper<Item> call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path(id).path("rootSharedFolder");
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
ItemWrapper<Item> response = builder.get(ItemWrapper.class);
|
||||
return response;
|
||||
public ItemWrapper<Item> call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path(id).path("rootSharedFolder");
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.APPLICATION_JSON_TYPE).get();
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
ItemWrapper<Item> item = response.getSource().readEntity(ItemWrapper.class);
|
||||
|
||||
|
||||
return item;
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
@ -130,13 +158,18 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
|
||||
@Override
|
||||
public URL getPublickLink(String id) {
|
||||
Call<WebTarget, URL> call = new Call<WebTarget, URL>() {
|
||||
Call<GXWebTargetAdapterRequest, URL> call = new Call<GXWebTargetAdapterRequest, URL>() {
|
||||
@Override
|
||||
public URL call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path(id).path("publiclink");
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
URL response = builder.get(URL.class);
|
||||
return response;
|
||||
public URL call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path(id).path("publiclink");
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.TEXT_PLAIN_TYPE).get();
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
URL item = response.getSource().readEntity(URL.class);
|
||||
|
||||
return item;
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
@ -149,16 +182,28 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
|
||||
@Override
|
||||
public List<? extends Item> getChildren(String id, int start, int limit, String... excludeNodes) {
|
||||
Call<WebTarget, ItemList> call = new Call<WebTarget, ItemList>() {
|
||||
Call<GXWebTargetAdapterRequest, ItemList> call = new Call<GXWebTargetAdapterRequest, ItemList>() {
|
||||
@Override
|
||||
public ItemList call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path(id).path("children").path("paged");
|
||||
public ItemList call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path(id).path("children").path("paged");
|
||||
Map<String, Object[]> params = new HashMap<>();
|
||||
|
||||
|
||||
if (excludeNodes !=null && excludeNodes.length>0)
|
||||
myManager = myManager.queryParam("exclude",excludeNodes);
|
||||
myManager = myManager.queryParam("start", start).queryParam("limit", limit);
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
ItemList response = builder.get(ItemList.class);
|
||||
return response;
|
||||
params.put("exclude",excludeNodes);
|
||||
|
||||
params.put("start", new Object[] {start});
|
||||
params.put("limit", new Object[] {limit});
|
||||
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.APPLICATION_JSON_TYPE).queryParams(params).get();
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
ItemList items = response.getSource().readEntity(ItemList.class);
|
||||
|
||||
return items;
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
@ -171,15 +216,23 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
|
||||
@Override
|
||||
public List<? extends Item> findChildrenByNamePattern(String id, String name, String... excludeNodes) {
|
||||
Call<WebTarget, ItemList> call = new Call<WebTarget, ItemList>() {
|
||||
Call<GXWebTargetAdapterRequest, ItemList> call = new Call<GXWebTargetAdapterRequest, ItemList>() {
|
||||
@Override
|
||||
public ItemList call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path(id).path("items").path(name);
|
||||
public ItemList call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path(id).path("items").path(name);
|
||||
Map<String, Object[]> params = new HashMap<>();
|
||||
|
||||
if (excludeNodes !=null && excludeNodes.length>0)
|
||||
myManager = myManager.queryParam("exclude",excludeNodes);
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
ItemList response = builder.get(ItemList.class);
|
||||
return response;
|
||||
params.put("exclude",excludeNodes);
|
||||
|
||||
GXInboundResponse response = myManager.queryParams(params).setAcceptedResponseType(MediaType.APPLICATION_JSON_TYPE).get();
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
ItemList items = response.getSource().readEntity(ItemList.class);
|
||||
|
||||
return items;
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
@ -193,13 +246,17 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
|
||||
@Override
|
||||
public Integer childrenCount(String id) {
|
||||
Call<WebTarget, Integer> call = new Call<WebTarget, Integer>() {
|
||||
Call<GXWebTargetAdapterRequest, Integer> call = new Call<GXWebTargetAdapterRequest, Integer>() {
|
||||
@Override
|
||||
public Integer call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path(id).path("children").path("count");
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
Integer response = builder.get(Integer.class);
|
||||
return response;
|
||||
public Integer call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path(id).path("children").path("count");
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.TEXT_PLAIN_TYPE).get();
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
return response.getSource().readEntity(Integer.class);
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
@ -213,21 +270,24 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
|
||||
@Override
|
||||
public String uploadFile(InputStream stream, String parentId, String fileName, String description) {
|
||||
Call<WebTarget, String> call = new Call<WebTarget, String>() {
|
||||
Call<GXWebTargetAdapterRequest, String> call = new Call<GXWebTargetAdapterRequest, String>() {
|
||||
@Override
|
||||
public String call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.register(MultiPartFeature.class).path(parentId)
|
||||
public String call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.register(MultiPartFeature.class).path(parentId)
|
||||
.path("create").path("FILE");
|
||||
Invocation.Builder builder = myManager.request();
|
||||
|
||||
|
||||
FormDataMultiPart multipart = new FormDataMultiPart();
|
||||
|
||||
multipart.field("name", fileName);
|
||||
multipart.field("description", description);
|
||||
multipart.field("file", stream, MediaType.APPLICATION_OCTET_STREAM_TYPE);
|
||||
String response = builder.post(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE),String.class);
|
||||
return response;
|
||||
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.TEXT_PLAIN_TYPE).post(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE));
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
return response.getSource().readEntity(String.class);
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
@ -239,19 +299,22 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
|
||||
@Override
|
||||
public String uploadArchive(InputStream stream, String parentId, String extractionFolderName) {
|
||||
Call<WebTarget, String> call = new Call<WebTarget, String>() {
|
||||
Call<GXWebTargetAdapterRequest, String> call = new Call<GXWebTargetAdapterRequest, String>() {
|
||||
@Override
|
||||
public String call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.register(MultiPartFeature.class).path(parentId)
|
||||
public String call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.register(MultiPartFeature.class).path(parentId)
|
||||
.path("create").path("ARCHIVE");
|
||||
Invocation.Builder builder = myManager.request();
|
||||
|
||||
|
||||
FormDataMultiPart multipart = new FormDataMultiPart();
|
||||
|
||||
multipart.field("parentFolderName", extractionFolderName);
|
||||
multipart.field("file", stream, MediaType.APPLICATION_OCTET_STREAM_TYPE);
|
||||
String response = builder.post(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE),String.class);
|
||||
return response;
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.TEXT_PLAIN_TYPE).post(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE));
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
return response.getSource().readEntity(String.class);
|
||||
|
||||
}
|
||||
};
|
||||
|
@ -262,20 +325,27 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public String createFolder(String parentId, String name, String description) {
|
||||
Call<WebTarget, String> call = new Call<WebTarget, String>() {
|
||||
Call<GXWebTargetAdapterRequest, String> call = new Call<GXWebTargetAdapterRequest, String>() {
|
||||
@Override
|
||||
public String call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path(parentId)
|
||||
.path("create").path("FOLDER").queryParam("name", name).queryParam("description", description);
|
||||
Invocation.Builder builder = myManager.request();
|
||||
|
||||
public String call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path(parentId)
|
||||
.path("create").path("FOLDER");
|
||||
|
||||
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);
|
||||
return response;
|
||||
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.TEXT_PLAIN_TYPE).post(Entity.form(formData));
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
return response.getSource().readEntity(String.class);
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
@ -287,18 +357,24 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
|
||||
@Override
|
||||
public String shareFolder(String id, Set<String> users, AccessType accessType) {
|
||||
Call<WebTarget, String> call = new Call<WebTarget, String>() {
|
||||
Call<GXWebTargetAdapterRequest, String> call = new Call<GXWebTargetAdapterRequest, String>() {
|
||||
@Override
|
||||
public String call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.register(MultiPartFeature.class).path(id)
|
||||
public String call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
System.out.println("id is: "+id);
|
||||
|
||||
GXWebTargetAdapterRequest 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;
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.TEXT_PLAIN_TYPE).put(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE));
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
return response.getSource().readEntity(String.class);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -311,17 +387,20 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
|
||||
@Override
|
||||
public String unshareFolder(String id, Set<String> users) {
|
||||
Call<WebTarget, String> call = new Call<WebTarget, String>() {
|
||||
Call<GXWebTargetAdapterRequest, String> call = new Call<GXWebTargetAdapterRequest, String>() {
|
||||
@Override
|
||||
public String call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.register(MultiPartFeature.class).path(id)
|
||||
public String call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.register(MultiPartFeature.class).path(id)
|
||||
.path("unshare");
|
||||
Invocation.Builder builder = myManager.request();
|
||||
|
||||
|
||||
try (FormDataMultiPart multipart = new FormDataMultiPart()){
|
||||
multipart.field("users", users, MediaType.APPLICATION_JSON_TYPE);
|
||||
String response = builder.put(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE),String.class);
|
||||
return response;
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.TEXT_PLAIN_TYPE).put(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE));
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
return response.getSource().readEntity(String.class);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -334,12 +413,14 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
|
||||
@Override
|
||||
public void delete(String id) {
|
||||
Call<WebTarget, Void> call = new Call<WebTarget, Void>() {
|
||||
Call<GXWebTargetAdapterRequest, Void> call = new Call<GXWebTargetAdapterRequest, Void>() {
|
||||
@Override
|
||||
public Void call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path(id);
|
||||
Invocation.Builder builder = myManager.request();
|
||||
builder.delete(String.class);
|
||||
public Void call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path(id);
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.TEXT_PLAIN_TYPE).delete();
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
@ -352,15 +433,21 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
|
||||
@Override
|
||||
public List<? extends Item> getAnchestors(String id, String... excludeNodes) {
|
||||
Call<WebTarget, ItemList> call = new Call<WebTarget, ItemList>() {
|
||||
Call<GXWebTargetAdapterRequest, ItemList> call = new Call<GXWebTargetAdapterRequest, ItemList>() {
|
||||
@Override
|
||||
public ItemList call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path(id).path("anchestors");
|
||||
public ItemList call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path(id).path("anchestors");
|
||||
Map<String, Object[]> params = new HashMap<>();
|
||||
|
||||
if (excludeNodes !=null && excludeNodes.length>0)
|
||||
myManager = myManager.queryParam("exclude",excludeNodes);
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
ItemList response = builder.get(ItemList.class);
|
||||
return response;
|
||||
params.put("exclude",excludeNodes);
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.APPLICATION_JSON_TYPE).queryParams(params).get();
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
return response.getSource().readEntity(ItemList.class);
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
@ -373,13 +460,16 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
|
||||
@Override
|
||||
public List<ACL> getACL(String id) {
|
||||
Call<WebTarget, ACLList> call = new Call<WebTarget, ACLList>() {
|
||||
Call<GXWebTargetAdapterRequest, ACLList> call = new Call<GXWebTargetAdapterRequest, ACLList>() {
|
||||
@Override
|
||||
public ACLList call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path(id).path("acls");
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
ACLList response = builder.get(ACLList.class);
|
||||
return response;
|
||||
public ACLList call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path(id).path("acls");
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.APPLICATION_JSON_TYPE).get();
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
return response.getSource().readEntity(ACLList.class);
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
|
|
@ -1,15 +1,19 @@
|
|||
package org.gcube.common.storagehub.client.proxies;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ws.rs.client.Entity;
|
||||
import javax.ws.rs.client.Invocation;
|
||||
import javax.ws.rs.client.WebTarget;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
|
||||
import org.gcube.common.clients.Call;
|
||||
import org.gcube.common.clients.delegates.ProxyDelegate;
|
||||
import org.gcube.common.gxrest.request.GXWebTargetAdapterRequest;
|
||||
import org.gcube.common.gxrest.response.inbound.GXInboundResponse;
|
||||
import org.gcube.common.storagehub.model.expressions.OrderField;
|
||||
import org.gcube.common.storagehub.model.expressions.SearchableItem;
|
||||
import org.gcube.common.storagehub.model.items.Item;
|
||||
|
@ -21,24 +25,31 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|||
|
||||
public class DefaultWorkspaceManager implements WorkspaceManagerClient {
|
||||
|
||||
private final ProxyDelegate<WebTarget> delegate;
|
||||
private final ProxyDelegate<GXWebTargetAdapterRequest> delegate;
|
||||
|
||||
|
||||
public DefaultWorkspaceManager(ProxyDelegate<WebTarget> config){
|
||||
|
||||
public DefaultWorkspaceManager(ProxyDelegate<GXWebTargetAdapterRequest> config){
|
||||
this.delegate = config;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Item> T getWorkspace(String ... excludeNodes) {
|
||||
Call<WebTarget, ItemWrapper<T>> call = new Call<WebTarget, ItemWrapper<T>>() {
|
||||
Call<GXWebTargetAdapterRequest, ItemWrapper<T>> call = new Call<GXWebTargetAdapterRequest, ItemWrapper<T>>() {
|
||||
@Override
|
||||
public ItemWrapper<T> call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager;
|
||||
public ItemWrapper<T> call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager;
|
||||
|
||||
Map<String, Object[]> params = new HashMap<>();
|
||||
|
||||
if (excludeNodes !=null && excludeNodes.length>0)
|
||||
myManager = myManager.queryParam("exclude",excludeNodes);
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
ItemWrapper<T> response = builder.get(ItemWrapper.class);
|
||||
return response;
|
||||
params.put("exclude",excludeNodes);
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.APPLICATION_JSON_TYPE).queryParams(params).get();
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
return response.getSource().readEntity(ItemWrapper.class);
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
@ -48,16 +59,17 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient {
|
|||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@Override
|
||||
public <T extends Item> T retieveItemByPath(String relativePath, String... excludeNodes) {
|
||||
Call<WebTarget, ItemWrapper<T>> call = new Call<WebTarget, ItemWrapper<T>>() {
|
||||
Call<GXWebTargetAdapterRequest, ItemWrapper<T>> call = new Call<GXWebTargetAdapterRequest, ItemWrapper<T>>() {
|
||||
@Override
|
||||
public ItemWrapper<T> call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager;
|
||||
public ItemWrapper<T> call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager;
|
||||
if (excludeNodes !=null && excludeNodes.length>0)
|
||||
myManager = myManager.queryParam("exclude",excludeNodes);
|
||||
|
||||
|
||||
myManager = manager.queryParam("relPath", relativePath);
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
ItemWrapper<T> response = builder.get(ItemWrapper.class);
|
||||
|
@ -70,19 +82,24 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient {
|
|||
}catch(Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}*/
|
||||
|
||||
@Override
|
||||
public List<? extends Item> getVreFolders(String ... excludeNodes) {
|
||||
Call<WebTarget, ItemList> call = new Call<WebTarget, ItemList>() {
|
||||
Call<GXWebTargetAdapterRequest, ItemList> call = new Call<GXWebTargetAdapterRequest, ItemList>() {
|
||||
@Override
|
||||
public ItemList call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path("vrefolders");
|
||||
public ItemList call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path("vrefolders");
|
||||
Map<String, Object[]> params = new HashMap<>();
|
||||
|
||||
if (excludeNodes !=null && excludeNodes.length>0)
|
||||
myManager = myManager.queryParam("exclude",excludeNodes);
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
ItemList response = builder.get(ItemList.class);
|
||||
return response;
|
||||
params.put("exclude",excludeNodes);
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.APPLICATION_JSON_TYPE).queryParams(params).get();
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
return response.getSource().readEntity(ItemList.class);
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
@ -92,21 +109,27 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient {
|
|||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<? extends Item> getVreFolders(int start, int limit, String ... excludeNodes) {
|
||||
Call<WebTarget, ItemList> call = new Call<WebTarget, ItemList>() {
|
||||
Call<GXWebTargetAdapterRequest, ItemList> call = new Call<GXWebTargetAdapterRequest, ItemList>() {
|
||||
@Override
|
||||
public ItemList call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path("vrefolders");
|
||||
public ItemList call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path("vrefolders").path("paged");
|
||||
Map<String, Object[]> params = new HashMap<>();
|
||||
|
||||
if (excludeNodes !=null && excludeNodes.length>0)
|
||||
myManager = myManager.queryParam("exclude",excludeNodes);
|
||||
|
||||
myManager = myManager.queryParam("start", start).queryParam("limit", limit);
|
||||
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
ItemList response = builder.get(ItemList.class);
|
||||
return response;
|
||||
params.put("exclude",excludeNodes);
|
||||
|
||||
params.put("start", new Object[] {start});
|
||||
params.put("limit", new Object[] {limit});
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.APPLICATION_JSON_TYPE).queryParams(params).get();
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
return response.getSource().readEntity(ItemList.class);
|
||||
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
@ -119,16 +142,19 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient {
|
|||
|
||||
@Override
|
||||
public <T extends Item> T getVreFolder(String ... excludeNodes) {
|
||||
Call<WebTarget, ItemWrapper<T>> call = new Call<WebTarget, ItemWrapper<T>>() {
|
||||
Call<GXWebTargetAdapterRequest, ItemWrapper<T>> call = new Call<GXWebTargetAdapterRequest, ItemWrapper<T>>() {
|
||||
@Override
|
||||
public ItemWrapper<T> call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path("vrefolder");
|
||||
public ItemWrapper<T> call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path("vrefolder");
|
||||
Map<String, Object[]> params = new HashMap<>();
|
||||
|
||||
if (excludeNodes !=null && excludeNodes.length>0)
|
||||
myManager = myManager.queryParam("exclude",excludeNodes);
|
||||
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
ItemWrapper<T> response = builder.get(ItemWrapper.class);
|
||||
return response;
|
||||
params.put("exclude",excludeNodes);
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.APPLICATION_JSON_TYPE).queryParams(params).get();
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
return response.getSource().readEntity(ItemWrapper.class);
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
@ -138,116 +164,19 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient {
|
|||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<? extends Item> getRecentModifiedFilePerVre() {
|
||||
Call<WebTarget, ItemList> call = new Call<WebTarget, ItemList>() {
|
||||
Call<GXWebTargetAdapterRequest, ItemList> call = new Call<GXWebTargetAdapterRequest, ItemList>() {
|
||||
@Override
|
||||
public ItemList call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path("vrefolder").path("recents");
|
||||
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
ItemList response = builder.get(ItemList.class);
|
||||
return response;
|
||||
}
|
||||
};
|
||||
try {
|
||||
ItemList result = delegate.make(call);
|
||||
return result.getItemlist();
|
||||
}catch(Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Item> T getTrashFolder(String ... excludeNodes) {
|
||||
Call<WebTarget, ItemWrapper<T>> call = new Call<WebTarget, ItemWrapper<T>>() {
|
||||
@Override
|
||||
public ItemWrapper<T> call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path("trash");
|
||||
if (excludeNodes !=null && excludeNodes.length>0)
|
||||
myManager = myManager.queryParam("exclude",excludeNodes);
|
||||
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
ItemWrapper<T> response = builder.get(ItemWrapper.class);
|
||||
return response;
|
||||
}
|
||||
};
|
||||
try {
|
||||
ItemWrapper<T> result = delegate.make(call);
|
||||
return result.getItem();
|
||||
}catch(Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void emptyTrash(String id) {
|
||||
Call<WebTarget, Void> call = new Call<WebTarget, Void>() {
|
||||
@Override
|
||||
public Void call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path("trash").path("empty");
|
||||
Invocation.Builder builder = myManager.request();
|
||||
builder.delete();
|
||||
return null;
|
||||
}
|
||||
};
|
||||
try {
|
||||
delegate.make(call);
|
||||
}catch(Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String restoreFromTrash(final String id) {
|
||||
Call<WebTarget, String> call = new Call<WebTarget, String>() {
|
||||
@Override
|
||||
public String call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path("trash").path("restore");
|
||||
Invocation.Builder builder = myManager.request();
|
||||
return builder.put(Entity.text(id)).readEntity(String.class);
|
||||
}
|
||||
};
|
||||
try {
|
||||
return delegate.make(call);
|
||||
}catch(Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Item> search(Query<SearchableItem<?>> query, String ... excludeNodes) {
|
||||
Call<WebTarget, ItemList> call = new Call<WebTarget, ItemList>() {
|
||||
@Override
|
||||
public ItemList call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.path("query");
|
||||
if (excludeNodes !=null && excludeNodes.length>0)
|
||||
myManager = myManager.queryParam("exclude",excludeNodes);
|
||||
|
||||
if (query.getOrderFields() !=null && query.getOrderFields().size() >0) {
|
||||
for (OrderField field :query.getOrderFields())
|
||||
myManager = myManager.queryParam("o","["+field.getField().getName()+"] "+field.getMode().toString());
|
||||
}
|
||||
|
||||
myManager = myManager.queryParam("n", query.getSearchableItem().getNodeValue());
|
||||
|
||||
if (query.getLimit()!=-1)
|
||||
myManager = myManager.queryParam("l", query.getLimit());
|
||||
|
||||
if (query.getOffset()!=-1)
|
||||
myManager = myManager.queryParam("f", query.getOffset());
|
||||
|
||||
|
||||
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
String serializedJson = mapper.writeValueAsString(query.getExpression());
|
||||
|
||||
myManager = myManager.queryParam("e", URLEncoder.encode(serializedJson));
|
||||
|
||||
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
|
||||
ItemList response = builder.get(ItemList.class);
|
||||
return response;
|
||||
public ItemList call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path("vrefolder").path("recents");
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.APPLICATION_JSON_TYPE).get();
|
||||
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
return response.getSource().readEntity(ItemList.class);
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
@ -258,6 +187,121 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public <T extends Item> T getTrashFolder(String ... excludeNodes) {
|
||||
Call<GXWebTargetAdapterRequest, ItemWrapper<T>> call = new Call<GXWebTargetAdapterRequest, ItemWrapper<T>>() {
|
||||
@Override
|
||||
public ItemWrapper<T> call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path("trash");
|
||||
Map<String, Object[]> params = new HashMap<>();
|
||||
|
||||
if (excludeNodes !=null && excludeNodes.length>0)
|
||||
params.put("exclude",excludeNodes);
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.APPLICATION_JSON_TYPE).queryParams(params).get();
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
return response.getSource().readEntity(ItemWrapper.class);
|
||||
}
|
||||
};
|
||||
try {
|
||||
ItemWrapper<T> result = delegate.make(call);
|
||||
return result.getItem();
|
||||
}catch(Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void emptyTrash(String id) {
|
||||
Call<GXWebTargetAdapterRequest, Void> call = new Call<GXWebTargetAdapterRequest, Void>() {
|
||||
@Override
|
||||
public Void call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path("trash").path("empty");
|
||||
|
||||
GXInboundResponse response = myManager.delete();
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
try {
|
||||
delegate.make(call);
|
||||
}catch(Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String restoreFromTrash(final String id) {
|
||||
Call<GXWebTargetAdapterRequest, String> call = new Call<GXWebTargetAdapterRequest, String>() {
|
||||
@Override
|
||||
public String call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path("trash").path("restore");
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.TEXT_PLAIN_TYPE).put(Entity.text(id));
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
|
||||
return response.getSource().readEntity(String.class);
|
||||
}
|
||||
};
|
||||
try {
|
||||
return delegate.make(call);
|
||||
}catch(Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Item> search(Query<SearchableItem<?>> query, String ... excludeNodes) {
|
||||
Call<GXWebTargetAdapterRequest, ItemList> call = new Call<GXWebTargetAdapterRequest, ItemList>() {
|
||||
@Override
|
||||
public ItemList call(GXWebTargetAdapterRequest manager) throws Exception {
|
||||
GXWebTargetAdapterRequest myManager = manager.path("query");
|
||||
Map<String, Object[]> params = new HashMap<>();
|
||||
|
||||
if (excludeNodes !=null && excludeNodes.length>0)
|
||||
params.put("exclude",excludeNodes);
|
||||
|
||||
if (query.getOrderFields() !=null && query.getOrderFields().size() >0) {
|
||||
List<String> orders = new ArrayList<>();
|
||||
for (OrderField field :query.getOrderFields())
|
||||
orders.add(String.format("[%s]%s",field.getField().getName(),field.getMode().toString()));
|
||||
params.put("o", orders.toArray(new Object[orders.size()]));
|
||||
}
|
||||
|
||||
params.put("n", new Object[] {query.getSearchableItem().getNodeValue()});
|
||||
|
||||
if (query.getLimit()!=-1)
|
||||
params.put("l", new Object[] { query.getLimit()});
|
||||
|
||||
if (query.getOffset()!=-1)
|
||||
params.put("f", new Object[] { query.getOffset()});
|
||||
|
||||
|
||||
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
String serializedJson = mapper.writeValueAsString(query.getExpression());
|
||||
|
||||
params.put("e", new Object[] { URLEncoder.encode(serializedJson)});
|
||||
|
||||
GXInboundResponse response = myManager.setAcceptedResponseType(MediaType.APPLICATION_JSON_TYPE).queryParams(params).get();
|
||||
if (response.hasGXError())
|
||||
throw response.getException();
|
||||
return response.getSource().readEntity(ItemList.class);
|
||||
}
|
||||
};
|
||||
try {
|
||||
ItemList result = delegate.make(call);
|
||||
return result.getItemlist();
|
||||
}catch(Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ public interface WorkspaceManagerClient {
|
|||
|
||||
<T extends Item> T getWorkspace(String ... excludeNodes);
|
||||
|
||||
<T extends Item> T retieveItemByPath(String relativePath, String ... excludeNodes);
|
||||
//<T extends Item> T retieveItemByPath(String relativePath, String ... excludeNodes);
|
||||
|
||||
List<? extends Item> getVreFolders(String ... excludeNodes);
|
||||
|
||||
|
|
|
@ -46,6 +46,9 @@ public class Items {
|
|||
ScopeProvider.instance.set("/gcube");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void uploadFile() throws Exception {
|
||||
StorageHubClient shc = new StorageHubClient();
|
||||
|
|
|
@ -48,9 +48,9 @@ public class TestCall {
|
|||
@BeforeClass
|
||||
public static void setUp(){
|
||||
|
||||
SecurityTokenProvider.instance.set("0e2c7963-8d3e-4ea6-a56d-ffda530dd0fa-98187548");
|
||||
//SecurityTokenProvider.instance.set("0e2c7963-8d3e-4ea6-a56d-ffda530dd0fa-98187548");
|
||||
//token costantino 9ca79556-54b0-4bbf-ab0f-151ae326f4cf-98187548
|
||||
//SecurityTokenProvider.instance.set("9ca79556-54b0-4bbf-ab0f-151ae326f4cf-98187548");
|
||||
SecurityTokenProvider.instance.set("d9431600-9fef-41a7-946d-a5b402de30d6-98187548");
|
||||
ScopeProvider.instance.set("/gcube");
|
||||
}
|
||||
|
||||
|
@ -91,6 +91,13 @@ public class TestCall {
|
|||
itemclient.shareFolder("86e8472a-6f66-4608-9d70-20102c9172ce", new HashSet<>(Arrays.asList("costantino.perciante")), AccessType.READ_ONLY);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void restore() {
|
||||
|
||||
WorkspaceManagerClient client = AbstractPlugin.workspace().build();
|
||||
client.restoreFromTrash("82af9e1c-6cc7-4e16-bba5-9bec6545015a");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void unshareFolder() throws Exception{
|
||||
ItemManagerClient itemclient = AbstractPlugin.item().build();
|
||||
|
|
Loading…
Reference in New Issue