From f45a9b105cfa66441c20ad8554a7c10199916ea1 Mon Sep 17 00:00:00 2001 From: Philipp Page Date: Tue, 14 Oct 2025 11:37:31 +0200 Subject: [PATCH 1/5] chore(deps): Use mockito 5.20.0. --- pom.xml | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/pom.xml b/pom.xml index 51ae56027..f96d548a9 100644 --- a/pom.xml +++ b/pom.xml @@ -114,8 +114,8 @@ 1.12.781 2.19.1 1.7.0 - 5.19.0 - 5.19.0 + 5.20.0 + 5.20.0 2.3.0 1.5.0 @@ -536,12 +536,6 @@ release - - - - 5.19.0 - 5.19.0 - @@ -643,21 +637,6 @@ - - generate-graalvm-files - - 5.19.1-SNAPSHOT - 5.19.1-SNAPSHOT - - - - graalvm-native - - 5.19.1-SNAPSHOT - 5.19.1-SNAPSHOT - - - From 217066157ca1498c808daee3cb17f3bc8044c0e9 Mon Sep 17 00:00:00 2001 From: Philipp Page Date: Tue, 14 Oct 2025 11:40:23 +0200 Subject: [PATCH 2/5] Remove non-applicable or not understandable TODOs. --- .../java/software/amazon/lambda/powertools/e2e/Function.java | 1 - .../powertools/idempotency/persistence/BasePersistenceStore.java | 1 - .../powertools/parameters/secrets/SecretsProviderBuilder.java | 1 - 3 files changed, 3 deletions(-) diff --git a/powertools-e2e-tests/handlers/batch/src/main/java/software/amazon/lambda/powertools/e2e/Function.java b/powertools-e2e-tests/handlers/batch/src/main/java/software/amazon/lambda/powertools/e2e/Function.java index bfde65bc8..055e92432 100644 --- a/powertools-e2e-tests/handlers/batch/src/main/java/software/amazon/lambda/powertools/e2e/Function.java +++ b/powertools-e2e-tests/handlers/batch/src/main/java/software/amazon/lambda/powertools/e2e/Function.java @@ -69,7 +69,6 @@ public Function() { private void processProductMessage(Product p, Context c) { LOGGER.info("Processing product " + p); - // TODO - write product details to output table ddbClient = DynamoDbClient.builder() .build(); Map results = new HashMap<>(); diff --git a/powertools-idempotency/powertools-idempotency-core/src/main/java/software/amazon/lambda/powertools/idempotency/persistence/BasePersistenceStore.java b/powertools-idempotency/powertools-idempotency-core/src/main/java/software/amazon/lambda/powertools/idempotency/persistence/BasePersistenceStore.java index 8b08434ba..46212c885 100644 --- a/powertools-idempotency/powertools-idempotency-core/src/main/java/software/amazon/lambda/powertools/idempotency/persistence/BasePersistenceStore.java +++ b/powertools-idempotency/powertools-idempotency-core/src/main/java/software/amazon/lambda/powertools/idempotency/persistence/BasePersistenceStore.java @@ -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); } } diff --git a/powertools-parameters/powertools-parameters-secrets/src/main/java/software/amazon/lambda/powertools/parameters/secrets/SecretsProviderBuilder.java b/powertools-parameters/powertools-parameters-secrets/src/main/java/software/amazon/lambda/powertools/parameters/secrets/SecretsProviderBuilder.java index c5806689f..517274e19 100644 --- a/powertools-parameters/powertools-parameters-secrets/src/main/java/software/amazon/lambda/powertools/parameters/secrets/SecretsProviderBuilder.java +++ b/powertools-parameters/powertools-parameters-secrets/src/main/java/software/amazon/lambda/powertools/parameters/secrets/SecretsProviderBuilder.java @@ -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; From 55dd825d0c75606897d327f408125598110c6faa Mon Sep 17 00:00:00 2001 From: Philipp Page Date: Tue, 14 Oct 2025 15:42:41 +0200 Subject: [PATCH 3/5] fix pmd findings. --- .../lambda/powertools/e2e/Function.java | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/powertools-e2e-tests/handlers/batch/src/main/java/software/amazon/lambda/powertools/e2e/Function.java b/powertools-e2e-tests/handlers/batch/src/main/java/software/amazon/lambda/powertools/e2e/Function.java index 055e92432..36142d3f5 100644 --- a/powertools-e2e-tests/handlers/batch/src/main/java/software/amazon/lambda/powertools/e2e/Function.java +++ b/powertools-e2e-tests/handlers/batch/src/main/java/software/amazon/lambda/powertools/e2e/Function.java @@ -14,15 +14,6 @@ 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; @@ -30,8 +21,20 @@ 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; @@ -39,7 +42,6 @@ import software.amazon.lambda.powertools.batch.handler.BatchMessageHandler; import software.amazon.lambda.powertools.e2e.model.Product; - public class Function implements RequestHandler { private static final Logger LOGGER = LoggerFactory.getLogger(Function.class); @@ -48,7 +50,6 @@ public class Function implements RequestHandler { private final BatchMessageHandler kinesisHandler; private final BatchMessageHandler ddbHandler; private final String ddbOutputTable; - private DynamoDbClient ddbClient; public Function() { sqsHandler = new BatchMessageHandlerBuilder() @@ -69,7 +70,7 @@ public Function() { private void processProductMessage(Product p, Context c) { LOGGER.info("Processing product " + p); - ddbClient = DynamoDbClient.builder() + DynamoDbClient ddbClient = DynamoDbClient.builder() .build(); Map results = new HashMap<>(); results.put("functionName", AttributeValue.builder() @@ -93,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(); @@ -117,26 +118,25 @@ public Object createResult(String input, Context context) { LOGGER.info(input); - PojoSerializer serializer = - LambdaEventSerializers.serializerFor(SQSEvent.class, this.getClass().getClassLoader()); + PojoSerializer 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 kinesisSerializer = - LambdaEventSerializers.serializerFor(KinesisEvent.class, this.getClass().getClassLoader()); + PojoSerializer 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 ddbSerializer = - LambdaEventSerializers.serializerFor(DynamodbEvent.class, this.getClass().getClassLoader()); + PojoSerializer ddbSerializer = LambdaEventSerializers.serializerFor(DynamodbEvent.class, + this.getClass().getClassLoader()); LOGGER.info("Running for DynamoDB"); DynamodbEvent ddbEvent = ddbSerializer.fromJson(input); return ddbHandler.processBatch(ddbEvent, context); @@ -147,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); } From d81ee803c8f526e45483673515a6a2664f567027 Mon Sep 17 00:00:00 2001 From: Philipp Page Date: Tue, 14 Oct 2025 15:44:18 +0200 Subject: [PATCH 4/5] fix pmd findings. --- .../idempotency/persistence/BasePersistenceStore.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powertools-idempotency/powertools-idempotency-core/src/main/java/software/amazon/lambda/powertools/idempotency/persistence/BasePersistenceStore.java b/powertools-idempotency/powertools-idempotency-core/src/main/java/software/amazon/lambda/powertools/idempotency/persistence/BasePersistenceStore.java index 46212c885..7e93dc00c 100644 --- a/powertools-idempotency/powertools-idempotency-core/src/main/java/software/amazon/lambda/powertools/idempotency/persistence/BasePersistenceStore.java +++ b/powertools-idempotency/powertools-idempotency-core/src/main/java/software/amazon/lambda/powertools/idempotency/persistence/BasePersistenceStore.java @@ -404,7 +404,7 @@ void configure(IdempotencyConfig config, String functionName, LRUCache Date: Tue, 14 Oct 2025 15:49:17 +0200 Subject: [PATCH 5/5] Update protobuf generated classes after version bump. --- .../main/java/org/demo/kafka/protobuf/ProtobufProduct.java | 4 ++-- .../org/demo/kafka/protobuf/ProtobufProductOrBuilder.java | 2 +- .../org/demo/kafka/protobuf/ProtobufProductOuterClass.java | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProduct.java b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProduct.java index 21961ad2b..e36810e08 100644 --- a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProduct.java +++ b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProduct.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // NO CHECKED-IN PROTOBUF GENCODE // source: ProtobufProduct.proto -// Protobuf Java Version: 4.32.0 +// Protobuf Java Version: 4.32.1 package org.demo.kafka.protobuf; @@ -19,7 +19,7 @@ public final class ProtobufProduct extends com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 32, - /* patch= */ 0, + /* patch= */ 1, /* suffix= */ "", ProtobufProduct.class.getName()); } diff --git a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOrBuilder.java b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOrBuilder.java index 347ea854a..951644b2f 100644 --- a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOrBuilder.java +++ b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // NO CHECKED-IN PROTOBUF GENCODE // source: ProtobufProduct.proto -// Protobuf Java Version: 4.32.0 +// Protobuf Java Version: 4.32.1 package org.demo.kafka.protobuf; diff --git a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOuterClass.java b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOuterClass.java index 046283d9a..0da2eec57 100644 --- a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOuterClass.java +++ b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOuterClass.java @@ -1,19 +1,19 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // NO CHECKED-IN PROTOBUF GENCODE // source: ProtobufProduct.proto -// Protobuf Java Version: 4.32.0 +// Protobuf Java Version: 4.32.1 package org.demo.kafka.protobuf; @com.google.protobuf.Generated -public final class ProtobufProductOuterClass { +public final class ProtobufProductOuterClass extends com.google.protobuf.GeneratedFile { private ProtobufProductOuterClass() {} static { com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, /* minor= */ 32, - /* patch= */ 0, + /* patch= */ 1, /* suffix= */ "", ProtobufProductOuterClass.class.getName()); }