Skip to content

Commit 5f81524

Browse files
Add configurable s3Key as an optional parameter (#12)
* Add configurable s3Key as an optional parameter * Replace varargs by method overloading
1 parent 9abc102 commit 5f81524

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

src/main/java/software/amazon/payloadoffloading/PayloadStore.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,20 @@ public interface PayloadStore {
2020
*/
2121
String storeOriginalPayload(String payload);
2222

23+
/**
24+
* Stores payload in a store that has higher payload size limit than that is supported by original payload store.
25+
*
26+
* @param payload
27+
* @param s3Key
28+
* @return a pointer that must be used to retrieve the original payload later.
29+
* @throws SdkClientException If any internal errors are encountered on the client side while
30+
* attempting to make the request or handle the response. For example
31+
* if a network connection is not available.
32+
* @throws S3Exception If an error response is returned by actual PayloadStore indicating
33+
* either a problem with the data in the request, or a server side issue.
34+
*/
35+
String storeOriginalPayload(String payload, String s3Key);
36+
2337
/**
2438
* Retrieves the original payload using the given payloadPointer. The pointer must
2539
* have been obtained using {@link storeOriginalPayload}

src/main/java/software/amazon/payloadoffloading/S3BackedPayloadStore.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@ public S3BackedPayloadStore(S3Dao s3Dao, String s3BucketName) {
2222
@Override
2323
public String storeOriginalPayload(String payload) {
2424
String s3Key = UUID.randomUUID().toString();
25+
return storeOriginalPayload(payload, s3Key);
26+
}
2527

28+
@Override
29+
public String storeOriginalPayload(String payload, String s3Key) {
2630
s3Dao.storeTextInS3(s3BucketName, s3Key, payload);
2731
LOG.info("S3 object created, Bucket name: " + s3BucketName + ", Object key: " + s3Key + ".");
2832

src/test/java/software/amazon/payloadoffloading/S3BackedPayloadStoreTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,17 @@ public void testStoreOriginalPayloadOnSuccess() {
4949
assertEquals(expectedPayloadPointer.toJson(), actualPayloadPointer);
5050
}
5151

52+
@Test
53+
public void testStoreOriginalPayloadWithS3KeyOnSuccess() {
54+
String actualPayloadPointer = payloadStore.storeOriginalPayload(ANY_PAYLOAD, ANY_S3_KEY);
55+
56+
verify(s3Dao, times(1)).storeTextInS3(eq(S3_BUCKET_NAME), eq(ANY_S3_KEY),
57+
eq(ANY_PAYLOAD));
58+
59+
PayloadS3Pointer expectedPayloadPointer = new PayloadS3Pointer(S3_BUCKET_NAME, ANY_S3_KEY);
60+
assertEquals(expectedPayloadPointer.toJson(), actualPayloadPointer);
61+
}
62+
5263
@Test
5364
public void testStoreOriginalPayloadDoesAlwaysCreateNewObjects() {
5465
//Store any payload

0 commit comments

Comments
 (0)