-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathS3BackedStreamPayloadStore.java
More file actions
37 lines (31 loc) · 1.59 KB
/
S3BackedStreamPayloadStore.java
File metadata and controls
37 lines (31 loc) · 1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package software.amazon.payloadoffloading;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import software.amazon.awssdk.core.ResponseInputStream;
import software.amazon.awssdk.services.s3.model.GetObjectResponse;
import java.io.InputStream;
public class S3BackedStreamPayloadStore extends S3BackedPayloadStore implements StreamPayloadStore {
private static final Logger LOG = LoggerFactory.getLogger(S3BackedStreamPayloadStore.class);
private final S3Dao s3Dao;
private final String s3BucketName;
public S3BackedStreamPayloadStore(S3Dao s3Dao, String s3BucketName) {
super(s3Dao, s3BucketName);
this.s3Dao = s3Dao;
this.s3BucketName = s3BucketName;
}
@Override
public String storeOriginalPayloadStream(InputStream payloadStream, String s3Key) {
s3Dao.storeTextStreamInS3(s3BucketName, s3Key, payloadStream);
LOG.info("S3 stream object created from InputStream, Bucket name: " + s3BucketName + ", Object key: " + s3Key + ".");
return new PayloadS3Pointer(s3BucketName, s3Key).toJson();
}
@Override
public ResponseInputStream<GetObjectResponse> getOriginalPayloadStreamStream(String payloadPointer) {
PayloadS3Pointer s3Pointer = PayloadS3Pointer.fromJson(payloadPointer);
String s3BucketName = s3Pointer.getS3BucketName();
String s3Key = s3Pointer.getS3Key();
ResponseInputStream<GetObjectResponse> stream = s3Dao.getTextStreamFromS3(s3BucketName, s3Key);
LOG.info("S3 object stream retrieved, Bucket name: " + s3BucketName + ", Object key: " + s3Key);
return stream;
}
}