Skip to content

Commit dd858f3

Browse files
committed
Add configurable s3Key as an optional parameter
1 parent 9abc102 commit dd858f3

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,15 @@ public interface PayloadStore {
1111
* Stores payload in a store that has higher payload size limit than that is supported by original payload store.
1212
*
1313
* @param payload
14+
* @param optional an array of optional parameters. optional[0] should be a custom s3Key.
1415
* @return a pointer that must be used to retrieve the original payload later.
1516
* @throws SdkClientException If any internal errors are encountered on the client side while
1617
* attempting to make the request or handle the response. For example
1718
* if a network connection is not available.
1819
* @throws S3Exception If an error response is returned by actual PayloadStore indicating
1920
* either a problem with the data in the request, or a server side issue.
2021
*/
21-
String storeOriginalPayload(String payload);
22+
String storeOriginalPayload(String payload, String... optional);
2223

2324
/**
2425
* Retrieves the original payload using the given payloadPointer. The pointer must

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ public S3BackedPayloadStore(S3Dao s3Dao, String s3BucketName) {
2020
}
2121

2222
@Override
23-
public String storeOriginalPayload(String payload) {
24-
String s3Key = UUID.randomUUID().toString();
23+
public String storeOriginalPayload(String payload, String... optional) {
24+
String s3Key = optional.length > 0 ? optional[0] : UUID.randomUUID().toString();
2525

2626
s3Dao.storeTextInS3(s3BucketName, s3Key, payload);
2727
LOG.info("S3 object created, Bucket name: " + s3BucketName + ", Object key: " + s3Key + ".");

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)