added check on id exists
This commit is contained in:
parent
8b235da142
commit
2012500de8
|
@ -6,7 +6,9 @@ import java.util.Collections;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.gcube.common.clients.exceptions.UnsupportedOperationException;
|
||||||
import org.gcube.common.security.providers.SecretManagerProvider;
|
import org.gcube.common.security.providers.SecretManagerProvider;
|
||||||
|
import org.gcube.common.storagehub.model.exceptions.StorageIdNotFoundException;
|
||||||
import org.gcube.common.storagehub.model.items.nodes.Content;
|
import org.gcube.common.storagehub.model.items.nodes.Content;
|
||||||
import org.gcube.common.storagehub.model.items.nodes.PayloadBackend;
|
import org.gcube.common.storagehub.model.items.nodes.PayloadBackend;
|
||||||
import org.gcube.common.storagehub.model.storages.MetaInfo;
|
import org.gcube.common.storagehub.model.storages.MetaInfo;
|
||||||
|
@ -32,13 +34,16 @@ public class GCubeMongoStorageBackend extends StorageBackend {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InputStream download(Content content) {
|
public InputStream download(Content content) throws StorageIdNotFoundException {
|
||||||
return download(content.getStorageId());
|
return download(content.getStorageId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InputStream download(String id) {
|
public InputStream download(String id) throws StorageIdNotFoundException{
|
||||||
return getStorageClient(SecretManagerProvider.instance.get().getOwner().getId()).getClient().get().RFileAsInputStream(id);
|
IClient storageClient = getStorageClient(SecretManagerProvider.instance.get().getOwner().getId()).getClient();
|
||||||
|
if (!storageClient.exist().RFile(id))
|
||||||
|
throw new StorageIdNotFoundException(id, this.getPayloadConfiguration().getStorageName());
|
||||||
|
return storageClient.get().RFileAsInputStream(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected StorageClient getStorageClient(String login){
|
protected StorageClient getStorageClient(String login){
|
||||||
|
@ -73,11 +78,18 @@ public class GCubeMongoStorageBackend extends StorageBackend {
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetaInfo upload(InputStream stream, String relPath, String name, Long size) {
|
public MetaInfo upload(InputStream stream, String relPath, String name, Long size) {
|
||||||
return this.upload(stream, relPath, name);
|
return this.upload(stream, relPath, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MetaInfo upload(InputStream stream, String relativePath, String name, String storageId, Long size) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void delete(String storageId) {
|
public void delete(String storageId) {
|
||||||
log.debug("deleting object {} ",storageId);
|
log.debug("deleting object {} ",storageId);
|
||||||
|
@ -99,7 +111,7 @@ public class GCubeMongoStorageBackend extends StorageBackend {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, String> getFileMetadata(String id) {
|
public Map<String, String> getFileMetadata(String id) {
|
||||||
return Collections.EMPTY_MAP;
|
return Collections.emptyMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
package org.gcube.data.access.storagehub.storage.backend.impl;
|
package org.gcube.data.access.storagehub.storage.backend.impl;
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.security.InvalidKeyException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
import org.gcube.common.security.providers.SecretManagerProvider;
|
import org.gcube.common.security.providers.SecretManagerProvider;
|
||||||
|
import org.gcube.common.storagehub.model.exceptions.StorageIdNotFoundException;
|
||||||
import org.gcube.common.storagehub.model.items.nodes.Content;
|
import org.gcube.common.storagehub.model.items.nodes.Content;
|
||||||
import org.gcube.common.storagehub.model.items.nodes.PayloadBackend;
|
import org.gcube.common.storagehub.model.items.nodes.PayloadBackend;
|
||||||
import org.gcube.common.storagehub.model.storages.MetaInfo;
|
import org.gcube.common.storagehub.model.storages.MetaInfo;
|
||||||
|
@ -105,8 +107,13 @@ public class S3Backend extends StorageBackend{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetaInfo upload(InputStream stream, String relativePath, String name, Long size) {
|
public MetaInfo upload(InputStream stream, String relativePath, String name, Long size) {
|
||||||
try {
|
|
||||||
String storageId = keyGenerator.apply(null);
|
String storageId = keyGenerator.apply(null);
|
||||||
|
return upload(stream, relativePath, name, storageId, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MetaInfo upload(InputStream stream, String relativePath, String name, String storageId, Long size) {
|
||||||
|
try {
|
||||||
|
|
||||||
Map<String, String> headers = new HashMap<>();
|
Map<String, String> headers = new HashMap<>();
|
||||||
headers.put("X-Amz-Storage-Class", "REDUCED_REDUNDANCY");
|
headers.put("X-Amz-Storage-Class", "REDUCED_REDUNDANCY");
|
||||||
|
@ -138,18 +145,21 @@ public class S3Backend extends StorageBackend{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InputStream download(String id) {
|
public InputStream download(String id) throws StorageIdNotFoundException{
|
||||||
try {
|
try {
|
||||||
InputStream inputStream = client.getObject(GetObjectArgs.builder().bucket(bucketName).object(id).build());
|
InputStream inputStream = client.getObject(GetObjectArgs.builder().bucket(bucketName).object(id).build());
|
||||||
return inputStream;
|
return inputStream;
|
||||||
} catch (Exception e) {
|
}catch (InvalidKeyException e) {
|
||||||
|
log.error("key %s not found", id);
|
||||||
|
throw new StorageIdNotFoundException(id, this.getPayloadConfiguration().getStorageName());
|
||||||
|
}catch (Exception e) {
|
||||||
log.error("error downloading file form s3");
|
log.error("error downloading file form s3");
|
||||||
throw new RuntimeException("error downloading file from s3",e);
|
throw new RuntimeException("error downloading file from s3",e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InputStream download(Content content) {
|
public InputStream download(Content content) throws StorageIdNotFoundException {
|
||||||
return download(content.getStorageId());
|
return download(content.getStorageId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue