From ceb01cf16f2a250cbb75a96a4a0c15ed94377266 Mon Sep 17 00:00:00 2001 From: "lucio.lelii" Date: Thu, 28 Oct 2021 15:49:12 +0200 Subject: [PATCH] DefaultManager update --- pom.xml | 5 +- .../client/proxies/DefaultItemManager.java | 18 ++++--- .../java/org/gcube/data/access/fs/Items.java | 11 ++-- .../org/gcube/data/access/fs/TestCall.java | 52 ++++++++++++++----- 4 files changed, 60 insertions(+), 26 deletions(-) diff --git a/pom.xml b/pom.xml index 64db6ce..92f9e53 100644 --- a/pom.xml +++ b/pom.xml @@ -35,10 +35,7 @@ - - org.gcube.common - gxJRS - + junit junit 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 efd9038..6973369 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 @@ -34,8 +34,11 @@ import org.gcube.common.storagehub.model.service.ItemWrapper; 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.client.ClientProperties; +import org.glassfish.jersey.media.multipart.FormDataBodyPart; import org.glassfish.jersey.media.multipart.FormDataMultiPart; import org.glassfish.jersey.media.multipart.MultiPartFeature; +import org.glassfish.jersey.media.multipart.file.StreamDataBodyPart; public class DefaultItemManager implements ItemManagerClient { @@ -619,7 +622,6 @@ public class DefaultItemManager implements ItemManagerClient { } } -/* @Override public String uploadFile(InputStream stream, String parentId, String fileName, String description) throws StorageHubException { Call call = new Call() { @@ -629,7 +631,7 @@ public class DefaultItemManager implements ItemManagerClient { Objects.requireNonNull(parentId, "parentId cannot be null"); Objects.requireNonNull(fileName, "parentId cannot be null"); Objects.requireNonNull(description, "parentId cannot be null"); - + GXWebTargetAdapterRequest myManager = manager.register(MultiPartFeature.class).path(parentId) .path("create").path("FILE"); @@ -638,8 +640,12 @@ public class DefaultItemManager implements ItemManagerClient { multipart.field("name", fileName); multipart.field("description", description); - multipart.field("file", stream, MediaType.APPLICATION_OCTET_STREAM_TYPE); - + + + StreamDataBodyPart fdp = new StreamDataBodyPart("file", stream); + multipart.bodyPart(fdp); + + Entity entity = Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA); response = myManager.post(entity); @@ -662,7 +668,7 @@ public class DefaultItemManager implements ItemManagerClient { throw new RuntimeException(e1); } } -*/ +/* @Override public String uploadFile(InputStream stream, String parentId, String fileName, String description) throws StorageHubException { Call call = new Call() { @@ -705,7 +711,7 @@ public class DefaultItemManager implements ItemManagerClient { }catch(Exception e1) { throw new RuntimeException(e1); } - } + }*/ @Override public String uploadFile(URI uri, String parentId, String fileName, String description) 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 d9ed64c..943a4cf 100644 --- a/src/test/java/org/gcube/data/access/fs/Items.java +++ b/src/test/java/org/gcube/data/access/fs/Items.java @@ -44,7 +44,7 @@ public class Items { private static final String propFile = "C:\\Users\\tilli\\Documents\\eclipse\\tokens.properties"; - private static final String tokens = "prod-root"; + private static final String tokens = "dev-root"; //private static final String tokens = "prod-root"; @BeforeClass @@ -167,16 +167,19 @@ public class Items { StorageHubClient shc = new StorageHubClient(); - FolderContainer myRoot = shc.getWSRoot(); - try(InputStream is = new FileInputStream(new File("C:\\\\Users\\\\tilli\\\\Downloads\\\\Blue-Cloud_order_2021_10_15_1.zip"))){ - myRoot.uploadFile(is, "testUpload.zip", "file"); + long start = System.currentTimeMillis(); + + File inFile = new File("C:\\Users\\tilli\\Downloads\\testup.zip"); + try(InputStream is = new FileInputStream(inFile)){ + myRoot.uploadFile(is, "testUp.zip", "file"); } catch (Exception e) { e.printStackTrace(); } + System.out.println("Response in "+(System.currentTimeMillis()-start)); } diff --git a/src/test/java/org/gcube/data/access/fs/TestCall.java b/src/test/java/org/gcube/data/access/fs/TestCall.java index 22991d9..58761af 100644 --- a/src/test/java/org/gcube/data/access/fs/TestCall.java +++ b/src/test/java/org/gcube/data/access/fs/TestCall.java @@ -4,9 +4,10 @@ import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.net.URI; -import java.net.URL; import java.nio.file.Files; import java.util.Arrays; import java.util.HashMap; @@ -16,11 +17,14 @@ import java.util.Properties; import java.util.regex.Matcher; import java.util.regex.Pattern; +import javax.ws.rs.WebApplicationException; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.StreamingOutput; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.scope.api.ScopeProvider; @@ -42,13 +46,9 @@ import org.gcube.common.storagehub.model.expressions.logical.ISDescendant; import org.gcube.common.storagehub.model.items.AbstractFileItem; import org.gcube.common.storagehub.model.items.GCubeItem; import org.gcube.common.storagehub.model.items.Item; -import org.gcube.common.storagehub.model.messages.Message; import org.gcube.common.storagehub.model.query.Queries; import org.gcube.common.storagehub.model.query.Query; import org.glassfish.jersey.client.ClientProperties; -import org.glassfish.jersey.media.multipart.FormDataMultiPart; -import org.glassfish.jersey.media.multipart.MultiPartFeature; -import org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException; import org.junit.BeforeClass; import org.junit.Test; import org.slf4j.Logger; @@ -80,19 +80,19 @@ public class TestCall { } - + @Test public void sendMessagesWithAttachment() throws Exception { MessageManagerClient client = AbstractPlugin.messages().build(); client.sendMessage(Arrays.asList("massimiliano.assante"), "subject encodato ? è ", "è econdato ??", Arrays.asList("4827dd33-6eea-4bba-b78b-b98e2fd2ddfa")); } - + @Test public void setUnread() throws Exception { MessageManagerClient client = AbstractPlugin.messages().build(); client.setRead("f3b7ce40-28df-40b3-ad17-f0b9bd658016", false); } - + public void addUserToGroup() throws StorageHubException { GroupManagerClient client = AbstractPlugin.groups().build(); client.addUserToGroup("andrea.rossi", "gcube-devsec-devVRE"); @@ -128,8 +128,8 @@ public class TestCall { WorkspaceManagerClient client = AbstractPlugin.workspace().build(); System.out.println(client.restoreFromTrash("4fc0a9df-9a51-42ef-98f2-06c21bd0669b", "f3d336cc-cd00-48ba-8339-2bffcbef825e")); } - - + + public void unshareFolder() throws Exception{ ItemManagerClient itemclient = AbstractPlugin.item().build(); @@ -183,6 +183,34 @@ public class TestCall { client.createGcubeItem(ws.getId(), item); } + + @Test + public void uploadDirectJersey() throws Exception { + long start = System.currentTimeMillis(); + Client client = ClientBuilder.newClient(); + client.property(ClientProperties.REQUEST_ENTITY_PROCESSING, "CHUNKED").property(ClientProperties.CHUNKED_ENCODING_SIZE, 1024).property(ClientProperties.OUTBOUND_CONTENT_LENGTH_BUFFER, -1); + WebTarget target = client.target("https://workspace-repository.dev.d4science.org/storagehub/workspace/items/cc7513e7-fd93-4bfb-8e1b-bc9b32938c77/create/" + + "FILE?gcube-token=b7c80297-e4ed-42ab-ab42-fdc0b8b0eabf-98187548"); + + target = target.queryParam("name", "test2Gb.zip").queryParam("description", "description"); + + + File inFile = new File("C:\\Users\\tilli\\Downloads\\testup.zip"); + InputStream fileInStream = new FileInputStream(inFile); + + + //String contentDisposition = "attachment; filename=\"" + inFile.getName() + "\""; + System.out.println("sending: " + inFile.length() + " bytes..."); + System.setProperty("sun.net.http.allowRestrictedHeaders", "true"); + Response response = target + .request(MediaType.APPLICATION_OCTET_STREAM_TYPE) + //.header("Content-Disposition", contentDisposition) + //.header("Content-Length", inFile.length()) + .post(Entity.entity(fileInStream, MediaType.APPLICATION_OCTET_STREAM_TYPE)); + System.out.println("Response status: " + response.getStatus()+ " in "+(System.currentTimeMillis()-start)); + } + + @Test public void upload() throws Exception{ final ItemManagerClient client = AbstractPlugin.item().build(); @@ -191,7 +219,7 @@ public class TestCall { + "mioSBvOehbZlu54_jvscz8Zu3LXgqhr8RfJemd83QIh47z6TyMn3mD0OjpcG5g0qf9WUZCeW1J4btEqNObkaWv" + "pMhabvswweyFn1Jg4m5GpwCoKayvgsYYwjbjsGsQW5Hileiw=="); - + client.uploadFile(remote, "bc1c9525-43f7-4565-b5ea-0a0f9d7853a0", "5gb.zip", "description"); @@ -259,7 +287,7 @@ public class TestCall { @Test public void getRecents() { - + WorkspaceManagerClient wsclient = AbstractPlugin.workspace().build(); List items = wsclient.getRecentModifiedFilePerVre();