Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 2 additions & 23 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,8 @@
<aws.sdk.v1.version>1.12.781</aws.sdk.v1.version>
<versions-maven-plugin.version>2.19.1</versions-maven-plugin.version>
<elastic.version>1.7.0</elastic.version>
<mockito.version>5.19.0</mockito.version>
<mockito-junit-jupiter.version>5.19.0</mockito-junit-jupiter.version>
<mockito.version>5.20.0</mockito.version>
<mockito-junit-jupiter.version>5.20.0</mockito-junit-jupiter.version>
<junit-pioneer.version>2.3.0</junit-pioneer.version>
<crac.version>1.5.0</crac.version>

Expand Down Expand Up @@ -536,12 +536,6 @@
<profiles>
<profile>
<id>release</id>
<!-- TODO: Revert once 5.19.1 is stable released. -->
<!-- https://github.com/aws-powertools/powertools-lambda-java/issues/2079 -->
<properties>
<mockito.version>5.19.0</mockito.version>
<mockito-junit-jupiter.version>5.19.0</mockito-junit-jupiter.version>
</properties>
<build>
<plugins>
<plugin>
Expand Down Expand Up @@ -643,21 +637,6 @@
</plugins>
</build>
</profile>
<profile>
<id>generate-graalvm-files</id>
<properties>
<mockito.version>5.19.1-SNAPSHOT</mockito.version>
<mockito-junit-jupiter.version>5.19.1-SNAPSHOT</mockito-junit-jupiter.version>
</properties>
</profile>
<profile>
<id>graalvm-native</id>
<properties>
<mockito.version>5.19.1-SNAPSHOT</mockito.version>
<mockito-junit-jupiter.version>5.19.1-SNAPSHOT</mockito-junit-jupiter.version>
</properties>
</profile>

</profiles>

</project>
Original file line number Diff line number Diff line change
Expand Up @@ -14,32 +14,34 @@

package software.amazon.lambda.powertools.e2e;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
import com.amazonaws.services.lambda.runtime.events.KinesisEvent;
import com.amazonaws.services.lambda.runtime.events.SQSBatchResponse;
import com.amazonaws.services.lambda.runtime.events.SQSEvent;
import com.amazonaws.services.lambda.runtime.events.StreamsEventResponse;
import com.amazonaws.services.lambda.runtime.serialization.PojoSerializer;
import com.amazonaws.services.lambda.runtime.serialization.events.LambdaEventSerializers;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
import com.amazonaws.services.lambda.runtime.events.KinesisEvent;
import com.amazonaws.services.lambda.runtime.events.SQSBatchResponse;
import com.amazonaws.services.lambda.runtime.events.SQSEvent;
import com.amazonaws.services.lambda.runtime.events.StreamsEventResponse;
import com.amazonaws.services.lambda.runtime.serialization.PojoSerializer;
import com.amazonaws.services.lambda.runtime.serialization.events.LambdaEventSerializers;

import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import software.amazon.awssdk.services.dynamodb.model.PutItemRequest;
import software.amazon.lambda.powertools.batch.BatchMessageHandlerBuilder;
import software.amazon.lambda.powertools.batch.handler.BatchMessageHandler;
import software.amazon.lambda.powertools.e2e.model.Product;


public class Function implements RequestHandler<InputStream, Object> {

private static final Logger LOGGER = LoggerFactory.getLogger(Function.class);
Expand All @@ -48,7 +50,6 @@ public class Function implements RequestHandler<InputStream, Object> {
private final BatchMessageHandler<KinesisEvent, StreamsEventResponse> kinesisHandler;
private final BatchMessageHandler<DynamodbEvent, StreamsEventResponse> ddbHandler;
private final String ddbOutputTable;
private DynamoDbClient ddbClient;

public Function() {
sqsHandler = new BatchMessageHandlerBuilder()
Expand All @@ -69,8 +70,7 @@ public Function() {
private void processProductMessage(Product p, Context c) {
LOGGER.info("Processing product " + p);

// TODO - write product details to output table
ddbClient = DynamoDbClient.builder()
DynamoDbClient ddbClient = DynamoDbClient.builder()
.build();
Map<String, AttributeValue> results = new HashMap<>();
results.put("functionName", AttributeValue.builder()
Expand All @@ -94,7 +94,7 @@ private void processProductMessage(Product p, Context c) {
private void processDdbMessage(DynamodbEvent.DynamodbStreamRecord dynamodbStreamRecord, Context context) {
LOGGER.info("Processing DynamoDB Stream Record" + dynamodbStreamRecord);

ddbClient = DynamoDbClient.builder()
DynamoDbClient ddbClient = DynamoDbClient.builder()
.build();

String id = dynamodbStreamRecord.getDynamodb().getKeys().get("id").getS();
Expand All @@ -118,26 +118,25 @@ public Object createResult(String input, Context context) {

LOGGER.info(input);

PojoSerializer<SQSEvent> serializer =
LambdaEventSerializers.serializerFor(SQSEvent.class, this.getClass().getClassLoader());
PojoSerializer<SQSEvent> serializer = LambdaEventSerializers.serializerFor(SQSEvent.class,
this.getClass().getClassLoader());
SQSEvent event = serializer.fromJson(input);
if (event.getRecords().get(0).getEventSource().equals("aws:sqs")) {
if ("aws:sqs".equals(event.getRecords().get(0).getEventSource())) {
LOGGER.info("Running for SQS");
LOGGER.info(event.toString());
return sqsHandler.processBatch(event, context);
}

PojoSerializer<KinesisEvent> kinesisSerializer =
LambdaEventSerializers.serializerFor(KinesisEvent.class, this.getClass().getClassLoader());
PojoSerializer<KinesisEvent> kinesisSerializer = LambdaEventSerializers.serializerFor(KinesisEvent.class,
this.getClass().getClassLoader());
KinesisEvent kinesisEvent = kinesisSerializer.fromJson(input);
if (kinesisEvent.getRecords().get(0).getEventSource().equals("aws:kinesis")) {
if ("aws:kinesis".equals(kinesisEvent.getRecords().get(0).getEventSource())) {
LOGGER.info("Running for Kinesis");
return kinesisHandler.processBatch(kinesisEvent, context);
}

// Well, let's try dynamo
PojoSerializer<DynamodbEvent> ddbSerializer =
LambdaEventSerializers.serializerFor(DynamodbEvent.class, this.getClass().getClassLoader());
PojoSerializer<DynamodbEvent> ddbSerializer = LambdaEventSerializers.serializerFor(DynamodbEvent.class,
this.getClass().getClassLoader());
LOGGER.info("Running for DynamoDB");
DynamodbEvent ddbEvent = ddbSerializer.fromJson(input);
return ddbHandler.processBatch(ddbEvent, context);
Expand All @@ -148,8 +147,8 @@ public Object handleRequest(InputStream inputStream, Context context) {

String input = new BufferedReader(
new InputStreamReader(inputStream, StandardCharsets.UTF_8))
.lines()
.collect(Collectors.joining("\n"));
.lines()
.collect(Collectors.joining("\n"));

return createResult(input, context);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,6 @@ public void saveSuccess(JsonNode data, Object result, Instant now) {
updateRecord(dataRecord);
saveToCache(dataRecord);
} catch (JsonProcessingException e) {
// TODO : throw ?
throw new RuntimeException("Error while serializing the response", e);
}
}
Expand Down Expand Up @@ -405,7 +404,7 @@ void configure(IdempotencyConfig config, String functionName, LRUCache<String, D

private static boolean isEqual(String dataRecordPayload, String dataHash) {
if (dataHash != null && dataRecordPayload != null) {
return dataHash.length() != dataRecordPayload.length() ? false : dataHash.equals(dataRecordPayload);
return dataHash.length() == dataRecordPayload.length() && dataHash.equals(dataRecordPayload);
} else {
return false;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ private static SecretsManagerClient createClient() {
*/
public SecretsProvider build() {
if (cacheManager == null) {
// TODO - what should we do with this
cacheManager = new CacheManager();
}
SecretsProvider provider;
Expand Down