diff --git a/example/HelloWorldFunction/build.gradle b/example/HelloWorldFunction/build.gradle index ace1860f5..80a6d47eb 100644 --- a/example/HelloWorldFunction/build.gradle +++ b/example/HelloWorldFunction/build.gradle @@ -8,23 +8,23 @@ repositories { } dependencies { - implementation 'software.amazon.lambda:powertools-tracing:1.0.0' - aspectpath 'software.amazon.lambda:powertools-tracing:1.0.0' + implementation 'software.amazon.lambda:powertools-tracing:1.2.0' + aspectpath 'software.amazon.lambda:powertools-tracing:1.2.0' - implementation 'software.amazon.lambda:powertools-logging:1.0.0' - aspectpath 'software.amazon.lambda:powertools-logging:1.0.0' + implementation 'software.amazon.lambda:powertools-logging:1.2.0' + aspectpath 'software.amazon.lambda:powertools-logging:1.2.0' - implementation 'software.amazon.lambda:powertools-metrics:1.0.0' - aspectpath 'software.amazon.lambda:powertools-metrics:1.0.0' + implementation 'software.amazon.lambda:powertools-metrics:1.2.0' + aspectpath 'software.amazon.lambda:powertools-metrics:1.2.0' - implementation 'software.amazon.lambda:powertools-sqs:1.0.0' - aspectpath 'software.amazon.lambda:powertools-sqs:1.0.0' + implementation 'software.amazon.lambda:powertools-sqs:1.2.0' + aspectpath 'software.amazon.lambda:powertools-sqs:1.2.0' - implementation 'software.amazon.lambda:powertools-parameters:1.0.0' - aspectpath 'software.amazon.lambda:powertools-parameters:1.0.0' + implementation 'software.amazon.lambda:powertools-parameters:1.2.0' + aspectpath 'software.amazon.lambda:powertools-parameters:1.2.0' - implementation 'software.amazon.lambda:powertools-validation:1.0.0' - aspectpath 'software.amazon.lambda:powertools-validation:1.0.0' + implementation 'software.amazon.lambda:powertools-validation:1.2.0' + aspectpath 'software.amazon.lambda:powertools-validation:1.2.0' implementation 'com.amazonaws:aws-lambda-java-core:1.2.0' implementation 'com.amazonaws:aws-lambda-java-events:3.1.0' diff --git a/example/HelloWorldFunction/gradle/wrapper/gradle-wrapper.properties b/example/HelloWorldFunction/gradle/wrapper/gradle-wrapper.properties index 5028f28f8..2a563242c 100644 --- a/example/HelloWorldFunction/gradle/wrapper/gradle-wrapper.properties +++ b/example/HelloWorldFunction/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/example/HelloWorldFunction/gradlew b/example/HelloWorldFunction/gradlew old mode 100644 new mode 100755 diff --git a/example/HelloWorldFunction/pom.xml b/example/HelloWorldFunction/pom.xml index 018d6e6be..7465ad20e 100644 --- a/example/HelloWorldFunction/pom.xml +++ b/example/HelloWorldFunction/pom.xml @@ -1,5 +1,5 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 helloworld HelloWorld @@ -49,9 +49,9 @@ 1.2.0 - com.amazonaws - aws-lambda-java-events - 3.1.0 + com.amazonaws + aws-lambda-java-events + 3.1.0 org.apache.logging.log4j @@ -70,70 +70,70 @@ - junit - junit - 4.13.1 - test + junit + junit + 4.13.1 + test - - - - com.nickwongdev - aspectj-maven-plugin - 1.12.6 - - ${maven.compiler.source} - ${maven.compiler.target} - ${maven.compiler.target} - - - software.amazon.lambda - powertools-tracing - - - software.amazon.lambda - powertools-logging - - - software.amazon.lambda - powertools-metrics - - - software.amazon.lambda - powertools-sqs - - - software.amazon.lambda - powertools-validation - - - - - - - compile - - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.1.1 - - - - - package - - shade - - - - - + + + + com.nickwongdev + aspectj-maven-plugin + 1.12.6 + + ${maven.compiler.source} + ${maven.compiler.target} + ${maven.compiler.target} + + + software.amazon.lambda + powertools-tracing + + + software.amazon.lambda + powertools-logging + + + software.amazon.lambda + powertools-metrics + + + software.amazon.lambda + powertools-sqs + + + software.amazon.lambda + powertools-validation + + + + + + + compile + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + + + package + + shade + + + + + diff --git a/example/HelloWorldFunction/src/main/java/helloworld/App.java b/example/HelloWorldFunction/src/main/java/helloworld/App.java index 5fab21511..a371e6c11 100644 --- a/example/HelloWorldFunction/src/main/java/helloworld/App.java +++ b/example/HelloWorldFunction/src/main/java/helloworld/App.java @@ -21,6 +21,7 @@ import software.amazon.lambda.powertools.logging.LoggingUtils; import software.amazon.lambda.powertools.logging.Logging; import software.amazon.lambda.powertools.metrics.Metrics; +import software.amazon.lambda.powertools.tracing.CaptureMode; import software.amazon.lambda.powertools.tracing.TracingUtils; import software.amazon.lambda.powertools.tracing.Tracing; @@ -33,11 +34,10 @@ * Handler for requests to Lambda function. */ public class App implements RequestHandler { - - Logger log = LogManager.getLogger(); + private final static Logger log = LogManager.getLogger(); @Logging(logEvent = true, samplingRate = 0.7) - @Tracing(captureError = false, captureResponse = false) + @Tracing(captureMode = CaptureMode.RESPONSE_AND_ERROR) @Metrics(namespace = "ServerlessAirline", service = "payment", captureColdStart = true) public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEvent input, final Context context) { Map headers = new HashMap<>(); @@ -84,13 +84,9 @@ public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEv } private void threadOption1() throws InterruptedException { - Entity traceEntity = AWSXRay.getTraceEntity(); - Thread thread = new Thread(() -> { - AWSXRay.setTraceEntity(traceEntity); - log(); - }); - thread.start(); - thread.join(); + final Entity traceEntity = AWSXRay.getTraceEntity(); + assert traceEntity != null; + traceEntity.run(new Thread(this::log)); } private void threadOption2() throws InterruptedException { @@ -108,8 +104,7 @@ private void log() { log.info("inside threaded logging for function"); } - - @Tracing(namespace = "getPageContents", captureResponse = false, captureError = false) + @Tracing(namespace = "getPageContents", captureMode = CaptureMode.DISABLED) private String getPageContents(String address) throws IOException { URL url = new URL(address); putMetadata("getPageContents", address); diff --git a/example/HelloWorldFunction/src/main/java/helloworld/AppParams.java b/example/HelloWorldFunction/src/main/java/helloworld/AppParams.java index 7633263f3..5a2ea5d0f 100644 --- a/example/HelloWorldFunction/src/main/java/helloworld/AppParams.java +++ b/example/HelloWorldFunction/src/main/java/helloworld/AppParams.java @@ -23,8 +23,7 @@ import static software.amazon.lambda.powertools.parameters.transform.Transformer.json; public class AppParams implements RequestHandler { - - Logger log = LogManager.getLogger(); + private final static Logger log = LogManager.getLogger(); SSMProvider ssmProvider = ParamManager.getSsmProvider(); SecretsProvider secretsProvider = ParamManager.getSecretsProvider(); diff --git a/example/HelloWorldFunction/src/main/java/helloworld/AppSqsEvent.java b/example/HelloWorldFunction/src/main/java/helloworld/AppSqsEvent.java index d2a347856..31ba1f760 100644 --- a/example/HelloWorldFunction/src/main/java/helloworld/AppSqsEvent.java +++ b/example/HelloWorldFunction/src/main/java/helloworld/AppSqsEvent.java @@ -12,23 +12,23 @@ import static com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage; public class AppSqsEvent implements RequestHandler { - private static final Logger LOG = LogManager.getLogger(AppSqsEvent.class); + private static final Logger log = LogManager.getLogger(AppSqsEvent.class); - @Override @SqsBatch(SampleMessageHandler.class) @Logging(logEvent = true) + @Override public String handleRequest(SQSEvent input, Context context) { return "{\"statusCode\": 200}"; } - public class SampleMessageHandler implements SqsMessageHandler { + public static class SampleMessageHandler implements SqsMessageHandler { @Override public String process(SQSMessage message) { if("19dd0b57-b21e-4ac1-bd88-01bbb068cb99".equals(message.getMessageId())) { throw new RuntimeException(message.getMessageId()); } - LOG.info("Processing message with details {}", message); + log.info("Processing message with details {}", message); return message.getMessageId(); } } diff --git a/example/HelloWorldFunction/src/main/java/helloworld/AppSqsEventUtil.java b/example/HelloWorldFunction/src/main/java/helloworld/AppSqsEventUtil.java index bed5fae76..3ececdfe1 100644 --- a/example/HelloWorldFunction/src/main/java/helloworld/AppSqsEventUtil.java +++ b/example/HelloWorldFunction/src/main/java/helloworld/AppSqsEventUtil.java @@ -13,7 +13,7 @@ import static java.util.Collections.emptyList; public class AppSqsEventUtil implements RequestHandler> { - private static final Logger LOG = LogManager.getLogger(AppSqsEventUtil.class); + private static final Logger log = LogManager.getLogger(AppSqsEventUtil.class); @Override public List handleRequest(SQSEvent input, Context context) { @@ -24,15 +24,15 @@ public List handleRequest(SQSEvent input, Context context) { throw new RuntimeException(message.getMessageId()); } - LOG.info("Processing message with details {}", message); + log.info("Processing message with details {}", message); return message.getMessageId(); }); } catch (SQSBatchProcessingException e) { - LOG.info("Exception details {}", e.getMessage(), e); - LOG.info("Success message Returns{}", e.successMessageReturnValues()); - LOG.info("Failed messages {}", e.getFailures()); - LOG.info("Failed messages Reasons {}", e.getExceptions()); + log.info("Exception details {}", e.getMessage(), e); + log.info("Success message Returns{}", e.successMessageReturnValues()); + log.info("Failed messages {}", e.getFailures()); + log.info("Failed messages Reasons {}", e.getExceptions()); return emptyList(); } } diff --git a/powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java b/powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java index 467822f40..f049b0b04 100644 --- a/powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java +++ b/powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java @@ -26,6 +26,7 @@ import static java.util.Optional.of; public final class LambdaHandlerProcessor { + // SERVICE_NAME cannot be final for testing purposes private static String SERVICE_NAME = null != System.getenv("POWERTOOLS_SERVICE_NAME") ? System.getenv("POWERTOOLS_SERVICE_NAME") : "service_undefined"; private static Boolean IS_COLD_START = null; diff --git a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/BaseProvider.java b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/BaseProvider.java index 5c60b7c78..706b555c1 100644 --- a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/BaseProvider.java +++ b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/BaseProvider.java @@ -53,8 +53,8 @@ public BaseProvider(CacheManager cacheManager) { * Retrieve multiple parameter values from the underlying parameter store.
* Abstract: Implement this method in a child class of {@link BaseProvider} * - * @param path - * @return + * @param path Parameter store path + * @return Return map of parameter name value pairs */ protected abstract Map getMultipleValues(String path); diff --git a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/ParamManager.java b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/ParamManager.java index 524890a2e..0131ae179 100644 --- a/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/ParamManager.java +++ b/powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/ParamManager.java @@ -31,6 +31,7 @@ public final class ParamManager { private static final CacheManager cacheManager = new CacheManager(); private static final TransformationManager transformationManager = new TransformationManager(); + // NOTE: For testing purposes `providers` cannot be final private static ConcurrentHashMap, BaseProvider> providers = new ConcurrentHashMap<>(); /** @@ -43,7 +44,7 @@ public static T getProvider(Class providerClass) { if (providerClass == null) { throw new IllegalStateException("providerClass cannot be null."); } - return (T) providers.computeIfAbsent(providerClass, (k) -> createProvider(k)); + return (T) providers.computeIfAbsent(providerClass, ParamManager::createProvider); } /** diff --git a/powertools-validation/src/main/java/software/amazon/lambda/powertools/validation/Validation.java b/powertools-validation/src/main/java/software/amazon/lambda/powertools/validation/Validation.java index 1c191f031..68260cb47 100644 --- a/powertools-validation/src/main/java/software/amazon/lambda/powertools/validation/Validation.java +++ b/powertools-validation/src/main/java/software/amazon/lambda/powertools/validation/Validation.java @@ -97,7 +97,7 @@ String outboundSchema() default ""; /** - * path to the subelement + * path to the sub element */ String envelope() default ""; diff --git a/powertools-validation/src/main/java/software/amazon/lambda/powertools/validation/ValidationException.java b/powertools-validation/src/main/java/software/amazon/lambda/powertools/validation/ValidationException.java index cf8ebe02b..2d3e1b350 100644 --- a/powertools-validation/src/main/java/software/amazon/lambda/powertools/validation/ValidationException.java +++ b/powertools-validation/src/main/java/software/amazon/lambda/powertools/validation/ValidationException.java @@ -13,10 +13,6 @@ */ package software.amazon.lambda.powertools.validation; -import com.fasterxml.jackson.core.JsonProcessingException; - -import java.io.IOException; - public class ValidationException extends RuntimeException { private static final long serialVersionUID = 1133341411263381508L;