From 1871710e382e9d8e7ea5dc934d2c1cd53d50238b Mon Sep 17 00:00:00 2001 From: Lucio Lelii Date: Mon, 6 May 2019 10:05:07 +0000 Subject: [PATCH] git-svn-id: https://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/Common/storagehub-client@179272 82a268e6-3cf1-43bd-a215-b396298e98cf --- .project | 4 +- .../client/MyInputStreamProvider.java | 75 +++++++++++++++++++ .../client/plugins/ItemManagerPlugin.java | 2 + .../client/proxies/DefaultItemManager.java | 19 +++-- 4 files changed, 92 insertions(+), 8 deletions(-) create mode 100644 src/main/java/org/gcube/common/storagehub/client/MyInputStreamProvider.java diff --git a/.project b/.project index 66d8c31..316d756 100644 --- a/.project +++ b/.project @@ -16,12 +16,12 @@ - org.eclipse.m2e.core.maven2Builder + org.eclipse.wst.validation.validationbuilder - org.eclipse.wst.validation.validationbuilder + org.eclipse.m2e.core.maven2Builder diff --git a/src/main/java/org/gcube/common/storagehub/client/MyInputStreamProvider.java b/src/main/java/org/gcube/common/storagehub/client/MyInputStreamProvider.java new file mode 100644 index 0000000..4124452 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/client/MyInputStreamProvider.java @@ -0,0 +1,75 @@ +package org.gcube.common.storagehub.client; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.lang.annotation.Annotation; +import java.lang.reflect.Type; + +import javax.inject.Singleton; +import javax.ws.rs.Consumes; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.MultivaluedMap; + +import org.glassfish.jersey.message.internal.AbstractMessageReaderWriterProvider; +import org.glassfish.jersey.message.internal.ReaderInterceptorExecutor; + +@Produces({"application/octet-stream", "*/*"}) +@Consumes({"application/octet-stream", "*/*"}) +@Singleton +public final class MyInputStreamProvider extends AbstractMessageReaderWriterProvider { + + + + + @Override + public boolean isReadable(Class type, Type genericType, Annotation[] annotations, MediaType mediaType) { + return InputStream.class == type; + } + + @Override + public InputStream readFrom( + Class type, + Type genericType, + Annotation annotations[], + MediaType mediaType, + MultivaluedMap httpHeaders, + InputStream entityStream) throws IOException { + return ReaderInterceptorExecutor.closeableInputStream(entityStream); + } + + @Override + public boolean isWriteable(Class type, Type genericType, Annotation annotations[], MediaType mediaType) { + return InputStream.class.isAssignableFrom(type); + } + + @Override + public long getSize(InputStream t, Class type, Type genericType, Annotation[] annotations, MediaType mediaType) { + if (t instanceof ByteArrayInputStream) { + return ((ByteArrayInputStream) t).available(); + } else { + return -1; + } + } + + @Override + public void writeTo( + InputStream t, + Class type, + Type genericType, + Annotation annotations[], + MediaType mediaType, + MultivaluedMap httpHeaders, + OutputStream entityStream) throws IOException { + try { + writeTo(t, entityStream); + }catch (IOException e) { + + } finally { + t.close(); + } + } + +} \ No newline at end of file diff --git a/src/main/java/org/gcube/common/storagehub/client/plugins/ItemManagerPlugin.java b/src/main/java/org/gcube/common/storagehub/client/plugins/ItemManagerPlugin.java index 940d16e..708bfa2 100644 --- a/src/main/java/org/gcube/common/storagehub/client/plugins/ItemManagerPlugin.java +++ b/src/main/java/org/gcube/common/storagehub/client/plugins/ItemManagerPlugin.java @@ -10,6 +10,7 @@ import org.gcube.common.clients.delegates.ProxyDelegate; import org.gcube.common.gxrest.request.GXWebTargetAdapterRequest; import org.gcube.common.gxrest.response.entity.SerializableErrorEntityTextReader; import org.gcube.common.storagehub.client.Constants; +import org.gcube.common.storagehub.client.MyInputStreamProvider; import org.gcube.common.storagehub.client.proxies.DefaultItemManager; import org.gcube.common.storagehub.client.proxies.ItemManagerClient; import org.w3c.dom.Node; @@ -42,6 +43,7 @@ public class ItemManagerPlugin extends AbstractPlugin entity = Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA); + + response = myManager.post(entity); + if (response.isErrorResponse()) { - if (response.hasException()) + if (response.hasException()) { + System.out.println(response.getException().getStackTrace()); throw response.getException(); - else + }else throw new BackendGenericError(); }