diff --git a/src/main/java/org/gcube/common/storagehubwrapper/server/StorageHubClientService.java b/src/main/java/org/gcube/common/storagehubwrapper/server/StorageHubClientService.java index e1703ca..a159318 100644 --- a/src/main/java/org/gcube/common/storagehubwrapper/server/StorageHubClientService.java +++ b/src/main/java/org/gcube/common/storagehubwrapper/server/StorageHubClientService.java @@ -23,6 +23,7 @@ import org.gcube.common.storagehub.model.items.FolderItem; import org.gcube.common.storagehub.model.items.Item; import org.gcube.common.storagehub.model.items.SharedFolder; import org.gcube.common.storagehub.model.items.VreFolder; +import org.gcube.common.storagehub.model.items.nodes.ImageContent; import org.gcube.common.storagehub.model.service.Version; import org.gcube.common.storagehubwrapper.server.converter.ObjectMapper; import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.ItemNotFoundException; @@ -609,15 +610,14 @@ public class StorageHubClientService { } - /** - * Gets the thumbnail data. + * Gets the image content. * * @param itemId the item id - * @return the thumbnail data + * @return the image content * @throws Exception the exception */ - public byte[] getThumbnailData(String itemId) throws Exception{ + public ImageContent getImageContent(String itemId) throws Exception{ Validate.notNull(itemId, "Bad request of getThumbnailData, the itemId is null"); setContextProviders(scope, authorizationToken); @@ -626,11 +626,7 @@ public class StorageHubClientService { if(item instanceof org.gcube.common.storagehub.model.items.ImageFile){ org.gcube.common.storagehub.model.items.ImageFile imgFI = (org.gcube.common.storagehub.model.items.ImageFile) item; //?? - byte[] thumbBytes = imgFI.getContent().getThumbnailData(); - if(thumbBytes==null || thumbBytes.length==0) - throw new Exception("Thumbnail Data is not available for image: "+item.getName()); - - return thumbBytes; + return imgFI.getContent(); }else throw new Exception("Thumbnail Data is not available for type: "+item.getClass().getSimpleName()); } diff --git a/src/main/java/org/gcube/common/storagehubwrapper/server/WorkspaceStorageHubClientService.java b/src/main/java/org/gcube/common/storagehubwrapper/server/WorkspaceStorageHubClientService.java index b33f798..03864d6 100644 --- a/src/main/java/org/gcube/common/storagehubwrapper/server/WorkspaceStorageHubClientService.java +++ b/src/main/java/org/gcube/common/storagehubwrapper/server/WorkspaceStorageHubClientService.java @@ -3,6 +3,7 @@ */ package org.gcube.common.storagehubwrapper.server; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; @@ -18,6 +19,7 @@ import org.gcube.common.storagehub.client.dsl.FolderContainer; 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.items.nodes.ImageContent; import org.gcube.common.storagehub.model.service.Version; import org.gcube.common.storagehub.model.types.GenericItemType; import org.gcube.common.storagehubwrapper.server.converter.HLMapper; @@ -652,7 +654,7 @@ public final class WorkspaceStorageHubClientService implements Workspace{ try { StreamDescriptor streamDesc = storageHubClientService.downloadFile(itemId, versionName, nodeIdsToExclude); - return new org.gcube.common.storagehubwrapper.shared.tohl.impl.StreamDescriptor(streamDesc.getStream(), streamDesc.getFileName(), null); + return new org.gcube.common.storagehubwrapper.shared.tohl.impl.StreamDescriptor(streamDesc.getStream(), streamDesc.getFileName(), null, null); } catch (Exception e) { logger.error("Error on downloading the file: "+fileName+ " with id: "+itemId, e); String error = e.getMessage()!=null?e.getMessage():""; @@ -676,7 +678,7 @@ public final class WorkspaceStorageHubClientService implements Workspace{ try { StreamDescriptor streamDesc = storageHubClientService.downloadFolder(folderId, nodeIdsToExclude); - return new org.gcube.common.storagehubwrapper.shared.tohl.impl.StreamDescriptor(streamDesc.getStream(), streamDesc.getFileName(), null); + return new org.gcube.common.storagehubwrapper.shared.tohl.impl.StreamDescriptor(streamDesc.getStream(), streamDesc.getFileName(), null, null); } catch (Exception e) { logger.error("Error on downloading the folder: "+folderName+ " with id: "+folderId, e); String error = e.getMessage()!=null?e.getMessage():""; @@ -867,8 +869,12 @@ public final class WorkspaceStorageHubClientService implements Workspace{ try{ - byte[] thumbBytes = storageHubClientService.getThumbnailData(itemId); - return new org.gcube.common.storagehubwrapper.shared.tohl.impl.StreamDescriptor(WrapperUtility.toInputStream(thumbBytes), null, new Long(thumbBytes.length)); + ImageContent imgContent = storageHubClientService.getImageContent(itemId); + byte[] thumbBytes = imgContent.getThumbnailData(); + if(thumbBytes==null || thumbBytes.length==0) + throw new Exception("Thumbnail Data is not available for image with id: "+itemId); + + return new org.gcube.common.storagehubwrapper.shared.tohl.impl.StreamDescriptor(new ByteArrayInputStream(thumbBytes), null, new Long(thumbBytes.length),imgContent.getThumbnailMimeType()); }catch(Exception e){ logger.error("Error on getThumbnailData for: "+itemId, e); diff --git a/src/main/java/org/gcube/common/storagehubwrapper/shared/tohl/impl/StreamDescriptor.java b/src/main/java/org/gcube/common/storagehubwrapper/shared/tohl/impl/StreamDescriptor.java index 28ddee9..646a336 100644 --- a/src/main/java/org/gcube/common/storagehubwrapper/shared/tohl/impl/StreamDescriptor.java +++ b/src/main/java/org/gcube/common/storagehubwrapper/shared/tohl/impl/StreamDescriptor.java @@ -64,6 +64,7 @@ public class StreamDescriptor implements ItemStreamDescriptor, Serializable{ private InputStream stream; private String itemName; private Long size; + private String mimeType; }