Skip to content

Commit 523caff

Browse files
rbugathaRamesh Bugatha
and
Ramesh Bugatha
authored
Add configurable s3Key as an optional parameter. (#14)
* configure s3key by using additinal parameter for storeOriginalPayload function (by overloading the params) Co-authored-by: Ramesh Bugatha <[email protected]>
1 parent a784c1b commit 523caff

File tree

3 files changed

+32
-1
lines changed

3 files changed

+32
-1
lines changed

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

+15
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,21 @@ public interface PayloadStore {
2121
*/
2222
String storeOriginalPayload(String payload, Long payloadContentSize);
2323

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

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

+6-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,12 @@ public S3BackedPayloadStore(S3Dao s3Dao, String s3BucketName) {
2121

2222
@Override
2323
public String storeOriginalPayload(String payload, Long payloadContentSize) {
24-
String s3Key = UUID.randomUUID().toString();
24+
return storeOriginalPayload(payload, payloadContentSize, null);
25+
}
26+
27+
@Override
28+
public String storeOriginalPayload(String payload, Long payloadContentSize, String key) {
29+
String s3Key = (key!=null) ? key : UUID.randomUUID().toString();
2530

2631
// Store the payload content in S3.
2732
s3Dao.storeTextInS3(s3BucketName, s3Key, payload, payloadContentSize);

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

+11
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,17 @@ public void testStoreOriginalPayloadOnSuccess() {
5050
assertEquals(expectedPayloadPointer.toJson(), actualPayloadPointer);
5151
}
5252

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

0 commit comments

Comments
 (0)