From 0867cec781d33601ffbad61b09bb568ffc5812f8 Mon Sep 17 00:00:00 2001 From: liuxinyu Date: Mon, 11 Oct 2021 07:32:03 -0500 Subject: [PATCH 1/5] avoid repeated get() --- .../amazon/lambda/powertools/parameters/cache/DataStore.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/cache/DataStore.java b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/cache/DataStore.java index 351ba054d..6e403c93e 100644 --- a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/cache/DataStore.java +++ b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/cache/DataStore.java @@ -46,7 +46,8 @@ public void remove(String Key){ } public Object get(String key) { - return store.containsKey(key)?store.get(key).value:null; + ValueNode node = store.get(key); + return node ? node.value : null; } public boolean hasExpired(String key, Instant now) { From 7a7040d4d84f927f007a63a281ef057162facc85 Mon Sep 17 00:00:00 2001 From: liuxinyu Date: Mon, 11 Oct 2021 07:32:42 -0500 Subject: [PATCH 2/5] %s to %d for integer --- .../amazon/lambda/powertools/sqs/internal/BatchContext.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powertools-sqs/src/main/java/software/amazon/lambda/powertools/sqs/internal/BatchContext.java b/powertools-sqs/src/main/java/software/amazon/lambda/powertools/sqs/internal/BatchContext.java index 93ad2abc4..1e4eff3bf 100644 --- a/powertools-sqs/src/main/java/software/amazon/lambda/powertools/sqs/internal/BatchContext.java +++ b/powertools-sqs/src/main/java/software/amazon/lambda/powertools/sqs/internal/BatchContext.java @@ -114,7 +114,7 @@ private void processFailedMessages(List successReturns, map(SQSMessage::getMessageId) .collect(toList()); - LOG.debug(format("[%s] records failed processing, but exceptions are suppressed. " + + LOG.debug(format("[%d] records failed processing, but exceptions are suppressed. " + "Failed messages %s", failedMessages.size(), messageIds)); } else { throw new SQSBatchProcessingException(exceptions, failedMessages, successReturns); From edaf33fc584447455e2581b0d564eb952196c43e Mon Sep 17 00:00:00 2001 From: liuxinyu Date: Mon, 11 Oct 2021 07:33:22 -0500 Subject: [PATCH 3/5] change put() to putIfAbsent() --- .../lambda/powertools/validation/ValidationUtils.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/powertools-validation/src/main/java/software/amazon/lambda/powertools/validation/ValidationUtils.java b/powertools-validation/src/main/java/software/amazon/lambda/powertools/validation/ValidationUtils.java index 12c51c632..e9b9cf8e6 100644 --- a/powertools-validation/src/main/java/software/amazon/lambda/powertools/validation/ValidationUtils.java +++ b/powertools-validation/src/main/java/software/amazon/lambda/powertools/validation/ValidationUtils.java @@ -239,12 +239,6 @@ public static JsonSchema getJsonSchema(String schema) { * @return the loaded json schema */ public static JsonSchema getJsonSchema(String schema, boolean validateSchema) { - JsonSchema jsonSchema = schemas.get(schema); - - if (jsonSchema != null) { - return jsonSchema; - } - if (schema.startsWith(CLASSPATH)) { String filePath = schema.substring(CLASSPATH.length()); try (InputStream schemaStream = ValidationAspect.class.getResourceAsStream(filePath)) { @@ -270,7 +264,7 @@ public static JsonSchema getJsonSchema(String schema, boolean validateSchema) { } } - schemas.put(schema, jsonSchema); + schemas.putIfAbsent(schema, jsonSchema); return jsonSchema; } From 47aee36240d240e3062ce31fbad1fb12d9b1dad3 Mon Sep 17 00:00:00 2001 From: Pankaj Agrawal Date: Wed, 15 Dec 2021 15:24:53 +0100 Subject: [PATCH 4/5] Update powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/cache/DataStore.java Co-authored-by: Michael Brewer --- .../amazon/lambda/powertools/parameters/cache/DataStore.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/cache/DataStore.java b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/cache/DataStore.java index 6e403c93e..9ad8df12c 100644 --- a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/cache/DataStore.java +++ b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/cache/DataStore.java @@ -47,7 +47,7 @@ public void remove(String Key){ public Object get(String key) { ValueNode node = store.get(key); - return node ? node.value : null; + return node != null ? node.value : null; } public boolean hasExpired(String key, Instant now) { From eabaee6239444653f4ef9ddf8e8c138aa41c3f69 Mon Sep 17 00:00:00 2001 From: Grzegorz Kozub Date: Tue, 15 Nov 2022 11:41:56 +0100 Subject: [PATCH 5/5] Fix logic for caching json schema. --- .../validation/ValidationUtils.java | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/powertools-validation/src/main/java/software/amazon/lambda/powertools/validation/ValidationUtils.java b/powertools-validation/src/main/java/software/amazon/lambda/powertools/validation/ValidationUtils.java index e9b9cf8e6..9b73806a5 100644 --- a/powertools-validation/src/main/java/software/amazon/lambda/powertools/validation/ValidationUtils.java +++ b/powertools-validation/src/main/java/software/amazon/lambda/powertools/validation/ValidationUtils.java @@ -239,6 +239,17 @@ public static JsonSchema getJsonSchema(String schema) { * @return the loaded json schema */ public static JsonSchema getJsonSchema(String schema, boolean validateSchema) { + JsonSchema jsonSchema = schemas.computeIfAbsent(schema, ValidationUtils::createJsonSchema); + + if (validateSchema) { + validateSchema(schema, jsonSchema); + } + + return jsonSchema; + } + + private static JsonSchema createJsonSchema(String schema) { + JsonSchema jsonSchema; if (schema.startsWith(CLASSPATH)) { String filePath = schema.substring(CLASSPATH.length()); try (InputStream schemaStream = ValidationAspect.class.getResourceAsStream(filePath)) { @@ -254,21 +265,19 @@ public static JsonSchema getJsonSchema(String schema, boolean validateSchema) { jsonSchema = ValidationConfig.get().getFactory().getSchema(schema); } - if (validateSchema) { - String version = ValidationConfig.get().getSchemaVersion().toString(); - try { - validate(jsonSchema.getSchemaNode(), - getJsonSchema("classpath:/schemas/meta_schema_" + version)); - } catch (ValidationException ve) { - throw new IllegalArgumentException("The schema " + schema + " is not valid, it does not respect the specification " + version, ve); - } - } - - schemas.putIfAbsent(schema, jsonSchema); - return jsonSchema; } + private static void validateSchema(String schema, JsonSchema jsonSchema) { + String version = ValidationConfig.get().getSchemaVersion().toString(); + try { + validate(jsonSchema.getSchemaNode(), + getJsonSchema("classpath:/schemas/meta_schema_" + version)); + } catch (ValidationException ve) { + throw new IllegalArgumentException("The schema " + schema + " is not valid, it does not respect the specification " + version, ve); + } + } + /** * */