From fa45f7f6b1e2611475cd57f7201d986d560bb682 Mon Sep 17 00:00:00 2001 From: Scott Gerring Date: Wed, 15 Feb 2023 11:07:33 +0100 Subject: [PATCH 01/29] Pull in examples code --- examples/CoreUtilities/.gitignore | 0 .../Function/dependency-reduced-pom.xml | 87 +++++++++ examples/CoreUtilities/Function/pom.xml | 123 ++++++++++++ .../src/main/java/helloworld/App.java | 115 +++++++++++ .../src/main/java/helloworld/AppStream.java | 25 +++ .../Function/src/main/resources/log4j2.xml | 16 ++ .../src/test/java/helloworld/AppTest.java | 43 +++++ examples/CoreUtilities/README.md | 138 ++++++++++++++ examples/CoreUtilities/events/event.json | 63 ++++++ examples/CoreUtilities/template.yaml | 66 +++++++ examples/Idempotency/Function/pom.xml | 180 ++++++++++++++++++ .../src/main/java/helloworld/App.java | 92 +++++++++ .../src/test/java/helloworld/AppTest.java | 86 +++++++++ .../Function/src/test/resources/event.json | 63 ++++++ examples/Idempotency/README.md | 21 ++ examples/Idempotency/template.yaml | 59 ++++++ examples/Parameters/Function/pom.xml | 92 +++++++++ .../java/org/demo/parameters/MyObject.java | 34 ++++ .../demo/parameters/ParametersFunction.java | 81 ++++++++ .../Function/src/main/resources/log4j2.xml | 16 ++ examples/Parameters/README.md | 21 ++ examples/Parameters/template.yaml | 97 ++++++++++ .../SerializationUtilities/Function/pom.xml | 69 +++++++ ...GatewayRequestDeserializationFunction.java | 34 ++++ .../java/org/demo/serialization/Product.java | 49 +++++ .../SQSEventDeserializationFunction.java | 27 +++ .../Function/src/main/resources/log4j2.xml | 16 ++ ...wayRequestDeserializationFunctionTest.java | 35 ++++ .../SQSEventDeserializationFunctionTest.java | 43 +++++ examples/SerializationUtilities/README.md | 21 ++ .../events/APIGatewayEvent.json | 63 ++++++ .../events/SQSEvent.json | 39 ++++ examples/SerializationUtilities/template.yaml | 63 ++++++ examples/SqsBatchProcessing/Functions/pom.xml | 124 ++++++++++++ .../java/org/demo/sqs/SqsMessageSender.java | 78 ++++++++ .../src/main/java/org/demo/sqs/SqsPoller.java | 60 ++++++ .../Functions/src/main/resources/log4j2.xml | 16 ++ examples/SqsBatchProcessing/README.md | 3 + examples/SqsBatchProcessing/events/event.json | 63 ++++++ examples/SqsBatchProcessing/template.yaml | 148 ++++++++++++++ examples/Validation/Function/pom.xml | 87 +++++++++ .../demo/validation/InboundValidation.java | 51 +++++ .../Function/src/main/resources/schema.json | 55 ++++++ .../validation/InboundValidationTest.java | 51 +++++ examples/Validation/README.md | 21 ++ examples/Validation/events/event.json | 63 ++++++ examples/Validation/template.yaml | 33 ++++ 47 files changed, 2830 insertions(+) create mode 100644 examples/CoreUtilities/.gitignore create mode 100644 examples/CoreUtilities/Function/dependency-reduced-pom.xml create mode 100644 examples/CoreUtilities/Function/pom.xml create mode 100644 examples/CoreUtilities/Function/src/main/java/helloworld/App.java create mode 100644 examples/CoreUtilities/Function/src/main/java/helloworld/AppStream.java create mode 100644 examples/CoreUtilities/Function/src/main/resources/log4j2.xml create mode 100644 examples/CoreUtilities/Function/src/test/java/helloworld/AppTest.java create mode 100644 examples/CoreUtilities/README.md create mode 100644 examples/CoreUtilities/events/event.json create mode 100644 examples/CoreUtilities/template.yaml create mode 100644 examples/Idempotency/Function/pom.xml create mode 100644 examples/Idempotency/Function/src/main/java/helloworld/App.java create mode 100644 examples/Idempotency/Function/src/test/java/helloworld/AppTest.java create mode 100644 examples/Idempotency/Function/src/test/resources/event.json create mode 100644 examples/Idempotency/README.md create mode 100644 examples/Idempotency/template.yaml create mode 100644 examples/Parameters/Function/pom.xml create mode 100644 examples/Parameters/Function/src/main/java/org/demo/parameters/MyObject.java create mode 100644 examples/Parameters/Function/src/main/java/org/demo/parameters/ParametersFunction.java create mode 100644 examples/Parameters/Function/src/main/resources/log4j2.xml create mode 100644 examples/Parameters/README.md create mode 100644 examples/Parameters/template.yaml create mode 100644 examples/SerializationUtilities/Function/pom.xml create mode 100644 examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java create mode 100644 examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/Product.java create mode 100644 examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/SQSEventDeserializationFunction.java create mode 100644 examples/SerializationUtilities/Function/src/main/resources/log4j2.xml create mode 100644 examples/SerializationUtilities/Function/src/test/java/org/demo/serialization/APIGatewayRequestDeserializationFunctionTest.java create mode 100644 examples/SerializationUtilities/Function/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java create mode 100644 examples/SerializationUtilities/README.md create mode 100644 examples/SerializationUtilities/events/APIGatewayEvent.json create mode 100644 examples/SerializationUtilities/events/SQSEvent.json create mode 100644 examples/SerializationUtilities/template.yaml create mode 100644 examples/SqsBatchProcessing/Functions/pom.xml create mode 100644 examples/SqsBatchProcessing/Functions/src/main/java/org/demo/sqs/SqsMessageSender.java create mode 100644 examples/SqsBatchProcessing/Functions/src/main/java/org/demo/sqs/SqsPoller.java create mode 100644 examples/SqsBatchProcessing/Functions/src/main/resources/log4j2.xml create mode 100644 examples/SqsBatchProcessing/README.md create mode 100644 examples/SqsBatchProcessing/events/event.json create mode 100644 examples/SqsBatchProcessing/template.yaml create mode 100644 examples/Validation/Function/pom.xml create mode 100644 examples/Validation/Function/src/main/java/org/demo/validation/InboundValidation.java create mode 100644 examples/Validation/Function/src/main/resources/schema.json create mode 100644 examples/Validation/Function/src/test/java/org/demo/validation/InboundValidationTest.java create mode 100644 examples/Validation/README.md create mode 100644 examples/Validation/events/event.json create mode 100644 examples/Validation/template.yaml diff --git a/examples/CoreUtilities/.gitignore b/examples/CoreUtilities/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/examples/CoreUtilities/Function/dependency-reduced-pom.xml b/examples/CoreUtilities/Function/dependency-reduced-pom.xml new file mode 100644 index 000000000..4acacd75f --- /dev/null +++ b/examples/CoreUtilities/Function/dependency-reduced-pom.xml @@ -0,0 +1,87 @@ + + + 4.0.0 + powertools + Function + A sample Hello World created for SAM CLI using powertools core utilities + 1.0 + + + + org.codehaus.mojo + aspectj-maven-plugin + 1.14.0 + + + + compile + + + + + ${maven.compiler.source} + ${maven.compiler.target} + ${maven.compiler.target} + + + software.amazon.lambda + powertools-tracing + + + software.amazon.lambda + powertools-logging + + + software.amazon.lambda + powertools-metrics + + + + + + maven-shade-plugin + 3.2.4 + + + package + + shade + + + + + + + + + + + com.github.edwgiz + maven-shade-plugin.log4j2-cachefile-transformer + 2.15 + + + + + + + + junit + junit + 4.13.2 + test + + + hamcrest-core + org.hamcrest + + + + + + 11 + 11 + UTF-8 + 2.17.1 + + diff --git a/examples/CoreUtilities/Function/pom.xml b/examples/CoreUtilities/Function/pom.xml new file mode 100644 index 000000000..6dcf27989 --- /dev/null +++ b/examples/CoreUtilities/Function/pom.xml @@ -0,0 +1,123 @@ + + 4.0.0 + powertools + Function + 1.0 + jar + A sample Hello World created for SAM CLI using powertools core utilities + + 11 + 11 + 2.19.0 + UTF-8 + + + + + software.amazon.lambda + powertools-tracing + 1.13.0 + + + software.amazon.lambda + powertools-logging + 1.13.0 + + + software.amazon.lambda + powertools-metrics + 1.13.0 + + + com.amazonaws + aws-lambda-java-core + 1.2.2 + + + com.amazonaws + aws-lambda-java-events + 3.11.0 + + + org.apache.logging.log4j + log4j-core + ${log4j.version} + + + org.apache.logging.log4j + log4j-api + ${log4j.version} + + + + junit + junit + 4.13.2 + test + + + + + + + org.codehaus.mojo + aspectj-maven-plugin + 1.14.0 + + ${maven.compiler.source} + ${maven.compiler.target} + ${maven.compiler.target} + + + software.amazon.lambda + powertools-tracing + + + software.amazon.lambda + powertools-logging + + + software.amazon.lambda + powertools-metrics + + + + + + + compile + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + + + + + + + + + + com.github.edwgiz + maven-shade-plugin.log4j2-cachefile-transformer + 2.15 + + + + + + diff --git a/examples/CoreUtilities/Function/src/main/java/helloworld/App.java b/examples/CoreUtilities/Function/src/main/java/helloworld/App.java new file mode 100644 index 000000000..b45440114 --- /dev/null +++ b/examples/CoreUtilities/Function/src/main/java/helloworld/App.java @@ -0,0 +1,115 @@ +package helloworld; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent; +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; +import com.amazonaws.xray.AWSXRay; +import com.amazonaws.xray.entities.Entity; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import software.amazon.cloudwatchlogs.emf.model.DimensionSet; +import software.amazon.cloudwatchlogs.emf.model.Unit; +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; + +import static software.amazon.lambda.powertools.metrics.MetricsUtils.metricsLogger; +import static software.amazon.lambda.powertools.metrics.MetricsUtils.withSingleMetric; +import static software.amazon.lambda.powertools.tracing.TracingUtils.putMetadata; +import static software.amazon.lambda.powertools.tracing.TracingUtils.withEntitySubsegment; + +/** + * Handler for requests to Lambda function. + */ +public class App implements RequestHandler { + private final static Logger log = LogManager.getLogger(App.class); + + @Logging(logEvent = true, samplingRate = 0.7) + @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<>(); + + headers.put("Content-Type", "application/json"); + headers.put("X-Custom-Header", "application/json"); + + metricsLogger().putMetric("CustomMetric1", 1, Unit.COUNT); + + withSingleMetric("CustomMetrics2", 1, Unit.COUNT, "Another", (metric) -> { + metric.setDimensions(DimensionSet.of("AnotherService", "CustomService")); + metric.setDimensions(DimensionSet.of("AnotherService1", "CustomService1")); + }); + + LoggingUtils.appendKey("test", "willBeLogged"); + + APIGatewayProxyResponseEvent response = new APIGatewayProxyResponseEvent() + .withHeaders(headers); + try { + final String pageContents = this.getPageContents("https://checkip.amazonaws.com"); + log.info(pageContents); + TracingUtils.putAnnotation("Test", "New"); + String output = String.format("{ \"message\": \"hello world\", \"location\": \"%s\" }", pageContents); + + TracingUtils.withSubsegment("loggingResponse", subsegment -> { + String sampled = "log something out"; + log.info(sampled); + log.info(output); + }); + + threadOption1(); + + threadOption2(); + + log.info("After output"); + return response + .withStatusCode(200) + .withBody(output); + } catch (IOException | InterruptedException e) { + return response + .withBody("{}") + .withStatusCode(500); + } + } + + private void threadOption1() throws InterruptedException { + final Entity traceEntity = AWSXRay.getTraceEntity(); + assert traceEntity != null; + traceEntity.run(new Thread(this::log)); + } + + private void threadOption2() throws InterruptedException { + Entity traceEntity = AWSXRay.getTraceEntity(); + Thread anotherThread = new Thread(() -> withEntitySubsegment("inlineLog", traceEntity, subsegment -> { + String var = "somethingToProcess"; + log.info("inside threaded logging inline {}", var); + })); + anotherThread.start(); + anotherThread.join(); + } + + @Tracing + private void log() { + log.info("inside threaded logging for function"); + } + + @Tracing(namespace = "getPageContents", captureMode = CaptureMode.DISABLED) + private String getPageContents(String address) throws IOException { + URL url = new URL(address); + putMetadata("getPageContents", address); + try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()))) { + return br.lines().collect(Collectors.joining(System.lineSeparator())); + } + } +} diff --git a/examples/CoreUtilities/Function/src/main/java/helloworld/AppStream.java b/examples/CoreUtilities/Function/src/main/java/helloworld/AppStream.java new file mode 100644 index 000000000..aed048eef --- /dev/null +++ b/examples/CoreUtilities/Function/src/main/java/helloworld/AppStream.java @@ -0,0 +1,25 @@ +package helloworld; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Map; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestStreamHandler; +import com.fasterxml.jackson.databind.ObjectMapper; +import software.amazon.lambda.powertools.logging.Logging; +import software.amazon.lambda.powertools.metrics.Metrics; + +public class AppStream implements RequestStreamHandler { + private static final ObjectMapper mapper = new ObjectMapper(); + + @Override + @Logging(logEvent = true) + @Metrics(namespace = "ServerlessAirline", service = "payment", captureColdStart = true) + public void handleRequest(InputStream input, OutputStream output, Context context) throws IOException { + Map map = mapper.readValue(input, Map.class); + + System.out.println(map.size()); + } +} diff --git a/examples/CoreUtilities/Function/src/main/resources/log4j2.xml b/examples/CoreUtilities/Function/src/main/resources/log4j2.xml new file mode 100644 index 000000000..e1fd14cea --- /dev/null +++ b/examples/CoreUtilities/Function/src/main/resources/log4j2.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/CoreUtilities/Function/src/test/java/helloworld/AppTest.java b/examples/CoreUtilities/Function/src/test/java/helloworld/AppTest.java new file mode 100644 index 000000000..b584ee944 --- /dev/null +++ b/examples/CoreUtilities/Function/src/test/java/helloworld/AppTest.java @@ -0,0 +1,43 @@ +package helloworld; + +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; +import com.amazonaws.xray.AWSXRay; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class AppTest { + + @Before + public void setup() { + if(null == System.getenv("LAMBDA_TASK_ROOT")) { + AWSXRay.beginSegment("test"); + } + } + + @After + public void tearDown() { + if (AWSXRay.getCurrentSubsegmentOptional().isPresent()) { + AWSXRay.endSubsegment(); + } + + if(null == System.getenv("LAMBDA_TASK_ROOT")) { + AWSXRay.endSegment(); + } + } + + @Test + public void successfulResponse() { + App app = new App(); + APIGatewayProxyResponseEvent result = app.handleRequest(null, null); + assertEquals(result.getStatusCode().intValue(), 200); + assertEquals(result.getHeaders().get("Content-Type"), "application/json"); + String content = result.getBody(); + assertNotNull(content); + assertTrue(content.contains("\"message\"")); + assertTrue(content.contains("\"hello world\"")); + assertTrue(content.contains("\"location\"")); + } +} diff --git a/examples/CoreUtilities/README.md b/examples/CoreUtilities/README.md new file mode 100644 index 000000000..f4bdc399c --- /dev/null +++ b/examples/CoreUtilities/README.md @@ -0,0 +1,138 @@ +# CoreUtilities + +This project contains source code and supporting files for a serverless application that you can deploy with the SAM CLI. It includes [Lambda Powertools for operational best practices](https://github.com/awslabs/aws-lambda-powertools-java), and the following files and folders. + +- HelloWorldFunction/src/main - Code for the application's Lambda function. +- events - Invocation events that you can use to invoke the function. +- HelloWorldFunction/src/test - Unit tests for the application code. +- template.yaml - A template that defines the application's AWS resources. + +The application uses several AWS resources, including Lambda functions and an API Gateway API. These resources are defined in the `template.yaml` file in this project. You can update the template to add AWS resources through the same deployment process that updates your application code. + +If you prefer to use an integrated development environment (IDE) to build and test your application, you can use the AWS Toolkit. +The AWS Toolkit is an open source plug-in for popular IDEs that uses the SAM CLI to build and deploy serverless applications on AWS. The AWS Toolkit also adds a simplified step-through debugging experience for Lambda function code. See the following links to get started. + +* [PyCharm](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/welcome.html) +* [IntelliJ](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/welcome.html) +* [VS Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/welcome.html) +* [Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/welcome.html) + +## Deploy the sample application + +The Serverless Application Model Command Line Interface (SAM CLI) is an extension of the AWS CLI that adds functionality for building and testing Lambda applications. It uses Docker to run your functions in an Amazon Linux environment that matches Lambda. It can also emulate your application's build environment and API. + +To use the SAM CLI, you need the following tools. + +* SAM CLI - [Install the SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) +* Java11 - [Install the Java 11](https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html) +* Maven - [Install Maven](https://maven.apache.org/install.html) +* Docker - [Install Docker community edition](https://hub.docker.com/search/?type=edition&offering=community) + +To build and deploy your application for the first time, run the following in your shell: + +```bash +Coreutilities$ sam build +Coreutilities$ sam deploy --guided +``` + +The first command will build the source of your application. The second command will package and deploy your application to AWS, with a series of prompts: + +* **Stack Name**: The name of the stack to deploy to CloudFormation. This should be unique to your account and region, and a good starting point would be something matching your project name. +* **AWS Region**: The AWS region you want to deploy your app to. +* **Confirm changes before deploy**: If set to yes, any change sets will be shown to you before execution for manual review. If set to no, the AWS SAM CLI will automatically deploy application changes. +* **Allow SAM CLI IAM role creation**: Many AWS SAM templates, including this example, create AWS IAM roles required for the AWS Lambda function(s) included to access AWS services. By default, these are scoped down to minimum required permissions. To deploy an AWS CloudFormation stack which creates or modified IAM roles, the `CAPABILITY_IAM` value for `capabilities` must be provided. If permission isn't provided through this prompt, to deploy this example you must explicitly pass `--capabilities CAPABILITY_IAM` to the `sam deploy` command. +* **Save arguments to samconfig.toml**: If set to yes, your choices will be saved to a configuration file inside the project, so that in the future you can just re-run `sam deploy` without parameters to deploy changes to your application. + +You can find your API Gateway Endpoint URL in the output values displayed after deployment. + +## Use the SAM CLI to build and test locally + +Build your application with the `sam build` command. + +```bash +Coreutilities$ sam build +``` + +The SAM CLI installs dependencies defined in `HelloWorldFunction/pom.xml`, creates a deployment package, and saves it in the `.aws-sam/build` folder. + +Test a single function by invoking it directly with a test event. An event is a JSON document that represents the input that the function receives from the event source. Test events are included in the `events` folder in this project. + +Run functions locally and invoke them with the `sam local invoke` command. + +```bash +Coreutilities$ sam local invoke HelloWorldFunction --event events/event.json +``` + +The SAM CLI can also emulate your application's API. Use the `sam local start-api` to run the API locally on port 3000. + +```bash +Coreutilities$ sam local start-api +Coreutilities$ curl http://localhost:3000/ +``` + +The SAM CLI reads the application template to determine the API's routes and the functions that they invoke. The `Events` property on each function's definition includes the route and method for each path. + +```yaml + Events: + HelloWorld: + Type: Api + Properties: + Path: /hello + Method: get +``` + +## Add a resource to your application +The application template uses AWS Serverless Application Model (AWS SAM) to define application resources. AWS SAM is an extension of AWS CloudFormation with a simpler syntax for configuring common serverless application resources such as functions, triggers, and APIs. For resources not included in [the SAM specification](https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md), you can use standard [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) resource types. + +## Fetch, tail, and filter Lambda function logs + +To simplify troubleshooting, SAM CLI has a command called `sam logs`. `sam logs` lets you fetch logs generated by your deployed Lambda function from the command line. In addition to printing the logs on the terminal, this command has several nifty features to help you quickly find the bug. + +`NOTE`: This command works for all AWS Lambda functions; not just the ones you deploy using SAM. + +```bash +Coreutilities$ sam logs -n HelloWorldFunction --stack-name --tail +``` + +You can find more information and examples about filtering Lambda function logs in the [SAM CLI Documentation](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-logging.html). + +## Unit tests + +Tests are defined in the `HelloWorldFunction/src/test` folder in this project. + +```bash +Coreutilities$ cd HelloWorldFunction +HelloWorldFunction$ mvn test +``` + +## Cleanup + +To delete the sample application that you created, use the AWS CLI. Assuming you used your project name for the stack name, you can run the following: + +```bash +aws cloudformation delete-stack --stack-name +``` + +# Appendix + +## Powertools + +**Tracing** + +[Tracing utility](https://awslabs.github.io/aws-lambda-powertools-java/core/tracing/) provides functionality to reduce the overhead of performing common tracing tasks. It traces the execution of this sample code including the response and exceptions as tracing metadata - You can visualize them in AWS X-Ray. + +**Logger** + +[Logging utility](https://awslabs.github.io/aws-lambda-powertools-java/core/logging/) creates an opinionated application Logger with structured logging as the output, dynamically samples a percentage (samplingRate) of your logs in DEBUG mode for concurrent invocations, log incoming events as your function is invoked, and injects key information from Lambda context object into your Logger - You can visualize them in Amazon CloudWatch Logs. + +**Metrics** + +[Metrics utility](https://awslabs.github.io/aws-lambda-powertools-java/core/metrics/) captures cold start metric of your Lambda invocation, and could add additional metrics to help you understand your application KPIs - You can visualize them in Amazon CloudWatch. + +## Resources + +See the [AWS SAM developer guide](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) for an introduction to SAM specification, the SAM CLI, and serverless application concepts. + +Check the [AWS Lambda Powertools Java](https://awslabs.github.io/aws-lambda-powertools-java/) for more information on how to use and configure such tools + +Next, you can use AWS Serverless Application Repository to deploy ready to use Apps that go beyond hello world samples and learn how authors developed their applications: [AWS Serverless Application Repository main page](https://aws.amazon.com/serverless/serverlessrepo/) diff --git a/examples/CoreUtilities/events/event.json b/examples/CoreUtilities/events/event.json new file mode 100644 index 000000000..3822fadaa --- /dev/null +++ b/examples/CoreUtilities/events/event.json @@ -0,0 +1,63 @@ +{ + "body": "{\"message\": \"hello world\"}", + "resource": "/{proxy+}", + "path": "/path/to/resource", + "httpMethod": "POST", + "isBase64Encoded": false, + "queryStringParameters": { + "foo": "bar" + }, + "pathParameters": { + "proxy": "/path/to/resource" + }, + "stageVariables": { + "baz": "qux" + }, + "headers": { + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", + "Accept-Encoding": "gzip, deflate, sdch", + "Accept-Language": "en-US,en;q=0.8", + "Cache-Control": "max-age=0", + "CloudFront-Forwarded-Proto": "https", + "CloudFront-Is-Desktop-Viewer": "true", + "CloudFront-Is-Mobile-Viewer": "false", + "CloudFront-Is-SmartTV-Viewer": "false", + "CloudFront-Is-Tablet-Viewer": "false", + "CloudFront-Viewer-Country": "US", + "Host": "1234567890.execute-api.us-east-1.amazonaws.com", + "Upgrade-Insecure-Requests": "1", + "User-Agent": "Custom User Agent String", + "Via": "1.1 08f323deadbeefa7af34d5feb414ce27.cloudfront.net (CloudFront)", + "X-Amz-Cf-Id": "cDehVQoZnx43VYQb9j2-nvCh-9z396Uhbp027Y2JvkCPNLmGJHqlaA==", + "X-Forwarded-For": "127.0.0.1, 127.0.0.2", + "X-Forwarded-Port": "443", + "X-Forwarded-Proto": "https" + }, + "requestContext": { + "accountId": "123456789012", + "resourceId": "123456", + "stage": "prod", + "requestId": "c6af9ac6-7b61-11e6-9a41-93e8deadbeef", + "requestTime": "09/Apr/2015:12:34:56 +0000", + "requestTimeEpoch": 1428582896000, + "identity": { + "cognitoIdentityPoolId": null, + "accountId": null, + "cognitoIdentityId": null, + "caller": null, + "accessKey": null, + "sourceIp": "127.0.0.1", + "cognitoAuthenticationType": null, + "cognitoAuthenticationProvider": null, + "userArn": null, + "userAgent": "Custom User Agent String", + "user": null + }, + "path": "/prod/path/to/resource", + "resourcePath": "/{proxy+}", + "httpMethod": "POST", + "apiId": "1234567890", + "protocol": "HTTP/1.1" + } + } + \ No newline at end of file diff --git a/examples/CoreUtilities/template.yaml b/examples/CoreUtilities/template.yaml new file mode 100644 index 000000000..ed0528602 --- /dev/null +++ b/examples/CoreUtilities/template.yaml @@ -0,0 +1,66 @@ +AWSTemplateFormatVersion: '2010-09-09' +Transform: AWS::Serverless-2016-10-31 +Description: > + CoreUtilities + +# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst +Globals: + Function: + Timeout: 20 + Runtime: java11 + MemorySize: 512 + Tracing: Active # https://docs.aws.amazon.com/lambda/latest/dg/lambda-x-ray.html + Environment: + Variables: + # Powertools env vars: https://awslabs.github.io/aws-lambda-powertools-python/#environment-variables + POWERTOOLS_LOG_LEVEL: INFO + POWERTOOLS_LOGGER_SAMPLE_RATE: 0.1 + POWERTOOLS_LOGGER_LOG_EVENT: true + POWERTOOLS_METRICS_NAMESPACE: Coreutilities + +Resources: + HelloWorldFunction: + Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction + Properties: + CodeUri: Function + Handler: helloworld.App::handleRequest + Environment: # More info about Env Vars: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object + Variables: + POWERTOOLS_SERVICE_NAME: hello + Events: + HelloWorld: + Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api + Properties: + Path: /hello + Method: get + + HelloWorldStreamFunction: + Type: AWS::Serverless::Function + Properties: + CodeUri: Function + Handler: helloworld.AppStream::handleRequest + MemorySize: 512 + Tracing: Active + Environment: + Variables: + POWERTOOLS_LOGGER_SAMPLE_RATE: 0.7 + Events: + HelloWorld: + Type: Api + Properties: + Path: /hellostream + Method: get + +Outputs: + # ServerlessRestApi is an implicit API created out of Events key under Serverless::Function + # Find out more about other implicit resources you can reference within SAM + # https://github.com/awslabs/serverless-application-model/blob/master/docs/internals/generated_resources.rst#api + HelloWorldApi: + Description: "API Gateway endpoint URL for Prod stage for Hello World function" + Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/hello/" + HelloWorldFunction: + Description: "Hello World Lambda Function ARN" + Value: !GetAtt HelloWorldFunction.Arn + HelloWorldFunctionIamRole: + Description: "Implicit IAM Role created for Hello World function" + Value: !GetAtt HelloWorldFunctionRole.Arn diff --git a/examples/Idempotency/Function/pom.xml b/examples/Idempotency/Function/pom.xml new file mode 100644 index 000000000..92d9fab17 --- /dev/null +++ b/examples/Idempotency/Function/pom.xml @@ -0,0 +1,180 @@ + + 4.0.0 + powertools + Function + 1.0 + jar + A sample Hello World using powertools idempotency + + 11 + 11 + 2.19.0 + UTF-8 + + + + + software.amazon.lambda + powertools-tracing + 1.13.0 + + + software.amazon.lambda + powertools-logging + 1.13.0 + + + software.amazon.lambda + powertools-idempotency + 1.13.0 + + + com.amazonaws + aws-lambda-java-core + 1.2.2 + + + com.amazonaws + aws-lambda-java-events + 3.11.0 + + + org.apache.logging.log4j + log4j-core + ${log4j.version} + + + org.apache.logging.log4j + log4j-api + ${log4j.version} + + + + org.mockito + mockito-core + 5.1.1 + test + + + org.junit.jupiter + junit-jupiter-api + 5.9.2 + test + + + com.amazonaws + DynamoDBLocal + 1.21.0 + test + + + com.amazonaws + aws-lambda-java-tests + 1.1.1 + + + + + + + org.codehaus.mojo + aspectj-maven-plugin + 1.14.0 + + ${maven.compiler.source} + ${maven.compiler.target} + ${maven.compiler.target} + + + software.amazon.lambda + powertools-tracing + + + software.amazon.lambda + powertools-logging + + + software.amazon.lambda + powertools-idempotency + + + + + + + compile + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy + test-compile + + copy-dependencies + + + test + so,dll,dylib + ${project.build.directory}/native-libs + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.0.0-M5 + + + ${project.build.directory}/native-libs + + + idempotency + eu-central-1 + LOG_ERROR + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + + + + + + + + + + com.github.edwgiz + maven-shade-plugin.log4j2-cachefile-transformer + 2.15 + + + + + + + + dynamodb-local-oregon + DynamoDB Local Release Repository + https://s3.eu-central-1.amazonaws.com/dynamodb-local-frankfurt/release + + + diff --git a/examples/Idempotency/Function/src/main/java/helloworld/App.java b/examples/Idempotency/Function/src/main/java/helloworld/App.java new file mode 100644 index 000000000..3fe3fc458 --- /dev/null +++ b/examples/Idempotency/Function/src/main/java/helloworld/App.java @@ -0,0 +1,92 @@ +package helloworld; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent; +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import software.amazon.awssdk.services.dynamodb.DynamoDbClient; +import software.amazon.lambda.powertools.idempotency.Idempotency; +import software.amazon.lambda.powertools.idempotency.IdempotencyConfig; +import software.amazon.lambda.powertools.idempotency.Idempotent; +import software.amazon.lambda.powertools.idempotency.persistence.DynamoDBPersistenceStore; +import software.amazon.lambda.powertools.logging.Logging; +import software.amazon.lambda.powertools.utilities.JsonConfig; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + +public class App implements RequestHandler { + private final static Logger log = LogManager.getLogger(App.class); + + public App() { + this(null); + } + + public App(DynamoDbClient client) { + Idempotency.config().withConfig( + IdempotencyConfig.builder() + .withEventKeyJMESPath("powertools_json(body).address") // will retrieve the address field in the body which is a string transformed to json with `powertools_json` + .build()) + .withPersistenceStore( + DynamoDBPersistenceStore.builder() + .withDynamoDbClient(client) + .withTableName(System.getenv("IDEMPOTENCY_TABLE")) + .build() + ).configure(); + } + + /** + * Try with: + *
+     *     curl -X POST https://[REST-API-ID].execute-api.[REGION].amazonaws.com/Prod/helloidem/ -H "Content-Type: application/json" -d '{"address": "https://checkip.amazonaws.com"}'
+     * 
+ *
    + *
  • First call will execute the handleRequest normally, and store the response in the idempotency table (Look into DynamoDB)
  • + *
  • Second call (and next ones) will retrieve from the cache (if cache is enabled, which is by default) or from the store, the handler won't be called. Until the expiration happens (by default 1 hour).
  • + *
+ */ + @Idempotent // *** THE MAGIC IS HERE *** + @Logging(logEvent = true) + public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEvent input, final Context context) { + Map headers = new HashMap<>(); + + headers.put("Content-Type", "application/json"); + headers.put("Access-Control-Allow-Origin", "*"); + headers.put("Access-Control-Allow-Methods", "GET, OPTIONS"); + headers.put("Access-Control-Allow-Headers", "*"); + + APIGatewayProxyResponseEvent response = new APIGatewayProxyResponseEvent() + .withHeaders(headers); + try { + String address = JsonConfig.get().getObjectMapper().readTree(input.getBody()).get("address").asText(); + final String pageContents = this.getPageContents(address); + String output = String.format("{ \"message\": \"hello world\", \"location\": \"%s\" }", pageContents); + + log.info("ip is {}", pageContents); + return response + .withStatusCode(200) + .withBody(output); + + } catch (IOException e) { + return response + .withBody("{}") + .withStatusCode(500); + } + } + + // we could also put the @Idempotent annotation here, but using it on the handler avoids executing the handler (cost reduction). + // Use it on other methods to handle multiple items (with SQS batch processing for example) + private String getPageContents(String address) throws IOException { + URL url = new URL(address); + try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()))) { + return br.lines().collect(Collectors.joining(System.lineSeparator())); + } + } +} \ No newline at end of file diff --git a/examples/Idempotency/Function/src/test/java/helloworld/AppTest.java b/examples/Idempotency/Function/src/test/java/helloworld/AppTest.java new file mode 100644 index 000000000..7a5304e36 --- /dev/null +++ b/examples/Idempotency/Function/src/test/java/helloworld/AppTest.java @@ -0,0 +1,86 @@ +package helloworld; + +import com.amazonaws.services.dynamodbv2.local.main.ServerRunner; +import com.amazonaws.services.dynamodbv2.local.server.DynamoDBProxyServer; +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; +import com.amazonaws.services.lambda.runtime.tests.EventLoader; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; +import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; +import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.dynamodb.DynamoDbClient; +import software.amazon.awssdk.services.dynamodb.model.*; + +import java.io.IOException; +import java.net.ServerSocket; +import java.net.URI; + +public class AppTest { + @Mock + private Context context; + private App app; + private static DynamoDbClient client; + + @BeforeAll + public static void setupDynamoLocal() { + int port = getFreePort(); + try { + DynamoDBProxyServer dynamoProxy = ServerRunner.createServerFromCommandLineArgs(new String[]{ + "-inMemory", + "-port", + Integer.toString(port) + }); + dynamoProxy.start(); + } catch (Exception e) { + throw new RuntimeException(); + } + + client = DynamoDbClient.builder() + .httpClient(UrlConnectionHttpClient.builder().build()) + .region(Region.EU_WEST_1) + .endpointOverride(URI.create("http://localhost:" + port)) + .credentialsProvider(StaticCredentialsProvider.create( + AwsBasicCredentials.create("FAKE", "FAKE"))) + .build(); + + client.createTable(CreateTableRequest.builder() + .tableName("idempotency") + .keySchema(KeySchemaElement.builder().keyType(KeyType.HASH).attributeName("id").build()) + .attributeDefinitions( + AttributeDefinition.builder().attributeName("id").attributeType(ScalarAttributeType.S).build() + ) + .billingMode(BillingMode.PAY_PER_REQUEST) + .build()); + } + + private static int getFreePort() { + try { + ServerSocket socket = new ServerSocket(0); + int port = socket.getLocalPort(); + socket.close(); + return port; + } catch (IOException ioe) { + throw new RuntimeException(ioe); + } + } + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + app = new App(client); + } + + @Test + public void testApp() { + APIGatewayProxyResponseEvent response = app.handleRequest(EventLoader.loadApiGatewayRestEvent("event.json"), context); + Assertions.assertNotNull(response); + Assertions.assertTrue(response.getBody().contains("hello world")); + } +} diff --git a/examples/Idempotency/Function/src/test/resources/event.json b/examples/Idempotency/Function/src/test/resources/event.json new file mode 100644 index 000000000..fd7f5ace7 --- /dev/null +++ b/examples/Idempotency/Function/src/test/resources/event.json @@ -0,0 +1,63 @@ +{ + "body": "{\"address\": \"https://checkip.amazonaws.com\"}", + "resource": "/{proxy+}", + "path": "/path/to/resource", + "httpMethod": "POST", + "isBase64Encoded": false, + "queryStringParameters": { + "foo": "bar" + }, + "pathParameters": { + "proxy": "/path/to/resource" + }, + "stageVariables": { + "baz": "qux" + }, + "headers": { + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", + "Accept-Encoding": "gzip, deflate, sdch", + "Accept-Language": "en-US,en;q=0.8", + "Cache-Control": "max-age=0", + "CloudFront-Forwarded-Proto": "https", + "CloudFront-Is-Desktop-Viewer": "true", + "CloudFront-Is-Mobile-Viewer": "false", + "CloudFront-Is-SmartTV-Viewer": "false", + "CloudFront-Is-Tablet-Viewer": "false", + "CloudFront-Viewer-Country": "US", + "Host": "1234567890.execute-api.us-east-1.amazonaws.com", + "Upgrade-Insecure-Requests": "1", + "User-Agent": "Custom User Agent String", + "Via": "1.1 08f323deadbeefa7af34d5feb414ce27.cloudfront.net (CloudFront)", + "X-Amz-Cf-Id": "cDehVQoZnx43VYQb9j2-nvCh-9z396Uhbp027Y2JvkCPNLmGJHqlaA==", + "X-Forwarded-For": "127.0.0.1, 127.0.0.2", + "X-Forwarded-Port": "443", + "X-Forwarded-Proto": "https" + }, + "requestContext": { + "accountId": "123456789012", + "resourceId": "123456", + "stage": "prod", + "requestId": "c6af9ac6-7b61-11e6-9a41-93e8deadbeef", + "requestTime": "09/Apr/2015:12:34:56 +0000", + "requestTimeEpoch": 1428582896000, + "identity": { + "cognitoIdentityPoolId": null, + "accountId": null, + "cognitoIdentityId": null, + "caller": null, + "accessKey": null, + "sourceIp": "127.0.0.1", + "cognitoAuthenticationType": null, + "cognitoAuthenticationProvider": null, + "userArn": null, + "userAgent": "Custom User Agent String", + "user": null + }, + "path": "/prod/path/to/resource", + "resourcePath": "/{proxy+}", + "httpMethod": "POST", + "apiId": "1234567890", + "protocol": "HTTP/1.1" + } + } + \ No newline at end of file diff --git a/examples/Idempotency/README.md b/examples/Idempotency/README.md new file mode 100644 index 000000000..a919f0c70 --- /dev/null +++ b/examples/Idempotency/README.md @@ -0,0 +1,21 @@ +# Idempotency + +This project contains an example of Lambda function using the idempotency module of Lambda Powertools for Java. For more information on this module, please refer to the [documentation](https://awslabs.github.io/aws-lambda-powertools-java/utilities/idempotency/). + +## Deploy the sample application + +This sample is based on Serverless Application Model (SAM) and you can use the SAM Command Line Interface (SAM CLI) to build it and deploy it to AWS. + +To use the SAM CLI, you need the following tools. + +* SAM CLI - [Install the SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) +* Java11 - [Install the Java 11](https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html) +* Maven - [Install Maven](https://maven.apache.org/install.html) +* Docker - [Install Docker community edition](https://hub.docker.com/search/?type=edition&offering=community) + +To build and deploy your application for the first time, run the following in your shell: + +```bash +Coreutilities$ sam build +Coreutilities$ sam deploy --guided +``` diff --git a/examples/Idempotency/template.yaml b/examples/Idempotency/template.yaml new file mode 100644 index 000000000..d0708c6a4 --- /dev/null +++ b/examples/Idempotency/template.yaml @@ -0,0 +1,59 @@ +AWSTemplateFormatVersion: '2010-09-09' +Transform: AWS::Serverless-2016-10-31 +Description: > + Idempotency demo + +Globals: + Function: + Timeout: 20 + Runtime: java11 + MemorySize: 512 + Tracing: Active + Environment: + Variables: + POWERTOOLS_LOG_LEVEL: INFO + POWERTOOLS_LOGGER_SAMPLE_RATE: 0.1 + POWERTOOLS_LOGGER_LOG_EVENT: true + +Resources: + IdempotencyTable: + Type: AWS::DynamoDB::Table + Properties: + AttributeDefinitions: + - AttributeName: id + AttributeType: S + KeySchema: + - AttributeName: id + KeyType: HASH + TimeToLiveSpecification: + AttributeName: expiration + Enabled: true + BillingMode: PAY_PER_REQUEST + + IdempotencyFunction: + Type: AWS::Serverless::Function + Properties: + CodeUri: Function + Handler: helloworld.App::handleRequest + Policies: + - DynamoDBCrudPolicy: + TableName: !Ref IdempotencyTable + Environment: + Variables: + POWERTOOLS_SERVICE_NAME: idempotency + IDEMPOTENCY_TABLE: !Ref IdempotencyTable + Events: + HelloWorld: + Type: Api + Properties: + Path: /helloidem + Method: post + +Outputs: + HelloWorldApi: + Description: "API Gateway endpoint URL for Prod stage for Idempotent function" + Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/helloidem/" + HelloWorldFunction: + Description: "Idempotent Lambda Function ARN" + Value: !GetAtt IdempotencyFunction.Arn + diff --git a/examples/Parameters/Function/pom.xml b/examples/Parameters/Function/pom.xml new file mode 100644 index 000000000..18bec7dbe --- /dev/null +++ b/examples/Parameters/Function/pom.xml @@ -0,0 +1,92 @@ + + 4.0.0 + demo + Functions + 1.0 + jar + Sample app demoing parameters utility of Powertools. + + 11 + 11 + 2.19.0 + UTF-8 + + + + + software.amazon.lambda + powertools-logging + 1.13.0 + + + software.amazon.lambda + powertools-parameters + 1.13.0 + + + com.amazonaws + aws-lambda-java-core + 1.2.2 + + + com.amazonaws + aws-lambda-java-events + 3.11.0 + + + + + org.mockito + mockito-core + 5.1.1 + test + + + org.junit.jupiter + junit-jupiter-api + 5.9.2 + test + + + org.junit.jupiter + junit-jupiter-engine + 5.9.2 + test + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + 2.22.0 + + + org.codehaus.mojo + aspectj-maven-plugin + 1.14.0 + + ${maven.compiler.source} + ${maven.compiler.target} + ${maven.compiler.target} + + + software.amazon.lambda + powertools-parameters + + + + + + + compile + + + + + + + diff --git a/examples/Parameters/Function/src/main/java/org/demo/parameters/MyObject.java b/examples/Parameters/Function/src/main/java/org/demo/parameters/MyObject.java new file mode 100644 index 000000000..2cf145284 --- /dev/null +++ b/examples/Parameters/Function/src/main/java/org/demo/parameters/MyObject.java @@ -0,0 +1,34 @@ +package org.demo.parameters; + +public class MyObject { + + private long id; + private String code; + + public MyObject() { + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + @Override + public String toString() { + return "MyObject{" + + "id=" + id + + ", code='" + code + '\'' + + '}'; + } +} diff --git a/examples/Parameters/Function/src/main/java/org/demo/parameters/ParametersFunction.java b/examples/Parameters/Function/src/main/java/org/demo/parameters/ParametersFunction.java new file mode 100644 index 000000000..f5d98a408 --- /dev/null +++ b/examples/Parameters/Function/src/main/java/org/demo/parameters/ParametersFunction.java @@ -0,0 +1,81 @@ +package org.demo.parameters; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent; +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import software.amazon.lambda.powertools.parameters.ParamManager; +import software.amazon.lambda.powertools.parameters.SSMProvider; +import software.amazon.lambda.powertools.parameters.SecretsProvider; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + +import static java.time.temporal.ChronoUnit.SECONDS; +import static software.amazon.lambda.powertools.parameters.transform.Transformer.base64; +import static software.amazon.lambda.powertools.parameters.transform.Transformer.json; + +public class ParametersFunction implements RequestHandler { + private final static Logger log = LogManager.getLogger(); + + SSMProvider ssmProvider = ParamManager.getSsmProvider(); + SecretsProvider secretsProvider = ParamManager.getSecretsProvider(); + + String simpleValue = ssmProvider.defaultMaxAge(30, SECONDS).get("/powertools-java/sample/simplekey"); + String listValue = ssmProvider.withMaxAge(60, SECONDS).get("/powertools-java/sample/keylist"); + MyObject jsonObj = ssmProvider.withTransformation(json).get("/powertools-java/sample/keyjson", MyObject.class); + Map allValues = ssmProvider.getMultiple("/powertools-java/sample"); + String b64value = ssmProvider.withTransformation(base64).get("/powertools-java/sample/keybase64"); + + Map secretJson = secretsProvider.withTransformation(json).get("/powertools-java/userpwd", Map.class); + MyObject secretJsonObj = secretsProvider.withMaxAge(42, SECONDS).withTransformation(json).get("/powertools-java/secretcode", MyObject.class); + + @Override + public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent input, Context context) { + + log.info("\n=============== SSM Parameter Store ==============="); + log.info("simplevalue={}, listvalue={}, b64value={}\n", simpleValue, listValue, b64value); + log.info("jsonobj={}\n", jsonObj); + + log.info("allvalues (multiple):"); + allValues.forEach((key, value) -> log.info("- {}={}\n", key, value)); + + log.info("\n=============== Secrets Manager ==============="); + log.info("secretjson:"); + secretJson.forEach((key, value) -> log.info("- {}={}\n", key, value)); + log.info("secretjsonobj={}\n", secretJsonObj); + + Map headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + headers.put("X-Custom-Header", "application/json"); + + APIGatewayProxyResponseEvent response = new APIGatewayProxyResponseEvent() + .withHeaders(headers); + try { + final String pageContents = this.getPageContents("https://checkip.amazonaws.com"); + String output = String.format("{ \"message\": \"hello world\", \"location\": \"%s\" }", pageContents); + + return response + .withStatusCode(200) + .withBody(output); + } catch (IOException e) { + return response + .withBody("{}") + .withStatusCode(500); + } + } + + private String getPageContents(String address) throws IOException{ + URL url = new URL(address); + try(BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()))) { + return br.lines().collect(Collectors.joining(System.lineSeparator())); + } + } +} diff --git a/examples/Parameters/Function/src/main/resources/log4j2.xml b/examples/Parameters/Function/src/main/resources/log4j2.xml new file mode 100644 index 000000000..033da8a11 --- /dev/null +++ b/examples/Parameters/Function/src/main/resources/log4j2.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Parameters/README.md b/examples/Parameters/README.md new file mode 100644 index 000000000..c03f407c0 --- /dev/null +++ b/examples/Parameters/README.md @@ -0,0 +1,21 @@ +# Parameters + +This project contains an example of Lambda function using the parameters module of Lambda Powertools for Java. For more information on this module, please refer to the [documentation](https://awslabs.github.io/aws-lambda-powertools-java/utilities/parameters/). + +## Deploy the sample application + +This sample is based on Serverless Application Model (SAM) and you can use the SAM Command Line Interface (SAM CLI) to build it and deploy it to AWS. + +To use the SAM CLI, you need the following tools. + +* SAM CLI - [Install the SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) +* Java11 - [Install the Java 11](https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html) +* Maven - [Install Maven](https://maven.apache.org/install.html) +* Docker - [Install Docker community edition](https://hub.docker.com/search/?type=edition&offering=community) + +To build and deploy your application for the first time, run the following in your shell: + +```bash +sam build +sam deploy --guided +``` diff --git a/examples/Parameters/template.yaml b/examples/Parameters/template.yaml new file mode 100644 index 000000000..d9038d31a --- /dev/null +++ b/examples/Parameters/template.yaml @@ -0,0 +1,97 @@ +AWSTemplateFormatVersion: '2010-09-09' +Transform: AWS::Serverless-2016-10-31 +Description: > + validation demo + +Globals: + Function: + Timeout: 20 + Runtime: java11 + MemorySize: 512 + Tracing: Active + + +Resources: + ParametersFunction: + Type: AWS::Serverless::Function + Properties: + CodeUri: Function + Handler: org.demo.parameters.ParametersFunction::handleRequest + MemorySize: 512 + Tracing: Active + Policies: + - AWSSecretsManagerGetSecretValuePolicy: + SecretArn: !Ref UserPwd + - AWSSecretsManagerGetSecretValuePolicy: + SecretArn: !Ref SecretConfig + - Statement: + - Sid: SSMGetParameterPolicy + Effect: Allow + Action: + - ssm:GetParameter + - ssm:GetParameters + - ssm:GetParametersByPath + Resource: '*' + Events: + HelloWorld: + Type: Api + Properties: + Path: /params + Method: get + + UserPwd: + Type: AWS::SecretsManager::Secret + Properties: + Name: /powertools-java/userpwd + Description: Generated secret for lambda-powertools-java powertools-parameters + module + GenerateSecretString: + SecretStringTemplate: '{"username": "test-user"}' + GenerateStringKey: password + PasswordLength: 15 + ExcludeCharacters: '"@/\' + SecretConfig: + Type: AWS::SecretsManager::Secret + Properties: + Name: /powertools-java/secretcode + Description: Json secret for lambda-powertools-java powertools-parameters module + SecretString: '{"id":23443,"code":"hk38543oj24kn796kp67bkb234gkj679l68"}' + BasicParameter: + Type: AWS::SSM::Parameter + Properties: + Name: /powertools-java/sample/simplekey + Type: String + Value: simplevalue + Description: Simple SSM Parameter for lambda-powertools-java powertools-parameters + module + ParameterList: + Type: AWS::SSM::Parameter + Properties: + Name: /powertools-java/sample/keylist + Type: StringList + Value: value1,value2,value3 + Description: SSM Parameter List for lambda-powertools-java powertools-parameters + module + JsonParameter: + Type: AWS::SSM::Parameter + Properties: + Name: /powertools-java/sample/keyjson + Type: String + Value: '{"id":23443,"code":"hk38543oj24kn796kp67bkb234gkj679l68"}' + Description: Json SSM Parameter for lambda-powertools-java powertools-parameters + module + Base64Parameter: + Type: AWS::SSM::Parameter + Properties: + Name: /powertools-java/sample/keybase64 + Type: String + Value: aGVsbG8gd29ybGQ= + Description: Base64 SSM Parameter for lambda-powertools-java powertools-parameters module + +Outputs: + ParametersApi: + Description: "API Gateway endpoint URL for Prod stage for Parameters function" + Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/params/" + ParametersFunction: + Description: "Parameters Lambda Function ARN" + Value: !GetAtt ParametersFunction.Arn \ No newline at end of file diff --git a/examples/SerializationUtilities/Function/pom.xml b/examples/SerializationUtilities/Function/pom.xml new file mode 100644 index 000000000..42e950bb7 --- /dev/null +++ b/examples/SerializationUtilities/Function/pom.xml @@ -0,0 +1,69 @@ + + 4.0.0 + demo + Functions + 1.0 + jar + Sample app demoing serialization utility of Powertools. + + 11 + 11 + 2.19.0 + UTF-8 + + + + + software.amazon.lambda + powertools-logging + 1.13.0 + + + software.amazon.lambda + powertools-serialization + 1.13.0 + + + com.amazonaws + aws-lambda-java-core + 1.2.2 + + + com.amazonaws + aws-lambda-java-events + 3.11.0 + + + + + org.mockito + mockito-core + 5.1.1 + test + + + org.junit.jupiter + junit-jupiter-api + 5.9.2 + test + + + org.junit.jupiter + junit-jupiter-engine + 5.9.2 + test + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + 2.22.0 + + + + diff --git a/examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java b/examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java new file mode 100644 index 000000000..4df937486 --- /dev/null +++ b/examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java @@ -0,0 +1,34 @@ +package org.demo.serialization; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent; +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.Map; + +import static software.amazon.lambda.powertools.utilities.EventDeserializer.extractDataFrom; + + +public class APIGatewayRequestDeserializationFunction implements RequestHandler { + + private final static Logger LOGGER = LogManager.getLogger(APIGatewayRequestDeserializationFunction.class); + private static final Map HEADERS = Map.of( + "Content-Type", "application/json", + "X-Custom-Header", "application/json"); + + public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent event, Context context) { + + Product product = extractDataFrom(event).as(Product.class); + LOGGER.info("\n=============== Deserialized request body: ==============="); + LOGGER.info("product={}\n", product); + + return new APIGatewayProxyResponseEvent() + .withHeaders(HEADERS) + .withStatusCode(200) + .withBody("Received request for productId: " + product.getId()); + } +} + diff --git a/examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/Product.java b/examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/Product.java new file mode 100644 index 000000000..fb94a99f8 --- /dev/null +++ b/examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/Product.java @@ -0,0 +1,49 @@ +package org.demo.serialization; + +public class Product { + private long id; + private String name; + private double price; + + public Product() { + } + + public Product(long id, String name, double price) { + this.id = id; + this.name = name; + this.price = price; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } + + @Override + public String toString() { + return "Product{" + + "id=" + id + + ", name='" + name + '\'' + + ", price=" + price + + '}'; + } +} diff --git a/examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/SQSEventDeserializationFunction.java b/examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/SQSEventDeserializationFunction.java new file mode 100644 index 000000000..129fe0243 --- /dev/null +++ b/examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/SQSEventDeserializationFunction.java @@ -0,0 +1,27 @@ +package org.demo.serialization; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; +import com.amazonaws.services.lambda.runtime.events.SQSEvent; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.List; + +import static software.amazon.lambda.powertools.utilities.EventDeserializer.extractDataFrom; + + +public class SQSEventDeserializationFunction implements RequestHandler { + + private final static Logger LOGGER = LogManager.getLogger(SQSEventDeserializationFunction.class); + + public String handleRequest(SQSEvent event, Context context) { + List products = extractDataFrom(event).asListOf(Product.class); + + LOGGER.info("\n=============== Deserialized messages: ==============="); + LOGGER.info("products={}\n", products); + + return "Number of received messages: " + products.size(); + } +} + diff --git a/examples/SerializationUtilities/Function/src/main/resources/log4j2.xml b/examples/SerializationUtilities/Function/src/main/resources/log4j2.xml new file mode 100644 index 000000000..033da8a11 --- /dev/null +++ b/examples/SerializationUtilities/Function/src/main/resources/log4j2.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/SerializationUtilities/Function/src/test/java/org/demo/serialization/APIGatewayRequestDeserializationFunctionTest.java b/examples/SerializationUtilities/Function/src/test/java/org/demo/serialization/APIGatewayRequestDeserializationFunctionTest.java new file mode 100644 index 000000000..5d5da7ecc --- /dev/null +++ b/examples/SerializationUtilities/Function/src/test/java/org/demo/serialization/APIGatewayRequestDeserializationFunctionTest.java @@ -0,0 +1,35 @@ +package org.demo.serialization; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent; +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class APIGatewayRequestDeserializationFunctionTest { + + @Mock + private Context context; + private APIGatewayRequestDeserializationFunction deserializationFunction; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + deserializationFunction = new APIGatewayRequestDeserializationFunction(); + } + + @Test + public void shouldReturnOkStatusWithProductId() { + String body = "{\"id\":1234, \"name\":\"product\", \"price\":42}"; + APIGatewayProxyRequestEvent request = new APIGatewayProxyRequestEvent().withBody(body); + + APIGatewayProxyResponseEvent response = deserializationFunction.handleRequest(request, context); + + assertEquals(200, response.getStatusCode()); + assertEquals("Received request for productId: 1234", response.getBody()); + } +} \ No newline at end of file diff --git a/examples/SerializationUtilities/Function/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java b/examples/SerializationUtilities/Function/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java new file mode 100644 index 000000000..393aa9a45 --- /dev/null +++ b/examples/SerializationUtilities/Function/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java @@ -0,0 +1,43 @@ +package org.demo.serialization; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.events.SQSEvent; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class SQSEventDeserializationFunctionTest { + + @Mock + private Context context; + private SQSEventDeserializationFunction deserializationFunction; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + deserializationFunction = new SQSEventDeserializationFunction(); + } + + @Test + public void shouldReturnNumberOfReceivedMessages() { + SQSEvent.SQSMessage message1 = messageWithBody("{ \"id\": 1234, \"name\": \"product\", \"price\": 42}"); + SQSEvent.SQSMessage message2 = messageWithBody("{ \"id\": 12345, \"name\": \"product5\", \"price\": 45}"); + SQSEvent event = new SQSEvent(); + event.setRecords(List.of(message1, message2)); + + String response = deserializationFunction.handleRequest(event, context); + + assertEquals("Number of received messages: 2", response); + } + + private SQSEvent.SQSMessage messageWithBody(String body) { + SQSEvent.SQSMessage record1 = new SQSEvent.SQSMessage(); + record1.setBody(body); + return record1; + } +} \ No newline at end of file diff --git a/examples/SerializationUtilities/README.md b/examples/SerializationUtilities/README.md new file mode 100644 index 000000000..68c4b4ae2 --- /dev/null +++ b/examples/SerializationUtilities/README.md @@ -0,0 +1,21 @@ +# Deserialization + +This project contains an example of Lambda function using the serialization utilities module of Lambda Powertools for Java. For more information on this module, please refer to the [documentation](https://awslabs.github.io/aws-lambda-powertools-java/utilities/serialization/). + +## Deploy the sample application + +This sample is based on Serverless Application Model (SAM) and you can use the SAM Command Line Interface (SAM CLI) to build it and deploy it to AWS. + +To use the SAM CLI, you need the following tools. + +* SAM CLI - [Install the SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) +* Java11 - [Install the Java 11](https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html) +* Maven - [Install Maven](https://maven.apache.org/install.html) +* Docker - [Install Docker community edition](https://hub.docker.com/search/?type=edition&offering=community) + +To build and deploy your application for the first time, run the following in your shell: + +```bash +sam build +sam deploy --guided +``` diff --git a/examples/SerializationUtilities/events/APIGatewayEvent.json b/examples/SerializationUtilities/events/APIGatewayEvent.json new file mode 100644 index 000000000..cb38a3429 --- /dev/null +++ b/examples/SerializationUtilities/events/APIGatewayEvent.json @@ -0,0 +1,63 @@ +{ + "body": "{\"id\":1234, \"name\":\"product\", \"price\":42}", + "resource": "/{proxy+}", + "path": "/path/to/resource", + "httpMethod": "POST", + "isBase64Encoded": false, + "queryStringParameters": { + "foo": "bar" + }, + "pathParameters": { + "proxy": "/path/to/resource" + }, + "stageVariables": { + "baz": "qux" + }, + "headers": { + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", + "Accept-Encoding": "gzip, deflate, sdch", + "Accept-Language": "en-US,en;q=0.8", + "Cache-Control": "max-age=0", + "CloudFront-Forwarded-Proto": "https", + "CloudFront-Is-Desktop-Viewer": "true", + "CloudFront-Is-Mobile-Viewer": "false", + "CloudFront-Is-SmartTV-Viewer": "false", + "CloudFront-Is-Tablet-Viewer": "false", + "CloudFront-Viewer-Country": "US", + "Host": "1234567890.execute-api.us-east-1.amazonaws.com", + "Upgrade-Insecure-Requests": "1", + "User-Agent": "Custom User Agent String", + "Via": "1.1 08f323deadbeefa7af34d5feb414ce27.cloudfront.net (CloudFront)", + "X-Amz-Cf-Id": "cDehVQoZnx43VYQb9j2-nvCh-9z396Uhbp027Y2JvkCPNLmGJHqlaA==", + "X-Forwarded-For": "127.0.0.1, 127.0.0.2", + "X-Forwarded-Port": "443", + "X-Forwarded-Proto": "https" + }, + "requestContext": { + "accountId": "123456789012", + "resourceId": "123456", + "stage": "prod", + "requestId": "c6af9ac6-7b61-11e6-9a41-93e8deadbeef", + "requestTime": "09/Apr/2015:12:34:56 +0000", + "requestTimeEpoch": 1428582896000, + "identity": { + "cognitoIdentityPoolId": null, + "accountId": null, + "cognitoIdentityId": null, + "caller": null, + "accessKey": null, + "sourceIp": "127.0.0.1", + "cognitoAuthenticationType": null, + "cognitoAuthenticationProvider": null, + "userArn": null, + "userAgent": "Custom User Agent String", + "user": null + }, + "path": "/prod/path/to/resource", + "resourcePath": "/{proxy+}", + "httpMethod": "POST", + "apiId": "1234567890", + "protocol": "HTTP/1.1" + } + } + \ No newline at end of file diff --git a/examples/SerializationUtilities/events/SQSEvent.json b/examples/SerializationUtilities/events/SQSEvent.json new file mode 100644 index 000000000..9056d3ef2 --- /dev/null +++ b/examples/SerializationUtilities/events/SQSEvent.json @@ -0,0 +1,39 @@ +{ + "Records": [ + { + "messageId": "d9144555-9a4f-4ec3-99a0-34ce359b4b54", + "receiptHandle": "13e7f7851d2eaa5c01f208ebadbf1e72==", + "body": "{ \"id\": 1234, \"name\": \"product\", \"price\": 42}", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "1601975706495", + "SenderId": "AROAIFU437PVZ5L2J53F5", + "ApproximateFirstReceiveTimestamp": "1601975706499" + }, + "messageAttributes": { + }, + "md5OfBody": "13e7f7851d2eaa5c01f208ebadbf1e72", + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:eu-central-1:123456789012:TestLambda", + "awsRegion": "eu-central-1" + }, + { + "messageId": "d9144555-9a4f-4ec3-99a0-34ce359b4b54", + "receiptHandle": "13e7f7851d2eaa5c01f208ebadbf1e72==", + "body": "{ \"id\": 12345, \"name\": \"product5\", \"price\": 45}", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "1601975706495", + "SenderId": "AROAIFU437PVZ5L2J53F5", + "ApproximateFirstReceiveTimestamp": "1601975706499" + }, + "messageAttributes": { + + }, + "md5OfBody": "13e7f7851d2eaa5c01f208ebadbf1e72", + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:eu-central-1:123456789012:TestLambda", + "awsRegion": "eu-central-1" + } + ] +} \ No newline at end of file diff --git a/examples/SerializationUtilities/template.yaml b/examples/SerializationUtilities/template.yaml new file mode 100644 index 000000000..66033bd35 --- /dev/null +++ b/examples/SerializationUtilities/template.yaml @@ -0,0 +1,63 @@ +AWSTemplateFormatVersion: '2010-09-09' +Transform: AWS::Serverless-2016-10-31 +Description: > + serialization utils demo + +Globals: + Function: + Timeout: 20 + Runtime: java11 + MemorySize: 512 + Tracing: Active + + +Resources: + APIGatewayDeserializationFunction: + Type: AWS::Serverless::Function + Properties: + CodeUri: Function + Handler: org.demo.serialization.APIGatewayRequestDeserializationFunction::handleRequest + Events: + Product: + Type: Api + Properties: + Path: /product + Method: post + + DemoSqsQueue: + Type: AWS::SQS::Queue + Properties: + QueueName: "sqs-event-deserialization-queue" + + SQSEventDeserializationFunction: + Type: AWS::Serverless::Function + Properties: + CodeUri: Function + Handler: org.demo.serialization.SQSEventDeserializationFunction::handleRequest + Policies: + - Statement: + - Sid: SQSSendMessageBatch + Effect: Allow + Action: + - sqs:SendMessageBatch + - sqs:SendMessage + Resource: !GetAtt DemoSqsQueue.Arn + Events: + SQSEvent: + Type: SQS + Properties: + Queue: !GetAtt DemoSqsQueue.Arn + BatchSize: 2 + MaximumBatchingWindowInSeconds: 30 + + +Outputs: + Api: + Description: "API Gateway endpoint URL for Prod stage for Serialization function" + Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/product/" + Function: + Description: "Serialization Lambda Function ARN" + Value: !GetAtt APIGatewayDeserializationFunction.Arn + DemoSqsQueue: + Description: "ARN for SQS queue" + Value: !GetAtt DemoSqsQueue.Arn \ No newline at end of file diff --git a/examples/SqsBatchProcessing/Functions/pom.xml b/examples/SqsBatchProcessing/Functions/pom.xml new file mode 100644 index 000000000..a26e9be10 --- /dev/null +++ b/examples/SqsBatchProcessing/Functions/pom.xml @@ -0,0 +1,124 @@ + + 4.0.0 + demo + Functions + 1.0 + jar + Sample app demoing SQS Batch Processing utility of Powertools. + + 11 + 11 + 2.19.0 + UTF-8 + + + + + software.amazon.lambda + powertools-logging + 1.13.0 + + + software.amazon.lambda + powertools-sqs + 1.13.0 + + + software.amazon.awssdk + url-connection-client + 2.20.1 + + + com.amazonaws + aws-lambda-java-core + 1.2.2 + + + com.amazonaws + aws-lambda-java-events + 3.11.0 + + + org.apache.logging.log4j + log4j-core + ${log4j.version} + + + org.apache.logging.log4j + log4j-api + ${log4j.version} + + + com.fasterxml.jackson.datatype + jackson-datatype-joda + 2.14.2 + + + + junit + junit + 4.13.2 + test + + + + + + + org.codehaus.mojo + aspectj-maven-plugin + 1.14.0 + + ${maven.compiler.source} + ${maven.compiler.target} + ${maven.compiler.target} + + + software.amazon.lambda + powertools-logging + + + software.amazon.lambda + powertools-sqs + + + + + + + compile + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.4.0 + + + package + + shade + + + + + + + + + + + + com.github.edwgiz + maven-shade-plugin.log4j2-cachefile-transformer + 2.15 + + + + + + diff --git a/examples/SqsBatchProcessing/Functions/src/main/java/org/demo/sqs/SqsMessageSender.java b/examples/SqsBatchProcessing/Functions/src/main/java/org/demo/sqs/SqsMessageSender.java new file mode 100644 index 000000000..bd49d642b --- /dev/null +++ b/examples/SqsBatchProcessing/Functions/src/main/java/org/demo/sqs/SqsMessageSender.java @@ -0,0 +1,78 @@ + +package org.demo.sqs; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; +import com.amazonaws.services.lambda.runtime.events.ScheduledEvent; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.joda.JodaModule; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.services.sqs.SqsClient; +import software.amazon.awssdk.services.sqs.model.MessageAttributeValue; +import software.amazon.awssdk.services.sqs.model.SendMessageBatchRequest; +import software.amazon.awssdk.services.sqs.model.SendMessageBatchRequestEntry; +import software.amazon.awssdk.services.sqs.model.SendMessageBatchResponse; +import software.amazon.lambda.powertools.logging.Logging; +import software.amazon.lambda.powertools.logging.LoggingUtils; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.stream.IntStream; + +import static java.util.stream.Collectors.toList; + +public class SqsMessageSender implements RequestHandler { + + private static final Logger log = LogManager.getLogger(SqsMessageSender.class); + + private static final SqsClient sqsClient = SqsClient.builder() + .httpClient(UrlConnectionHttpClient.create()) + .build(); + + private static final Random random = new Random(); + + private static final ObjectMapper objectMapper; + + static { + objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JodaModule()); + LoggingUtils.defaultObjectMapper(objectMapper); + } + + @Logging(logEvent = true) + public String handleRequest(final ScheduledEvent input, final Context context) { + String queueUrl = System.getenv("QUEUE_URL"); + + // Push 5 messages on each invoke. + List batchRequestEntries = IntStream.range(0, 5) + .mapToObj(value -> { + Map attributeValueHashMap = new HashMap<>(); + attributeValueHashMap.put("Key" + value, MessageAttributeValue.builder() + .dataType("String") + .stringValue("Value" + value) + .build()); + + byte[] array = new byte[7]; + random.nextBytes(array); + + return SendMessageBatchRequestEntry.builder() + .messageAttributes(attributeValueHashMap) + .id(input.getId() + value) + .messageBody("Sample Message " + value) + .build(); + }).collect(toList()); + + SendMessageBatchResponse sendMessageBatchResponse = sqsClient.sendMessageBatch(SendMessageBatchRequest.builder() + .queueUrl(queueUrl) + .entries(batchRequestEntries) + .build()); + + log.info("Sent Message {}", sendMessageBatchResponse); + + return "Success"; + } +} \ No newline at end of file diff --git a/examples/SqsBatchProcessing/Functions/src/main/java/org/demo/sqs/SqsPoller.java b/examples/SqsBatchProcessing/Functions/src/main/java/org/demo/sqs/SqsPoller.java new file mode 100644 index 000000000..04e4d4886 --- /dev/null +++ b/examples/SqsBatchProcessing/Functions/src/main/java/org/demo/sqs/SqsPoller.java @@ -0,0 +1,60 @@ +package org.demo.sqs; + +import java.util.Random; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; +import com.amazonaws.services.lambda.runtime.events.SQSEvent; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.services.sqs.SqsClient; +import software.amazon.lambda.powertools.logging.Logging; +import software.amazon.lambda.powertools.sqs.SqsBatch; +import software.amazon.lambda.powertools.sqs.SqsMessageHandler; +import software.amazon.lambda.powertools.sqs.SqsUtils; + +import static com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage; + +/** + * Handler for requests to Lambda function. + */ +public class SqsPoller implements RequestHandler { + + Logger log = LogManager.getLogger(SqsPoller.class); + Random random = new Random(100); + + static { + // https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/lambda-optimize-starttime.html + SqsUtils.overrideSqsClient(SqsClient.builder() + .httpClient(UrlConnectionHttpClient.create()) + .build()); + } + + @SqsBatch(value = BatchProcessor.class, nonRetryableExceptions = {IllegalArgumentException.class}) + @Logging(logEvent = true) + public String handleRequest(final SQSEvent input, final Context context) { + return "Success"; + } + + private class BatchProcessor implements SqsMessageHandler { + @Override + public String process(SQSMessage message) { + log.info("Processing message with id {}", message.getMessageId()); + + int nextInt = random.nextInt(100); + + if(nextInt <= 10) { + log.info("Randomly picked message with id {} as business validation failure.", message.getMessageId()); + throw new IllegalArgumentException("Failed business validation. No point of retrying. Move me to DLQ." + message.getMessageId()); + } + + if(nextInt > 90) { + log.info("Randomly picked message with id {} as intermittent failure.", message.getMessageId()); + throw new RuntimeException("Failed due to intermittent issue. Will be sent back for retry." + message.getMessageId()); + } + + return "Success"; + } + } +} \ No newline at end of file diff --git a/examples/SqsBatchProcessing/Functions/src/main/resources/log4j2.xml b/examples/SqsBatchProcessing/Functions/src/main/resources/log4j2.xml new file mode 100644 index 000000000..e1fd14cea --- /dev/null +++ b/examples/SqsBatchProcessing/Functions/src/main/resources/log4j2.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/SqsBatchProcessing/README.md b/examples/SqsBatchProcessing/README.md new file mode 100644 index 000000000..2b6da65b5 --- /dev/null +++ b/examples/SqsBatchProcessing/README.md @@ -0,0 +1,3 @@ +## SqsBatchProcessingDemo + +Demos setup of SQS Batch processing via Powertools diff --git a/examples/SqsBatchProcessing/events/event.json b/examples/SqsBatchProcessing/events/event.json new file mode 100644 index 000000000..3822fadaa --- /dev/null +++ b/examples/SqsBatchProcessing/events/event.json @@ -0,0 +1,63 @@ +{ + "body": "{\"message\": \"hello world\"}", + "resource": "/{proxy+}", + "path": "/path/to/resource", + "httpMethod": "POST", + "isBase64Encoded": false, + "queryStringParameters": { + "foo": "bar" + }, + "pathParameters": { + "proxy": "/path/to/resource" + }, + "stageVariables": { + "baz": "qux" + }, + "headers": { + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", + "Accept-Encoding": "gzip, deflate, sdch", + "Accept-Language": "en-US,en;q=0.8", + "Cache-Control": "max-age=0", + "CloudFront-Forwarded-Proto": "https", + "CloudFront-Is-Desktop-Viewer": "true", + "CloudFront-Is-Mobile-Viewer": "false", + "CloudFront-Is-SmartTV-Viewer": "false", + "CloudFront-Is-Tablet-Viewer": "false", + "CloudFront-Viewer-Country": "US", + "Host": "1234567890.execute-api.us-east-1.amazonaws.com", + "Upgrade-Insecure-Requests": "1", + "User-Agent": "Custom User Agent String", + "Via": "1.1 08f323deadbeefa7af34d5feb414ce27.cloudfront.net (CloudFront)", + "X-Amz-Cf-Id": "cDehVQoZnx43VYQb9j2-nvCh-9z396Uhbp027Y2JvkCPNLmGJHqlaA==", + "X-Forwarded-For": "127.0.0.1, 127.0.0.2", + "X-Forwarded-Port": "443", + "X-Forwarded-Proto": "https" + }, + "requestContext": { + "accountId": "123456789012", + "resourceId": "123456", + "stage": "prod", + "requestId": "c6af9ac6-7b61-11e6-9a41-93e8deadbeef", + "requestTime": "09/Apr/2015:12:34:56 +0000", + "requestTimeEpoch": 1428582896000, + "identity": { + "cognitoIdentityPoolId": null, + "accountId": null, + "cognitoIdentityId": null, + "caller": null, + "accessKey": null, + "sourceIp": "127.0.0.1", + "cognitoAuthenticationType": null, + "cognitoAuthenticationProvider": null, + "userArn": null, + "userAgent": "Custom User Agent String", + "user": null + }, + "path": "/prod/path/to/resource", + "resourcePath": "/{proxy+}", + "httpMethod": "POST", + "apiId": "1234567890", + "protocol": "HTTP/1.1" + } + } + \ No newline at end of file diff --git a/examples/SqsBatchProcessing/template.yaml b/examples/SqsBatchProcessing/template.yaml new file mode 100644 index 000000000..cb99213e0 --- /dev/null +++ b/examples/SqsBatchProcessing/template.yaml @@ -0,0 +1,148 @@ +AWSTemplateFormatVersion: '2010-09-09' +Transform: AWS::Serverless-2016-10-31 +Description: > + sqs batch processing demo + +Globals: + Function: + Timeout: 20 + Runtime: java11 + MemorySize: 512 + Tracing: Active + Environment: + Variables: + # Powertools env vars: https://awslabs.github.io/aws-lambda-powertools-python/#environment-variables + POWERTOOLS_LOG_LEVEL: INFO + POWERTOOLS_LOGGER_SAMPLE_RATE: 0.1 + POWERTOOLS_LOGGER_LOG_EVENT: true + +Resources: + CustomerKey: + Type: AWS::KMS::Key + Properties: + Description: KMS key for encrypted queues + Enabled: true + KeyPolicy: + Version: '2012-10-17' + Statement: + - Sid: Enable IAM User Permissions + Effect: Allow + Principal: + AWS: !Sub 'arn:aws:iam::${AWS::AccountId}:root' + Action: 'kms:*' + Resource: '*' + - Sid: Allow use of the key + Effect: Allow + Principal: + Service: lambda.amazonaws.com + Action: + - kms:Decrypt + - kms:GenerateDataKey + Resource: '*' + + CustomerKeyAlias: + Type: AWS::KMS::Alias + Properties: + AliasName: alias/sqs-key + TargetKeyId: !Ref CustomerKey + + DemoDlqSqsQueue: + Type: AWS::SQS::Queue + Properties: + KmsMasterKeyId: !Ref CustomerKey + + DemoSqsQueue: + Type: AWS::SQS::Queue + Properties: + RedrivePolicy: + deadLetterTargetArn: + Fn::GetAtt: + - "DemoDlqSqsQueue" + - "Arn" + maxReceiveCount: 2 + KmsMasterKeyId: !Ref CustomerKey + + DemoSQSSenderFunction: + Type: AWS::Serverless::Function + Properties: + CodeUri: Functions + Handler: org.demo.sqs.SqsMessageSender::handleRequest + Environment: + Variables: + POWERTOOLS_SERVICE_NAME: sqs-demo + QUEUE_URL: !Ref DemoSqsQueue + Policies: + - Statement: + - Sid: SQSSendMessageBatch + Effect: Allow + Action: + - sqs:SendMessageBatch + - sqs:SendMessage + Resource: !GetAtt DemoSqsQueue.Arn + - Sid: SQSKMSKey + Effect: Allow + Action: + - kms:GenerateDataKey + - kms:Decrypt + Resource: !GetAtt CustomerKey.Arn + Events: + CWSchedule: + Type: Schedule + Properties: + Schedule: 'rate(5 minutes)' + Name: !Join ["-", ["message-producer-schedule", !Select [0, !Split [-, !Select [2, !Split [/, !Ref AWS::StackId ]]]]]] + Description: Produce message to SQS via a Lambda function + Enabled: true + + DemoSQSConsumerFunction: + Type: AWS::Serverless::Function + Properties: + CodeUri: Functions + Handler: org.demo.sqs.SqsPoller::handleRequest + Environment: + Variables: + POWERTOOLS_SERVICE_NAME: sqs-demo + Policies: + - Statement: + - Sid: SQSDeleteGetAttribute + Effect: Allow + Action: + - sqs:DeleteMessageBatch + - sqs:GetQueueAttributes + Resource: !GetAtt DemoSqsQueue.Arn + - Sid: SQSSendMessageBatch + Effect: Allow + Action: + - sqs:SendMessageBatch + - sqs:SendMessage + Resource: !GetAtt DemoDlqSqsQueue.Arn + - Sid: SQSKMSKey + Effect: Allow + Action: + - kms:GenerateDataKey + - kms:Decrypt + Resource: !GetAtt CustomerKey.Arn + Events: + MySQSEvent: + Type: SQS + Properties: + Queue: !GetAtt DemoSqsQueue.Arn + BatchSize: 2 + MaximumBatchingWindowInSeconds: 300 + +Outputs: + DemoSqsQueue: + Description: "ARN for main SQS queue" + Value: !GetAtt DemoSqsQueue.Arn + DemoDlqSqsQueue: + Description: "ARN for DLQ" + Value: !GetAtt DemoDlqSqsQueue.Arn + DemoSQSSenderFunction: + Description: "Sender SQS Lambda Function ARN" + Value: !GetAtt DemoSQSSenderFunction.Arn + DemoSQSConsumerFunction: + Description: "Consumer SQS Lambda Function ARN" + Value: !GetAtt DemoSQSConsumerFunction.Arn + DemoSQSConsumerFunctionRole: + Description: "Implicit IAM Role created for SQS Lambda Function ARN" + Value: !GetAtt DemoSQSConsumerFunctionRole.Arn diff --git a/examples/Validation/Function/pom.xml b/examples/Validation/Function/pom.xml new file mode 100644 index 000000000..4dd098ac0 --- /dev/null +++ b/examples/Validation/Function/pom.xml @@ -0,0 +1,87 @@ + + 4.0.0 + demo + Functions + 1.0 + jar + Sample app demoing validation utility of Powertools. + + 11 + 11 + 2.19.0 + UTF-8 + + + + + software.amazon.lambda + powertools-logging + 1.13.0 + + + software.amazon.lambda + powertools-validation + 1.13.0 + + + com.amazonaws + aws-lambda-java-core + 1.2.2 + + + + + org.mockito + mockito-core + 5.1.1 + test + + + org.junit.jupiter + junit-jupiter-api + 5.9.2 + test + + + org.junit.jupiter + junit-jupiter-engine + 5.9.2 + test + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + 2.22.0 + + + org.codehaus.mojo + aspectj-maven-plugin + 1.14.0 + + ${maven.compiler.source} + ${maven.compiler.target} + ${maven.compiler.target} + + + software.amazon.lambda + powertools-validation + + + + + + + compile + + + + + + + diff --git a/examples/Validation/Function/src/main/java/org/demo/validation/InboundValidation.java b/examples/Validation/Function/src/main/java/org/demo/validation/InboundValidation.java new file mode 100644 index 000000000..184fbbc08 --- /dev/null +++ b/examples/Validation/Function/src/main/java/org/demo/validation/InboundValidation.java @@ -0,0 +1,51 @@ +package org.demo.validation; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent; +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; +import software.amazon.lambda.powertools.validation.Validation; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * Request handler for Lambda function which demonstrates validation of request message. + */ +public class InboundValidation implements RequestHandler { + + @Validation(inboundSchema = "classpath:/schema.json") + public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent apiGatewayProxyRequestEvent, Context context) { + Map headers = new HashMap<>(); + + headers.put("Content-Type", "application/json"); + headers.put("X-Custom-Header", "application/json"); + + APIGatewayProxyResponseEvent response = new APIGatewayProxyResponseEvent() + .withHeaders(headers); + try { + final String pageContents = this.getPageContents("https://checkip.amazonaws.com"); + String output = String.format("{ \"message\": \"hello world\", \"location\": \"%s\" }", pageContents); + + return response + .withStatusCode(200) + .withBody(output); + } catch (IOException e) { + return response + .withBody("{}") + .withStatusCode(500); + } + } + + private String getPageContents(String address) throws IOException { + URL url = new URL(address); + try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()))) { + return br.lines().collect(Collectors.joining(System.lineSeparator())); + } + } +} diff --git a/examples/Validation/Function/src/main/resources/schema.json b/examples/Validation/Function/src/main/resources/schema.json new file mode 100644 index 000000000..f38272f2d --- /dev/null +++ b/examples/Validation/Function/src/main/resources/schema.json @@ -0,0 +1,55 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "http://example.com/product.json", + "type": "object", + "title": "Product schema", + "description": "JSON schema to validate Products", + "default": {}, + "examples": [ + { + "id": 43242, + "name": "FooBar XY", + "price": 258 + } + ], + "required": [ + "id", + "name", + "price" + ], + "properties": { + "id": { + "$id": "#/properties/id", + "type": "integer", + "title": "Id of the product", + "description": "Unique identifier of the product", + "default": 0, + "examples": [ + 43242 + ] + }, + "name": { + "$id": "#/properties/name", + "type": "string", + "title": "Name of the product", + "description": "Explicit name of the product", + "minLength": 5, + "default": "", + "examples": [ + "FooBar XY" + ] + }, + "price": { + "$id": "#/properties/price", + "type": "number", + "title": "Price of the product", + "description": "Positive price of the product", + "default": 0, + "exclusiveMinimum": 0, + "examples": [ + 258.99 + ] + } + }, + "additionalProperties": true +} \ No newline at end of file diff --git a/examples/Validation/Function/src/test/java/org/demo/validation/InboundValidationTest.java b/examples/Validation/Function/src/test/java/org/demo/validation/InboundValidationTest.java new file mode 100644 index 000000000..af47d3d87 --- /dev/null +++ b/examples/Validation/Function/src/test/java/org/demo/validation/InboundValidationTest.java @@ -0,0 +1,51 @@ +package org.demo.validation; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent; +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import software.amazon.lambda.powertools.validation.ValidationException; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class InboundValidationTest { + + @Mock + private Context context; + private InboundValidation inboundValidation; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + inboundValidation = new InboundValidation(); + } + + @Test + public void shouldReturnOkStatusWhenInputIsValid() { + String body = "{\n" + + " \"id\": 43242,\n" + + " \"name\": \"FooBar XY\",\n" + + " \"price\": 258\n" + + " }"; + APIGatewayProxyRequestEvent request = new APIGatewayProxyRequestEvent().withBody(body); + + APIGatewayProxyResponseEvent response = inboundValidation.handleRequest(request, context); + + assertEquals(200, response.getStatusCode()); + } + + @Test + public void shouldThrowExceptionWhenRequestInInvalid() { + String bodyWithMissedId = "{\n" + + " \"name\": \"FooBar XY\",\n" + + " \"price\": 258\n" + + " }"; + APIGatewayProxyRequestEvent request = new APIGatewayProxyRequestEvent().withBody(bodyWithMissedId); + + assertThrows(ValidationException.class, () -> inboundValidation.handleRequest(request, context)); + } +} \ No newline at end of file diff --git a/examples/Validation/README.md b/examples/Validation/README.md new file mode 100644 index 000000000..db631deff --- /dev/null +++ b/examples/Validation/README.md @@ -0,0 +1,21 @@ +# Validation + +This project contains an example of Lambda function using the validation module of Lambda Powertools for Java. For more information on this module, please refer to the [documentation](https://awslabs.github.io/aws-lambda-powertools-java/utilities/validation/). + +## Deploy the sample application + +This sample is based on Serverless Application Model (SAM) and you can use the SAM Command Line Interface (SAM CLI) to build it and deploy it to AWS. + +To use the SAM CLI, you need the following tools. + +* SAM CLI - [Install the SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) +* Java11 - [Install the Java 11](https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html) +* Maven - [Install Maven](https://maven.apache.org/install.html) +* Docker - [Install Docker community edition](https://hub.docker.com/search/?type=edition&offering=community) + +To build and deploy your application for the first time, run the following in your shell: + +```bash +sam build +sam deploy --guided +``` diff --git a/examples/Validation/events/event.json b/examples/Validation/events/event.json new file mode 100644 index 000000000..3822fadaa --- /dev/null +++ b/examples/Validation/events/event.json @@ -0,0 +1,63 @@ +{ + "body": "{\"message\": \"hello world\"}", + "resource": "/{proxy+}", + "path": "/path/to/resource", + "httpMethod": "POST", + "isBase64Encoded": false, + "queryStringParameters": { + "foo": "bar" + }, + "pathParameters": { + "proxy": "/path/to/resource" + }, + "stageVariables": { + "baz": "qux" + }, + "headers": { + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", + "Accept-Encoding": "gzip, deflate, sdch", + "Accept-Language": "en-US,en;q=0.8", + "Cache-Control": "max-age=0", + "CloudFront-Forwarded-Proto": "https", + "CloudFront-Is-Desktop-Viewer": "true", + "CloudFront-Is-Mobile-Viewer": "false", + "CloudFront-Is-SmartTV-Viewer": "false", + "CloudFront-Is-Tablet-Viewer": "false", + "CloudFront-Viewer-Country": "US", + "Host": "1234567890.execute-api.us-east-1.amazonaws.com", + "Upgrade-Insecure-Requests": "1", + "User-Agent": "Custom User Agent String", + "Via": "1.1 08f323deadbeefa7af34d5feb414ce27.cloudfront.net (CloudFront)", + "X-Amz-Cf-Id": "cDehVQoZnx43VYQb9j2-nvCh-9z396Uhbp027Y2JvkCPNLmGJHqlaA==", + "X-Forwarded-For": "127.0.0.1, 127.0.0.2", + "X-Forwarded-Port": "443", + "X-Forwarded-Proto": "https" + }, + "requestContext": { + "accountId": "123456789012", + "resourceId": "123456", + "stage": "prod", + "requestId": "c6af9ac6-7b61-11e6-9a41-93e8deadbeef", + "requestTime": "09/Apr/2015:12:34:56 +0000", + "requestTimeEpoch": 1428582896000, + "identity": { + "cognitoIdentityPoolId": null, + "accountId": null, + "cognitoIdentityId": null, + "caller": null, + "accessKey": null, + "sourceIp": "127.0.0.1", + "cognitoAuthenticationType": null, + "cognitoAuthenticationProvider": null, + "userArn": null, + "userAgent": "Custom User Agent String", + "user": null + }, + "path": "/prod/path/to/resource", + "resourcePath": "/{proxy+}", + "httpMethod": "POST", + "apiId": "1234567890", + "protocol": "HTTP/1.1" + } + } + \ No newline at end of file diff --git a/examples/Validation/template.yaml b/examples/Validation/template.yaml new file mode 100644 index 000000000..ec3c941bb --- /dev/null +++ b/examples/Validation/template.yaml @@ -0,0 +1,33 @@ +AWSTemplateFormatVersion: '2010-09-09' +Transform: AWS::Serverless-2016-10-31 +Description: > + validation demo + +Globals: + Function: + Timeout: 20 + Runtime: java11 + MemorySize: 512 + Tracing: Active + + +Resources: + ValidationFunction: + Type: AWS::Serverless::Function + Properties: + CodeUri: Function + Handler: org.demo.validation.InboundValidation::handleRequest + Events: + HelloWorld: + Type: Api + Properties: + Path: /hello + Method: post + +Outputs: + Api: + Description: "API Gateway endpoint URL for Prod stage for Validation function" + Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/hello/" + Function: + Description: "Validation Lambda Function ARN" + Value: !GetAtt ValidationFunction.Arn \ No newline at end of file From c1f6af1c448b81e24afb3eeb1916b87bcb830c56 Mon Sep 17 00:00:00 2001 From: Scott Gerring Date: Wed, 15 Feb 2023 11:18:02 +0100 Subject: [PATCH 02/29] Add actions for examples build --- .github/ISSUE_TEMPLATE/build-examples.yml | 73 +++++++++++++++++++++++ examples/manifest.json | 46 ++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/build-examples.yml create mode 100644 examples/manifest.json diff --git a/.github/ISSUE_TEMPLATE/build-examples.yml b/.github/ISSUE_TEMPLATE/build-examples.yml new file mode 100644 index 000000000..6a7ab2e5e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/build-examples.yml @@ -0,0 +1,73 @@ +name: Build + +on: + pull_request: + branches: + - master + paths: + - 'examples/**' + - '.github/workflows/**' + push: + branches: + - master + paths: + - 'examples/**' + - '.github/workflows/**' + +jobs: + prepare: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + steps: + - uses: actions/checkout@v2 + - id: set-matrix + run: | + JSON=$(cat ./examples/manifest.json | jq [.[][]]) + JSON="${JSON//'%'/'%25'}" + JSON="{\"include\":$JSON}" + JSON="${JSON//$'\n'/'%0A'}" + JSON="${JSON//$'\r'/'%0D'}" + echo $JSON + echo "-----------------------" + echo "::set-output name=matrix::$JSON" + + build: + needs: prepare + runs-on: ubuntu-latest + strategy: + matrix: ${{fromJson(needs.prepare.outputs.matrix)}} + env: + OS: ${{ matrix.os }} + JAVA: ${{ matrix.java-version }} + AWS_REGION: eu-west-1 + steps: + - uses: actions/checkout@v2 + - name: Setup java + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.javaVersion }} + - name: Build with Maven + if: ${{ matrix.dependencyManager == 'maven' }} + run: mvn -B package --file ${{ matrix.directory }}/pom.xml + - name: Build with Gradle + if: ${{ matrix.dependencyManager == 'gradle' }} + run: | + cd ./${{ matrix.directory }}/ + ./gradlew build + + savepr: + runs-on: ubuntu-latest + name: Save PR number if running on PR by dependabot + if: github.actor == 'dependabot[bot]' + steps: + - name: Create Directory and save issue + run: | + mkdir -p ./pr + echo ${{ github.event.number }} + echo ${{ github.event.number }} > ./pr/NR + - uses: actions/upload-artifact@v2 + name: Updload artifact + with: + name: pr + path: pr/ diff --git a/examples/manifest.json b/examples/manifest.json new file mode 100644 index 000000000..d4f53b447 --- /dev/null +++ b/examples/manifest.json @@ -0,0 +1,46 @@ +{ + "java11": [ + { + "directory": "examples/SqsBatchProcessing/Functions", + "displayName": "Demos setup of SQS Batch processing via Powertools", + "dependencyManager": "maven", + "appTemplate": "SqsBatchProcessing", + "javaVersion": "11" + }, + { + "directory": "examples/CoreUtilities/Function", + "displayName": "Demos setup of Core utilities with proxies lambda function using api gateway", + "dependencyManager": "maven", + "appTemplate": "CoreUtilities", + "javaVersion": "11" + }, + { + "directory": "examples/Idempotency/Function", + "displayName": "Demos setup of an idempotent Lambda function using Powertools", + "dependencyManager": "maven", + "appTemplate": "Idempotency", + "javaVersion": "11" + }, + { + "directory": "examples/Validation/Function", + "displayName": "Demos setup of an validation Lambda function using Powertools", + "dependencyManager": "maven", + "appTemplate": "Validation", + "javaVersion": "11" + }, + { + "directory": "examples/Parameters/Function", + "displayName": "Demos setup of an parameters Lambda function using Powertools", + "dependencyManager": "maven", + "appTemplate": "Parameters", + "javaVersion": "11" + }, + { + "directory": "examples/SerializationUtilities/Function", + "displayName": "Demos setup of a serialization utilities Lambda functions using Powertools", + "dependencyManager": "maven", + "appTemplate": "SerializationUtilities", + "javaVersion": "11" + } + ] + } \ No newline at end of file From ee0abc7faec38238e8014d4366ca579d4ab42e29 Mon Sep 17 00:00:00 2001 From: Scott Gerring Date: Wed, 15 Feb 2023 11:18:54 +0100 Subject: [PATCH 03/29] Fix action name --- .github/ISSUE_TEMPLATE/build-examples.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/build-examples.yml b/.github/ISSUE_TEMPLATE/build-examples.yml index 6a7ab2e5e..2f05d62e7 100644 --- a/.github/ISSUE_TEMPLATE/build-examples.yml +++ b/.github/ISSUE_TEMPLATE/build-examples.yml @@ -1,4 +1,4 @@ -name: Build +name: Build Examples on: pull_request: From a23389a5382de0ceb928ff8dd02ed398e076a114 Mon Sep 17 00:00:00 2001 From: Scott Gerring Date: Wed, 15 Feb 2023 11:19:54 +0100 Subject: [PATCH 04/29] Enable builds temporarily for import-examples branch --- .github/ISSUE_TEMPLATE/build-examples.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE/build-examples.yml b/.github/ISSUE_TEMPLATE/build-examples.yml index 2f05d62e7..7d4ae4083 100644 --- a/.github/ISSUE_TEMPLATE/build-examples.yml +++ b/.github/ISSUE_TEMPLATE/build-examples.yml @@ -10,6 +10,7 @@ on: push: branches: - master + - import-examples paths: - 'examples/**' - '.github/workflows/**' From e118ca1e909dec79886763319ffb946ac56013a3 Mon Sep 17 00:00:00 2001 From: Scott Gerring Date: Wed, 15 Feb 2023 11:23:24 +0100 Subject: [PATCH 05/29] Put workflow where it belongs --- .github/{ISSUE_TEMPLATE => workflows}/build-examples.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/{ISSUE_TEMPLATE => workflows}/build-examples.yml (100%) diff --git a/.github/ISSUE_TEMPLATE/build-examples.yml b/.github/workflows/build-examples.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/build-examples.yml rename to .github/workflows/build-examples.yml From 7113ce2b9855a10296ff8c74b67d68d23bfe10fa Mon Sep 17 00:00:00 2001 From: Scott Gerring Date: Wed, 15 Feb 2023 11:30:33 +0100 Subject: [PATCH 06/29] Rename examples projects to reflect java module names --- examples/manifest.json | 12 ++++++------ .../.gitignore | 0 .../Function/dependency-reduced-pom.xml | 0 .../Function/pom.xml | 0 .../Function/src/main/java/helloworld/App.java | 0 .../Function/src/main/java/helloworld/AppStream.java | 0 .../Function/src/main/resources/log4j2.xml | 0 .../Function/src/test/java/helloworld/AppTest.java | 0 .../README.md | 0 .../events/event.json | 0 .../template.yaml | 0 .../Function/pom.xml | 0 .../Function/src/main/java/helloworld/App.java | 0 .../Function/src/test/java/helloworld/AppTest.java | 0 .../Function/src/test/resources/event.json | 0 .../README.md | 0 .../template.yaml | 0 .../Function/pom.xml | 0 .../src/main/java/org/demo/parameters/MyObject.java | 0 .../java/org/demo/parameters/ParametersFunction.java | 0 .../Function/src/main/resources/log4j2.xml | 0 .../README.md | 0 .../template.yaml | 0 .../Function/pom.xml | 0 .../APIGatewayRequestDeserializationFunction.java | 0 .../main/java/org/demo/serialization/Product.java | 0 .../SQSEventDeserializationFunction.java | 0 .../Function/src/main/resources/log4j2.xml | 0 ...APIGatewayRequestDeserializationFunctionTest.java | 0 .../SQSEventDeserializationFunctionTest.java | 0 .../README.md | 0 .../events/APIGatewayEvent.json | 0 .../events/SQSEvent.json | 0 .../template.yaml | 0 .../Functions/pom.xml | 0 .../src/main/java/org/demo/sqs/SqsMessageSender.java | 0 .../src/main/java/org/demo/sqs/SqsPoller.java | 0 .../Functions/src/main/resources/log4j2.xml | 0 .../README.md | 0 .../events/event.json | 0 .../template.yaml | 0 41 files changed, 6 insertions(+), 6 deletions(-) rename examples/{CoreUtilities => powertools-examples-core}/.gitignore (100%) rename examples/{CoreUtilities => powertools-examples-core}/Function/dependency-reduced-pom.xml (100%) rename examples/{CoreUtilities => powertools-examples-core}/Function/pom.xml (100%) rename examples/{CoreUtilities => powertools-examples-core}/Function/src/main/java/helloworld/App.java (100%) rename examples/{CoreUtilities => powertools-examples-core}/Function/src/main/java/helloworld/AppStream.java (100%) rename examples/{CoreUtilities => powertools-examples-core}/Function/src/main/resources/log4j2.xml (100%) rename examples/{CoreUtilities => powertools-examples-core}/Function/src/test/java/helloworld/AppTest.java (100%) rename examples/{CoreUtilities => powertools-examples-core}/README.md (100%) rename examples/{CoreUtilities => powertools-examples-core}/events/event.json (100%) rename examples/{CoreUtilities => powertools-examples-core}/template.yaml (100%) rename examples/{Idempotency => powertools-examples-idempotency}/Function/pom.xml (100%) rename examples/{Idempotency => powertools-examples-idempotency}/Function/src/main/java/helloworld/App.java (100%) rename examples/{Idempotency => powertools-examples-idempotency}/Function/src/test/java/helloworld/AppTest.java (100%) rename examples/{Idempotency => powertools-examples-idempotency}/Function/src/test/resources/event.json (100%) rename examples/{Idempotency => powertools-examples-idempotency}/README.md (100%) rename examples/{Idempotency => powertools-examples-idempotency}/template.yaml (100%) rename examples/{Parameters => powertools-examples-parameters}/Function/pom.xml (100%) rename examples/{Parameters => powertools-examples-parameters}/Function/src/main/java/org/demo/parameters/MyObject.java (100%) rename examples/{Parameters => powertools-examples-parameters}/Function/src/main/java/org/demo/parameters/ParametersFunction.java (100%) rename examples/{Parameters => powertools-examples-parameters}/Function/src/main/resources/log4j2.xml (100%) rename examples/{Parameters => powertools-examples-parameters}/README.md (100%) rename examples/{Parameters => powertools-examples-parameters}/template.yaml (100%) rename examples/{SerializationUtilities => powertools-examples-serialization}/Function/pom.xml (100%) rename examples/{SerializationUtilities => powertools-examples-serialization}/Function/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java (100%) rename examples/{SerializationUtilities => powertools-examples-serialization}/Function/src/main/java/org/demo/serialization/Product.java (100%) rename examples/{SerializationUtilities => powertools-examples-serialization}/Function/src/main/java/org/demo/serialization/SQSEventDeserializationFunction.java (100%) rename examples/{SerializationUtilities => powertools-examples-serialization}/Function/src/main/resources/log4j2.xml (100%) rename examples/{SerializationUtilities => powertools-examples-serialization}/Function/src/test/java/org/demo/serialization/APIGatewayRequestDeserializationFunctionTest.java (100%) rename examples/{SerializationUtilities => powertools-examples-serialization}/Function/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java (100%) rename examples/{SerializationUtilities => powertools-examples-serialization}/README.md (100%) rename examples/{SerializationUtilities => powertools-examples-serialization}/events/APIGatewayEvent.json (100%) rename examples/{SerializationUtilities => powertools-examples-serialization}/events/SQSEvent.json (100%) rename examples/{SerializationUtilities => powertools-examples-serialization}/template.yaml (100%) rename examples/{SqsBatchProcessing => powertools-examples-sqs}/Functions/pom.xml (100%) rename examples/{SqsBatchProcessing => powertools-examples-sqs}/Functions/src/main/java/org/demo/sqs/SqsMessageSender.java (100%) rename examples/{SqsBatchProcessing => powertools-examples-sqs}/Functions/src/main/java/org/demo/sqs/SqsPoller.java (100%) rename examples/{SqsBatchProcessing => powertools-examples-sqs}/Functions/src/main/resources/log4j2.xml (100%) rename examples/{SqsBatchProcessing => powertools-examples-sqs}/README.md (100%) rename examples/{SqsBatchProcessing => powertools-examples-sqs}/events/event.json (100%) rename examples/{SqsBatchProcessing => powertools-examples-sqs}/template.yaml (100%) diff --git a/examples/manifest.json b/examples/manifest.json index d4f53b447..06f84d508 100644 --- a/examples/manifest.json +++ b/examples/manifest.json @@ -1,42 +1,42 @@ { "java11": [ { - "directory": "examples/SqsBatchProcessing/Functions", + "directory": "examples/powertools-examples-sqs/Functions", "displayName": "Demos setup of SQS Batch processing via Powertools", "dependencyManager": "maven", "appTemplate": "SqsBatchProcessing", "javaVersion": "11" }, { - "directory": "examples/CoreUtilities/Function", + "directory": "examples/powertools-examples-core/Function", "displayName": "Demos setup of Core utilities with proxies lambda function using api gateway", "dependencyManager": "maven", "appTemplate": "CoreUtilities", "javaVersion": "11" }, { - "directory": "examples/Idempotency/Function", + "directory": "examples/powertools-examples-idempotency/Function", "displayName": "Demos setup of an idempotent Lambda function using Powertools", "dependencyManager": "maven", "appTemplate": "Idempotency", "javaVersion": "11" }, { - "directory": "examples/Validation/Function", + "directory": "examples/powertools-examples-validation/Function", "displayName": "Demos setup of an validation Lambda function using Powertools", "dependencyManager": "maven", "appTemplate": "Validation", "javaVersion": "11" }, { - "directory": "examples/Parameters/Function", + "directory": "examples/powertools-examples-parameters/Function", "displayName": "Demos setup of an parameters Lambda function using Powertools", "dependencyManager": "maven", "appTemplate": "Parameters", "javaVersion": "11" }, { - "directory": "examples/SerializationUtilities/Function", + "directory": "examples/powertools-examples-serialization/Function", "displayName": "Demos setup of a serialization utilities Lambda functions using Powertools", "dependencyManager": "maven", "appTemplate": "SerializationUtilities", diff --git a/examples/CoreUtilities/.gitignore b/examples/powertools-examples-core/.gitignore similarity index 100% rename from examples/CoreUtilities/.gitignore rename to examples/powertools-examples-core/.gitignore diff --git a/examples/CoreUtilities/Function/dependency-reduced-pom.xml b/examples/powertools-examples-core/Function/dependency-reduced-pom.xml similarity index 100% rename from examples/CoreUtilities/Function/dependency-reduced-pom.xml rename to examples/powertools-examples-core/Function/dependency-reduced-pom.xml diff --git a/examples/CoreUtilities/Function/pom.xml b/examples/powertools-examples-core/Function/pom.xml similarity index 100% rename from examples/CoreUtilities/Function/pom.xml rename to examples/powertools-examples-core/Function/pom.xml diff --git a/examples/CoreUtilities/Function/src/main/java/helloworld/App.java b/examples/powertools-examples-core/Function/src/main/java/helloworld/App.java similarity index 100% rename from examples/CoreUtilities/Function/src/main/java/helloworld/App.java rename to examples/powertools-examples-core/Function/src/main/java/helloworld/App.java diff --git a/examples/CoreUtilities/Function/src/main/java/helloworld/AppStream.java b/examples/powertools-examples-core/Function/src/main/java/helloworld/AppStream.java similarity index 100% rename from examples/CoreUtilities/Function/src/main/java/helloworld/AppStream.java rename to examples/powertools-examples-core/Function/src/main/java/helloworld/AppStream.java diff --git a/examples/CoreUtilities/Function/src/main/resources/log4j2.xml b/examples/powertools-examples-core/Function/src/main/resources/log4j2.xml similarity index 100% rename from examples/CoreUtilities/Function/src/main/resources/log4j2.xml rename to examples/powertools-examples-core/Function/src/main/resources/log4j2.xml diff --git a/examples/CoreUtilities/Function/src/test/java/helloworld/AppTest.java b/examples/powertools-examples-core/Function/src/test/java/helloworld/AppTest.java similarity index 100% rename from examples/CoreUtilities/Function/src/test/java/helloworld/AppTest.java rename to examples/powertools-examples-core/Function/src/test/java/helloworld/AppTest.java diff --git a/examples/CoreUtilities/README.md b/examples/powertools-examples-core/README.md similarity index 100% rename from examples/CoreUtilities/README.md rename to examples/powertools-examples-core/README.md diff --git a/examples/CoreUtilities/events/event.json b/examples/powertools-examples-core/events/event.json similarity index 100% rename from examples/CoreUtilities/events/event.json rename to examples/powertools-examples-core/events/event.json diff --git a/examples/CoreUtilities/template.yaml b/examples/powertools-examples-core/template.yaml similarity index 100% rename from examples/CoreUtilities/template.yaml rename to examples/powertools-examples-core/template.yaml diff --git a/examples/Idempotency/Function/pom.xml b/examples/powertools-examples-idempotency/Function/pom.xml similarity index 100% rename from examples/Idempotency/Function/pom.xml rename to examples/powertools-examples-idempotency/Function/pom.xml diff --git a/examples/Idempotency/Function/src/main/java/helloworld/App.java b/examples/powertools-examples-idempotency/Function/src/main/java/helloworld/App.java similarity index 100% rename from examples/Idempotency/Function/src/main/java/helloworld/App.java rename to examples/powertools-examples-idempotency/Function/src/main/java/helloworld/App.java diff --git a/examples/Idempotency/Function/src/test/java/helloworld/AppTest.java b/examples/powertools-examples-idempotency/Function/src/test/java/helloworld/AppTest.java similarity index 100% rename from examples/Idempotency/Function/src/test/java/helloworld/AppTest.java rename to examples/powertools-examples-idempotency/Function/src/test/java/helloworld/AppTest.java diff --git a/examples/Idempotency/Function/src/test/resources/event.json b/examples/powertools-examples-idempotency/Function/src/test/resources/event.json similarity index 100% rename from examples/Idempotency/Function/src/test/resources/event.json rename to examples/powertools-examples-idempotency/Function/src/test/resources/event.json diff --git a/examples/Idempotency/README.md b/examples/powertools-examples-idempotency/README.md similarity index 100% rename from examples/Idempotency/README.md rename to examples/powertools-examples-idempotency/README.md diff --git a/examples/Idempotency/template.yaml b/examples/powertools-examples-idempotency/template.yaml similarity index 100% rename from examples/Idempotency/template.yaml rename to examples/powertools-examples-idempotency/template.yaml diff --git a/examples/Parameters/Function/pom.xml b/examples/powertools-examples-parameters/Function/pom.xml similarity index 100% rename from examples/Parameters/Function/pom.xml rename to examples/powertools-examples-parameters/Function/pom.xml diff --git a/examples/Parameters/Function/src/main/java/org/demo/parameters/MyObject.java b/examples/powertools-examples-parameters/Function/src/main/java/org/demo/parameters/MyObject.java similarity index 100% rename from examples/Parameters/Function/src/main/java/org/demo/parameters/MyObject.java rename to examples/powertools-examples-parameters/Function/src/main/java/org/demo/parameters/MyObject.java diff --git a/examples/Parameters/Function/src/main/java/org/demo/parameters/ParametersFunction.java b/examples/powertools-examples-parameters/Function/src/main/java/org/demo/parameters/ParametersFunction.java similarity index 100% rename from examples/Parameters/Function/src/main/java/org/demo/parameters/ParametersFunction.java rename to examples/powertools-examples-parameters/Function/src/main/java/org/demo/parameters/ParametersFunction.java diff --git a/examples/Parameters/Function/src/main/resources/log4j2.xml b/examples/powertools-examples-parameters/Function/src/main/resources/log4j2.xml similarity index 100% rename from examples/Parameters/Function/src/main/resources/log4j2.xml rename to examples/powertools-examples-parameters/Function/src/main/resources/log4j2.xml diff --git a/examples/Parameters/README.md b/examples/powertools-examples-parameters/README.md similarity index 100% rename from examples/Parameters/README.md rename to examples/powertools-examples-parameters/README.md diff --git a/examples/Parameters/template.yaml b/examples/powertools-examples-parameters/template.yaml similarity index 100% rename from examples/Parameters/template.yaml rename to examples/powertools-examples-parameters/template.yaml diff --git a/examples/SerializationUtilities/Function/pom.xml b/examples/powertools-examples-serialization/Function/pom.xml similarity index 100% rename from examples/SerializationUtilities/Function/pom.xml rename to examples/powertools-examples-serialization/Function/pom.xml diff --git a/examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java b/examples/powertools-examples-serialization/Function/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java similarity index 100% rename from examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java rename to examples/powertools-examples-serialization/Function/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java diff --git a/examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/Product.java b/examples/powertools-examples-serialization/Function/src/main/java/org/demo/serialization/Product.java similarity index 100% rename from examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/Product.java rename to examples/powertools-examples-serialization/Function/src/main/java/org/demo/serialization/Product.java diff --git a/examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/SQSEventDeserializationFunction.java b/examples/powertools-examples-serialization/Function/src/main/java/org/demo/serialization/SQSEventDeserializationFunction.java similarity index 100% rename from examples/SerializationUtilities/Function/src/main/java/org/demo/serialization/SQSEventDeserializationFunction.java rename to examples/powertools-examples-serialization/Function/src/main/java/org/demo/serialization/SQSEventDeserializationFunction.java diff --git a/examples/SerializationUtilities/Function/src/main/resources/log4j2.xml b/examples/powertools-examples-serialization/Function/src/main/resources/log4j2.xml similarity index 100% rename from examples/SerializationUtilities/Function/src/main/resources/log4j2.xml rename to examples/powertools-examples-serialization/Function/src/main/resources/log4j2.xml diff --git a/examples/SerializationUtilities/Function/src/test/java/org/demo/serialization/APIGatewayRequestDeserializationFunctionTest.java b/examples/powertools-examples-serialization/Function/src/test/java/org/demo/serialization/APIGatewayRequestDeserializationFunctionTest.java similarity index 100% rename from examples/SerializationUtilities/Function/src/test/java/org/demo/serialization/APIGatewayRequestDeserializationFunctionTest.java rename to examples/powertools-examples-serialization/Function/src/test/java/org/demo/serialization/APIGatewayRequestDeserializationFunctionTest.java diff --git a/examples/SerializationUtilities/Function/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java b/examples/powertools-examples-serialization/Function/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java similarity index 100% rename from examples/SerializationUtilities/Function/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java rename to examples/powertools-examples-serialization/Function/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java diff --git a/examples/SerializationUtilities/README.md b/examples/powertools-examples-serialization/README.md similarity index 100% rename from examples/SerializationUtilities/README.md rename to examples/powertools-examples-serialization/README.md diff --git a/examples/SerializationUtilities/events/APIGatewayEvent.json b/examples/powertools-examples-serialization/events/APIGatewayEvent.json similarity index 100% rename from examples/SerializationUtilities/events/APIGatewayEvent.json rename to examples/powertools-examples-serialization/events/APIGatewayEvent.json diff --git a/examples/SerializationUtilities/events/SQSEvent.json b/examples/powertools-examples-serialization/events/SQSEvent.json similarity index 100% rename from examples/SerializationUtilities/events/SQSEvent.json rename to examples/powertools-examples-serialization/events/SQSEvent.json diff --git a/examples/SerializationUtilities/template.yaml b/examples/powertools-examples-serialization/template.yaml similarity index 100% rename from examples/SerializationUtilities/template.yaml rename to examples/powertools-examples-serialization/template.yaml diff --git a/examples/SqsBatchProcessing/Functions/pom.xml b/examples/powertools-examples-sqs/Functions/pom.xml similarity index 100% rename from examples/SqsBatchProcessing/Functions/pom.xml rename to examples/powertools-examples-sqs/Functions/pom.xml diff --git a/examples/SqsBatchProcessing/Functions/src/main/java/org/demo/sqs/SqsMessageSender.java b/examples/powertools-examples-sqs/Functions/src/main/java/org/demo/sqs/SqsMessageSender.java similarity index 100% rename from examples/SqsBatchProcessing/Functions/src/main/java/org/demo/sqs/SqsMessageSender.java rename to examples/powertools-examples-sqs/Functions/src/main/java/org/demo/sqs/SqsMessageSender.java diff --git a/examples/SqsBatchProcessing/Functions/src/main/java/org/demo/sqs/SqsPoller.java b/examples/powertools-examples-sqs/Functions/src/main/java/org/demo/sqs/SqsPoller.java similarity index 100% rename from examples/SqsBatchProcessing/Functions/src/main/java/org/demo/sqs/SqsPoller.java rename to examples/powertools-examples-sqs/Functions/src/main/java/org/demo/sqs/SqsPoller.java diff --git a/examples/SqsBatchProcessing/Functions/src/main/resources/log4j2.xml b/examples/powertools-examples-sqs/Functions/src/main/resources/log4j2.xml similarity index 100% rename from examples/SqsBatchProcessing/Functions/src/main/resources/log4j2.xml rename to examples/powertools-examples-sqs/Functions/src/main/resources/log4j2.xml diff --git a/examples/SqsBatchProcessing/README.md b/examples/powertools-examples-sqs/README.md similarity index 100% rename from examples/SqsBatchProcessing/README.md rename to examples/powertools-examples-sqs/README.md diff --git a/examples/SqsBatchProcessing/events/event.json b/examples/powertools-examples-sqs/events/event.json similarity index 100% rename from examples/SqsBatchProcessing/events/event.json rename to examples/powertools-examples-sqs/events/event.json diff --git a/examples/SqsBatchProcessing/template.yaml b/examples/powertools-examples-sqs/template.yaml similarity index 100% rename from examples/SqsBatchProcessing/template.yaml rename to examples/powertools-examples-sqs/template.yaml From 54a6fd6e0f7b603b2ab29dd0999a6a9b72f616c7 Mon Sep 17 00:00:00 2001 From: Scott Gerring Date: Wed, 15 Feb 2023 13:13:50 +0100 Subject: [PATCH 07/29] Incorporate examples into mvn hierarchy --- .github/workflows/build-examples.yml | 74 -- README.md | 4 +- examples/.gitignore | 1 + examples/README.md | 3 + examples/pom.xml | 52 + .../Function/dependency-reduced-pom.xml | 87 -- examples/powertools-examples-core/output.txt | 1077 +++++++++++++++++ .../{Function => }/pom.xml | 17 +- .../src/main/java/helloworld/App.java | 0 .../src/main/java/helloworld/AppStream.java | 0 .../src/main/resources/log4j2.xml | 0 .../src/test/java/helloworld/AppTest.java | 0 .../{Function => }/pom.xml | 17 +- .../src/main/java/helloworld/App.java | 2 +- .../src/test/java/helloworld/AppTest.java | 0 .../src/test/resources/event.json | 0 .../{Function => }/pom.xml | 15 +- .../java/org/demo/parameters/MyObject.java | 0 .../demo/parameters/ParametersFunction.java | 2 +- .../src/main/resources/log4j2.xml | 0 .../{Function => }/pom.xml | 15 +- ...GatewayRequestDeserializationFunction.java | 0 .../java/org/demo/serialization/Product.java | 0 .../SQSEventDeserializationFunction.java | 0 .../src/main/resources/log4j2.xml | 0 ...wayRequestDeserializationFunctionTest.java | 0 .../SQSEventDeserializationFunctionTest.java | 0 .../{Functions => }/pom.xml | 15 +- .../java/org/demo/sqs/SqsMessageSender.java | 0 .../src/main/java/org/demo/sqs/SqsPoller.java | 0 .../src/main/resources/log4j2.xml | 0 examples/spotbugs-exclude.xml | 20 + pom.xml | 2 + spotbugs-exclude.xml | 9 + 34 files changed, 1220 insertions(+), 192 deletions(-) delete mode 100644 .github/workflows/build-examples.yml create mode 100644 examples/.gitignore create mode 100644 examples/README.md create mode 100644 examples/pom.xml delete mode 100644 examples/powertools-examples-core/Function/dependency-reduced-pom.xml create mode 100644 examples/powertools-examples-core/output.txt rename examples/powertools-examples-core/{Function => }/pom.xml (91%) rename examples/powertools-examples-core/{Function => }/src/main/java/helloworld/App.java (100%) rename examples/powertools-examples-core/{Function => }/src/main/java/helloworld/AppStream.java (100%) rename examples/powertools-examples-core/{Function => }/src/main/resources/log4j2.xml (100%) rename examples/powertools-examples-core/{Function => }/src/test/java/helloworld/AppTest.java (100%) rename examples/powertools-examples-idempotency/{Function => }/pom.xml (94%) rename examples/powertools-examples-idempotency/{Function => }/src/main/java/helloworld/App.java (99%) rename examples/powertools-examples-idempotency/{Function => }/src/test/java/helloworld/AppTest.java (100%) rename examples/powertools-examples-idempotency/{Function => }/src/test/resources/event.json (100%) rename examples/powertools-examples-parameters/{Function => }/pom.xml (89%) rename examples/powertools-examples-parameters/{Function => }/src/main/java/org/demo/parameters/MyObject.java (100%) rename examples/powertools-examples-parameters/{Function => }/src/main/java/org/demo/parameters/ParametersFunction.java (98%) rename examples/powertools-examples-parameters/{Function => }/src/main/resources/log4j2.xml (100%) rename examples/powertools-examples-serialization/{Function => }/pom.xml (86%) rename examples/powertools-examples-serialization/{Function => }/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java (100%) rename examples/powertools-examples-serialization/{Function => }/src/main/java/org/demo/serialization/Product.java (100%) rename examples/powertools-examples-serialization/{Function => }/src/main/java/org/demo/serialization/SQSEventDeserializationFunction.java (100%) rename examples/powertools-examples-serialization/{Function => }/src/main/resources/log4j2.xml (100%) rename examples/powertools-examples-serialization/{Function => }/src/test/java/org/demo/serialization/APIGatewayRequestDeserializationFunctionTest.java (100%) rename examples/powertools-examples-serialization/{Function => }/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java (100%) rename examples/powertools-examples-sqs/{Functions => }/pom.xml (92%) rename examples/powertools-examples-sqs/{Functions => }/src/main/java/org/demo/sqs/SqsMessageSender.java (100%) rename examples/powertools-examples-sqs/{Functions => }/src/main/java/org/demo/sqs/SqsPoller.java (100%) rename examples/powertools-examples-sqs/{Functions => }/src/main/resources/log4j2.xml (100%) create mode 100644 examples/spotbugs-exclude.xml diff --git a/.github/workflows/build-examples.yml b/.github/workflows/build-examples.yml deleted file mode 100644 index 7d4ae4083..000000000 --- a/.github/workflows/build-examples.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: Build Examples - -on: - pull_request: - branches: - - master - paths: - - 'examples/**' - - '.github/workflows/**' - push: - branches: - - master - - import-examples - paths: - - 'examples/**' - - '.github/workflows/**' - -jobs: - prepare: - runs-on: ubuntu-latest - outputs: - matrix: ${{ steps.set-matrix.outputs.matrix }} - steps: - - uses: actions/checkout@v2 - - id: set-matrix - run: | - JSON=$(cat ./examples/manifest.json | jq [.[][]]) - JSON="${JSON//'%'/'%25'}" - JSON="{\"include\":$JSON}" - JSON="${JSON//$'\n'/'%0A'}" - JSON="${JSON//$'\r'/'%0D'}" - echo $JSON - echo "-----------------------" - echo "::set-output name=matrix::$JSON" - - build: - needs: prepare - runs-on: ubuntu-latest - strategy: - matrix: ${{fromJson(needs.prepare.outputs.matrix)}} - env: - OS: ${{ matrix.os }} - JAVA: ${{ matrix.java-version }} - AWS_REGION: eu-west-1 - steps: - - uses: actions/checkout@v2 - - name: Setup java - uses: actions/setup-java@v1 - with: - java-version: ${{ matrix.javaVersion }} - - name: Build with Maven - if: ${{ matrix.dependencyManager == 'maven' }} - run: mvn -B package --file ${{ matrix.directory }}/pom.xml - - name: Build with Gradle - if: ${{ matrix.dependencyManager == 'gradle' }} - run: | - cd ./${{ matrix.directory }}/ - ./gradlew build - - savepr: - runs-on: ubuntu-latest - name: Save PR number if running on PR by dependabot - if: github.actor == 'dependabot[bot]' - steps: - - name: Create Directory and save issue - run: | - mkdir -p ./pr - echo ${{ github.event.number }} - echo ${{ github.event.number }} > ./pr/NR - - uses: actions/upload-artifact@v2 - name: Updload artifact - with: - name: pr - path: pr/ diff --git a/README.md b/README.md index ee21efd0b..61048d068 100644 --- a/README.md +++ b/README.md @@ -80,8 +80,8 @@ And configure the aspectj-maven-plugin to compile-time weave (CTW) the aws-lambd ## Example -See **[example](https://github.com/aws-samples/aws-lambda-powertools-examples/tree/main/java)** for example project showcasing usage of different utilities. -Have a demo project to contribute which showcase usage of different utilities from powertools? We are happy to accept it [here](https://github.com/aws-samples/aws-lambda-powertools-examples/blob/main/CONTRIBUTING.md#security-issue-notifications). +See the **[examples](examples)** directory example project showcasing usage of different utilities. +Have a demo project to contribute which showcase usage of different utilities from powertools? We are happy to accept it [here](CONTRIBUTING.md#security-issue-notifications). ## Credits diff --git a/examples/.gitignore b/examples/.gitignore new file mode 100644 index 000000000..916e17c09 --- /dev/null +++ b/examples/.gitignore @@ -0,0 +1 @@ +dependency-reduced-pom.xml diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 000000000..4cbb886af --- /dev/null +++ b/examples/README.md @@ -0,0 +1,3 @@ +## aws-lambda-powertools-examples + +This directory holds example projects demoing different components of the java powertools. diff --git a/examples/pom.xml b/examples/pom.xml new file mode 100644 index 000000000..a87860cc2 --- /dev/null +++ b/examples/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + + software.amazon.lambda + powertools-examples + pom + + + powertools-parent + software.amazon.lambda + 1.13.0 + + + AWS Lambda Powertools for Java library Examples + + A suite of examples accompanying for AWS Lambda Powertools. + + https://aws.amazon.com/lambda/ + + GitHub Issues + https://github.com/awslabs/aws-lambda-powertools-java/issues + + + https://github.com/awslabs/aws-lambda-powertools-java.git + + + + AWS Lambda Powertools team + Amazon Web Services + https://aws.amazon.com/ + + + + + + ossrh + https://aws.oss.sonatype.org/content/repositories/snapshots + + + + + powertools-examples-core + powertools-examples-idempotency + powertools-examples-parameters + powertools-examples-serialization + powertools-examples-sqs + + + \ No newline at end of file diff --git a/examples/powertools-examples-core/Function/dependency-reduced-pom.xml b/examples/powertools-examples-core/Function/dependency-reduced-pom.xml deleted file mode 100644 index 4acacd75f..000000000 --- a/examples/powertools-examples-core/Function/dependency-reduced-pom.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - 4.0.0 - powertools - Function - A sample Hello World created for SAM CLI using powertools core utilities - 1.0 - - - - org.codehaus.mojo - aspectj-maven-plugin - 1.14.0 - - - - compile - - - - - ${maven.compiler.source} - ${maven.compiler.target} - ${maven.compiler.target} - - - software.amazon.lambda - powertools-tracing - - - software.amazon.lambda - powertools-logging - - - software.amazon.lambda - powertools-metrics - - - - - - maven-shade-plugin - 3.2.4 - - - package - - shade - - - - - - - - - - - com.github.edwgiz - maven-shade-plugin.log4j2-cachefile-transformer - 2.15 - - - - - - - - junit - junit - 4.13.2 - test - - - hamcrest-core - org.hamcrest - - - - - - 11 - 11 - UTF-8 - 2.17.1 - - diff --git a/examples/powertools-examples-core/output.txt b/examples/powertools-examples-core/output.txt new file mode 100644 index 000000000..0ae5f4746 --- /dev/null +++ b/examples/powertools-examples-core/output.txt @@ -0,0 +1,1077 @@ +Apache Maven 3.9.0 (9b58d2bad23a66be161c4664ef21ce219c2c8584) +Maven home: /usr/local/Cellar/maven/3.9.0/libexec +Java version: 19.0.2, vendor: Homebrew, runtime: /usr/local/Cellar/openjdk/19.0.2/libexec/openjdk.jdk/Contents/Home +Default locale: en_AU, platform encoding: UTF-8 +OS name: "mac os x", version: "13.2", arch: "x86_64", family: "mac" +[DEBUG] Created new class realm maven.api +[DEBUG] Importing foreign packages into class realm maven.api +[DEBUG] Imported: javax.annotation.* < plexus.core +[DEBUG] Imported: javax.annotation.security.* < plexus.core +[DEBUG] Imported: javax.inject.* < plexus.core +[DEBUG] Imported: org.apache.maven.* < plexus.core +[DEBUG] Imported: org.apache.maven.artifact < plexus.core +[DEBUG] Imported: org.apache.maven.classrealm < plexus.core +[DEBUG] Imported: org.apache.maven.cli < plexus.core +[DEBUG] Imported: org.apache.maven.configuration < plexus.core +[DEBUG] Imported: org.apache.maven.exception < plexus.core +[DEBUG] Imported: org.apache.maven.execution < plexus.core +[DEBUG] Imported: org.apache.maven.execution.scope < plexus.core +[DEBUG] Imported: org.apache.maven.graph < plexus.core +[DEBUG] Imported: org.apache.maven.lifecycle < plexus.core +[DEBUG] Imported: org.apache.maven.model < plexus.core +[DEBUG] Imported: org.apache.maven.monitor < plexus.core +[DEBUG] Imported: org.apache.maven.plugin < plexus.core +[DEBUG] Imported: org.apache.maven.profiles < plexus.core +[DEBUG] Imported: org.apache.maven.project < plexus.core +[DEBUG] Imported: org.apache.maven.reporting < plexus.core +[DEBUG] Imported: org.apache.maven.repository < plexus.core +[DEBUG] Imported: org.apache.maven.rtinfo < plexus.core +[DEBUG] Imported: org.apache.maven.settings < plexus.core +[DEBUG] Imported: org.apache.maven.toolchain < plexus.core +[DEBUG] Imported: org.apache.maven.usability < plexus.core +[DEBUG] Imported: org.apache.maven.wagon.* < plexus.core +[DEBUG] Imported: org.apache.maven.wagon.authentication < plexus.core +[DEBUG] Imported: org.apache.maven.wagon.authorization < plexus.core +[DEBUG] Imported: org.apache.maven.wagon.events < plexus.core +[DEBUG] Imported: org.apache.maven.wagon.observers < plexus.core +[DEBUG] Imported: org.apache.maven.wagon.proxy < plexus.core +[DEBUG] Imported: org.apache.maven.wagon.repository < plexus.core +[DEBUG] Imported: org.apache.maven.wagon.resource < plexus.core +[DEBUG] Imported: org.codehaus.classworlds < plexus.core +[DEBUG] Imported: org.codehaus.plexus.* < plexus.core +[DEBUG] Imported: org.codehaus.plexus.classworlds < plexus.core +[DEBUG] Imported: org.codehaus.plexus.component < plexus.core +[DEBUG] Imported: org.codehaus.plexus.configuration < plexus.core +[DEBUG] Imported: org.codehaus.plexus.container < plexus.core +[DEBUG] Imported: org.codehaus.plexus.context < plexus.core +[DEBUG] Imported: org.codehaus.plexus.lifecycle < plexus.core +[DEBUG] Imported: org.codehaus.plexus.logging < plexus.core +[DEBUG] Imported: org.codehaus.plexus.personality < plexus.core +[DEBUG] Imported: org.codehaus.plexus.util.xml.Xpp3Dom < plexus.core +[DEBUG] Imported: org.codehaus.plexus.util.xml.pull.XmlPullParser < plexus.core +[DEBUG] Imported: org.codehaus.plexus.util.xml.pull.XmlPullParserException < plexus.core +[DEBUG] Imported: org.codehaus.plexus.util.xml.pull.XmlSerializer < plexus.core +[DEBUG] Imported: org.eclipse.aether.* < plexus.core +[DEBUG] Imported: org.eclipse.aether.artifact < plexus.core +[DEBUG] Imported: org.eclipse.aether.collection < plexus.core +[DEBUG] Imported: org.eclipse.aether.deployment < plexus.core +[DEBUG] Imported: org.eclipse.aether.graph < plexus.core +[DEBUG] Imported: org.eclipse.aether.impl < plexus.core +[DEBUG] Imported: org.eclipse.aether.installation < plexus.core +[DEBUG] Imported: org.eclipse.aether.internal.impl < plexus.core +[DEBUG] Imported: org.eclipse.aether.metadata < plexus.core +[DEBUG] Imported: org.eclipse.aether.repository < plexus.core +[DEBUG] Imported: org.eclipse.aether.resolution < plexus.core +[DEBUG] Imported: org.eclipse.aether.spi < plexus.core +[DEBUG] Imported: org.eclipse.aether.transfer < plexus.core +[DEBUG] Imported: org.eclipse.aether.util < plexus.core +[DEBUG] Imported: org.eclipse.aether.version < plexus.core +[DEBUG] Imported: org.fusesource.jansi.* < plexus.core +[DEBUG] Imported: org.slf4j.* < plexus.core +[DEBUG] Imported: org.slf4j.event.* < plexus.core +[DEBUG] Imported: org.slf4j.helpers.* < plexus.core +[DEBUG] Imported: org.slf4j.spi.* < plexus.core +[DEBUG] Populating class realm maven.api +[DEBUG] Created adapter factory; available factories [file-lock, rwlock-local, semaphore-local, noop]; available name mappers [discriminating, file-gav, file-hgav, gav, static] +[INFO] Error stacktraces are turned on. +[DEBUG] Message scheme: color +[DEBUG] Message styles: debug info warning error success failure strong mojo project +[DEBUG] Reading global settings from /usr/local/Cellar/maven/3.9.0/libexec/conf/settings.xml +[DEBUG] Reading user settings from /Users/gerrings/.m2/settings.xml +[DEBUG] Reading global toolchains from /usr/local/Cellar/maven/3.9.0/libexec/conf/toolchains.xml +[DEBUG] Reading user toolchains from /Users/gerrings/.m2/toolchains.xml +[DEBUG] Using local repository at /Users/gerrings/.m2/repository +[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/gerrings/.m2/repository +[INFO] Scanning for projects... +[DEBUG] Creating adapter using nameMapper 'gav' and factory 'rwlock-local' +[DEBUG] Using mirror maven-default-http-blocker (http://0.0.0.0/) for apache.snapshots (http://repository.apache.org/snapshots). +[DEBUG] Using mirror maven-default-http-blocker (http://0.0.0.0/) for codehaus-snapshots (http://nexus.codehaus.org/snapshots/). +[DEBUG] Using mirror maven-default-http-blocker (http://0.0.0.0/) for apache.snapshots (http://people.apache.org/repo/m2-snapshot-repository). +[DEBUG] Using mirror maven-default-http-blocker (http://0.0.0.0/) for repository.jboss.org (http://repository.jboss.org/nexus/content/groups/public/). +[DEBUG] Using mirror maven-default-http-blocker (http://0.0.0.0/) for eclipselink.repository (http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/rt/eclipselink/maven.repo). +[DEBUG] Using mirror maven-default-http-blocker (http://0.0.0.0/) for spy (http://files.couchbase.com/maven2/). +[DEBUG] Dependency collection stats {ConflictMarker.analyzeTime=500538, ConflictMarker.markTime=133031, ConflictMarker.nodeCount=84, ConflictIdSorter.graphTime=295795, ConflictIdSorter.topsortTime=214025, ConflictIdSorter.conflictIdCount=45, ConflictIdSorter.conflictIdCycleCount=0, ConflictResolver.totalTime=3842448, ConflictResolver.conflictItemCount=71, DfDependencyCollector.collectTime=334277069, DfDependencyCollector.transformTime=6339879} +[DEBUG] org.sonatype.plugins:nexus-staging-maven-plugin:jar:1.6.8 +[DEBUG] org.sonatype.nexus.maven:nexus-common:jar:1.6.8:compile +[DEBUG] org.sonatype.plexus:plexus-sec-dispatcher:jar:1.4:compile (version managed from default) (exclusions managed from default) +[DEBUG] org.sonatype.plexus:plexus-cipher:jar:1.7:compile (version managed from default) +[DEBUG] com.google.guava:guava:jar:14.0.1:compile +[DEBUG] org.sonatype.nexus:nexus-client-core:jar:2.14.3-02:compile (exclusions managed from default) +[DEBUG] org.sonatype.nexus.plugins:nexus-restlet1x-model:jar:2.14.3-02:compile +[DEBUG] org.apache.maven:maven-model:jar:3.0.4:compile (version managed from default) +[DEBUG] org.slf4j:slf4j-api:jar:1.7.7:compile (version managed from default) +[DEBUG] com.google.code.findbugs:jsr305:jar:2.0.1:compile +[DEBUG] com.intellij:annotations:jar:9.0.4:compile (version managed from default) +[DEBUG] commons-io:commons-io:jar:2.4:compile +[DEBUG] com.thoughtworks.xstream:xstream:jar:1.4.7:compile (version managed from default) +[DEBUG] xmlpull:xmlpull:jar:1.1.3.1:compile +[DEBUG] xpp3:xpp3_min:jar:1.1.4c:compile +[DEBUG] joda-time:joda-time:jar:2.2:compile +[DEBUG] commons-lang:commons-lang:jar:2.6:compile +[DEBUG] commons-beanutils:commons-beanutils-core:jar:1.8.3:compile (version managed from default) (exclusions managed from default) +[DEBUG] org.sonatype.sisu.siesta:siesta-client:jar:1.7:compile +[DEBUG] org.sonatype.sisu.siesta:siesta-common:jar:1.7:compile +[DEBUG] javax.ws.rs:jsr311-api:jar:1.1.1:compile +[DEBUG] com.sun.jersey:jersey-core:jar:1.17.1:compile +[DEBUG] javax.validation:validation-api:jar:1.1.0.Final:compile +[DEBUG] com.sun.jersey:jersey-client:jar:1.17.1:compile +[DEBUG] com.sun.jersey.contribs:jersey-apache-client4:jar:1.17.1:compile +[DEBUG] org.sonatype.sisu.siesta:siesta-jackson:jar:1.7:compile +[DEBUG] com.fasterxml.jackson.core:jackson-annotations:jar:2.3.1:compile +[DEBUG] com.fasterxml.jackson.core:jackson-core:jar:2.3.1:compile +[DEBUG] com.fasterxml.jackson.core:jackson-databind:jar:2.3.1:compile +[DEBUG] com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.3.1:compile +[DEBUG] com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.3.1:compile +[DEBUG] com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.3.1:compile +[DEBUG] org.apache.httpcomponents:httpclient:jar:4.3.5:compile (version managed from default) (exclusions managed from default) +[DEBUG] commons-codec:commons-codec:jar:1.6:compile +[DEBUG] org.apache.httpcomponents:httpcore:jar:4.3.2:compile (version managed from default) +[DEBUG] org.slf4j:jcl-over-slf4j:jar:1.7.7:compile (version managed from default) +[DEBUG] javax.inject:javax.inject:jar:1:compile (version managed from default) +[DEBUG] org.sonatype.spice.zapper:spice-zapper:jar:1.3:compile +[DEBUG] org.fusesource.hawtbuf:hawtbuf-proto:jar:1.9:compile +[DEBUG] org.fusesource.hawtbuf:hawtbuf:jar:1.9:compile +[DEBUG] org.codehaus.plexus:plexus-utils:jar:3.0.8:compile +[DEBUG] org.codehaus.plexus:plexus-interpolation:jar:1.15:compile +[DEBUG] org.sonatype.aether:aether-api:jar:1.13.1:compile +[DEBUG] ch.qos.logback:logback-core:jar:1.1.2:runtime +[DEBUG] ch.qos.logback:logback-classic:jar:1.1.2:runtime +[DEBUG] Created new class realm extension>org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8 +[DEBUG] Importing foreign packages into class realm extension>org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8 +[DEBUG] Imported: < maven.api +[DEBUG] Populating class realm extension>org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8 +[DEBUG] Included: org.sonatype.plugins:nexus-staging-maven-plugin:jar:1.6.8 +[DEBUG] Included: org.sonatype.nexus.maven:nexus-common:jar:1.6.8 +[DEBUG] Included: org.sonatype.plexus:plexus-sec-dispatcher:jar:1.4 +[DEBUG] Included: org.sonatype.plexus:plexus-cipher:jar:1.7 +[DEBUG] Included: com.google.guava:guava:jar:14.0.1 +[DEBUG] Included: org.sonatype.nexus:nexus-client-core:jar:2.14.3-02 +[DEBUG] Included: org.sonatype.nexus.plugins:nexus-restlet1x-model:jar:2.14.3-02 +[DEBUG] Included: com.google.code.findbugs:jsr305:jar:2.0.1 +[DEBUG] Included: com.intellij:annotations:jar:9.0.4 +[DEBUG] Included: commons-io:commons-io:jar:2.4 +[DEBUG] Included: com.thoughtworks.xstream:xstream:jar:1.4.7 +[DEBUG] Included: xmlpull:xmlpull:jar:1.1.3.1 +[DEBUG] Included: xpp3:xpp3_min:jar:1.1.4c +[DEBUG] Included: joda-time:joda-time:jar:2.2 +[DEBUG] Included: commons-lang:commons-lang:jar:2.6 +[DEBUG] Included: commons-beanutils:commons-beanutils-core:jar:1.8.3 +[DEBUG] Included: org.sonatype.sisu.siesta:siesta-client:jar:1.7 +[DEBUG] Included: org.sonatype.sisu.siesta:siesta-common:jar:1.7 +[DEBUG] Included: javax.ws.rs:jsr311-api:jar:1.1.1 +[DEBUG] Included: com.sun.jersey:jersey-core:jar:1.17.1 +[DEBUG] Included: javax.validation:validation-api:jar:1.1.0.Final +[DEBUG] Included: com.sun.jersey:jersey-client:jar:1.17.1 +[DEBUG] Included: com.sun.jersey.contribs:jersey-apache-client4:jar:1.17.1 +[DEBUG] Included: org.sonatype.sisu.siesta:siesta-jackson:jar:1.7 +[DEBUG] Included: com.fasterxml.jackson.core:jackson-annotations:jar:2.3.1 +[DEBUG] Included: com.fasterxml.jackson.core:jackson-core:jar:2.3.1 +[DEBUG] Included: com.fasterxml.jackson.core:jackson-databind:jar:2.3.1 +[DEBUG] Included: com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.3.1 +[DEBUG] Included: com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.3.1 +[DEBUG] Included: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.3.1 +[DEBUG] Included: org.apache.httpcomponents:httpclient:jar:4.3.5 +[DEBUG] Included: commons-codec:commons-codec:jar:1.6 +[DEBUG] Included: org.apache.httpcomponents:httpcore:jar:4.3.2 +[DEBUG] Included: org.slf4j:jcl-over-slf4j:jar:1.7.7 +[DEBUG] Included: org.sonatype.spice.zapper:spice-zapper:jar:1.3 +[DEBUG] Included: org.fusesource.hawtbuf:hawtbuf-proto:jar:1.9 +[DEBUG] Included: org.fusesource.hawtbuf:hawtbuf:jar:1.9 +[DEBUG] Included: org.codehaus.plexus:plexus-utils:jar:3.0.8 +[DEBUG] Included: org.codehaus.plexus:plexus-interpolation:jar:1.15 +[DEBUG] Included: ch.qos.logback:logback-core:jar:1.1.2 +[DEBUG] Included: ch.qos.logback:logback-classic:jar:1.1.2 +[DEBUG] Extension realms for project software.amazon.lambda:powertools-examples-core:jar:1.0: [ClassRealm[extension>org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8, parent: jdk.internal.loader.ClassLoaders$AppClassLoader@5b37e0d2]] +[DEBUG] Created new class realm project>software.amazon.lambda:powertools-examples-core:1.0 +[DEBUG] Populating class realm project>software.amazon.lambda:powertools-examples-core:1.0 +[DEBUG] Looking up lifecycle mappings for packaging jar from ClassRealm[project>software.amazon.lambda:powertools-examples-core:1.0, parent: ClassRealm[maven.api, parent: null]] +[DEBUG] Extension realms for project software.amazon.lambda:powertools-examples:pom:1.13.0: [ClassRealm[extension>org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8, parent: jdk.internal.loader.ClassLoaders$AppClassLoader@5b37e0d2]] +[DEBUG] Looking up lifecycle mappings for packaging pom from ClassRealm[project>software.amazon.lambda:powertools-examples-core:1.0, parent: ClassRealm[maven.api, parent: null]] +[DEBUG] Extension realms for project software.amazon.lambda:powertools-parent:pom:1.13.0: [ClassRealm[extension>org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8, parent: jdk.internal.loader.ClassLoaders$AppClassLoader@5b37e0d2]] +[DEBUG] Looking up lifecycle mappings for packaging pom from ClassRealm[project>software.amazon.lambda:powertools-examples-core:1.0, parent: ClassRealm[maven.api, parent: null]] +[WARNING] +[WARNING] Some problems were encountered while building the effective model for software.amazon.lambda:powertools-examples-core:jar:1.0 +[WARNING] 'version' contains an expression but should be a constant. @ software.amazon.lambda:powertools-parent:${projectversion}, /Users/gerrings/Documents/GitHub/powertools/aws-lambda-powertools-java/pom.xml, line 9, column 14 +[WARNING] +[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. +[WARNING] +[WARNING] For this reason, future Maven versions might no longer support building such malformed projects. +[WARNING] +[INFO] Inspecting build with total of 1 modules... +[INFO] Installing Nexus Staging features: +[INFO] ... total of 1 executions of maven-deploy-plugin replaced with nexus-staging-maven-plugin +[DEBUG] === REACTOR BUILD PLAN ================================================ +[DEBUG] Project: software.amazon.lambda:powertools-examples-core:jar:1.0 +[DEBUG] Tasks: [install] +[DEBUG] Style: Regular +[DEBUG] ======================================================================= +[INFO] +[INFO] ----------< software.amazon.lambda:powertools-examples-core >----------- +[INFO] Building A sample Hello World created for SAM CLI using powertools core utilities 1.0 +[INFO] from pom.xml +[INFO] --------------------------------[ jar ]--------------------------------- +[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] +[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] +[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] +[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] +[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] +[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] +[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] +[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] +[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] +[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] +[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] +[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] +[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] +[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] +[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] +[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] +[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] +[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] +[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] +[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] +[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] +[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] +[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] +[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] +[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] +[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] +[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] +[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] +[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] +[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] +[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] +[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] +[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] +[DEBUG] === PROJECT BUILD PLAN ================================================ +[DEBUG] Project: software.amazon.lambda:powertools-examples-core:1.0 +[DEBUG] Dependencies (collect): [] +[DEBUG] Dependencies (resolve): [compile, runtime, test] +[DEBUG] Repositories (dependencies): [central (https://repo.maven.apache.org/maven2, default, releases)] +[DEBUG] Repositories (plugins) : [central (https://repo.maven.apache.org/maven2, default, releases)] +[DEBUG] ----------------------------------------------------------------------- +[DEBUG] Goal: org.jacoco:jacoco-maven-plugin:0.8.8:prepare-agent (default) +[DEBUG] Style: Regular +[DEBUG] Configuration: + +
${jacoco.address}
+ ${jacoco.append} + ${jacoco.classDumpDir} + ${jacoco.destFile} + ${jacoco.dumpOnExit} + ${jacoco.exclClassLoaders} + ${jacoco.inclBootstrapClasses} + ${jacoco.inclNoLocationClasses} + ${jacoco.jmx} + ${jacoco.output} + ${plugin.artifactMap} + ${jacoco.port} + ${project} + ${jacoco.propertyName} + ${jacoco.sessionId} + ${jacoco.skip} +
+[DEBUG] ----------------------------------------------------------------------- +[DEBUG] Goal: org.codehaus.mojo:aspectj-maven-plugin:1.14.0:compile (default) +[DEBUG] Style: Regular +[DEBUG] Configuration: + + + ignore + + + + + software.amazon.lambda + powertools-tracing + + + software.amazon.lambda + powertools-logging + + + software.amazon.lambda + powertools-metrics + + + + 11 + UTF-8 + + + + + ${aspectj.skip} + 11 + 11 + + +[DEBUG] ----------------------------------------------------------------------- +[DEBUG] Goal: org.codehaus.mojo:aspectj-maven-plugin:1.14.0:test-compile (default) +[DEBUG] Style: Regular +[DEBUG] Configuration: + + + ignore + + + + + software.amazon.lambda + powertools-tracing + + + software.amazon.lambda + powertools-logging + + + software.amazon.lambda + powertools-metrics + + + + 11 + UTF-8 + + + + + ${aspectj.skip} + 11 + 11 + + + + +[DEBUG] ----------------------------------------------------------------------- +[DEBUG] Goal: org.apache.maven.plugins:maven-resources-plugin:3.3.0:resources (default-resources) +[DEBUG] Style: Regular +[DEBUG] Configuration: + + + + + + + + + + + + + ${maven.resources.skip} + + + + +[DEBUG] ----------------------------------------------------------------------- +[DEBUG] Goal: org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) +[DEBUG] Style: Regular +[DEBUG] Configuration: + + + + + + ${maven.compiler.compilerId} + ${maven.compiler.compilerReuseStrategy} + ${maven.compiler.compilerVersion} + ${maven.compiler.createMissingPackageInfoClass} + ${maven.compiler.debug} + + ${maven.compiler.debuglevel} + ${maven.compiler.enablePreview} + ${encoding} + ${maven.compiler.executable} + ${maven.compiler.failOnError} + ${maven.compiler.failOnWarning} + ${maven.compiler.forceJavacCompilerUse} + ${maven.compiler.fork} + + ${maven.compiler.maxmem} + ${maven.compiler.meminitial} + + ${maven.compiler.optimize} + + ${maven.compiler.parameters} + + + ${maven.compiler.release} + + ${maven.compiler.showDeprecation} + ${maven.compiler.showWarnings} + ${maven.main.skip} + ${maven.compiler.skipMultiThreadWarning} + 11 + ${lastModGranularityMs} + 11 + false + ${maven.compiler.verbose} + +[DEBUG] ----------------------------------------------------------------------- +[DEBUG] Goal: org.apache.maven.plugins:maven-resources-plugin:3.3.0:testResources (default-testResources) +[DEBUG] Style: Regular +[DEBUG] Configuration: + + + + + + + + + + + + + ${maven.test.skip} + + + + +[DEBUG] ----------------------------------------------------------------------- +[DEBUG] Goal: org.apache.maven.plugins:maven-compiler-plugin:3.10.1:testCompile (default-testCompile) +[DEBUG] Style: Regular +[DEBUG] Configuration: + + + + + ${maven.compiler.compilerId} + ${maven.compiler.compilerReuseStrategy} + ${maven.compiler.compilerVersion} + ${maven.compiler.createMissingPackageInfoClass} + ${maven.compiler.debug} + + ${maven.compiler.debuglevel} + ${maven.compiler.enablePreview} + ${encoding} + ${maven.compiler.executable} + ${maven.compiler.failOnError} + ${maven.compiler.failOnWarning} + ${maven.compiler.forceJavacCompilerUse} + ${maven.compiler.fork} + + ${maven.compiler.maxmem} + ${maven.compiler.meminitial} + + ${maven.compiler.optimize} + + ${maven.compiler.parameters} + + ${maven.compiler.release} + + ${maven.compiler.showDeprecation} + ${maven.compiler.showWarnings} + ${maven.test.skip} + ${maven.compiler.skipMultiThreadWarning} + 11 + ${lastModGranularityMs} + 11 + + ${maven.compiler.testRelease} + ${maven.compiler.testSource} + ${maven.compiler.testTarget} + false + ${maven.compiler.verbose} + +[DEBUG] ----------------------------------------------------------------------- +[DEBUG] Goal: org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test (default-test) +[DEBUG] Style: Regular +[DEBUG] Configuration: + + ${maven.test.additionalClasspath} + ${argLine} + + ${childDelegation} + + ${maven.test.dependency.excludes} + ${maven.surefire.debug} + ${dependenciesToScan} + ${disableXmlReport} + ${enableAssertions} + ${surefire.encoding} + ${excludedGroups} + ${surefire.excludesFile} + ${surefire.failIfNoSpecifiedTests} + ${failIfNoTests} + ${forkCount} + ${forkMode} + ${surefire.exitTimeout} + ${surefire.timeout} + ${groups} + ${surefire.includesFile} + ${junitArtifactName} + ${junitPlatformArtifactName} + ${jvm} + + ${objectFactory} + ${parallel} + + ${parallelOptimized} + ${surefire.parallel.forcedTimeout} + ${surefire.parallel.timeout} + ${perCoreThreadCount} + ${plugin.artifactMap} + + ${surefire.printSummary} + ${project.artifactMap} + + ${maven.test.redirectTestOutputToFile} + + ${surefire.reportFormat} + ${surefire.reportNameSuffix} + + ${surefire.rerunFailingTestsCount} + ${reuseForks} + ${surefire.runOrder} + ${surefire.shutdown} + ${maven.test.skip} + ${surefire.skipAfterFailureCount} + ${maven.test.skip.exec} + ${skipTests} + ${surefire.suiteXmlFiles} + ${tempDir} + ${test} + + ${maven.test.failure.ignore} + ${testNGArtifactName} + + ${threadCount} + ${threadCountClasses} + ${threadCountMethods} + ${threadCountSuites} + ${trimStackTrace} + ${surefire.useFile} + ${surefire.useManifestOnlyJar} + ${surefire.useSystemClassLoader} + ${useUnlimitedThreads} + ${basedir} + + + +[DEBUG] ----------------------------------------------------------------------- +[DEBUG] Goal: org.jacoco:jacoco-maven-plugin:0.8.8:report (report) +[DEBUG] Style: Regular +[DEBUG] Configuration: + + ${jacoco.dataFile} + + + ${project.reporting.outputEncoding} + ${project} + ${jacoco.skip} + ${project.build.sourceEncoding} + +</configuration> +[DEBUG] ----------------------------------------------------------------------- +[DEBUG] Goal: org.apache.maven.plugins:maven-jar-plugin:3.3.0:jar (default-jar) +[DEBUG] Style: Regular +[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> +<configuration> + <classesDirectory default-value="${project.build.outputDirectory}"/> + <finalName default-value="${project.build.finalName}"/> + <forceCreation default-value="false">${maven.jar.forceCreation}</forceCreation> + <outputDirectory default-value="${project.build.directory}"/> + <outputTimestamp default-value="${project.build.outputTimestamp}"/> + <project default-value="${project}"/> + <session default-value="${session}"/> + <skipIfEmpty default-value="false"/> + <useDefaultManifestFile default-value="false">${jar.useDefaultManifestFile}</useDefaultManifestFile> +</configuration> +[DEBUG] ----------------------------------------------------------------------- +[DEBUG] Goal: org.apache.maven.plugins:maven-source-plugin:3.2.1:jar-no-fork (attach-sources) +[DEBUG] Style: Regular +[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> +<configuration> + <attach default-value="true">${maven.source.attach}</attach> + <classifier default-value="sources">${maven.source.classifier}</classifier> + <defaultManifestFile default-value="${project.build.outputDirectory}/META-INF/MANIFEST.MF"/> + <excludeResources default-value="false">${maven.source.excludeResources}</excludeResources> + <finalName default-value="${project.build.finalName}"/> + <forceCreation default-value="false">${maven.source.forceCreation}</forceCreation> + <includePom default-value="false">${maven.source.includePom}</includePom> + <outputDirectory default-value="${project.build.directory}"/> + <outputTimestamp default-value="${project.build.outputTimestamp}"/> + <project default-value="${project}"/> + <reactorProjects default-value="${reactorProjects}"/> + <session default-value="${session}"/> + <skipSource default-value="false">${maven.source.skip}</skipSource> + <useDefaultExcludes default-value="true">${maven.source.useDefaultExcludes}</useDefaultExcludes> + <useDefaultManifestFile default-value="false">${maven.source.useDefaultManifestFile}</useDefaultManifestFile> +</configuration> +[DEBUG] ----------------------------------------------------------------------- +[DEBUG] Goal: org.apache.maven.plugins:maven-javadoc-plugin:3.4.1:jar (attach-javadocs) +[DEBUG] Style: Regular +[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> +<configuration> + <additionalJOption>${additionalJOption}</additionalJOption> + <applyJavadocSecurityFix default-value="true">${maven.javadoc.applyJavadocSecurityFix}</applyJavadocSecurityFix> + <attach default-value="true">${attach}</attach> + <author default-value="true">${author}</author> + <bootclasspath>${bootclasspath}</bootclasspath> + <bootclasspathArtifacts>${bootclasspathArtifacts}</bootclasspathArtifacts> + <bottom default-value="Copyright &#169; {inceptionYear}&#x2013;{currentYear} {organizationName}. All rights reserved.">${bottom}</bottom> + <breakiterator default-value="false">${breakiterator}</breakiterator> + <charset>${charset}</charset> + <classifier default-value="javadoc">${maven.javadoc.classifier}</classifier> + <debug default-value="false">${debug}</debug> + <defaultManifestFile default-value="${project.build.outputDirectory}/META-INF/MANIFEST.MF"/> + <destDir>${destDir}</destDir> + <detectJavaApiLink default-value="true">false</detectJavaApiLink> + <detectLinks default-value="false">${detectLinks}</detectLinks> + <detectOfflineLinks default-value="true">${detectOfflineLinks}</detectOfflineLinks> + <docencoding default-value="${project.reporting.outputEncoding}">${docencoding}</docencoding> + <docfilessubdirs default-value="false">${docfilessubdirs}</docfilessubdirs> + <doclet>${doclet}</doclet> + <docletArtifact>${docletArtifact}</docletArtifact> + <docletArtifacts>${docletArtifacts}</docletArtifacts> + <docletPath>${docletPath}</docletPath> + <doclint>none</doclint> + <doctitle default-value="${project.name} ${project.version} API">${doctitle}</doctitle> + <encoding default-value="${project.build.sourceEncoding}">${encoding}</encoding> + <excludePackageNames>${excludePackageNames}</excludePackageNames> + <excludedocfilessubdir>${excludedocfilessubdir}</excludedocfilessubdir> + <extdirs>${extdirs}</extdirs> + <failOnError default-value="true">${maven.javadoc.failOnError}</failOnError> + <failOnWarnings default-value="false">${maven.javadoc.failOnWarnings}</failOnWarnings> + <finalName>${project.build.finalName}</finalName> + <footer>${footer}</footer> + <header>${header}</header> + <helpfile>${helpfile}</helpfile> + <includeDependencySources default-value="false"/> + <includeTransitiveDependencySources default-value="false"/> + <isOffline default-value="${settings.offline}"/> + <jarOutputDirectory>${project.build.directory}</jarOutputDirectory> + <javaApiLinks>${javaApiLinks}</javaApiLinks> + <javadocDirectory default-value="${basedir}/src/main/javadoc"/> + <javadocExecutable>${javadocExecutable}</javadocExecutable> + <javadocOptionsDir default-value="${project.build.directory}/javadoc-bundle-options"/> + <javadocVersion>${javadocVersion}</javadocVersion> + <keywords default-value="false">${keywords}</keywords> + <links>${links}</links> + <linksource default-value="false">${linksource}</linksource> + <localRepository>${localRepository}</localRepository> + <locale>${locale}</locale> + <maxmemory>${maxmemory}</maxmemory> + <minmemory>${minmemory}</minmemory> + <mojo default-value="${mojoExecution}"/> + <nocomment default-value="false">${nocomment}</nocomment> + <nodeprecated default-value="false">${nodeprecated}</nodeprecated> + <nodeprecatedlist default-value="false">${nodeprecatedlist}</nodeprecatedlist> + <nohelp default-value="false">${nohelp}</nohelp> + <noindex default-value="false">${noindex}</noindex> + <nonavbar default-value="false">${nonavbar}</nonavbar> + <nooverview default-value="false">${nooverview}</nooverview> + <noqualifier>${noqualifier}</noqualifier> + <nosince default-value="false">${nosince}</nosince> + <notimestamp default-value="false">${notimestamp}</notimestamp> + <notree default-value="false">${notree}</notree> + <offlineLinks>${offlineLinks}</offlineLinks> + <old default-value="false">${old}</old> + <outputDirectory default-value="${project.build.directory}/apidocs">${destDir}</outputDirectory> + <outputTimestamp default-value="${project.build.outputTimestamp}"/> + <overview default-value="${basedir}/src/main/javadoc/overview.html">${overview}</overview> + <packagesheader>${packagesheader}</packagesheader> + <project default-value="${project}"/> + <quiet default-value="false">${quiet}</quiet> + <reactorProjects>${reactorProjects}</reactorProjects> + <release default-value="${maven.compiler.release}"/> + <resourcesArtifacts>${resourcesArtifacts}</resourcesArtifacts> + <serialwarn default-value="false">${serialwarn}</serialwarn> + <session default-value="${session}"/> + <settings default-value="${settings}"/> + <show default-value="protected">${show}</show> + <skip default-value="false">${maven.javadoc.skip}</skip> + <skippedModules>${maven.javadoc.skippedModules}</skippedModules> + <source default-value="${maven.compiler.source}">${source}</source> + <sourceDependencyCacheDir default-value="${project.build.directory}/distro-javadoc-sources"/> + <sourcepath>${sourcepath}</sourcepath> + <sourcetab>${sourcetab}</sourcetab> + <splitindex default-value="false">${splitindex}</splitindex> + <staleDataPath default-value="${project.build.directory}/maven-javadoc-plugin-stale-data.txt">${staleDataPath}</staleDataPath> + <stylesheet default-value="java">${stylesheet}</stylesheet> + <stylesheetfile>${stylesheetfile}</stylesheetfile> + <subpackages>${subpackages}</subpackages> + <taglet>${taglet}</taglet> + <tagletArtifact>${tagletArtifact}</tagletArtifact> + <tagletArtifacts>${tagletArtifacts}</tagletArtifacts> + <tagletpath>${tagletpath}</tagletpath> + <taglets>${taglets}</taglets> + <tags>${tags}</tags> + <top>${top}</top> + <use default-value="true">${use}</use> + <useDefaultManifestFile default-value="false"/> + <useStandardDocletOptions default-value="true">${useStandardDocletOptions}</useStandardDocletOptions> + <validateLinks default-value="false">${validateLinks}</validateLinks> + <verbose default-value="false">${verbose}</verbose> + <version default-value="true">${version}</version> + <windowtitle default-value="${project.name} ${project.version} API">${windowtitle}</windowtitle> +</configuration> +[DEBUG] ----------------------------------------------------------------------- +[DEBUG] Goal: org.apache.maven.plugins:maven-shade-plugin:3.2.4:shade (default) +[DEBUG] Style: Regular +[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> +<configuration> + <createDependencyReducedPom default-value="true"/> + <dependencyReducedPomLocation default-value="${basedir}/dependency-reduced-pom.xml"/> + <generateUniqueDependencyReducedPom default-value="false"/> + <localRepository default-value="${localRepository}"/> + <outputDirectory default-value="${project.build.directory}"/> + <project default-value="${project}"/> + <remoteArtifactRepositories default-value="${project.remoteArtifactRepositories}"/> + <session default-value="${session}"/> + <shadeSourcesContent default-value="false">${shadeSourcesContent}</shadeSourcesContent> + <shadeTestJar default-value="false"/> + <shadedArtifactId default-value="${project.artifactId}"/> + <shadedClassifierName default-value="shaded"/> + <transformers> + <transformer implementation="com.github.edwgiz.maven_shade_plugin.log4j2_cache_transformer.PluginsCacheFileTransformer"></transformer> + </transformers> + <useBaseVersion default-value="false"/> +</configuration> +[DEBUG] --- init fork of software.amazon.lambda:powertools-examples-core:1.0 for com.github.spotbugs:spotbugs-maven-plugin:4.7.3.0:check (test) --- +[DEBUG] Dependencies (collect): [] +[DEBUG] Dependencies (resolve): [test] +[DEBUG] ----------------------------------------------------------------------- +[DEBUG] Goal: com.github.spotbugs:spotbugs-maven-plugin:4.7.3.0:spotbugs (spotbugs) +[DEBUG] Style: Regular +[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> +<configuration> + <addSourceDirs default-value="false">${spotbugs.addSourceDirs}</addSourceDirs> + <classFilesDirectory default-value="${project.build.outputDirectory}"/> + <compileSourceRoots default-value="${project.compileSourceRoots}"/> + <debug default-value="false">${spotbugs.debug}</debug> + <effort default-value="Default">${spotbugs.effort}</effort> + <excludeBugsFile>${spotbugs.excludeBugsFile}</excludeBugsFile> + <excludeBugsFiles>${spotbugs.excludeBugsFiles}</excludeBugsFiles> + <excludeFilterFile>../spotbugs-exclude.xml</excludeFilterFile> + <excludeFilterFiles>${spotbugs.excludeFilterFiles}</excludeFilterFiles> + <failOnError default-value="true">${spotbugs.failOnError}</failOnError> + <fork default-value="true">${spotbugs.fork}</fork> + <includeFilterFile>${spotbugs.includeFilterFile}</includeFilterFile> + <includeFilterFiles>${spotbugs.includeFilterFiles}</includeFilterFiles> + <includeTests default-value="false">${spotbugs.includeTests}</includeTests> + <inputEncoding default-value="${project.build.sourceEncoding}">${encoding}</inputEncoding> + <jvmArgs>${spotbugs.jvmArgs}</jvmArgs> + <localRepository>${localRepository}</localRepository> + <maxHeap default-value="512">${spotbugs.maxHeap}</maxHeap> + <maxRank>${spotbugs.maxRank}</maxRank> + <nested default-value="false">${spotbugs.nested}</nested> + <omitVisitors>${spotbugs.omitVisitors}</omitVisitors> + <onlyAnalyze>${spotbugs.onlyAnalyze}</onlyAnalyze> + <outputDirectory default-value="${project.reporting.outputDirectory}"/> + <outputEncoding default-value="${project.reporting.outputEncoding}">${outputEncoding}</outputEncoding> + <pluginArtifacts>${plugin.artifacts}</pluginArtifacts> + <pluginList>${spotbugs.pluginList}</pluginList> + <project>${project}</project> + <relaxed default-value="false">${spotbugs.relaxed}</relaxed> + <remoteArtifactRepositories>${project.remoteArtifactRepositories}</remoteArtifactRepositories> + <remoteRepositories>${project.remoteArtifactRepositories}</remoteRepositories> + <sarifFullPath default-value="false">${spotbugs.sarifFullPath}</sarifFullPath> + <sarifOutput default-value="false">${spotbugs.sarifOutput}</sarifOutput> + <sarifOutputDirectory default-value="${project.build.directory}">${spotbugs.sarifOutputDirectory}</sarifOutputDirectory> + <sarifOutputFilename default-value="spotbugsSarif.json">${spotbugs.sarifOutputFilename}</sarifOutputFilename> + <session default-value="${session}"/> + <skip default-value="false">${spotbugs.skip}</skip> + <skipEmptyReport default-value="false">${spotbugs.skipEmptyReport}</skipEmptyReport> + <sourceEncoding default-value="${project.build.sourceEncoding}">${encoding}</sourceEncoding> + <spotbugsXmlOutput default-value="true"/> + <spotbugsXmlOutputDirectory default-value="${project.build.directory}"/> + <spotbugsXmlOutputFilename default-value="spotbugsXml.xml">${spotbugs.outputXmlFilename}</spotbugsXmlOutputFilename> + <systemPropertyVariables>${spotbugs.systemPropertyVariables}</systemPropertyVariables> + <testClassFilesDirectory default-value="${project.build.testOutputDirectory}"/> + <testSourceRoots default-value="${project.testCompileSourceRoots}"/> + <threshold default-value="Default">${spotbugs.threshold}</threshold> + <timeout default-value="600000">${spotbugs.timeout}</timeout> + <trace default-value="false">${spotbugs.trace}</trace> + <userPrefs>${spotbugs.userPrefs}</userPrefs> + <visitors>${spotbugs.visitors}</visitors> + <xmlEncoding default-value="UTF-8"/> + <xmlOutput default-value="false">true</xmlOutput> + <xmlOutputDirectory default-value="${project.build.directory}"/> + <xrefLocation default-value="${project.reporting.outputDirectory}/xref"/> + <xrefTestLocation default-value="${project.reporting.outputDirectory}/xref-test"/> +</configuration> +[DEBUG] --- exit fork of software.amazon.lambda:powertools-examples-core:1.0 for com.github.spotbugs:spotbugs-maven-plugin:4.7.3.0:check (test) --- +[DEBUG] ----------------------------------------------------------------------- +[DEBUG] Goal: com.github.spotbugs:spotbugs-maven-plugin:4.7.3.0:check (test) +[DEBUG] Style: Regular +[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> +<configuration> + <classFilesDirectory default-value="${project.build.outputDirectory}"/> + <compileSourceRoots default-value="${project.compileSourceRoots}"/> + <debug default-value="false">${spotbugs.debug}</debug> + <effort default-value="Default">${spotbugs.effort}</effort> + <excludeBugsFile>${spotbugs.excludeBugsFile}</excludeBugsFile> + <excludeFilterFile>../spotbugs-exclude.xml</excludeFilterFile> + <failOnError default-value="true">${spotbugs.failOnError}</failOnError> + <failThreshold>${spotbugs.failThreshold}</failThreshold> + <fork default-value="true">${spotbugs.fork}</fork> + <includeFilterFile>${spotbugs.includeFilterFile}</includeFilterFile> + <includeTests default-value="false">${spotbugs.includeTests}</includeTests> + <jvmArgs>${spotbugs.jvmArgs}</jvmArgs> + <localRepository>${localRepository}</localRepository> + <maxAllowedViolations default-value="0">${spotbugs.maxAllowedViolations}</maxAllowedViolations> + <maxHeap default-value="512">${spotbugs.maxHeap}</maxHeap> + <maxRank>${spotbugs.maxRank}</maxRank> + <nested default-value="false">${spotbugs.nested}</nested> + <omitVisitors>${spotbugs.omitVisitors}</omitVisitors> + <onlyAnalyze>${spotbugs.onlyAnalyze}</onlyAnalyze> + <outputDirectory default-value="${project.reporting.outputDirectory}"/> + <outputEncoding default-value="${project.reporting.outputEncoding}">${outputEncoding}</outputEncoding> + <pluginArtifacts>${plugin.artifacts}</pluginArtifacts> + <pluginList>${spotbugs.pluginList}</pluginList> + <project>${project}</project> + <relaxed default-value="false">${spotbugs.relaxed}</relaxed> + <remoteArtifactRepositories>${project.remoteArtifactRepositories}</remoteArtifactRepositories> + <session default-value="${session}"/> + <skip default-value="false">${spotbugs.skip}</skip> + <sourceEncoding default-value="${project.build.sourceEncoding}">${encoding}</sourceEncoding> + <spotbugsXmlOutput default-value="true"/> + <spotbugsXmlOutputDirectory default-value="${project.build.directory}"/> + <spotbugsXmlOutputFilename default-value="spotbugsXml.xml">${spotbugs.outputXmlFilename}</spotbugsXmlOutputFilename> + <testClassFilesDirectory default-value="${project.build.testOutputDirectory}"/> + <testSourceRoots default-value="${project.testCompileSourceRoots}"/> + <threshold default-value="Default">${spotbugs.threshold}</threshold> + <timeout default-value="600000">${spotbugs.timeout}</timeout> + <trace default-value="false">${spotbugs.trace}</trace> + <visitors>${spotbugs.visitors}</visitors> + <xmlEncoding default-value="UTF-8"/> + <xmlOutput default-value="false">true</xmlOutput> + <xmlOutputDirectory default-value="${project.build.directory}"/> + <xrefLocation default-value="${project.reporting.outputDirectory}/xref"/> + <xrefTestLocation default-value="${project.reporting.outputDirectory}/xref-test"/> +</configuration> +[DEBUG] ----------------------------------------------------------------------- +[DEBUG] Goal: org.apache.maven.plugins:maven-install-plugin:3.1.0:install (default-install) +[DEBUG] Style: Regular +[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> +<configuration> + <installAtEnd default-value="false">${installAtEnd}</installAtEnd> + <pluginDescriptor default-value="${plugin}"/> + <project default-value="${project}"/> + <reactorProjects default-value="${reactorProjects}"/> + <session default-value="${session}"/> + <skip default-value="false">${maven.install.skip}</skip> +</configuration> +[DEBUG] ======================================================================= +[DEBUG] Resolving artifact software.amazon.lambda:powertools-core:pom:1.0 from [central (https://repo.maven.apache.org/maven2, default, releases)] +[WARNING] The POM for software.amazon.lambda:powertools-core:jar:1.0 is missing, no dependency information available +[DEBUG] Dependency collection stats {ConflictMarker.analyzeTime=202078, ConflictMarker.markTime=109537, ConflictMarker.nodeCount=110, ConflictIdSorter.graphTime=88441, ConflictIdSorter.topsortTime=25375, ConflictIdSorter.conflictIdCount=48, ConflictIdSorter.conflictIdCycleCount=0, ConflictResolver.totalTime=1462879, ConflictResolver.conflictItemCount=109, DfDependencyCollector.collectTime=217077829, DfDependencyCollector.transformTime=1949432} +[DEBUG] software.amazon.lambda:powertools-examples-core:jar:1.0 +[DEBUG] software.amazon.lambda:powertools-tracing:jar:1.13.0:compile +[DEBUG] software.amazon.lambda:powertools-core:jar:1.0:compile (version managed from 1.13.0) +[DEBUG] software.amazon.awssdk:aws-core:jar:2.19.0:compile (version managed from 2.19.0) +[DEBUG] software.amazon.awssdk:annotations:jar:2.19.0:compile (version managed from 2.19.0) +[DEBUG] software.amazon.awssdk:regions:jar:2.19.0:compile (version managed from 2.19.0) +[DEBUG] software.amazon.awssdk:json-utils:jar:2.19.0:compile (version managed from 2.19.0) +[DEBUG] software.amazon.awssdk:third-party-jackson-core:jar:2.19.0:compile (version managed from 2.19.0) +[DEBUG] software.amazon.awssdk:auth:jar:2.19.0:compile (version managed from 2.19.0) +[DEBUG] software.amazon.awssdk:profiles:jar:2.19.0:compile (version managed from 2.19.0) +[DEBUG] software.amazon.awssdk:sdk-core:jar:2.19.0:compile (version managed from 2.19.0) +[DEBUG] org.reactivestreams:reactive-streams:jar:1.0.3:compile +[DEBUG] software.amazon.awssdk:http-client-spi:jar:2.19.0:compile (version managed from 2.19.0) +[DEBUG] software.amazon.awssdk:metrics-spi:jar:2.19.0:compile (version managed from 2.19.0) +[DEBUG] software.amazon.awssdk:endpoints-spi:jar:2.19.0:compile +[DEBUG] software.amazon.awssdk:utils:jar:2.19.0:compile (version managed from 2.19.0) +[DEBUG] software.amazon.eventstream:eventstream:jar:1.0.1:compile +[DEBUG] org.aspectj:aspectjrt:jar:1.9.7:compile (version managed from 1.9.7) +[DEBUG] com.amazonaws:aws-xray-recorder-sdk-core:jar:2.13.0:compile (version managed from 2.13.0) +[DEBUG] com.amazonaws:aws-java-sdk-xray:jar:1.12.228:compile +[DEBUG] com.amazonaws:aws-java-sdk-core:jar:1.12.228:compile +[DEBUG] commons-logging:commons-logging:jar:1.1.3:compile +[DEBUG] commons-codec:commons-codec:jar:1.15:compile +[DEBUG] org.apache.httpcomponents:httpclient:jar:4.5.13:compile +[DEBUG] org.apache.httpcomponents:httpcore:jar:4.4.13:compile +[DEBUG] software.amazon.ion:ion-java:jar:1.0.2:compile +[DEBUG] com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:2.12.6:compile +[DEBUG] com.amazonaws:jmespath-java:jar:1.12.228:compile +[DEBUG] com.amazonaws:aws-xray-recorder-sdk-aws-sdk-core:jar:2.13.0:compile (version managed from 2.13.0) +[DEBUG] com.amazonaws:aws-xray-recorder-sdk-aws-sdk-v2:jar:2.13.0:compile (version managed from 2.13.0) +[DEBUG] com.amazonaws:aws-xray-recorder-sdk-aws-sdk-v2-instrumentor:jar:2.13.0:compile (version managed from 2.13.0) +[DEBUG] software.amazon.lambda:powertools-logging:jar:1.13.0:compile +[DEBUG] com.fasterxml.jackson.core:jackson-databind:jar:2.14.1:compile (version managed from 2.14.1) +[DEBUG] com.fasterxml.jackson.core:jackson-annotations:jar:2.14.1:compile +[DEBUG] com.fasterxml.jackson.core:jackson-core:jar:2.14.1:compile +[DEBUG] org.apache.logging.log4j:log4j-layout-template-json:jar:2.19.0:compile (version managed from 2.19.0) +[DEBUG] org.apache.logging.log4j:log4j-slf4j-impl:jar:2.19.0:compile (version managed from 2.19.0) +[DEBUG] org.slf4j:slf4j-api:jar:1.7.25:compile +[DEBUG] software.amazon.lambda:powertools-metrics:jar:1.13.0:compile +[DEBUG] software.amazon.cloudwatchlogs:aws-embedded-metrics:jar:1.0.6:compile (version managed from 1.0.6) +[DEBUG] com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.11.1:runtime +[DEBUG] org.javatuples:javatuples:jar:1.2:runtime +[DEBUG] com.amazonaws:aws-lambda-java-core:jar:1.2.2:compile +[DEBUG] com.amazonaws:aws-lambda-java-events:jar:3.11.0:compile +[DEBUG] joda-time:joda-time:jar:2.6:compile +[DEBUG] org.apache.logging.log4j:log4j-core:jar:2.19.0:compile +[DEBUG] org.apache.logging.log4j:log4j-api:jar:2.19.0:compile +[DEBUG] junit:junit:jar:4.13.2:test +[DEBUG] org.hamcrest:hamcrest-core:jar:1.3:test +[DEBUG] Resolving artifact software.amazon.lambda:powertools-core:jar:1.0 from [central (https://repo.maven.apache.org/maven2, default, releases)] +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD FAILURE +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 1.033 s +[INFO] Finished at: 2023-02-15T12:32:07+01:00 +[INFO] ------------------------------------------------------------------------ +[ERROR] Failed to execute goal on project powertools-examples-core: Could not resolve dependencies for project software.amazon.lambda:powertools-examples-core:jar:1.0: software.amazon.lambda:powertools-core:jar:1.0 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced -> [Help 1] +org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project powertools-examples-core: Could not resolve dependencies for project software.amazon.lambda:powertools-examples-core:jar:1.0: software.amazon.lambda:powertools-core:jar:1.0 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced + at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:245) + at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:138) + at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:369) + at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:327) + at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213) + at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175) + at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76) + at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163) + at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) + at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160) + at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) + at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) + at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) + at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) + at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260) + at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172) + at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100) + at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821) + at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270) + at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) + at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104) + at java.lang.reflect.Method.invoke (Method.java:578) + at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) + at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) + at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) + at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) +Caused by: org.apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project software.amazon.lambda:powertools-examples-core:jar:1.0: software.amazon.lambda:powertools-core:jar:1.0 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced + at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve (DefaultProjectDependenciesResolver.java:187) + at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:226) + at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:138) + at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:369) + at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:327) + at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213) + at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175) + at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76) + at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163) + at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) + at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160) + at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) + at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) + at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) + at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) + at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260) + at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172) + at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100) + at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821) + at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270) + at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) + at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104) + at java.lang.reflect.Method.invoke (Method.java:578) + at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) + at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) + at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) + at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) +Caused by: org.eclipse.aether.resolution.DependencyResolutionException: software.amazon.lambda:powertools-core:jar:1.0 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced + at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies (DefaultRepositorySystem.java:402) + at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve (DefaultProjectDependenciesResolver.java:182) + at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:226) + at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:138) + at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:369) + at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:327) + at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213) + at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175) + at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76) + at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163) + at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) + at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160) + at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) + at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) + at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) + at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) + at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260) + at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172) + at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100) + at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821) + at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270) + at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) + at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104) + at java.lang.reflect.Method.invoke (Method.java:578) + at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) + at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) + at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) + at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) +Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: software.amazon.lambda:powertools-core:jar:1.0 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced + at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve (DefaultArtifactResolver.java:506) + at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts (DefaultArtifactResolver.java:278) + at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies (DefaultRepositorySystem.java:385) + at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve (DefaultProjectDependenciesResolver.java:182) + at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:226) + at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:138) + at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:369) + at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:327) + at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213) + at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175) + at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76) + at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163) + at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) + at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160) + at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) + at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) + at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) + at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) + at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260) + at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172) + at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100) + at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821) + at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270) + at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) + at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104) + at java.lang.reflect.Method.invoke (Method.java:578) + at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) + at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) + at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) + at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) +Caused by: org.eclipse.aether.transfer.ArtifactNotFoundException: software.amazon.lambda:powertools-core:jar:1.0 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced + at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.newException (DefaultUpdateCheckManager.java:238) + at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.checkArtifact (DefaultUpdateCheckManager.java:210) + at org.eclipse.aether.internal.impl.DefaultArtifactResolver.gatherDownloads (DefaultArtifactResolver.java:641) + at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads (DefaultArtifactResolver.java:565) + at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve (DefaultArtifactResolver.java:478) + at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts (DefaultArtifactResolver.java:278) + at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies (DefaultRepositorySystem.java:385) + at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve (DefaultProjectDependenciesResolver.java:182) + at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:226) + at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:138) + at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:369) + at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:327) + at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213) + at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175) + at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76) + at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163) + at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) + at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160) + at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) + at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) + at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) + at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) + at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260) + at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172) + at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100) + at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821) + at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270) + at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) + at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104) + at java.lang.reflect.Method.invoke (Method.java:578) + at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) + at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) + at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) + at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) +[ERROR] +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException +[DEBUG] Shutting down adapter factory; available factories [file-lock, rwlock-local, semaphore-local, noop]; available name mappers [discriminating, file-gav, file-hgav, gav, static] +[DEBUG] Shutting down 'file-lock' factory +[DEBUG] Shutting down 'rwlock-local' factory +[DEBUG] Shutting down 'semaphore-local' factory +[DEBUG] Shutting down 'noop' factory diff --git a/examples/powertools-examples-core/Function/pom.xml b/examples/powertools-examples-core/pom.xml similarity index 91% rename from examples/powertools-examples-core/Function/pom.xml rename to examples/powertools-examples-core/pom.xml index 6dcf27989..8cfd1568b 100644 --- a/examples/powertools-examples-core/Function/pom.xml +++ b/examples/powertools-examples-core/pom.xml @@ -1,9 +1,8 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>powertools</groupId> - <artifactId>Function</artifactId> - <version>1.0</version> + <groupId>software.amazon.lambda</groupId> + <artifactId>powertools-examples-core</artifactId> <packaging>jar</packaging> <name>A sample Hello World created for SAM CLI using powertools core utilities</name> <properties> @@ -13,21 +12,27 @@ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> + <parent> + <artifactId>powertools-examples</artifactId> + <groupId>software.amazon.lambda</groupId> + <version>1.13.0</version> + </parent> + <dependencies> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-tracing</artifactId> - <version>1.13.0</version> + <version>${project.version}</version> </dependency> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-logging</artifactId> - <version>1.13.0</version> + <version>${project.version}</version> </dependency> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-metrics</artifactId> - <version>1.13.0</version> + <version>${project.version}</version> </dependency> <dependency> <groupId>com.amazonaws</groupId> diff --git a/examples/powertools-examples-core/Function/src/main/java/helloworld/App.java b/examples/powertools-examples-core/src/main/java/helloworld/App.java similarity index 100% rename from examples/powertools-examples-core/Function/src/main/java/helloworld/App.java rename to examples/powertools-examples-core/src/main/java/helloworld/App.java diff --git a/examples/powertools-examples-core/Function/src/main/java/helloworld/AppStream.java b/examples/powertools-examples-core/src/main/java/helloworld/AppStream.java similarity index 100% rename from examples/powertools-examples-core/Function/src/main/java/helloworld/AppStream.java rename to examples/powertools-examples-core/src/main/java/helloworld/AppStream.java diff --git a/examples/powertools-examples-core/Function/src/main/resources/log4j2.xml b/examples/powertools-examples-core/src/main/resources/log4j2.xml similarity index 100% rename from examples/powertools-examples-core/Function/src/main/resources/log4j2.xml rename to examples/powertools-examples-core/src/main/resources/log4j2.xml diff --git a/examples/powertools-examples-core/Function/src/test/java/helloworld/AppTest.java b/examples/powertools-examples-core/src/test/java/helloworld/AppTest.java similarity index 100% rename from examples/powertools-examples-core/Function/src/test/java/helloworld/AppTest.java rename to examples/powertools-examples-core/src/test/java/helloworld/AppTest.java diff --git a/examples/powertools-examples-idempotency/Function/pom.xml b/examples/powertools-examples-idempotency/pom.xml similarity index 94% rename from examples/powertools-examples-idempotency/Function/pom.xml rename to examples/powertools-examples-idempotency/pom.xml index 92d9fab17..1706696e2 100644 --- a/examples/powertools-examples-idempotency/Function/pom.xml +++ b/examples/powertools-examples-idempotency/pom.xml @@ -1,9 +1,8 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>powertools</groupId> - <artifactId>Function</artifactId> - <version>1.0</version> + <groupId>software.amazon.lambda</groupId> + <artifactId>powertools-examples-idempotency</artifactId> <packaging>jar</packaging> <name>A sample Hello World using powertools idempotency</name> <properties> @@ -13,21 +12,27 @@ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> + <parent> + <artifactId>powertools-examples</artifactId> + <groupId>software.amazon.lambda</groupId> + <version>1.13.0</version> + </parent> + <dependencies> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-tracing</artifactId> - <version>1.13.0</version> + <version>${project.version}</version> </dependency> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-logging</artifactId> - <version>1.13.0</version> + <version>${project.version}</version> </dependency> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-idempotency</artifactId> - <version>1.13.0</version> + <version>${project.version}</version> </dependency> <dependency> <groupId>com.amazonaws</groupId> diff --git a/examples/powertools-examples-idempotency/Function/src/main/java/helloworld/App.java b/examples/powertools-examples-idempotency/src/main/java/helloworld/App.java similarity index 99% rename from examples/powertools-examples-idempotency/Function/src/main/java/helloworld/App.java rename to examples/powertools-examples-idempotency/src/main/java/helloworld/App.java index 3fe3fc458..f26877c34 100644 --- a/examples/powertools-examples-idempotency/Function/src/main/java/helloworld/App.java +++ b/examples/powertools-examples-idempotency/src/main/java/helloworld/App.java @@ -85,7 +85,7 @@ public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEv // Use it on other methods to handle multiple items (with SQS batch processing for example) private String getPageContents(String address) throws IOException { URL url = new URL(address); - try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()))) { + try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"))) { return br.lines().collect(Collectors.joining(System.lineSeparator())); } } diff --git a/examples/powertools-examples-idempotency/Function/src/test/java/helloworld/AppTest.java b/examples/powertools-examples-idempotency/src/test/java/helloworld/AppTest.java similarity index 100% rename from examples/powertools-examples-idempotency/Function/src/test/java/helloworld/AppTest.java rename to examples/powertools-examples-idempotency/src/test/java/helloworld/AppTest.java diff --git a/examples/powertools-examples-idempotency/Function/src/test/resources/event.json b/examples/powertools-examples-idempotency/src/test/resources/event.json similarity index 100% rename from examples/powertools-examples-idempotency/Function/src/test/resources/event.json rename to examples/powertools-examples-idempotency/src/test/resources/event.json diff --git a/examples/powertools-examples-parameters/Function/pom.xml b/examples/powertools-examples-parameters/pom.xml similarity index 89% rename from examples/powertools-examples-parameters/Function/pom.xml rename to examples/powertools-examples-parameters/pom.xml index 18bec7dbe..3dc78eb0b 100644 --- a/examples/powertools-examples-parameters/Function/pom.xml +++ b/examples/powertools-examples-parameters/pom.xml @@ -1,9 +1,8 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>demo</groupId> - <artifactId>Functions</artifactId> - <version>1.0</version> + <groupId>software.amazon.lambda</groupId> + <artifactId>powertools-examples-parameters</artifactId> <packaging>jar</packaging> <name>Sample app demoing parameters utility of Powertools.</name> <properties> @@ -13,16 +12,22 @@ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> + <parent> + <artifactId>powertools-examples</artifactId> + <groupId>software.amazon.lambda</groupId> + <version>1.13.0</version> + </parent> + <dependencies> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-logging</artifactId> - <version>1.13.0</version> + <version>${project.version}</version> </dependency> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-parameters</artifactId> - <version>1.13.0</version> + <version>${project.version}</version> </dependency> <dependency> <groupId>com.amazonaws</groupId> diff --git a/examples/powertools-examples-parameters/Function/src/main/java/org/demo/parameters/MyObject.java b/examples/powertools-examples-parameters/src/main/java/org/demo/parameters/MyObject.java similarity index 100% rename from examples/powertools-examples-parameters/Function/src/main/java/org/demo/parameters/MyObject.java rename to examples/powertools-examples-parameters/src/main/java/org/demo/parameters/MyObject.java diff --git a/examples/powertools-examples-parameters/Function/src/main/java/org/demo/parameters/ParametersFunction.java b/examples/powertools-examples-parameters/src/main/java/org/demo/parameters/ParametersFunction.java similarity index 98% rename from examples/powertools-examples-parameters/Function/src/main/java/org/demo/parameters/ParametersFunction.java rename to examples/powertools-examples-parameters/src/main/java/org/demo/parameters/ParametersFunction.java index f5d98a408..7f41e020e 100644 --- a/examples/powertools-examples-parameters/Function/src/main/java/org/demo/parameters/ParametersFunction.java +++ b/examples/powertools-examples-parameters/src/main/java/org/demo/parameters/ParametersFunction.java @@ -74,7 +74,7 @@ public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent in private String getPageContents(String address) throws IOException{ URL url = new URL(address); - try(BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()))) { + try(BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"))) { return br.lines().collect(Collectors.joining(System.lineSeparator())); } } diff --git a/examples/powertools-examples-parameters/Function/src/main/resources/log4j2.xml b/examples/powertools-examples-parameters/src/main/resources/log4j2.xml similarity index 100% rename from examples/powertools-examples-parameters/Function/src/main/resources/log4j2.xml rename to examples/powertools-examples-parameters/src/main/resources/log4j2.xml diff --git a/examples/powertools-examples-serialization/Function/pom.xml b/examples/powertools-examples-serialization/pom.xml similarity index 86% rename from examples/powertools-examples-serialization/Function/pom.xml rename to examples/powertools-examples-serialization/pom.xml index 42e950bb7..f9c804ef8 100644 --- a/examples/powertools-examples-serialization/Function/pom.xml +++ b/examples/powertools-examples-serialization/pom.xml @@ -1,9 +1,8 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>demo</groupId> - <artifactId>Functions</artifactId> - <version>1.0</version> + <groupId>software.amazon.lambda</groupId> + <artifactId>powertools-examples-serialization</artifactId> <packaging>jar</packaging> <name>Sample app demoing serialization utility of Powertools.</name> <properties> @@ -13,16 +12,22 @@ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> + <parent> + <artifactId>powertools-parent</artifactId> + <groupId>software.amazon.lambda</groupId> + <version>1.13.0</version> + </parent> + <dependencies> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-logging</artifactId> - <version>1.13.0</version> + <version>${project.version}</version> </dependency> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-serialization</artifactId> - <version>1.13.0</version> + <version>${project.version}</version> </dependency> <dependency> <groupId>com.amazonaws</groupId> diff --git a/examples/powertools-examples-serialization/Function/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java b/examples/powertools-examples-serialization/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java similarity index 100% rename from examples/powertools-examples-serialization/Function/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java rename to examples/powertools-examples-serialization/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java diff --git a/examples/powertools-examples-serialization/Function/src/main/java/org/demo/serialization/Product.java b/examples/powertools-examples-serialization/src/main/java/org/demo/serialization/Product.java similarity index 100% rename from examples/powertools-examples-serialization/Function/src/main/java/org/demo/serialization/Product.java rename to examples/powertools-examples-serialization/src/main/java/org/demo/serialization/Product.java diff --git a/examples/powertools-examples-serialization/Function/src/main/java/org/demo/serialization/SQSEventDeserializationFunction.java b/examples/powertools-examples-serialization/src/main/java/org/demo/serialization/SQSEventDeserializationFunction.java similarity index 100% rename from examples/powertools-examples-serialization/Function/src/main/java/org/demo/serialization/SQSEventDeserializationFunction.java rename to examples/powertools-examples-serialization/src/main/java/org/demo/serialization/SQSEventDeserializationFunction.java diff --git a/examples/powertools-examples-serialization/Function/src/main/resources/log4j2.xml b/examples/powertools-examples-serialization/src/main/resources/log4j2.xml similarity index 100% rename from examples/powertools-examples-serialization/Function/src/main/resources/log4j2.xml rename to examples/powertools-examples-serialization/src/main/resources/log4j2.xml diff --git a/examples/powertools-examples-serialization/Function/src/test/java/org/demo/serialization/APIGatewayRequestDeserializationFunctionTest.java b/examples/powertools-examples-serialization/src/test/java/org/demo/serialization/APIGatewayRequestDeserializationFunctionTest.java similarity index 100% rename from examples/powertools-examples-serialization/Function/src/test/java/org/demo/serialization/APIGatewayRequestDeserializationFunctionTest.java rename to examples/powertools-examples-serialization/src/test/java/org/demo/serialization/APIGatewayRequestDeserializationFunctionTest.java diff --git a/examples/powertools-examples-serialization/Function/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java b/examples/powertools-examples-serialization/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java similarity index 100% rename from examples/powertools-examples-serialization/Function/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java rename to examples/powertools-examples-serialization/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java diff --git a/examples/powertools-examples-sqs/Functions/pom.xml b/examples/powertools-examples-sqs/pom.xml similarity index 92% rename from examples/powertools-examples-sqs/Functions/pom.xml rename to examples/powertools-examples-sqs/pom.xml index a26e9be10..790069a45 100644 --- a/examples/powertools-examples-sqs/Functions/pom.xml +++ b/examples/powertools-examples-sqs/pom.xml @@ -1,9 +1,8 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>demo</groupId> - <artifactId>Functions</artifactId> - <version>1.0</version> + <groupId>software.amazon.lambda</groupId> + <artifactId>powertools-examples-sqs</artifactId> <packaging>jar</packaging> <name>Sample app demoing SQS Batch Processing utility of Powertools.</name> <properties> @@ -12,17 +11,23 @@ <log4j.version>2.19.0</log4j.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> + + <parent> + <artifactId>powertools-parent</artifactId> + <groupId>software.amazon.lambda</groupId> + <version>1.13.0</version> + </parent> <dependencies> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-logging</artifactId> - <version>1.13.0</version> + <version>${project.version}</version> </dependency> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-sqs</artifactId> - <version>1.13.0</version> + <version>${project.version}</version> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> diff --git a/examples/powertools-examples-sqs/Functions/src/main/java/org/demo/sqs/SqsMessageSender.java b/examples/powertools-examples-sqs/src/main/java/org/demo/sqs/SqsMessageSender.java similarity index 100% rename from examples/powertools-examples-sqs/Functions/src/main/java/org/demo/sqs/SqsMessageSender.java rename to examples/powertools-examples-sqs/src/main/java/org/demo/sqs/SqsMessageSender.java diff --git a/examples/powertools-examples-sqs/Functions/src/main/java/org/demo/sqs/SqsPoller.java b/examples/powertools-examples-sqs/src/main/java/org/demo/sqs/SqsPoller.java similarity index 100% rename from examples/powertools-examples-sqs/Functions/src/main/java/org/demo/sqs/SqsPoller.java rename to examples/powertools-examples-sqs/src/main/java/org/demo/sqs/SqsPoller.java diff --git a/examples/powertools-examples-sqs/Functions/src/main/resources/log4j2.xml b/examples/powertools-examples-sqs/src/main/resources/log4j2.xml similarity index 100% rename from examples/powertools-examples-sqs/Functions/src/main/resources/log4j2.xml rename to examples/powertools-examples-sqs/src/main/resources/log4j2.xml diff --git a/examples/spotbugs-exclude.xml b/examples/spotbugs-exclude.xml new file mode 100644 index 000000000..e33e65478 --- /dev/null +++ b/examples/spotbugs-exclude.xml @@ -0,0 +1,20 @@ +<!-- This file specifies a spotbugs filter for excluding reports that + should not be considered errors. + The format of this file is documented at: + https://spotbugs.readthedocs.io/en/latest/filter.html + When possible, please specify the full names of the bug codes, + using the pattern attribute, to make it clearer what reports are + being suppressed. You can find a listing of codes at: + https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html + --> +<FindBugsFilter> + <Match> + <Bug pattern="DMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTED"/> + <Or> + <And> + <Class name="helloworld.App"/> + <Method name="threadOption1"/> + </And> + </Or> + </Match> +</FindBugsFilter> \ No newline at end of file diff --git a/pom.xml b/pom.xml index 208fe3d66..c8214b535 100644 --- a/pom.xml +++ b/pom.xml @@ -38,6 +38,7 @@ <module>powertools-test-suite</module> <module>powertools-cloudformation</module> <module>powertools-idempotency</module> + <module>examples</module> </modules> <scm> @@ -77,6 +78,7 @@ <junit-jupiter.version>5.9.2</junit-jupiter.version> <aws-embedded-metrics.version>1.0.6</aws-embedded-metrics.version> <jmespath.version>0.5.1</jmespath.version> + <projectversion>1.13.0</projectversion> </properties> <distributionManagement> diff --git a/spotbugs-exclude.xml b/spotbugs-exclude.xml index fe4194bfd..5a5e3bed8 100644 --- a/spotbugs-exclude.xml +++ b/spotbugs-exclude.xml @@ -152,4 +152,13 @@ <Class name="software.amazon.lambda.powertools.logging.internal.LambdaLoggingAspect"/> <Method name="setLogLevelBasedOnSamplingRate"/> </Match> + <Match> + <Bug pattern="DMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTED"/> + <Or> + <And> + <Class name="helloworld.App"/> + <Method name="threadOption1"/> + </And> + </Or> + </Match> </FindBugsFilter> \ No newline at end of file From 557fc13606c48a71f17012396227f8e6447ec25c Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Wed, 15 Feb 2023 13:14:50 +0100 Subject: [PATCH 08/29] Turn on builds temporarily for this branch --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 66ea80739..5ab4f43bf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,6 +21,7 @@ on: push: branches: - master + - import-examples paths: - 'powertools-cloudformation/**' - 'powertools-core/**' From 0d9d1f17d8ea91a22e2c9a36b9dc501a075213eb Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Wed, 15 Feb 2023 13:18:51 +0100 Subject: [PATCH 09/29] Remove build overrides in examples --- examples/powertools-examples-core/pom.xml | 8 +------- examples/powertools-examples-idempotency/pom.xml | 6 ------ examples/powertools-examples-parameters/pom.xml | 6 ------ examples/powertools-examples-serialization/pom.xml | 6 ------ examples/powertools-examples-sqs/pom.xml | 8 +------- 5 files changed, 2 insertions(+), 32 deletions(-) diff --git a/examples/powertools-examples-core/pom.xml b/examples/powertools-examples-core/pom.xml index 8cfd1568b..f335a62a7 100644 --- a/examples/powertools-examples-core/pom.xml +++ b/examples/powertools-examples-core/pom.xml @@ -5,13 +5,7 @@ <artifactId>powertools-examples-core</artifactId> <packaging>jar</packaging> <name>A sample Hello World created for SAM CLI using powertools core utilities</name> - <properties> - <maven.compiler.source>11</maven.compiler.source> - <maven.compiler.target>11</maven.compiler.target> - <log4j.version>2.19.0</log4j.version> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - </properties> - + <parent> <artifactId>powertools-examples</artifactId> <groupId>software.amazon.lambda</groupId> diff --git a/examples/powertools-examples-idempotency/pom.xml b/examples/powertools-examples-idempotency/pom.xml index 1706696e2..7dcbf5a14 100644 --- a/examples/powertools-examples-idempotency/pom.xml +++ b/examples/powertools-examples-idempotency/pom.xml @@ -5,12 +5,6 @@ <artifactId>powertools-examples-idempotency</artifactId> <packaging>jar</packaging> <name>A sample Hello World using powertools idempotency</name> - <properties> - <maven.compiler.source>11</maven.compiler.source> - <maven.compiler.target>11</maven.compiler.target> - <log4j.version>2.19.0</log4j.version> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - </properties> <parent> <artifactId>powertools-examples</artifactId> diff --git a/examples/powertools-examples-parameters/pom.xml b/examples/powertools-examples-parameters/pom.xml index 3dc78eb0b..13150899d 100644 --- a/examples/powertools-examples-parameters/pom.xml +++ b/examples/powertools-examples-parameters/pom.xml @@ -5,12 +5,6 @@ <artifactId>powertools-examples-parameters</artifactId> <packaging>jar</packaging> <name>Sample app demoing parameters utility of Powertools.</name> - <properties> - <maven.compiler.source>11</maven.compiler.source> - <maven.compiler.target>11</maven.compiler.target> - <log4j.version>2.19.0</log4j.version> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - </properties> <parent> <artifactId>powertools-examples</artifactId> diff --git a/examples/powertools-examples-serialization/pom.xml b/examples/powertools-examples-serialization/pom.xml index f9c804ef8..3f04cd928 100644 --- a/examples/powertools-examples-serialization/pom.xml +++ b/examples/powertools-examples-serialization/pom.xml @@ -5,12 +5,6 @@ <artifactId>powertools-examples-serialization</artifactId> <packaging>jar</packaging> <name>Sample app demoing serialization utility of Powertools.</name> - <properties> - <maven.compiler.source>11</maven.compiler.source> - <maven.compiler.target>11</maven.compiler.target> - <log4j.version>2.19.0</log4j.version> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - </properties> <parent> <artifactId>powertools-parent</artifactId> diff --git a/examples/powertools-examples-sqs/pom.xml b/examples/powertools-examples-sqs/pom.xml index 790069a45..341a3ee75 100644 --- a/examples/powertools-examples-sqs/pom.xml +++ b/examples/powertools-examples-sqs/pom.xml @@ -5,13 +5,7 @@ <artifactId>powertools-examples-sqs</artifactId> <packaging>jar</packaging> <name>Sample app demoing SQS Batch Processing utility of Powertools.</name> - <properties> - <maven.compiler.source>11</maven.compiler.source> - <maven.compiler.target>11</maven.compiler.target> - <log4j.version>2.19.0</log4j.version> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - </properties> - + <parent> <artifactId>powertools-parent</artifactId> <groupId>software.amazon.lambda</groupId> From f7c34e274b62f7f47fb3e9812d9667ec1903ec31 Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Wed, 15 Feb 2023 13:20:38 +0100 Subject: [PATCH 10/29] Rebuild on examples --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5ab4f43bf..bd99ae492 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,6 +16,7 @@ on: - 'powertools-parameters/**' - 'powertools-metrics/**' - 'powertools-test-suite/**' + - 'powertools-examples/**' - 'pom.xml' - '.github/workflows/**' push: @@ -34,6 +35,7 @@ on: - 'powertools-parameters/**' - 'powertools-metrics/**' - 'powertools-test-suite/**' + - 'powertools-examples/**' - 'pom.xml' - '.github/workflows/**' jobs: From b46d862405d6c5ffa2958f431e827f10ceedbdf6 Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Wed, 15 Feb 2023 13:33:09 +0100 Subject: [PATCH 11/29] Add validation back and remove redundant groupId from examples poms --- examples/pom.xml | 1 + examples/powertools-examples-core/output.txt | 1077 ----------------- examples/powertools-examples-core/pom.xml | 1 - .../powertools-examples-idempotency/pom.xml | 1 - .../powertools-examples-parameters/pom.xml | 1 - .../powertools-examples-serialization/pom.xml | 1 - examples/powertools-examples-sqs/pom.xml | 1 - .../README.md | 0 .../events/event.json | 0 .../pom.xml | 21 +- .../demo/validation/InboundValidation.java | 2 +- .../src/main/resources/schema.json | 0 .../validation/InboundValidationTest.java | 0 .../template.yaml | 0 pom.xml | 2 +- 15 files changed, 13 insertions(+), 1095 deletions(-) delete mode 100644 examples/powertools-examples-core/output.txt rename examples/{Validation => powertools-examples-validation}/README.md (100%) rename examples/{Validation => powertools-examples-validation}/events/event.json (100%) rename examples/{Validation/Function => powertools-examples-validation}/pom.xml (86%) rename examples/{Validation/Function => powertools-examples-validation}/src/main/java/org/demo/validation/InboundValidation.java (98%) rename examples/{Validation/Function => powertools-examples-validation}/src/main/resources/schema.json (100%) rename examples/{Validation/Function => powertools-examples-validation}/src/test/java/org/demo/validation/InboundValidationTest.java (100%) rename examples/{Validation => powertools-examples-validation}/template.yaml (100%) diff --git a/examples/pom.xml b/examples/pom.xml index a87860cc2..be4394a36 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -47,6 +47,7 @@ <module>powertools-examples-parameters</module> <module>powertools-examples-serialization</module> <module>powertools-examples-sqs</module> + <module>powertools-validation</module> </modules> </project> \ No newline at end of file diff --git a/examples/powertools-examples-core/output.txt b/examples/powertools-examples-core/output.txt deleted file mode 100644 index 0ae5f4746..000000000 --- a/examples/powertools-examples-core/output.txt +++ /dev/null @@ -1,1077 +0,0 @@ -Apache Maven 3.9.0 (9b58d2bad23a66be161c4664ef21ce219c2c8584) -Maven home: /usr/local/Cellar/maven/3.9.0/libexec -Java version: 19.0.2, vendor: Homebrew, runtime: /usr/local/Cellar/openjdk/19.0.2/libexec/openjdk.jdk/Contents/Home -Default locale: en_AU, platform encoding: UTF-8 -OS name: "mac os x", version: "13.2", arch: "x86_64", family: "mac" -[DEBUG] Created new class realm maven.api -[DEBUG] Importing foreign packages into class realm maven.api -[DEBUG] Imported: javax.annotation.* < plexus.core -[DEBUG] Imported: javax.annotation.security.* < plexus.core -[DEBUG] Imported: javax.inject.* < plexus.core -[DEBUG] Imported: org.apache.maven.* < plexus.core -[DEBUG] Imported: org.apache.maven.artifact < plexus.core -[DEBUG] Imported: org.apache.maven.classrealm < plexus.core -[DEBUG] Imported: org.apache.maven.cli < plexus.core -[DEBUG] Imported: org.apache.maven.configuration < plexus.core -[DEBUG] Imported: org.apache.maven.exception < plexus.core -[DEBUG] Imported: org.apache.maven.execution < plexus.core -[DEBUG] Imported: org.apache.maven.execution.scope < plexus.core -[DEBUG] Imported: org.apache.maven.graph < plexus.core -[DEBUG] Imported: org.apache.maven.lifecycle < plexus.core -[DEBUG] Imported: org.apache.maven.model < plexus.core -[DEBUG] Imported: org.apache.maven.monitor < plexus.core -[DEBUG] Imported: org.apache.maven.plugin < plexus.core -[DEBUG] Imported: org.apache.maven.profiles < plexus.core -[DEBUG] Imported: org.apache.maven.project < plexus.core -[DEBUG] Imported: org.apache.maven.reporting < plexus.core -[DEBUG] Imported: org.apache.maven.repository < plexus.core -[DEBUG] Imported: org.apache.maven.rtinfo < plexus.core -[DEBUG] Imported: org.apache.maven.settings < plexus.core -[DEBUG] Imported: org.apache.maven.toolchain < plexus.core -[DEBUG] Imported: org.apache.maven.usability < plexus.core -[DEBUG] Imported: org.apache.maven.wagon.* < plexus.core -[DEBUG] Imported: org.apache.maven.wagon.authentication < plexus.core -[DEBUG] Imported: org.apache.maven.wagon.authorization < plexus.core -[DEBUG] Imported: org.apache.maven.wagon.events < plexus.core -[DEBUG] Imported: org.apache.maven.wagon.observers < plexus.core -[DEBUG] Imported: org.apache.maven.wagon.proxy < plexus.core -[DEBUG] Imported: org.apache.maven.wagon.repository < plexus.core -[DEBUG] Imported: org.apache.maven.wagon.resource < plexus.core -[DEBUG] Imported: org.codehaus.classworlds < plexus.core -[DEBUG] Imported: org.codehaus.plexus.* < plexus.core -[DEBUG] Imported: org.codehaus.plexus.classworlds < plexus.core -[DEBUG] Imported: org.codehaus.plexus.component < plexus.core -[DEBUG] Imported: org.codehaus.plexus.configuration < plexus.core -[DEBUG] Imported: org.codehaus.plexus.container < plexus.core -[DEBUG] Imported: org.codehaus.plexus.context < plexus.core -[DEBUG] Imported: org.codehaus.plexus.lifecycle < plexus.core -[DEBUG] Imported: org.codehaus.plexus.logging < plexus.core -[DEBUG] Imported: org.codehaus.plexus.personality < plexus.core -[DEBUG] Imported: org.codehaus.plexus.util.xml.Xpp3Dom < plexus.core -[DEBUG] Imported: org.codehaus.plexus.util.xml.pull.XmlPullParser < plexus.core -[DEBUG] Imported: org.codehaus.plexus.util.xml.pull.XmlPullParserException < plexus.core -[DEBUG] Imported: org.codehaus.plexus.util.xml.pull.XmlSerializer < plexus.core -[DEBUG] Imported: org.eclipse.aether.* < plexus.core -[DEBUG] Imported: org.eclipse.aether.artifact < plexus.core -[DEBUG] Imported: org.eclipse.aether.collection < plexus.core -[DEBUG] Imported: org.eclipse.aether.deployment < plexus.core -[DEBUG] Imported: org.eclipse.aether.graph < plexus.core -[DEBUG] Imported: org.eclipse.aether.impl < plexus.core -[DEBUG] Imported: org.eclipse.aether.installation < plexus.core -[DEBUG] Imported: org.eclipse.aether.internal.impl < plexus.core -[DEBUG] Imported: org.eclipse.aether.metadata < plexus.core -[DEBUG] Imported: org.eclipse.aether.repository < plexus.core -[DEBUG] Imported: org.eclipse.aether.resolution < plexus.core -[DEBUG] Imported: org.eclipse.aether.spi < plexus.core -[DEBUG] Imported: org.eclipse.aether.transfer < plexus.core -[DEBUG] Imported: org.eclipse.aether.util < plexus.core -[DEBUG] Imported: org.eclipse.aether.version < plexus.core -[DEBUG] Imported: org.fusesource.jansi.* < plexus.core -[DEBUG] Imported: org.slf4j.* < plexus.core -[DEBUG] Imported: org.slf4j.event.* < plexus.core -[DEBUG] Imported: org.slf4j.helpers.* < plexus.core -[DEBUG] Imported: org.slf4j.spi.* < plexus.core -[DEBUG] Populating class realm maven.api -[DEBUG] Created adapter factory; available factories [file-lock, rwlock-local, semaphore-local, noop]; available name mappers [discriminating, file-gav, file-hgav, gav, static] -[INFO] Error stacktraces are turned on. -[DEBUG] Message scheme: color -[DEBUG] Message styles: debug info warning error success failure strong mojo project -[DEBUG] Reading global settings from /usr/local/Cellar/maven/3.9.0/libexec/conf/settings.xml -[DEBUG] Reading user settings from /Users/gerrings/.m2/settings.xml -[DEBUG] Reading global toolchains from /usr/local/Cellar/maven/3.9.0/libexec/conf/toolchains.xml -[DEBUG] Reading user toolchains from /Users/gerrings/.m2/toolchains.xml -[DEBUG] Using local repository at /Users/gerrings/.m2/repository -[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/gerrings/.m2/repository -[INFO] Scanning for projects... -[DEBUG] Creating adapter using nameMapper 'gav' and factory 'rwlock-local' -[DEBUG] Using mirror maven-default-http-blocker (http://0.0.0.0/) for apache.snapshots (http://repository.apache.org/snapshots). -[DEBUG] Using mirror maven-default-http-blocker (http://0.0.0.0/) for codehaus-snapshots (http://nexus.codehaus.org/snapshots/). -[DEBUG] Using mirror maven-default-http-blocker (http://0.0.0.0/) for apache.snapshots (http://people.apache.org/repo/m2-snapshot-repository). -[DEBUG] Using mirror maven-default-http-blocker (http://0.0.0.0/) for repository.jboss.org (http://repository.jboss.org/nexus/content/groups/public/). -[DEBUG] Using mirror maven-default-http-blocker (http://0.0.0.0/) for eclipselink.repository (http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/rt/eclipselink/maven.repo). -[DEBUG] Using mirror maven-default-http-blocker (http://0.0.0.0/) for spy (http://files.couchbase.com/maven2/). -[DEBUG] Dependency collection stats {ConflictMarker.analyzeTime=500538, ConflictMarker.markTime=133031, ConflictMarker.nodeCount=84, ConflictIdSorter.graphTime=295795, ConflictIdSorter.topsortTime=214025, ConflictIdSorter.conflictIdCount=45, ConflictIdSorter.conflictIdCycleCount=0, ConflictResolver.totalTime=3842448, ConflictResolver.conflictItemCount=71, DfDependencyCollector.collectTime=334277069, DfDependencyCollector.transformTime=6339879} -[DEBUG] org.sonatype.plugins:nexus-staging-maven-plugin:jar:1.6.8 -[DEBUG] org.sonatype.nexus.maven:nexus-common:jar:1.6.8:compile -[DEBUG] org.sonatype.plexus:plexus-sec-dispatcher:jar:1.4:compile (version managed from default) (exclusions managed from default) -[DEBUG] org.sonatype.plexus:plexus-cipher:jar:1.7:compile (version managed from default) -[DEBUG] com.google.guava:guava:jar:14.0.1:compile -[DEBUG] org.sonatype.nexus:nexus-client-core:jar:2.14.3-02:compile (exclusions managed from default) -[DEBUG] org.sonatype.nexus.plugins:nexus-restlet1x-model:jar:2.14.3-02:compile -[DEBUG] org.apache.maven:maven-model:jar:3.0.4:compile (version managed from default) -[DEBUG] org.slf4j:slf4j-api:jar:1.7.7:compile (version managed from default) -[DEBUG] com.google.code.findbugs:jsr305:jar:2.0.1:compile -[DEBUG] com.intellij:annotations:jar:9.0.4:compile (version managed from default) -[DEBUG] commons-io:commons-io:jar:2.4:compile -[DEBUG] com.thoughtworks.xstream:xstream:jar:1.4.7:compile (version managed from default) -[DEBUG] xmlpull:xmlpull:jar:1.1.3.1:compile -[DEBUG] xpp3:xpp3_min:jar:1.1.4c:compile -[DEBUG] joda-time:joda-time:jar:2.2:compile -[DEBUG] commons-lang:commons-lang:jar:2.6:compile -[DEBUG] commons-beanutils:commons-beanutils-core:jar:1.8.3:compile (version managed from default) (exclusions managed from default) -[DEBUG] org.sonatype.sisu.siesta:siesta-client:jar:1.7:compile -[DEBUG] org.sonatype.sisu.siesta:siesta-common:jar:1.7:compile -[DEBUG] javax.ws.rs:jsr311-api:jar:1.1.1:compile -[DEBUG] com.sun.jersey:jersey-core:jar:1.17.1:compile -[DEBUG] javax.validation:validation-api:jar:1.1.0.Final:compile -[DEBUG] com.sun.jersey:jersey-client:jar:1.17.1:compile -[DEBUG] com.sun.jersey.contribs:jersey-apache-client4:jar:1.17.1:compile -[DEBUG] org.sonatype.sisu.siesta:siesta-jackson:jar:1.7:compile -[DEBUG] com.fasterxml.jackson.core:jackson-annotations:jar:2.3.1:compile -[DEBUG] com.fasterxml.jackson.core:jackson-core:jar:2.3.1:compile -[DEBUG] com.fasterxml.jackson.core:jackson-databind:jar:2.3.1:compile -[DEBUG] com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.3.1:compile -[DEBUG] com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.3.1:compile -[DEBUG] com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.3.1:compile -[DEBUG] org.apache.httpcomponents:httpclient:jar:4.3.5:compile (version managed from default) (exclusions managed from default) -[DEBUG] commons-codec:commons-codec:jar:1.6:compile -[DEBUG] org.apache.httpcomponents:httpcore:jar:4.3.2:compile (version managed from default) -[DEBUG] org.slf4j:jcl-over-slf4j:jar:1.7.7:compile (version managed from default) -[DEBUG] javax.inject:javax.inject:jar:1:compile (version managed from default) -[DEBUG] org.sonatype.spice.zapper:spice-zapper:jar:1.3:compile -[DEBUG] org.fusesource.hawtbuf:hawtbuf-proto:jar:1.9:compile -[DEBUG] org.fusesource.hawtbuf:hawtbuf:jar:1.9:compile -[DEBUG] org.codehaus.plexus:plexus-utils:jar:3.0.8:compile -[DEBUG] org.codehaus.plexus:plexus-interpolation:jar:1.15:compile -[DEBUG] org.sonatype.aether:aether-api:jar:1.13.1:compile -[DEBUG] ch.qos.logback:logback-core:jar:1.1.2:runtime -[DEBUG] ch.qos.logback:logback-classic:jar:1.1.2:runtime -[DEBUG] Created new class realm extension>org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8 -[DEBUG] Importing foreign packages into class realm extension>org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8 -[DEBUG] Imported: < maven.api -[DEBUG] Populating class realm extension>org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8 -[DEBUG] Included: org.sonatype.plugins:nexus-staging-maven-plugin:jar:1.6.8 -[DEBUG] Included: org.sonatype.nexus.maven:nexus-common:jar:1.6.8 -[DEBUG] Included: org.sonatype.plexus:plexus-sec-dispatcher:jar:1.4 -[DEBUG] Included: org.sonatype.plexus:plexus-cipher:jar:1.7 -[DEBUG] Included: com.google.guava:guava:jar:14.0.1 -[DEBUG] Included: org.sonatype.nexus:nexus-client-core:jar:2.14.3-02 -[DEBUG] Included: org.sonatype.nexus.plugins:nexus-restlet1x-model:jar:2.14.3-02 -[DEBUG] Included: com.google.code.findbugs:jsr305:jar:2.0.1 -[DEBUG] Included: com.intellij:annotations:jar:9.0.4 -[DEBUG] Included: commons-io:commons-io:jar:2.4 -[DEBUG] Included: com.thoughtworks.xstream:xstream:jar:1.4.7 -[DEBUG] Included: xmlpull:xmlpull:jar:1.1.3.1 -[DEBUG] Included: xpp3:xpp3_min:jar:1.1.4c -[DEBUG] Included: joda-time:joda-time:jar:2.2 -[DEBUG] Included: commons-lang:commons-lang:jar:2.6 -[DEBUG] Included: commons-beanutils:commons-beanutils-core:jar:1.8.3 -[DEBUG] Included: org.sonatype.sisu.siesta:siesta-client:jar:1.7 -[DEBUG] Included: org.sonatype.sisu.siesta:siesta-common:jar:1.7 -[DEBUG] Included: javax.ws.rs:jsr311-api:jar:1.1.1 -[DEBUG] Included: com.sun.jersey:jersey-core:jar:1.17.1 -[DEBUG] Included: javax.validation:validation-api:jar:1.1.0.Final -[DEBUG] Included: com.sun.jersey:jersey-client:jar:1.17.1 -[DEBUG] Included: com.sun.jersey.contribs:jersey-apache-client4:jar:1.17.1 -[DEBUG] Included: org.sonatype.sisu.siesta:siesta-jackson:jar:1.7 -[DEBUG] Included: com.fasterxml.jackson.core:jackson-annotations:jar:2.3.1 -[DEBUG] Included: com.fasterxml.jackson.core:jackson-core:jar:2.3.1 -[DEBUG] Included: com.fasterxml.jackson.core:jackson-databind:jar:2.3.1 -[DEBUG] Included: com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.3.1 -[DEBUG] Included: com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.3.1 -[DEBUG] Included: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.3.1 -[DEBUG] Included: org.apache.httpcomponents:httpclient:jar:4.3.5 -[DEBUG] Included: commons-codec:commons-codec:jar:1.6 -[DEBUG] Included: org.apache.httpcomponents:httpcore:jar:4.3.2 -[DEBUG] Included: org.slf4j:jcl-over-slf4j:jar:1.7.7 -[DEBUG] Included: org.sonatype.spice.zapper:spice-zapper:jar:1.3 -[DEBUG] Included: org.fusesource.hawtbuf:hawtbuf-proto:jar:1.9 -[DEBUG] Included: org.fusesource.hawtbuf:hawtbuf:jar:1.9 -[DEBUG] Included: org.codehaus.plexus:plexus-utils:jar:3.0.8 -[DEBUG] Included: org.codehaus.plexus:plexus-interpolation:jar:1.15 -[DEBUG] Included: ch.qos.logback:logback-core:jar:1.1.2 -[DEBUG] Included: ch.qos.logback:logback-classic:jar:1.1.2 -[DEBUG] Extension realms for project software.amazon.lambda:powertools-examples-core:jar:1.0: [ClassRealm[extension>org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8, parent: jdk.internal.loader.ClassLoaders$AppClassLoader@5b37e0d2]] -[DEBUG] Created new class realm project>software.amazon.lambda:powertools-examples-core:1.0 -[DEBUG] Populating class realm project>software.amazon.lambda:powertools-examples-core:1.0 -[DEBUG] Looking up lifecycle mappings for packaging jar from ClassRealm[project>software.amazon.lambda:powertools-examples-core:1.0, parent: ClassRealm[maven.api, parent: null]] -[DEBUG] Extension realms for project software.amazon.lambda:powertools-examples:pom:1.13.0: [ClassRealm[extension>org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8, parent: jdk.internal.loader.ClassLoaders$AppClassLoader@5b37e0d2]] -[DEBUG] Looking up lifecycle mappings for packaging pom from ClassRealm[project>software.amazon.lambda:powertools-examples-core:1.0, parent: ClassRealm[maven.api, parent: null]] -[DEBUG] Extension realms for project software.amazon.lambda:powertools-parent:pom:1.13.0: [ClassRealm[extension>org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8, parent: jdk.internal.loader.ClassLoaders$AppClassLoader@5b37e0d2]] -[DEBUG] Looking up lifecycle mappings for packaging pom from ClassRealm[project>software.amazon.lambda:powertools-examples-core:1.0, parent: ClassRealm[maven.api, parent: null]] -[WARNING] -[WARNING] Some problems were encountered while building the effective model for software.amazon.lambda:powertools-examples-core:jar:1.0 -[WARNING] 'version' contains an expression but should be a constant. @ software.amazon.lambda:powertools-parent:${projectversion}, /Users/gerrings/Documents/GitHub/powertools/aws-lambda-powertools-java/pom.xml, line 9, column 14 -[WARNING] -[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. -[WARNING] -[WARNING] For this reason, future Maven versions might no longer support building such malformed projects. -[WARNING] -[INFO] Inspecting build with total of 1 modules... -[INFO] Installing Nexus Staging features: -[INFO] ... total of 1 executions of maven-deploy-plugin replaced with nexus-staging-maven-plugin -[DEBUG] === REACTOR BUILD PLAN ================================================ -[DEBUG] Project: software.amazon.lambda:powertools-examples-core:jar:1.0 -[DEBUG] Tasks: [install] -[DEBUG] Style: Regular -[DEBUG] ======================================================================= -[INFO] -[INFO] ----------< software.amazon.lambda:powertools-examples-core >----------- -[INFO] Building A sample Hello World created for SAM CLI using powertools core utilities 1.0 -[INFO] from pom.xml -[INFO] --------------------------------[ jar ]--------------------------------- -[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] -[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] -[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] -[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] -[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] -[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] -[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] -[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] -[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] -[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] -[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] -[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] -[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] -[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] -[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] -[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] -[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] -[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] -[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] -[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] -[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] -[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] -[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] -[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] -[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] -[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] -[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] -[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] -[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] -[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] -[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean] -[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy] -[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy] -[DEBUG] === PROJECT BUILD PLAN ================================================ -[DEBUG] Project: software.amazon.lambda:powertools-examples-core:1.0 -[DEBUG] Dependencies (collect): [] -[DEBUG] Dependencies (resolve): [compile, runtime, test] -[DEBUG] Repositories (dependencies): [central (https://repo.maven.apache.org/maven2, default, releases)] -[DEBUG] Repositories (plugins) : [central (https://repo.maven.apache.org/maven2, default, releases)] -[DEBUG] ----------------------------------------------------------------------- -[DEBUG] Goal: org.jacoco:jacoco-maven-plugin:0.8.8:prepare-agent (default) -[DEBUG] Style: Regular -[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> -<configuration> - <address>${jacoco.address}</address> - <append>${jacoco.append}</append> - <classDumpDir>${jacoco.classDumpDir}</classDumpDir> - <destFile default-value="${project.build.directory}/jacoco.exec">${jacoco.destFile}</destFile> - <dumpOnExit>${jacoco.dumpOnExit}</dumpOnExit> - <exclClassLoaders>${jacoco.exclClassLoaders}</exclClassLoaders> - <inclBootstrapClasses>${jacoco.inclBootstrapClasses}</inclBootstrapClasses> - <inclNoLocationClasses>${jacoco.inclNoLocationClasses}</inclNoLocationClasses> - <jmx>${jacoco.jmx}</jmx> - <output>${jacoco.output}</output> - <pluginArtifactMap>${plugin.artifactMap}</pluginArtifactMap> - <port>${jacoco.port}</port> - <project>${project}</project> - <propertyName>${jacoco.propertyName}</propertyName> - <sessionId>${jacoco.sessionId}</sessionId> - <skip default-value="false">${jacoco.skip}</skip> -</configuration> -[DEBUG] ----------------------------------------------------------------------- -[DEBUG] Goal: org.codehaus.mojo:aspectj-maven-plugin:1.14.0:compile (default) -[DEBUG] Style: Regular -[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> -<configuration> - <Xajruntimetarget default-value="1.5"/> - <Xlint>ignore</Xlint> - <argumentFileName default-value="builddef.lst"/> - <aspectDirectory default-value="src/main/aspect"/> - <aspectLibraries> - <aspectLibrary> - <groupId>software.amazon.lambda</groupId> - <artifactId>powertools-tracing</artifactId> - </aspectLibrary> - <aspectLibrary> - <groupId>software.amazon.lambda</groupId> - <artifactId>powertools-logging</artifactId> - </aspectLibrary> - <aspectLibrary> - <groupId>software.amazon.lambda</groupId> - <artifactId>powertools-metrics</artifactId> - </aspectLibrary> - </aspectLibraries> - <basedir default-value="${basedir}"/> - <complianceLevel default-value="1.4">11</complianceLevel> - <encoding>UTF-8</encoding> - <forceAjcCompile default-value="false"/> - <generatedSourcesDirectory default-value="${project.build.directory}/generated-sources/aspectj-maven-plugin"/> - <outputDirectory default-value="${project.build.outputDirectory}"/> - <project default-value="${project}"/> - <skip default-value="false">${aspectj.skip}</skip> - <source default-value="${mojo.java.target}">11</source> - <target default-value="${project.build.java.target}">11</target> - <testAspectDirectory default-value="src/test/aspect"/> -</configuration> -[DEBUG] ----------------------------------------------------------------------- -[DEBUG] Goal: org.codehaus.mojo:aspectj-maven-plugin:1.14.0:test-compile (default) -[DEBUG] Style: Regular -[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> -<configuration> - <Xajruntimetarget default-value="1.5"/> - <Xlint>ignore</Xlint> - <argumentFileName default-value="builddef.lst"/> - <aspectDirectory default-value="src/main/aspect"/> - <aspectLibraries> - <aspectLibrary> - <groupId>software.amazon.lambda</groupId> - <artifactId>powertools-tracing</artifactId> - </aspectLibrary> - <aspectLibrary> - <groupId>software.amazon.lambda</groupId> - <artifactId>powertools-logging</artifactId> - </aspectLibrary> - <aspectLibrary> - <groupId>software.amazon.lambda</groupId> - <artifactId>powertools-metrics</artifactId> - </aspectLibrary> - </aspectLibraries> - <basedir default-value="${basedir}"/> - <complianceLevel default-value="1.4">11</complianceLevel> - <encoding>UTF-8</encoding> - <forceAjcCompile default-value="false"/> - <generatedTestSourcesDirectory default-value="${project.build.directory}/generated-test-sources/aspectj-maven-plugin"/> - <outputDirectory default-value="${project.build.testOutputDirectory}"/> - <project default-value="${project}"/> - <skip default-value="false">${aspectj.skip}</skip> - <source default-value="${mojo.java.target}">11</source> - <target default-value="${project.build.java.target}">11</target> - <testAspectDirectory default-value="src/test/aspect"/> - <weaveMainSourceFolder default-value="false"/> - <weaveWithAspectsInMainSourceFolder default-value="true"/> -</configuration> -[DEBUG] ----------------------------------------------------------------------- -[DEBUG] Goal: org.apache.maven.plugins:maven-resources-plugin:3.3.0:resources (default-resources) -[DEBUG] Style: Regular -[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> -<configuration> - <addDefaultExcludes default-value="true"/> - <buildFilters default-value="${project.build.filters}"/> - <encoding default-value="${project.build.sourceEncoding}"/> - <escapeWindowsPaths default-value="true"/> - <fileNameFiltering default-value="false"/> - <includeEmptyDirs default-value="false"/> - <outputDirectory default-value="${project.build.outputDirectory}"/> - <overwrite default-value="false"/> - <project default-value="${project}"/> - <resources default-value="${project.resources}"/> - <session default-value="${session}"/> - <skip default-value="false">${maven.resources.skip}</skip> - <supportMultiLineFiltering default-value="false"/> - <useBuildFilters default-value="true"/> - <useDefaultDelimiters default-value="true"/> -</configuration> -[DEBUG] ----------------------------------------------------------------------- -[DEBUG] Goal: org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) -[DEBUG] Style: Regular -[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> -<configuration> - <basedir default-value="${basedir}"/> - <buildDirectory default-value="${project.build.directory}"/> - <compilePath default-value="${project.compileClasspathElements}"/> - <compileSourceRoots default-value="${project.compileSourceRoots}"/> - <compilerId default-value="javac">${maven.compiler.compilerId}</compilerId> - <compilerReuseStrategy default-value="${reuseCreated}">${maven.compiler.compilerReuseStrategy}</compilerReuseStrategy> - <compilerVersion>${maven.compiler.compilerVersion}</compilerVersion> - <createMissingPackageInfoClass default-value="true">${maven.compiler.createMissingPackageInfoClass}</createMissingPackageInfoClass> - <debug default-value="true">${maven.compiler.debug}</debug> - <debugFileName default-value="javac"/> - <debuglevel>${maven.compiler.debuglevel}</debuglevel> - <enablePreview default-value="false">${maven.compiler.enablePreview}</enablePreview> - <encoding default-value="${project.build.sourceEncoding}">${encoding}</encoding> - <executable>${maven.compiler.executable}</executable> - <failOnError default-value="true">${maven.compiler.failOnError}</failOnError> - <failOnWarning default-value="false">${maven.compiler.failOnWarning}</failOnWarning> - <forceJavacCompilerUse default-value="false">${maven.compiler.forceJavacCompilerUse}</forceJavacCompilerUse> - <fork default-value="false">${maven.compiler.fork}</fork> - <generatedSourcesDirectory default-value="${project.build.directory}/generated-sources/annotations"/> - <maxmem>${maven.compiler.maxmem}</maxmem> - <meminitial>${maven.compiler.meminitial}</meminitial> - <mojoExecution default-value="${mojoExecution}"/> - <optimize default-value="false">${maven.compiler.optimize}</optimize> - <outputDirectory default-value="${project.build.outputDirectory}"/> - <parameters default-value="false">${maven.compiler.parameters}</parameters> - <project default-value="${project}"/> - <projectArtifact default-value="${project.artifact}"/> - <release>${maven.compiler.release}</release> - <session default-value="${session}"/> - <showDeprecation default-value="false">${maven.compiler.showDeprecation}</showDeprecation> - <showWarnings default-value="false">${maven.compiler.showWarnings}</showWarnings> - <skipMain>${maven.main.skip}</skipMain> - <skipMultiThreadWarning default-value="false">${maven.compiler.skipMultiThreadWarning}</skipMultiThreadWarning> - <source default-value="1.7">11</source> - <staleMillis default-value="0">${lastModGranularityMs}</staleMillis> - <target default-value="1.7">11</target> - <useIncrementalCompilation default-value="true">false</useIncrementalCompilation> - <verbose default-value="false">${maven.compiler.verbose}</verbose> -</configuration> -[DEBUG] ----------------------------------------------------------------------- -[DEBUG] Goal: org.apache.maven.plugins:maven-resources-plugin:3.3.0:testResources (default-testResources) -[DEBUG] Style: Regular -[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> -<configuration> - <addDefaultExcludes default-value="true"/> - <buildFilters default-value="${project.build.filters}"/> - <encoding default-value="${project.build.sourceEncoding}"/> - <escapeWindowsPaths default-value="true"/> - <fileNameFiltering default-value="false"/> - <includeEmptyDirs default-value="false"/> - <outputDirectory default-value="${project.build.testOutputDirectory}"/> - <overwrite default-value="false"/> - <project default-value="${project}"/> - <resources default-value="${project.testResources}"/> - <session default-value="${session}"/> - <skip default-value="false">${maven.test.skip}</skip> - <supportMultiLineFiltering default-value="false"/> - <useBuildFilters default-value="true"/> - <useDefaultDelimiters default-value="true"/> -</configuration> -[DEBUG] ----------------------------------------------------------------------- -[DEBUG] Goal: org.apache.maven.plugins:maven-compiler-plugin:3.10.1:testCompile (default-testCompile) -[DEBUG] Style: Regular -[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> -<configuration> - <basedir default-value="${basedir}"/> - <buildDirectory default-value="${project.build.directory}"/> - <compileSourceRoots default-value="${project.testCompileSourceRoots}"/> - <compilerId default-value="javac">${maven.compiler.compilerId}</compilerId> - <compilerReuseStrategy default-value="${reuseCreated}">${maven.compiler.compilerReuseStrategy}</compilerReuseStrategy> - <compilerVersion>${maven.compiler.compilerVersion}</compilerVersion> - <createMissingPackageInfoClass default-value="true">${maven.compiler.createMissingPackageInfoClass}</createMissingPackageInfoClass> - <debug default-value="true">${maven.compiler.debug}</debug> - <debugFileName default-value="javac-test"/> - <debuglevel>${maven.compiler.debuglevel}</debuglevel> - <enablePreview default-value="false">${maven.compiler.enablePreview}</enablePreview> - <encoding default-value="${project.build.sourceEncoding}">${encoding}</encoding> - <executable>${maven.compiler.executable}</executable> - <failOnError default-value="true">${maven.compiler.failOnError}</failOnError> - <failOnWarning default-value="false">${maven.compiler.failOnWarning}</failOnWarning> - <forceJavacCompilerUse default-value="false">${maven.compiler.forceJavacCompilerUse}</forceJavacCompilerUse> - <fork default-value="false">${maven.compiler.fork}</fork> - <generatedTestSourcesDirectory default-value="${project.build.directory}/generated-test-sources/test-annotations"/> - <maxmem>${maven.compiler.maxmem}</maxmem> - <meminitial>${maven.compiler.meminitial}</meminitial> - <mojoExecution default-value="${mojoExecution}"/> - <optimize default-value="false">${maven.compiler.optimize}</optimize> - <outputDirectory default-value="${project.build.testOutputDirectory}"/> - <parameters default-value="false">${maven.compiler.parameters}</parameters> - <project default-value="${project}"/> - <release>${maven.compiler.release}</release> - <session default-value="${session}"/> - <showDeprecation default-value="false">${maven.compiler.showDeprecation}</showDeprecation> - <showWarnings default-value="false">${maven.compiler.showWarnings}</showWarnings> - <skip>${maven.test.skip}</skip> - <skipMultiThreadWarning default-value="false">${maven.compiler.skipMultiThreadWarning}</skipMultiThreadWarning> - <source default-value="1.7">11</source> - <staleMillis default-value="0">${lastModGranularityMs}</staleMillis> - <target default-value="1.7">11</target> - <testPath default-value="${project.testClasspathElements}"/> - <testRelease>${maven.compiler.testRelease}</testRelease> - <testSource>${maven.compiler.testSource}</testSource> - <testTarget>${maven.compiler.testTarget}</testTarget> - <useIncrementalCompilation default-value="true">false</useIncrementalCompilation> - <verbose default-value="false">${maven.compiler.verbose}</verbose> -</configuration> -[DEBUG] ----------------------------------------------------------------------- -[DEBUG] Goal: org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test (default-test) -[DEBUG] Style: Regular -[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> -<configuration> - <additionalClasspathElements>${maven.test.additionalClasspath}</additionalClasspathElements> - <argLine>${argLine}</argLine> - <basedir default-value="${basedir}"/> - <childDelegation default-value="false">${childDelegation}</childDelegation> - <classesDirectory default-value="${project.build.outputDirectory}"/> - <classpathDependencyExcludes>${maven.test.dependency.excludes}</classpathDependencyExcludes> - <debugForkedProcess>${maven.surefire.debug}</debugForkedProcess> - <dependenciesToScan>${dependenciesToScan}</dependenciesToScan> - <disableXmlReport default-value="false">${disableXmlReport}</disableXmlReport> - <enableAssertions default-value="true">${enableAssertions}</enableAssertions> - <encoding default-value="${project.reporting.outputEncoding}">${surefire.encoding}</encoding> - <excludedGroups>${excludedGroups}</excludedGroups> - <excludesFile>${surefire.excludesFile}</excludesFile> - <failIfNoSpecifiedTests>${surefire.failIfNoSpecifiedTests}</failIfNoSpecifiedTests> - <failIfNoTests>${failIfNoTests}</failIfNoTests> - <forkCount default-value="1">${forkCount}</forkCount> - <forkMode default-value="once">${forkMode}</forkMode> - <forkedProcessExitTimeoutInSeconds default-value="30">${surefire.exitTimeout}</forkedProcessExitTimeoutInSeconds> - <forkedProcessTimeoutInSeconds>${surefire.timeout}</forkedProcessTimeoutInSeconds> - <groups>${groups}</groups> - <includesFile>${surefire.includesFile}</includesFile> - <junitArtifactName default-value="junit:junit">${junitArtifactName}</junitArtifactName> - <junitPlatformArtifactName default-value="org.junit.platform:junit-platform-engine">${junitPlatformArtifactName}</junitPlatformArtifactName> - <jvm>${jvm}</jvm> - <localRepository default-value="${localRepository}"/> - <objectFactory>${objectFactory}</objectFactory> - <parallel>${parallel}</parallel> - <parallelMavenExecution default-value="${session.parallel}"/> - <parallelOptimized default-value="true">${parallelOptimized}</parallelOptimized> - <parallelTestsTimeoutForcedInSeconds>${surefire.parallel.forcedTimeout}</parallelTestsTimeoutForcedInSeconds> - <parallelTestsTimeoutInSeconds>${surefire.parallel.timeout}</parallelTestsTimeoutInSeconds> - <perCoreThreadCount default-value="true">${perCoreThreadCount}</perCoreThreadCount> - <pluginArtifactMap>${plugin.artifactMap}</pluginArtifactMap> - <pluginDescriptor default-value="${plugin}"/> - <printSummary default-value="true">${surefire.printSummary}</printSummary> - <projectArtifactMap>${project.artifactMap}</projectArtifactMap> - <projectBuildDirectory default-value="${project.build.directory}"/> - <redirectTestOutputToFile default-value="false">${maven.test.redirectTestOutputToFile}</redirectTestOutputToFile> - <remoteRepositories default-value="${project.pluginArtifactRepositories}"/> - <reportFormat default-value="brief">${surefire.reportFormat}</reportFormat> - <reportNameSuffix default-value="">${surefire.reportNameSuffix}</reportNameSuffix> - <reportsDirectory default-value="${project.build.directory}/surefire-reports"/> - <rerunFailingTestsCount default-value="0">${surefire.rerunFailingTestsCount}</rerunFailingTestsCount> - <reuseForks default-value="true">${reuseForks}</reuseForks> - <runOrder default-value="filesystem">${surefire.runOrder}</runOrder> - <shutdown default-value="testset">${surefire.shutdown}</shutdown> - <skip default-value="false">${maven.test.skip}</skip> - <skipAfterFailureCount default-value="0">${surefire.skipAfterFailureCount}</skipAfterFailureCount> - <skipExec>${maven.test.skip.exec}</skipExec> - <skipTests default-value="false">${skipTests}</skipTests> - <suiteXmlFiles>${surefire.suiteXmlFiles}</suiteXmlFiles> - <tempDir default-value="surefire">${tempDir}</tempDir> - <test>${test}</test> - <testClassesDirectory default-value="${project.build.testOutputDirectory}"/> - <testFailureIgnore default-value="false">${maven.test.failure.ignore}</testFailureIgnore> - <testNGArtifactName default-value="org.testng:testng">${testNGArtifactName}</testNGArtifactName> - <testSourceDirectory default-value="${project.build.testSourceDirectory}"/> - <threadCount>${threadCount}</threadCount> - <threadCountClasses default-value="0">${threadCountClasses}</threadCountClasses> - <threadCountMethods default-value="0">${threadCountMethods}</threadCountMethods> - <threadCountSuites default-value="0">${threadCountSuites}</threadCountSuites> - <trimStackTrace default-value="true">${trimStackTrace}</trimStackTrace> - <useFile default-value="true">${surefire.useFile}</useFile> - <useManifestOnlyJar default-value="true">${surefire.useManifestOnlyJar}</useManifestOnlyJar> - <useSystemClassLoader default-value="true">${surefire.useSystemClassLoader}</useSystemClassLoader> - <useUnlimitedThreads default-value="false">${useUnlimitedThreads}</useUnlimitedThreads> - <workingDirectory>${basedir}</workingDirectory> - <project default-value="${project}"/> - <session default-value="${session}"/> -</configuration> -[DEBUG] ----------------------------------------------------------------------- -[DEBUG] Goal: org.jacoco:jacoco-maven-plugin:0.8.8:report (report) -[DEBUG] Style: Regular -[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> -<configuration> - <dataFile default-value="${project.build.directory}/jacoco.exec">${jacoco.dataFile}</dataFile> - <formats default-value="HTML,XML,CSV"/> - <outputDirectory default-value="${project.reporting.outputDirectory}/jacoco"/> - <outputEncoding default-value="UTF-8">${project.reporting.outputEncoding}</outputEncoding> - <project>${project}</project> - <skip default-value="false">${jacoco.skip}</skip> - <sourceEncoding default-value="UTF-8">${project.build.sourceEncoding}</sourceEncoding> - <title default-value="${project.name}"/> -</configuration> -[DEBUG] ----------------------------------------------------------------------- -[DEBUG] Goal: org.apache.maven.plugins:maven-jar-plugin:3.3.0:jar (default-jar) -[DEBUG] Style: Regular -[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> -<configuration> - <classesDirectory default-value="${project.build.outputDirectory}"/> - <finalName default-value="${project.build.finalName}"/> - <forceCreation default-value="false">${maven.jar.forceCreation}</forceCreation> - <outputDirectory default-value="${project.build.directory}"/> - <outputTimestamp default-value="${project.build.outputTimestamp}"/> - <project default-value="${project}"/> - <session default-value="${session}"/> - <skipIfEmpty default-value="false"/> - <useDefaultManifestFile default-value="false">${jar.useDefaultManifestFile}</useDefaultManifestFile> -</configuration> -[DEBUG] ----------------------------------------------------------------------- -[DEBUG] Goal: org.apache.maven.plugins:maven-source-plugin:3.2.1:jar-no-fork (attach-sources) -[DEBUG] Style: Regular -[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> -<configuration> - <attach default-value="true">${maven.source.attach}</attach> - <classifier default-value="sources">${maven.source.classifier}</classifier> - <defaultManifestFile default-value="${project.build.outputDirectory}/META-INF/MANIFEST.MF"/> - <excludeResources default-value="false">${maven.source.excludeResources}</excludeResources> - <finalName default-value="${project.build.finalName}"/> - <forceCreation default-value="false">${maven.source.forceCreation}</forceCreation> - <includePom default-value="false">${maven.source.includePom}</includePom> - <outputDirectory default-value="${project.build.directory}"/> - <outputTimestamp default-value="${project.build.outputTimestamp}"/> - <project default-value="${project}"/> - <reactorProjects default-value="${reactorProjects}"/> - <session default-value="${session}"/> - <skipSource default-value="false">${maven.source.skip}</skipSource> - <useDefaultExcludes default-value="true">${maven.source.useDefaultExcludes}</useDefaultExcludes> - <useDefaultManifestFile default-value="false">${maven.source.useDefaultManifestFile}</useDefaultManifestFile> -</configuration> -[DEBUG] ----------------------------------------------------------------------- -[DEBUG] Goal: org.apache.maven.plugins:maven-javadoc-plugin:3.4.1:jar (attach-javadocs) -[DEBUG] Style: Regular -[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> -<configuration> - <additionalJOption>${additionalJOption}</additionalJOption> - <applyJavadocSecurityFix default-value="true">${maven.javadoc.applyJavadocSecurityFix}</applyJavadocSecurityFix> - <attach default-value="true">${attach}</attach> - <author default-value="true">${author}</author> - <bootclasspath>${bootclasspath}</bootclasspath> - <bootclasspathArtifacts>${bootclasspathArtifacts}</bootclasspathArtifacts> - <bottom default-value="Copyright &#169; {inceptionYear}&#x2013;{currentYear} {organizationName}. All rights reserved.">${bottom}</bottom> - <breakiterator default-value="false">${breakiterator}</breakiterator> - <charset>${charset}</charset> - <classifier default-value="javadoc">${maven.javadoc.classifier}</classifier> - <debug default-value="false">${debug}</debug> - <defaultManifestFile default-value="${project.build.outputDirectory}/META-INF/MANIFEST.MF"/> - <destDir>${destDir}</destDir> - <detectJavaApiLink default-value="true">false</detectJavaApiLink> - <detectLinks default-value="false">${detectLinks}</detectLinks> - <detectOfflineLinks default-value="true">${detectOfflineLinks}</detectOfflineLinks> - <docencoding default-value="${project.reporting.outputEncoding}">${docencoding}</docencoding> - <docfilessubdirs default-value="false">${docfilessubdirs}</docfilessubdirs> - <doclet>${doclet}</doclet> - <docletArtifact>${docletArtifact}</docletArtifact> - <docletArtifacts>${docletArtifacts}</docletArtifacts> - <docletPath>${docletPath}</docletPath> - <doclint>none</doclint> - <doctitle default-value="${project.name} ${project.version} API">${doctitle}</doctitle> - <encoding default-value="${project.build.sourceEncoding}">${encoding}</encoding> - <excludePackageNames>${excludePackageNames}</excludePackageNames> - <excludedocfilessubdir>${excludedocfilessubdir}</excludedocfilessubdir> - <extdirs>${extdirs}</extdirs> - <failOnError default-value="true">${maven.javadoc.failOnError}</failOnError> - <failOnWarnings default-value="false">${maven.javadoc.failOnWarnings}</failOnWarnings> - <finalName>${project.build.finalName}</finalName> - <footer>${footer}</footer> - <header>${header}</header> - <helpfile>${helpfile}</helpfile> - <includeDependencySources default-value="false"/> - <includeTransitiveDependencySources default-value="false"/> - <isOffline default-value="${settings.offline}"/> - <jarOutputDirectory>${project.build.directory}</jarOutputDirectory> - <javaApiLinks>${javaApiLinks}</javaApiLinks> - <javadocDirectory default-value="${basedir}/src/main/javadoc"/> - <javadocExecutable>${javadocExecutable}</javadocExecutable> - <javadocOptionsDir default-value="${project.build.directory}/javadoc-bundle-options"/> - <javadocVersion>${javadocVersion}</javadocVersion> - <keywords default-value="false">${keywords}</keywords> - <links>${links}</links> - <linksource default-value="false">${linksource}</linksource> - <localRepository>${localRepository}</localRepository> - <locale>${locale}</locale> - <maxmemory>${maxmemory}</maxmemory> - <minmemory>${minmemory}</minmemory> - <mojo default-value="${mojoExecution}"/> - <nocomment default-value="false">${nocomment}</nocomment> - <nodeprecated default-value="false">${nodeprecated}</nodeprecated> - <nodeprecatedlist default-value="false">${nodeprecatedlist}</nodeprecatedlist> - <nohelp default-value="false">${nohelp}</nohelp> - <noindex default-value="false">${noindex}</noindex> - <nonavbar default-value="false">${nonavbar}</nonavbar> - <nooverview default-value="false">${nooverview}</nooverview> - <noqualifier>${noqualifier}</noqualifier> - <nosince default-value="false">${nosince}</nosince> - <notimestamp default-value="false">${notimestamp}</notimestamp> - <notree default-value="false">${notree}</notree> - <offlineLinks>${offlineLinks}</offlineLinks> - <old default-value="false">${old}</old> - <outputDirectory default-value="${project.build.directory}/apidocs">${destDir}</outputDirectory> - <outputTimestamp default-value="${project.build.outputTimestamp}"/> - <overview default-value="${basedir}/src/main/javadoc/overview.html">${overview}</overview> - <packagesheader>${packagesheader}</packagesheader> - <project default-value="${project}"/> - <quiet default-value="false">${quiet}</quiet> - <reactorProjects>${reactorProjects}</reactorProjects> - <release default-value="${maven.compiler.release}"/> - <resourcesArtifacts>${resourcesArtifacts}</resourcesArtifacts> - <serialwarn default-value="false">${serialwarn}</serialwarn> - <session default-value="${session}"/> - <settings default-value="${settings}"/> - <show default-value="protected">${show}</show> - <skip default-value="false">${maven.javadoc.skip}</skip> - <skippedModules>${maven.javadoc.skippedModules}</skippedModules> - <source default-value="${maven.compiler.source}">${source}</source> - <sourceDependencyCacheDir default-value="${project.build.directory}/distro-javadoc-sources"/> - <sourcepath>${sourcepath}</sourcepath> - <sourcetab>${sourcetab}</sourcetab> - <splitindex default-value="false">${splitindex}</splitindex> - <staleDataPath default-value="${project.build.directory}/maven-javadoc-plugin-stale-data.txt">${staleDataPath}</staleDataPath> - <stylesheet default-value="java">${stylesheet}</stylesheet> - <stylesheetfile>${stylesheetfile}</stylesheetfile> - <subpackages>${subpackages}</subpackages> - <taglet>${taglet}</taglet> - <tagletArtifact>${tagletArtifact}</tagletArtifact> - <tagletArtifacts>${tagletArtifacts}</tagletArtifacts> - <tagletpath>${tagletpath}</tagletpath> - <taglets>${taglets}</taglets> - <tags>${tags}</tags> - <top>${top}</top> - <use default-value="true">${use}</use> - <useDefaultManifestFile default-value="false"/> - <useStandardDocletOptions default-value="true">${useStandardDocletOptions}</useStandardDocletOptions> - <validateLinks default-value="false">${validateLinks}</validateLinks> - <verbose default-value="false">${verbose}</verbose> - <version default-value="true">${version}</version> - <windowtitle default-value="${project.name} ${project.version} API">${windowtitle}</windowtitle> -</configuration> -[DEBUG] ----------------------------------------------------------------------- -[DEBUG] Goal: org.apache.maven.plugins:maven-shade-plugin:3.2.4:shade (default) -[DEBUG] Style: Regular -[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> -<configuration> - <createDependencyReducedPom default-value="true"/> - <dependencyReducedPomLocation default-value="${basedir}/dependency-reduced-pom.xml"/> - <generateUniqueDependencyReducedPom default-value="false"/> - <localRepository default-value="${localRepository}"/> - <outputDirectory default-value="${project.build.directory}"/> - <project default-value="${project}"/> - <remoteArtifactRepositories default-value="${project.remoteArtifactRepositories}"/> - <session default-value="${session}"/> - <shadeSourcesContent default-value="false">${shadeSourcesContent}</shadeSourcesContent> - <shadeTestJar default-value="false"/> - <shadedArtifactId default-value="${project.artifactId}"/> - <shadedClassifierName default-value="shaded"/> - <transformers> - <transformer implementation="com.github.edwgiz.maven_shade_plugin.log4j2_cache_transformer.PluginsCacheFileTransformer"></transformer> - </transformers> - <useBaseVersion default-value="false"/> -</configuration> -[DEBUG] --- init fork of software.amazon.lambda:powertools-examples-core:1.0 for com.github.spotbugs:spotbugs-maven-plugin:4.7.3.0:check (test) --- -[DEBUG] Dependencies (collect): [] -[DEBUG] Dependencies (resolve): [test] -[DEBUG] ----------------------------------------------------------------------- -[DEBUG] Goal: com.github.spotbugs:spotbugs-maven-plugin:4.7.3.0:spotbugs (spotbugs) -[DEBUG] Style: Regular -[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> -<configuration> - <addSourceDirs default-value="false">${spotbugs.addSourceDirs}</addSourceDirs> - <classFilesDirectory default-value="${project.build.outputDirectory}"/> - <compileSourceRoots default-value="${project.compileSourceRoots}"/> - <debug default-value="false">${spotbugs.debug}</debug> - <effort default-value="Default">${spotbugs.effort}</effort> - <excludeBugsFile>${spotbugs.excludeBugsFile}</excludeBugsFile> - <excludeBugsFiles>${spotbugs.excludeBugsFiles}</excludeBugsFiles> - <excludeFilterFile>../spotbugs-exclude.xml</excludeFilterFile> - <excludeFilterFiles>${spotbugs.excludeFilterFiles}</excludeFilterFiles> - <failOnError default-value="true">${spotbugs.failOnError}</failOnError> - <fork default-value="true">${spotbugs.fork}</fork> - <includeFilterFile>${spotbugs.includeFilterFile}</includeFilterFile> - <includeFilterFiles>${spotbugs.includeFilterFiles}</includeFilterFiles> - <includeTests default-value="false">${spotbugs.includeTests}</includeTests> - <inputEncoding default-value="${project.build.sourceEncoding}">${encoding}</inputEncoding> - <jvmArgs>${spotbugs.jvmArgs}</jvmArgs> - <localRepository>${localRepository}</localRepository> - <maxHeap default-value="512">${spotbugs.maxHeap}</maxHeap> - <maxRank>${spotbugs.maxRank}</maxRank> - <nested default-value="false">${spotbugs.nested}</nested> - <omitVisitors>${spotbugs.omitVisitors}</omitVisitors> - <onlyAnalyze>${spotbugs.onlyAnalyze}</onlyAnalyze> - <outputDirectory default-value="${project.reporting.outputDirectory}"/> - <outputEncoding default-value="${project.reporting.outputEncoding}">${outputEncoding}</outputEncoding> - <pluginArtifacts>${plugin.artifacts}</pluginArtifacts> - <pluginList>${spotbugs.pluginList}</pluginList> - <project>${project}</project> - <relaxed default-value="false">${spotbugs.relaxed}</relaxed> - <remoteArtifactRepositories>${project.remoteArtifactRepositories}</remoteArtifactRepositories> - <remoteRepositories>${project.remoteArtifactRepositories}</remoteRepositories> - <sarifFullPath default-value="false">${spotbugs.sarifFullPath}</sarifFullPath> - <sarifOutput default-value="false">${spotbugs.sarifOutput}</sarifOutput> - <sarifOutputDirectory default-value="${project.build.directory}">${spotbugs.sarifOutputDirectory}</sarifOutputDirectory> - <sarifOutputFilename default-value="spotbugsSarif.json">${spotbugs.sarifOutputFilename}</sarifOutputFilename> - <session default-value="${session}"/> - <skip default-value="false">${spotbugs.skip}</skip> - <skipEmptyReport default-value="false">${spotbugs.skipEmptyReport}</skipEmptyReport> - <sourceEncoding default-value="${project.build.sourceEncoding}">${encoding}</sourceEncoding> - <spotbugsXmlOutput default-value="true"/> - <spotbugsXmlOutputDirectory default-value="${project.build.directory}"/> - <spotbugsXmlOutputFilename default-value="spotbugsXml.xml">${spotbugs.outputXmlFilename}</spotbugsXmlOutputFilename> - <systemPropertyVariables>${spotbugs.systemPropertyVariables}</systemPropertyVariables> - <testClassFilesDirectory default-value="${project.build.testOutputDirectory}"/> - <testSourceRoots default-value="${project.testCompileSourceRoots}"/> - <threshold default-value="Default">${spotbugs.threshold}</threshold> - <timeout default-value="600000">${spotbugs.timeout}</timeout> - <trace default-value="false">${spotbugs.trace}</trace> - <userPrefs>${spotbugs.userPrefs}</userPrefs> - <visitors>${spotbugs.visitors}</visitors> - <xmlEncoding default-value="UTF-8"/> - <xmlOutput default-value="false">true</xmlOutput> - <xmlOutputDirectory default-value="${project.build.directory}"/> - <xrefLocation default-value="${project.reporting.outputDirectory}/xref"/> - <xrefTestLocation default-value="${project.reporting.outputDirectory}/xref-test"/> -</configuration> -[DEBUG] --- exit fork of software.amazon.lambda:powertools-examples-core:1.0 for com.github.spotbugs:spotbugs-maven-plugin:4.7.3.0:check (test) --- -[DEBUG] ----------------------------------------------------------------------- -[DEBUG] Goal: com.github.spotbugs:spotbugs-maven-plugin:4.7.3.0:check (test) -[DEBUG] Style: Regular -[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> -<configuration> - <classFilesDirectory default-value="${project.build.outputDirectory}"/> - <compileSourceRoots default-value="${project.compileSourceRoots}"/> - <debug default-value="false">${spotbugs.debug}</debug> - <effort default-value="Default">${spotbugs.effort}</effort> - <excludeBugsFile>${spotbugs.excludeBugsFile}</excludeBugsFile> - <excludeFilterFile>../spotbugs-exclude.xml</excludeFilterFile> - <failOnError default-value="true">${spotbugs.failOnError}</failOnError> - <failThreshold>${spotbugs.failThreshold}</failThreshold> - <fork default-value="true">${spotbugs.fork}</fork> - <includeFilterFile>${spotbugs.includeFilterFile}</includeFilterFile> - <includeTests default-value="false">${spotbugs.includeTests}</includeTests> - <jvmArgs>${spotbugs.jvmArgs}</jvmArgs> - <localRepository>${localRepository}</localRepository> - <maxAllowedViolations default-value="0">${spotbugs.maxAllowedViolations}</maxAllowedViolations> - <maxHeap default-value="512">${spotbugs.maxHeap}</maxHeap> - <maxRank>${spotbugs.maxRank}</maxRank> - <nested default-value="false">${spotbugs.nested}</nested> - <omitVisitors>${spotbugs.omitVisitors}</omitVisitors> - <onlyAnalyze>${spotbugs.onlyAnalyze}</onlyAnalyze> - <outputDirectory default-value="${project.reporting.outputDirectory}"/> - <outputEncoding default-value="${project.reporting.outputEncoding}">${outputEncoding}</outputEncoding> - <pluginArtifacts>${plugin.artifacts}</pluginArtifacts> - <pluginList>${spotbugs.pluginList}</pluginList> - <project>${project}</project> - <relaxed default-value="false">${spotbugs.relaxed}</relaxed> - <remoteArtifactRepositories>${project.remoteArtifactRepositories}</remoteArtifactRepositories> - <session default-value="${session}"/> - <skip default-value="false">${spotbugs.skip}</skip> - <sourceEncoding default-value="${project.build.sourceEncoding}">${encoding}</sourceEncoding> - <spotbugsXmlOutput default-value="true"/> - <spotbugsXmlOutputDirectory default-value="${project.build.directory}"/> - <spotbugsXmlOutputFilename default-value="spotbugsXml.xml">${spotbugs.outputXmlFilename}</spotbugsXmlOutputFilename> - <testClassFilesDirectory default-value="${project.build.testOutputDirectory}"/> - <testSourceRoots default-value="${project.testCompileSourceRoots}"/> - <threshold default-value="Default">${spotbugs.threshold}</threshold> - <timeout default-value="600000">${spotbugs.timeout}</timeout> - <trace default-value="false">${spotbugs.trace}</trace> - <visitors>${spotbugs.visitors}</visitors> - <xmlEncoding default-value="UTF-8"/> - <xmlOutput default-value="false">true</xmlOutput> - <xmlOutputDirectory default-value="${project.build.directory}"/> - <xrefLocation default-value="${project.reporting.outputDirectory}/xref"/> - <xrefTestLocation default-value="${project.reporting.outputDirectory}/xref-test"/> -</configuration> -[DEBUG] ----------------------------------------------------------------------- -[DEBUG] Goal: org.apache.maven.plugins:maven-install-plugin:3.1.0:install (default-install) -[DEBUG] Style: Regular -[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> -<configuration> - <installAtEnd default-value="false">${installAtEnd}</installAtEnd> - <pluginDescriptor default-value="${plugin}"/> - <project default-value="${project}"/> - <reactorProjects default-value="${reactorProjects}"/> - <session default-value="${session}"/> - <skip default-value="false">${maven.install.skip}</skip> -</configuration> -[DEBUG] ======================================================================= -[DEBUG] Resolving artifact software.amazon.lambda:powertools-core:pom:1.0 from [central (https://repo.maven.apache.org/maven2, default, releases)] -[WARNING] The POM for software.amazon.lambda:powertools-core:jar:1.0 is missing, no dependency information available -[DEBUG] Dependency collection stats {ConflictMarker.analyzeTime=202078, ConflictMarker.markTime=109537, ConflictMarker.nodeCount=110, ConflictIdSorter.graphTime=88441, ConflictIdSorter.topsortTime=25375, ConflictIdSorter.conflictIdCount=48, ConflictIdSorter.conflictIdCycleCount=0, ConflictResolver.totalTime=1462879, ConflictResolver.conflictItemCount=109, DfDependencyCollector.collectTime=217077829, DfDependencyCollector.transformTime=1949432} -[DEBUG] software.amazon.lambda:powertools-examples-core:jar:1.0 -[DEBUG] software.amazon.lambda:powertools-tracing:jar:1.13.0:compile -[DEBUG] software.amazon.lambda:powertools-core:jar:1.0:compile (version managed from 1.13.0) -[DEBUG] software.amazon.awssdk:aws-core:jar:2.19.0:compile (version managed from 2.19.0) -[DEBUG] software.amazon.awssdk:annotations:jar:2.19.0:compile (version managed from 2.19.0) -[DEBUG] software.amazon.awssdk:regions:jar:2.19.0:compile (version managed from 2.19.0) -[DEBUG] software.amazon.awssdk:json-utils:jar:2.19.0:compile (version managed from 2.19.0) -[DEBUG] software.amazon.awssdk:third-party-jackson-core:jar:2.19.0:compile (version managed from 2.19.0) -[DEBUG] software.amazon.awssdk:auth:jar:2.19.0:compile (version managed from 2.19.0) -[DEBUG] software.amazon.awssdk:profiles:jar:2.19.0:compile (version managed from 2.19.0) -[DEBUG] software.amazon.awssdk:sdk-core:jar:2.19.0:compile (version managed from 2.19.0) -[DEBUG] org.reactivestreams:reactive-streams:jar:1.0.3:compile -[DEBUG] software.amazon.awssdk:http-client-spi:jar:2.19.0:compile (version managed from 2.19.0) -[DEBUG] software.amazon.awssdk:metrics-spi:jar:2.19.0:compile (version managed from 2.19.0) -[DEBUG] software.amazon.awssdk:endpoints-spi:jar:2.19.0:compile -[DEBUG] software.amazon.awssdk:utils:jar:2.19.0:compile (version managed from 2.19.0) -[DEBUG] software.amazon.eventstream:eventstream:jar:1.0.1:compile -[DEBUG] org.aspectj:aspectjrt:jar:1.9.7:compile (version managed from 1.9.7) -[DEBUG] com.amazonaws:aws-xray-recorder-sdk-core:jar:2.13.0:compile (version managed from 2.13.0) -[DEBUG] com.amazonaws:aws-java-sdk-xray:jar:1.12.228:compile -[DEBUG] com.amazonaws:aws-java-sdk-core:jar:1.12.228:compile -[DEBUG] commons-logging:commons-logging:jar:1.1.3:compile -[DEBUG] commons-codec:commons-codec:jar:1.15:compile -[DEBUG] org.apache.httpcomponents:httpclient:jar:4.5.13:compile -[DEBUG] org.apache.httpcomponents:httpcore:jar:4.4.13:compile -[DEBUG] software.amazon.ion:ion-java:jar:1.0.2:compile -[DEBUG] com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:2.12.6:compile -[DEBUG] com.amazonaws:jmespath-java:jar:1.12.228:compile -[DEBUG] com.amazonaws:aws-xray-recorder-sdk-aws-sdk-core:jar:2.13.0:compile (version managed from 2.13.0) -[DEBUG] com.amazonaws:aws-xray-recorder-sdk-aws-sdk-v2:jar:2.13.0:compile (version managed from 2.13.0) -[DEBUG] com.amazonaws:aws-xray-recorder-sdk-aws-sdk-v2-instrumentor:jar:2.13.0:compile (version managed from 2.13.0) -[DEBUG] software.amazon.lambda:powertools-logging:jar:1.13.0:compile -[DEBUG] com.fasterxml.jackson.core:jackson-databind:jar:2.14.1:compile (version managed from 2.14.1) -[DEBUG] com.fasterxml.jackson.core:jackson-annotations:jar:2.14.1:compile -[DEBUG] com.fasterxml.jackson.core:jackson-core:jar:2.14.1:compile -[DEBUG] org.apache.logging.log4j:log4j-layout-template-json:jar:2.19.0:compile (version managed from 2.19.0) -[DEBUG] org.apache.logging.log4j:log4j-slf4j-impl:jar:2.19.0:compile (version managed from 2.19.0) -[DEBUG] org.slf4j:slf4j-api:jar:1.7.25:compile -[DEBUG] software.amazon.lambda:powertools-metrics:jar:1.13.0:compile -[DEBUG] software.amazon.cloudwatchlogs:aws-embedded-metrics:jar:1.0.6:compile (version managed from 1.0.6) -[DEBUG] com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.11.1:runtime -[DEBUG] org.javatuples:javatuples:jar:1.2:runtime -[DEBUG] com.amazonaws:aws-lambda-java-core:jar:1.2.2:compile -[DEBUG] com.amazonaws:aws-lambda-java-events:jar:3.11.0:compile -[DEBUG] joda-time:joda-time:jar:2.6:compile -[DEBUG] org.apache.logging.log4j:log4j-core:jar:2.19.0:compile -[DEBUG] org.apache.logging.log4j:log4j-api:jar:2.19.0:compile -[DEBUG] junit:junit:jar:4.13.2:test -[DEBUG] org.hamcrest:hamcrest-core:jar:1.3:test -[DEBUG] Resolving artifact software.amazon.lambda:powertools-core:jar:1.0 from [central (https://repo.maven.apache.org/maven2, default, releases)] -[INFO] ------------------------------------------------------------------------ -[INFO] BUILD FAILURE -[INFO] ------------------------------------------------------------------------ -[INFO] Total time: 1.033 s -[INFO] Finished at: 2023-02-15T12:32:07+01:00 -[INFO] ------------------------------------------------------------------------ -[ERROR] Failed to execute goal on project powertools-examples-core: Could not resolve dependencies for project software.amazon.lambda:powertools-examples-core:jar:1.0: software.amazon.lambda:powertools-core:jar:1.0 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced -> [Help 1] -org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project powertools-examples-core: Could not resolve dependencies for project software.amazon.lambda:powertools-examples-core:jar:1.0: software.amazon.lambda:powertools-core:jar:1.0 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced - at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:245) - at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:138) - at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:369) - at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:327) - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213) - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175) - at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76) - at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163) - at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160) - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) - at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) - at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260) - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172) - at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100) - at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821) - at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270) - at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) - at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104) - at java.lang.reflect.Method.invoke (Method.java:578) - at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) - at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) - at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) - at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) -Caused by: org.apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project software.amazon.lambda:powertools-examples-core:jar:1.0: software.amazon.lambda:powertools-core:jar:1.0 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced - at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve (DefaultProjectDependenciesResolver.java:187) - at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:226) - at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:138) - at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:369) - at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:327) - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213) - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175) - at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76) - at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163) - at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160) - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) - at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) - at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260) - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172) - at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100) - at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821) - at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270) - at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) - at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104) - at java.lang.reflect.Method.invoke (Method.java:578) - at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) - at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) - at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) - at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) -Caused by: org.eclipse.aether.resolution.DependencyResolutionException: software.amazon.lambda:powertools-core:jar:1.0 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced - at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies (DefaultRepositorySystem.java:402) - at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve (DefaultProjectDependenciesResolver.java:182) - at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:226) - at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:138) - at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:369) - at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:327) - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213) - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175) - at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76) - at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163) - at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160) - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) - at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) - at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260) - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172) - at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100) - at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821) - at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270) - at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) - at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104) - at java.lang.reflect.Method.invoke (Method.java:578) - at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) - at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) - at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) - at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) -Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: software.amazon.lambda:powertools-core:jar:1.0 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced - at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve (DefaultArtifactResolver.java:506) - at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts (DefaultArtifactResolver.java:278) - at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies (DefaultRepositorySystem.java:385) - at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve (DefaultProjectDependenciesResolver.java:182) - at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:226) - at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:138) - at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:369) - at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:327) - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213) - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175) - at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76) - at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163) - at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160) - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) - at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) - at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260) - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172) - at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100) - at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821) - at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270) - at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) - at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104) - at java.lang.reflect.Method.invoke (Method.java:578) - at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) - at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) - at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) - at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) -Caused by: org.eclipse.aether.transfer.ArtifactNotFoundException: software.amazon.lambda:powertools-core:jar:1.0 was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced - at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.newException (DefaultUpdateCheckManager.java:238) - at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.checkArtifact (DefaultUpdateCheckManager.java:210) - at org.eclipse.aether.internal.impl.DefaultArtifactResolver.gatherDownloads (DefaultArtifactResolver.java:641) - at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads (DefaultArtifactResolver.java:565) - at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve (DefaultArtifactResolver.java:478) - at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts (DefaultArtifactResolver.java:278) - at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies (DefaultRepositorySystem.java:385) - at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve (DefaultProjectDependenciesResolver.java:182) - at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:226) - at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:138) - at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:369) - at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:327) - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213) - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175) - at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76) - at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163) - at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) - at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160) - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) - at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) - at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) - at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260) - at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172) - at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100) - at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821) - at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270) - at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) - at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:104) - at java.lang.reflect.Method.invoke (Method.java:578) - at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) - at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) - at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) - at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) -[ERROR] -[ERROR] -[ERROR] For more information about the errors and possible solutions, please read the following articles: -[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException -[DEBUG] Shutting down adapter factory; available factories [file-lock, rwlock-local, semaphore-local, noop]; available name mappers [discriminating, file-gav, file-hgav, gav, static] -[DEBUG] Shutting down 'file-lock' factory -[DEBUG] Shutting down 'rwlock-local' factory -[DEBUG] Shutting down 'semaphore-local' factory -[DEBUG] Shutting down 'noop' factory diff --git a/examples/powertools-examples-core/pom.xml b/examples/powertools-examples-core/pom.xml index f335a62a7..f74f8cd3c 100644 --- a/examples/powertools-examples-core/pom.xml +++ b/examples/powertools-examples-core/pom.xml @@ -1,7 +1,6 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>software.amazon.lambda</groupId> <artifactId>powertools-examples-core</artifactId> <packaging>jar</packaging> <name>A sample Hello World created for SAM CLI using powertools core utilities</name> diff --git a/examples/powertools-examples-idempotency/pom.xml b/examples/powertools-examples-idempotency/pom.xml index 7dcbf5a14..e37b4a525 100644 --- a/examples/powertools-examples-idempotency/pom.xml +++ b/examples/powertools-examples-idempotency/pom.xml @@ -1,7 +1,6 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>software.amazon.lambda</groupId> <artifactId>powertools-examples-idempotency</artifactId> <packaging>jar</packaging> <name>A sample Hello World using powertools idempotency</name> diff --git a/examples/powertools-examples-parameters/pom.xml b/examples/powertools-examples-parameters/pom.xml index 13150899d..7b7aebaa3 100644 --- a/examples/powertools-examples-parameters/pom.xml +++ b/examples/powertools-examples-parameters/pom.xml @@ -1,7 +1,6 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>software.amazon.lambda</groupId> <artifactId>powertools-examples-parameters</artifactId> <packaging>jar</packaging> <name>Sample app demoing parameters utility of Powertools.</name> diff --git a/examples/powertools-examples-serialization/pom.xml b/examples/powertools-examples-serialization/pom.xml index 3f04cd928..4cab8af6c 100644 --- a/examples/powertools-examples-serialization/pom.xml +++ b/examples/powertools-examples-serialization/pom.xml @@ -1,7 +1,6 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>software.amazon.lambda</groupId> <artifactId>powertools-examples-serialization</artifactId> <packaging>jar</packaging> <name>Sample app demoing serialization utility of Powertools.</name> diff --git a/examples/powertools-examples-sqs/pom.xml b/examples/powertools-examples-sqs/pom.xml index 341a3ee75..dbacda6f4 100644 --- a/examples/powertools-examples-sqs/pom.xml +++ b/examples/powertools-examples-sqs/pom.xml @@ -1,7 +1,6 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>software.amazon.lambda</groupId> <artifactId>powertools-examples-sqs</artifactId> <packaging>jar</packaging> <name>Sample app demoing SQS Batch Processing utility of Powertools.</name> diff --git a/examples/Validation/README.md b/examples/powertools-examples-validation/README.md similarity index 100% rename from examples/Validation/README.md rename to examples/powertools-examples-validation/README.md diff --git a/examples/Validation/events/event.json b/examples/powertools-examples-validation/events/event.json similarity index 100% rename from examples/Validation/events/event.json rename to examples/powertools-examples-validation/events/event.json diff --git a/examples/Validation/Function/pom.xml b/examples/powertools-examples-validation/pom.xml similarity index 86% rename from examples/Validation/Function/pom.xml rename to examples/powertools-examples-validation/pom.xml index 4dd098ac0..72873fc42 100644 --- a/examples/Validation/Function/pom.xml +++ b/examples/powertools-examples-validation/pom.xml @@ -1,28 +1,27 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>demo</groupId> - <artifactId>Functions</artifactId> - <version>1.0</version> + <artifactId>powertools-examples-validation</artifactId> <packaging>jar</packaging> <name>Sample app demoing validation utility of Powertools.</name> - <properties> - <maven.compiler.source>11</maven.compiler.source> - <maven.compiler.target>11</maven.compiler.target> - <log4j.version>2.19.0</log4j.version> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - </properties> + + <parent> + <artifactId>powertools-parent</artifactId> + <groupId>software.amazon.lambda</groupId> + <version>1.13.0</version> + </parent> + <dependencies> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-logging</artifactId> - <version>1.13.0</version> + <version>${project.version}</version> </dependency> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-validation</artifactId> - <version>1.13.0</version> + <version>${project.version}</version> </dependency> <dependency> <groupId>com.amazonaws</groupId> diff --git a/examples/Validation/Function/src/main/java/org/demo/validation/InboundValidation.java b/examples/powertools-examples-validation/src/main/java/org/demo/validation/InboundValidation.java similarity index 98% rename from examples/Validation/Function/src/main/java/org/demo/validation/InboundValidation.java rename to examples/powertools-examples-validation/src/main/java/org/demo/validation/InboundValidation.java index 184fbbc08..89ec538c9 100644 --- a/examples/Validation/Function/src/main/java/org/demo/validation/InboundValidation.java +++ b/examples/powertools-examples-validation/src/main/java/org/demo/validation/InboundValidation.java @@ -44,7 +44,7 @@ public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent ap private String getPageContents(String address) throws IOException { URL url = new URL(address); - try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()))) { + try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"))) { return br.lines().collect(Collectors.joining(System.lineSeparator())); } } diff --git a/examples/Validation/Function/src/main/resources/schema.json b/examples/powertools-examples-validation/src/main/resources/schema.json similarity index 100% rename from examples/Validation/Function/src/main/resources/schema.json rename to examples/powertools-examples-validation/src/main/resources/schema.json diff --git a/examples/Validation/Function/src/test/java/org/demo/validation/InboundValidationTest.java b/examples/powertools-examples-validation/src/test/java/org/demo/validation/InboundValidationTest.java similarity index 100% rename from examples/Validation/Function/src/test/java/org/demo/validation/InboundValidationTest.java rename to examples/powertools-examples-validation/src/test/java/org/demo/validation/InboundValidationTest.java diff --git a/examples/Validation/template.yaml b/examples/powertools-examples-validation/template.yaml similarity index 100% rename from examples/Validation/template.yaml rename to examples/powertools-examples-validation/template.yaml diff --git a/pom.xml b/pom.xml index c8214b535..06b498542 100644 --- a/pom.xml +++ b/pom.xml @@ -37,7 +37,7 @@ <module>powertools-validation</module> <module>powertools-test-suite</module> <module>powertools-cloudformation</module> - <module>powertools-idempotency</module> + <module>powertools-idempotency</module> <module>examples</module> </modules> From 677fce398870fbe9448c3660f26882821b6fd942 Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Wed, 15 Feb 2023 13:36:34 +0100 Subject: [PATCH 12/29] Test - is it only java 8 versions? --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bd99ae492..8c2dc9fc7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -45,7 +45,7 @@ jobs: max-parallel: 4 matrix: # test against latest update of each major Java version, as well as specific updates of LTS versions: - java: [8, 8.0.192, 11.0.x, 11.0.3, 12, 13, 15, 16, 17 ] + java: [11.0.x, 11.0.3, 12, 13, 15, 16, 17 ] name: Java ${{ matrix.java }} env: OS: ${{ matrix.os }} From b1063534f179fc0a21b586f9742d3dd16e867b99 Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Wed, 15 Feb 2023 13:38:09 +0100 Subject: [PATCH 13/29] Fix pom mistake --- examples/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/pom.xml b/examples/pom.xml index be4394a36..0f2610707 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -47,7 +47,7 @@ <module>powertools-examples-parameters</module> <module>powertools-examples-serialization</module> <module>powertools-examples-sqs</module> - <module>powertools-validation</module> + <module>powertools-examples-validation</module> </modules> </project> \ No newline at end of file From 4fe275c7671c46c9aa7479e15ca2e5684030b5f5 Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Wed, 15 Feb 2023 13:39:02 +0100 Subject: [PATCH 14/29] Add missing pom to rebuild triggers --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8c2dc9fc7..884b2c338 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,6 +18,7 @@ on: - 'powertools-test-suite/**' - 'powertools-examples/**' - 'pom.xml' + - 'powertools-examples/pom.xml' - '.github/workflows/**' push: branches: @@ -37,6 +38,7 @@ on: - 'powertools-test-suite/**' - 'powertools-examples/**' - 'pom.xml' + - 'powertools-examples/pom.xml' - '.github/workflows/**' jobs: build: From d3442257f0c998a6e3f4de4330f951efd2d8d136 Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Wed, 15 Feb 2023 13:49:12 +0100 Subject: [PATCH 15/29] Remove redundant manifest --- examples/manifest.json | 46 ------------------------------------------ 1 file changed, 46 deletions(-) delete mode 100644 examples/manifest.json diff --git a/examples/manifest.json b/examples/manifest.json deleted file mode 100644 index 06f84d508..000000000 --- a/examples/manifest.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "java11": [ - { - "directory": "examples/powertools-examples-sqs/Functions", - "displayName": "Demos setup of SQS Batch processing via Powertools", - "dependencyManager": "maven", - "appTemplate": "SqsBatchProcessing", - "javaVersion": "11" - }, - { - "directory": "examples/powertools-examples-core/Function", - "displayName": "Demos setup of Core utilities with proxies lambda function using api gateway", - "dependencyManager": "maven", - "appTemplate": "CoreUtilities", - "javaVersion": "11" - }, - { - "directory": "examples/powertools-examples-idempotency/Function", - "displayName": "Demos setup of an idempotent Lambda function using Powertools", - "dependencyManager": "maven", - "appTemplate": "Idempotency", - "javaVersion": "11" - }, - { - "directory": "examples/powertools-examples-validation/Function", - "displayName": "Demos setup of an validation Lambda function using Powertools", - "dependencyManager": "maven", - "appTemplate": "Validation", - "javaVersion": "11" - }, - { - "directory": "examples/powertools-examples-parameters/Function", - "displayName": "Demos setup of an parameters Lambda function using Powertools", - "dependencyManager": "maven", - "appTemplate": "Parameters", - "javaVersion": "11" - }, - { - "directory": "examples/powertools-examples-serialization/Function", - "displayName": "Demos setup of a serialization utilities Lambda functions using Powertools", - "dependencyManager": "maven", - "appTemplate": "SerializationUtilities", - "javaVersion": "11" - } - ] - } \ No newline at end of file From 0dc2c3e42b58bf6ce78a6599e5463941431642c5 Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Wed, 15 Feb 2023 14:19:52 +0100 Subject: [PATCH 16/29] Java-8ify serialization example --- .../APIGatewayRequestDeserializationFunction.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/powertools-examples-serialization/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java b/examples/powertools-examples-serialization/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java index 4df937486..8c33baed9 100644 --- a/examples/powertools-examples-serialization/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java +++ b/examples/powertools-examples-serialization/src/main/java/org/demo/serialization/APIGatewayRequestDeserializationFunction.java @@ -7,6 +7,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.util.HashMap; import java.util.Map; import static software.amazon.lambda.powertools.utilities.EventDeserializer.extractDataFrom; @@ -15,9 +16,10 @@ public class APIGatewayRequestDeserializationFunction implements RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> { private final static Logger LOGGER = LogManager.getLogger(APIGatewayRequestDeserializationFunction.class); - private static final Map<String, String> HEADERS = Map.of( - "Content-Type", "application/json", - "X-Custom-Header", "application/json"); + private static final Map<String, String> HEADERS = new HashMap<String, String>() {{ + put("Content-Type", "application/json"); + put("X-Custom-Header", "application/json"); + }}; public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent event, Context context) { From d985bc3b433405cd48ceea86a8a6fd03d79f398a Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Wed, 15 Feb 2023 14:43:05 +0100 Subject: [PATCH 17/29] Another back-to-java-8 change --- .../serialization/SQSEventDeserializationFunctionTest.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/powertools-examples-serialization/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java b/examples/powertools-examples-serialization/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java index 393aa9a45..98c652cf8 100644 --- a/examples/powertools-examples-serialization/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java +++ b/examples/powertools-examples-serialization/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java @@ -8,6 +8,7 @@ import org.mockito.MockitoAnnotations; import java.util.List; +import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -28,7 +29,10 @@ public void shouldReturnNumberOfReceivedMessages() { SQSEvent.SQSMessage message1 = messageWithBody("{ \"id\": 1234, \"name\": \"product\", \"price\": 42}"); SQSEvent.SQSMessage message2 = messageWithBody("{ \"id\": 12345, \"name\": \"product5\", \"price\": 45}"); SQSEvent event = new SQSEvent(); - event.setRecords(List.of(message1, message2)); + event.setRecords(new ArrayList<messageWithBody>(){{ + add(message1); + add(message2); + }} String response = deserializationFunction.handleRequest(event, context); From a24d00bab543e05609b2d62e6ca615996f2b1272 Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Wed, 15 Feb 2023 14:48:02 +0100 Subject: [PATCH 18/29] Fix syntax error --- .../demo/serialization/SQSEventDeserializationFunctionTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/powertools-examples-serialization/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java b/examples/powertools-examples-serialization/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java index 98c652cf8..dc40a6a88 100644 --- a/examples/powertools-examples-serialization/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java +++ b/examples/powertools-examples-serialization/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java @@ -32,7 +32,7 @@ public void shouldReturnNumberOfReceivedMessages() { event.setRecords(new ArrayList<messageWithBody>(){{ add(message1); add(message2); - }} + }}); String response = deserializationFunction.handleRequest(event, context); From 455df768317449339808cb1fe696cec27f14388b Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Wed, 15 Feb 2023 14:54:19 +0100 Subject: [PATCH 19/29] Fix type error --- .../serialization/SQSEventDeserializationFunctionTest.java | 2 +- .../src/main/java/org/demo/sqs/SqsPoller.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/powertools-examples-serialization/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java b/examples/powertools-examples-serialization/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java index dc40a6a88..6979a6868 100644 --- a/examples/powertools-examples-serialization/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java +++ b/examples/powertools-examples-serialization/src/test/java/org/demo/serialization/SQSEventDeserializationFunctionTest.java @@ -29,7 +29,7 @@ public void shouldReturnNumberOfReceivedMessages() { SQSEvent.SQSMessage message1 = messageWithBody("{ \"id\": 1234, \"name\": \"product\", \"price\": 42}"); SQSEvent.SQSMessage message2 = messageWithBody("{ \"id\": 12345, \"name\": \"product5\", \"price\": 45}"); SQSEvent event = new SQSEvent(); - event.setRecords(new ArrayList<messageWithBody>(){{ + event.setRecords(new ArrayList<SQSEvent.SQSMessage>(){{ add(message1); add(message2); }}); diff --git a/examples/powertools-examples-sqs/src/main/java/org/demo/sqs/SqsPoller.java b/examples/powertools-examples-sqs/src/main/java/org/demo/sqs/SqsPoller.java index 04e4d4886..bf2b7bdfe 100644 --- a/examples/powertools-examples-sqs/src/main/java/org/demo/sqs/SqsPoller.java +++ b/examples/powertools-examples-sqs/src/main/java/org/demo/sqs/SqsPoller.java @@ -13,6 +13,7 @@ import software.amazon.lambda.powertools.sqs.SqsBatch; import software.amazon.lambda.powertools.sqs.SqsMessageHandler; import software.amazon.lambda.powertools.sqs.SqsUtils; +import java.security.SecureRandom; import static com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage; @@ -22,7 +23,7 @@ public class SqsPoller implements RequestHandler<SQSEvent, String> { Logger log = LogManager.getLogger(SqsPoller.class); - Random random = new Random(100); + Random random = new SecureRandom(); static { // https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/lambda-optimize-starttime.html From 1c9b7915bb57a24c1341ff73b85d1de5c1eb0872 Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Wed, 15 Feb 2023 16:29:49 +0100 Subject: [PATCH 20/29] Downgrade mocks in examples so they'll run on Java 1.8 --- .github/workflows/build.yml | 2 +- examples/powertools-examples-idempotency/pom.xml | 2 +- examples/powertools-examples-serialization/pom.xml | 2 +- examples/powertools-examples-validation/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 884b2c338..294257209 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -47,7 +47,7 @@ jobs: max-parallel: 4 matrix: # test against latest update of each major Java version, as well as specific updates of LTS versions: - java: [11.0.x, 11.0.3, 12, 13, 15, 16, 17 ] + java: [8, 8.0.192, 11.0.x, 11.0.3, 12, 13, 15, 16, 17 ] name: Java ${{ matrix.java }} env: OS: ${{ matrix.os }} diff --git a/examples/powertools-examples-idempotency/pom.xml b/examples/powertools-examples-idempotency/pom.xml index e37b4a525..879b81408 100644 --- a/examples/powertools-examples-idempotency/pom.xml +++ b/examples/powertools-examples-idempotency/pom.xml @@ -51,7 +51,7 @@ <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> - <version>5.1.1</version> + <version>4.11.0</version> <scope>test</scope> </dependency> <dependency> diff --git a/examples/powertools-examples-serialization/pom.xml b/examples/powertools-examples-serialization/pom.xml index 4cab8af6c..5e4de6883 100644 --- a/examples/powertools-examples-serialization/pom.xml +++ b/examples/powertools-examples-serialization/pom.xml @@ -37,7 +37,7 @@ <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> - <version>5.1.1</version> + <version>4.11.0</version> <scope>test</scope> </dependency> <dependency> diff --git a/examples/powertools-examples-validation/pom.xml b/examples/powertools-examples-validation/pom.xml index 72873fc42..9671d9808 100644 --- a/examples/powertools-examples-validation/pom.xml +++ b/examples/powertools-examples-validation/pom.xml @@ -33,7 +33,7 @@ <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> - <version>5.1.1</version> + <version>4.11.0</version> <scope>test</scope> </dependency> <dependency> From 3062dbb54d66323857b8c81d53a82e16769c72fa Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Thu, 16 Feb 2023 10:11:00 +0100 Subject: [PATCH 21/29] Fix SAM builds --- examples/README.md | 1 + .../powertools-examples-core/template.yaml | 46 +++++++++---------- .../template.yaml | 2 +- .../template.yaml | 2 +- .../template.yaml | 2 +- .../powertools-examples-sqs/template.yaml | 4 +- .../template.yaml | 2 +- pom.xml | 2 +- 8 files changed, 31 insertions(+), 30 deletions(-) diff --git a/examples/README.md b/examples/README.md index 4cbb886af..2ab462ecd 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,3 +1,4 @@ ## aws-lambda-powertools-examples This directory holds example projects demoing different components of the java powertools. + diff --git a/examples/powertools-examples-core/template.yaml b/examples/powertools-examples-core/template.yaml index ed0528602..3f47836bb 100644 --- a/examples/powertools-examples-core/template.yaml +++ b/examples/powertools-examples-core/template.yaml @@ -22,7 +22,7 @@ Resources: HelloWorldFunction: Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction Properties: - CodeUri: Function + CodeUri: . Handler: helloworld.App::handleRequest Environment: # More info about Env Vars: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object Variables: @@ -34,22 +34,22 @@ Resources: Path: /hello Method: get - HelloWorldStreamFunction: - Type: AWS::Serverless::Function - Properties: - CodeUri: Function - Handler: helloworld.AppStream::handleRequest - MemorySize: 512 - Tracing: Active - Environment: - Variables: - POWERTOOLS_LOGGER_SAMPLE_RATE: 0.7 - Events: - HelloWorld: - Type: Api - Properties: - Path: /hellostream - Method: get + # HelloWorldStreamFunction: + # Type: AWS::Serverless::Function + # Properties: + # CodeUri: HelloWorldStreamFunction + # Handler: helloworld.AppStream::handleRequest + # MemorySize: 512 + # Tracing: Active + # Environment: + # Variables: + # POWERTOOLS_LOGGER_SAMPLE_RATE: 0.7 + # Events: + # HelloWorld: + # Type: Api + # Properties: + # Path: /hellostream + # Method: get Outputs: # ServerlessRestApi is an implicit API created out of Events key under Serverless::Function @@ -58,9 +58,9 @@ Outputs: HelloWorldApi: Description: "API Gateway endpoint URL for Prod stage for Hello World function" Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/hello/" - HelloWorldFunction: - Description: "Hello World Lambda Function ARN" - Value: !GetAtt HelloWorldFunction.Arn - HelloWorldFunctionIamRole: - Description: "Implicit IAM Role created for Hello World function" - Value: !GetAtt HelloWorldFunctionRole.Arn + # HelloWorldFunction: + # Description: "Hello World Lambda Function ARN" + # Value: !GetAtt HelloWorldFunction.Arn + # HelloWorldFunctionIamRole: + # Description: "Implicit IAM Role created for Hello World function" + # Value: !GetAtt HelloWorldFunctionRole.Arn diff --git a/examples/powertools-examples-idempotency/template.yaml b/examples/powertools-examples-idempotency/template.yaml index d0708c6a4..2d5e5bc56 100644 --- a/examples/powertools-examples-idempotency/template.yaml +++ b/examples/powertools-examples-idempotency/template.yaml @@ -33,7 +33,7 @@ Resources: IdempotencyFunction: Type: AWS::Serverless::Function Properties: - CodeUri: Function + CodeUri: . Handler: helloworld.App::handleRequest Policies: - DynamoDBCrudPolicy: diff --git a/examples/powertools-examples-parameters/template.yaml b/examples/powertools-examples-parameters/template.yaml index d9038d31a..052cfcdc7 100644 --- a/examples/powertools-examples-parameters/template.yaml +++ b/examples/powertools-examples-parameters/template.yaml @@ -15,7 +15,7 @@ Resources: ParametersFunction: Type: AWS::Serverless::Function Properties: - CodeUri: Function + CodeUri: . Handler: org.demo.parameters.ParametersFunction::handleRequest MemorySize: 512 Tracing: Active diff --git a/examples/powertools-examples-serialization/template.yaml b/examples/powertools-examples-serialization/template.yaml index 66033bd35..539d2d615 100644 --- a/examples/powertools-examples-serialization/template.yaml +++ b/examples/powertools-examples-serialization/template.yaml @@ -15,7 +15,7 @@ Resources: APIGatewayDeserializationFunction: Type: AWS::Serverless::Function Properties: - CodeUri: Function + CodeUri: . Handler: org.demo.serialization.APIGatewayRequestDeserializationFunction::handleRequest Events: Product: diff --git a/examples/powertools-examples-sqs/template.yaml b/examples/powertools-examples-sqs/template.yaml index cb99213e0..ebf20831f 100644 --- a/examples/powertools-examples-sqs/template.yaml +++ b/examples/powertools-examples-sqs/template.yaml @@ -65,7 +65,7 @@ Resources: DemoSQSSenderFunction: Type: AWS::Serverless::Function Properties: - CodeUri: Functions + CodeUri: . Handler: org.demo.sqs.SqsMessageSender::handleRequest Environment: Variables: @@ -97,7 +97,7 @@ Resources: DemoSQSConsumerFunction: Type: AWS::Serverless::Function Properties: - CodeUri: Functions + CodeUri: . Handler: org.demo.sqs.SqsPoller::handleRequest Environment: Variables: diff --git a/examples/powertools-examples-validation/template.yaml b/examples/powertools-examples-validation/template.yaml index ec3c941bb..f18a9fb00 100644 --- a/examples/powertools-examples-validation/template.yaml +++ b/examples/powertools-examples-validation/template.yaml @@ -15,7 +15,7 @@ Resources: ValidationFunction: Type: AWS::Serverless::Function Properties: - CodeUri: Function + CodeUri: . Handler: org.demo.validation.InboundValidation::handleRequest Events: HelloWorld: diff --git a/pom.xml b/pom.xml index 06b498542..2a19fefec 100644 --- a/pom.xml +++ b/pom.xml @@ -452,7 +452,7 @@ <profile> <id>build-with-spotbugs</id> <activation> - <activeByDefault>true</activeByDefault> + <activeByDefault>false</activeByDefault> </activation> <build> <plugins> From 46fc915672b3716cf94c7411ca8e1115c3d1107d Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Fri, 17 Feb 2023 18:15:52 +0100 Subject: [PATCH 22/29] Uncomment sam template body --- examples/.gitignore | 1 + .../powertools-examples-core/template.yaml | 44 +++++++++---------- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/examples/.gitignore b/examples/.gitignore index 916e17c09..79e044a40 100644 --- a/examples/.gitignore +++ b/examples/.gitignore @@ -1 +1,2 @@ dependency-reduced-pom.xml +.aws-sam diff --git a/examples/powertools-examples-core/template.yaml b/examples/powertools-examples-core/template.yaml index 3f47836bb..3ca7f0ff2 100644 --- a/examples/powertools-examples-core/template.yaml +++ b/examples/powertools-examples-core/template.yaml @@ -34,22 +34,22 @@ Resources: Path: /hello Method: get - # HelloWorldStreamFunction: - # Type: AWS::Serverless::Function - # Properties: - # CodeUri: HelloWorldStreamFunction - # Handler: helloworld.AppStream::handleRequest - # MemorySize: 512 - # Tracing: Active - # Environment: - # Variables: - # POWERTOOLS_LOGGER_SAMPLE_RATE: 0.7 - # Events: - # HelloWorld: - # Type: Api - # Properties: - # Path: /hellostream - # Method: get + HelloWorldStreamFunction: + Type: AWS::Serverless::Function + Properties: + CodeUri: . + Handler: helloworld.AppStream::handleRequest + MemorySize: 512 + Tracing: Active + Environment: + Variables: + POWERTOOLS_LOGGER_SAMPLE_RATE: 0.7 + Events: + HelloWorld: + Type: Api + Properties: + Path: /hellostream + Method: get Outputs: # ServerlessRestApi is an implicit API created out of Events key under Serverless::Function @@ -58,9 +58,9 @@ Outputs: HelloWorldApi: Description: "API Gateway endpoint URL for Prod stage for Hello World function" Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/hello/" - # HelloWorldFunction: - # Description: "Hello World Lambda Function ARN" - # Value: !GetAtt HelloWorldFunction.Arn - # HelloWorldFunctionIamRole: - # Description: "Implicit IAM Role created for Hello World function" - # Value: !GetAtt HelloWorldFunctionRole.Arn + HelloWorldFunction: + Description: "Hello World Lambda Function ARN" + Value: !GetAtt HelloWorldFunction.Arn + HelloWorldFunctionIamRole: + Description: "Implicit IAM Role created for Hello World function" + Value: !GetAtt HelloWorldFunctionRole.Arn From 80b17eb9e823dee0234d65d38d99d8cdb2d5093e Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Mon, 20 Feb 2023 07:21:44 +0100 Subject: [PATCH 23/29] Address msailes review comments --- .github/workflows/build.yml | 1 - README.md | 3 ++- examples/README.md | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 294257209..08c536246 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,6 @@ on: push: branches: - master - - import-examples paths: - 'powertools-cloudformation/**' - 'powertools-core/**' diff --git a/README.md b/README.md index 61048d068..96d40615a 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,8 @@ And configure the aspectj-maven-plugin to compile-time weave (CTW) the aws-lambd ## Example -See the **[examples](examples)** directory example project showcasing usage of different utilities. +See the **[examples](examples)** directory for example projects showcasing usage of different utilities. + Have a demo project to contribute which showcase usage of different utilities from powertools? We are happy to accept it [here](CONTRIBUTING.md#security-issue-notifications). ## Credits diff --git a/examples/README.md b/examples/README.md index 2ab462ecd..b5a0da8cd 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,4 +1,5 @@ ## aws-lambda-powertools-examples -This directory holds example projects demoing different components of the java powertools. +This directory holds example projects demoing different components of the Lambda Powertools for Java. + From c14921069dc91698e76620f004534f991e54b971 Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Mon, 20 Feb 2023 07:25:46 +0100 Subject: [PATCH 24/29] Address automatic review comment --- .../src/main/java/org/demo/sqs/SqsMessageSender.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/powertools-examples-sqs/src/main/java/org/demo/sqs/SqsMessageSender.java b/examples/powertools-examples-sqs/src/main/java/org/demo/sqs/SqsMessageSender.java index bd49d642b..b90c50654 100644 --- a/examples/powertools-examples-sqs/src/main/java/org/demo/sqs/SqsMessageSender.java +++ b/examples/powertools-examples-sqs/src/main/java/org/demo/sqs/SqsMessageSender.java @@ -17,6 +17,7 @@ import software.amazon.lambda.powertools.logging.Logging; import software.amazon.lambda.powertools.logging.LoggingUtils; +import java.security.SecureRandom; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -33,7 +34,7 @@ public class SqsMessageSender implements RequestHandler<ScheduledEvent, String> .httpClient(UrlConnectionHttpClient.create()) .build(); - private static final Random random = new Random(); + private static final Random random = new SecureRandom(); private static final ObjectMapper objectMapper; From a6373d8606360470137d8c4c4b9653995229aff5 Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Mon, 20 Feb 2023 17:50:40 +0100 Subject: [PATCH 25/29] Address jvdl review comments --- .github/workflows/build.yml | 8 ++++---- examples/pom.xml | 1 - pom.xml | 1 - 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 08c536246..3210dad84 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,9 +16,9 @@ on: - 'powertools-parameters/**' - 'powertools-metrics/**' - 'powertools-test-suite/**' - - 'powertools-examples/**' + - 'examples/**' - 'pom.xml' - - 'powertools-examples/pom.xml' + - 'examples/pom.xml' - '.github/workflows/**' push: branches: @@ -35,9 +35,9 @@ on: - 'powertools-parameters/**' - 'powertools-metrics/**' - 'powertools-test-suite/**' - - 'powertools-examples/**' + - 'examples/**' - 'pom.xml' - - 'powertools-examples/pom.xml' + - 'examples/pom.xml' - '.github/workflows/**' jobs: build: diff --git a/examples/pom.xml b/examples/pom.xml index 0f2610707..5993b6743 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>software.amazon.lambda</groupId> <artifactId>powertools-examples</artifactId> <packaging>pom</packaging> diff --git a/pom.xml b/pom.xml index 2a19fefec..9a2ee66fe 100644 --- a/pom.xml +++ b/pom.xml @@ -78,7 +78,6 @@ <junit-jupiter.version>5.9.2</junit-jupiter.version> <aws-embedded-metrics.version>1.0.6</aws-embedded-metrics.version> <jmespath.version>0.5.1</jmespath.version> - <projectversion>1.13.0</projectversion> </properties> <distributionManagement> From 221d209e0c0e27d2ad7e89ac6ef2bc77836dda30 Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Mon, 20 Feb 2023 17:55:00 +0100 Subject: [PATCH 26/29] All example POMs should point at example intermediate pom not parent --- examples/powertools-examples-serialization/pom.xml | 2 +- examples/powertools-examples-sqs/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/powertools-examples-serialization/pom.xml b/examples/powertools-examples-serialization/pom.xml index 5e4de6883..3640df98c 100644 --- a/examples/powertools-examples-serialization/pom.xml +++ b/examples/powertools-examples-serialization/pom.xml @@ -6,7 +6,7 @@ <name>Sample app demoing serialization utility of Powertools.</name> <parent> - <artifactId>powertools-parent</artifactId> + <artifactId>powertools-examples</artifactId> <groupId>software.amazon.lambda</groupId> <version>1.13.0</version> </parent> diff --git a/examples/powertools-examples-sqs/pom.xml b/examples/powertools-examples-sqs/pom.xml index dbacda6f4..2cb649f43 100644 --- a/examples/powertools-examples-sqs/pom.xml +++ b/examples/powertools-examples-sqs/pom.xml @@ -6,7 +6,7 @@ <name>Sample app demoing SQS Batch Processing utility of Powertools.</name> <parent> - <artifactId>powertools-parent</artifactId> + <artifactId>powertools-examples</artifactId> <groupId>software.amazon.lambda</groupId> <version>1.13.0</version> </parent> From a0634a5aca4f944a1e0699ad2b5790952a6fb4d3 Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Tue, 21 Feb 2023 07:59:18 +0100 Subject: [PATCH 27/29] Bump examples versions --- examples/pom.xml | 2 +- examples/powertools-examples-core/pom.xml | 2 +- examples/powertools-examples-idempotency/pom.xml | 2 +- examples/powertools-examples-parameters/pom.xml | 2 +- examples/powertools-examples-serialization/pom.xml | 2 +- examples/powertools-examples-sqs/pom.xml | 2 +- examples/powertools-examples-validation/pom.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/pom.xml b/examples/pom.xml index 5993b6743..818258c22 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -10,7 +10,7 @@ <parent> <artifactId>powertools-parent</artifactId> <groupId>software.amazon.lambda</groupId> - <version>1.13.0</version> + <version>1.14.0</version> </parent> <name>AWS Lambda Powertools for Java library Examples</name> diff --git a/examples/powertools-examples-core/pom.xml b/examples/powertools-examples-core/pom.xml index f74f8cd3c..4b52aa24a 100644 --- a/examples/powertools-examples-core/pom.xml +++ b/examples/powertools-examples-core/pom.xml @@ -8,7 +8,7 @@ <parent> <artifactId>powertools-examples</artifactId> <groupId>software.amazon.lambda</groupId> - <version>1.13.0</version> + <version>1.14.0</version> </parent> <dependencies> diff --git a/examples/powertools-examples-idempotency/pom.xml b/examples/powertools-examples-idempotency/pom.xml index 879b81408..e21561c70 100644 --- a/examples/powertools-examples-idempotency/pom.xml +++ b/examples/powertools-examples-idempotency/pom.xml @@ -8,7 +8,7 @@ <parent> <artifactId>powertools-examples</artifactId> <groupId>software.amazon.lambda</groupId> - <version>1.13.0</version> + <version>1.14.0</version> </parent> <dependencies> diff --git a/examples/powertools-examples-parameters/pom.xml b/examples/powertools-examples-parameters/pom.xml index 7b7aebaa3..ed5ca5d87 100644 --- a/examples/powertools-examples-parameters/pom.xml +++ b/examples/powertools-examples-parameters/pom.xml @@ -8,7 +8,7 @@ <parent> <artifactId>powertools-examples</artifactId> <groupId>software.amazon.lambda</groupId> - <version>1.13.0</version> + <version>1.14.0</version> </parent> <dependencies> diff --git a/examples/powertools-examples-serialization/pom.xml b/examples/powertools-examples-serialization/pom.xml index 3640df98c..fb0a3a930 100644 --- a/examples/powertools-examples-serialization/pom.xml +++ b/examples/powertools-examples-serialization/pom.xml @@ -8,7 +8,7 @@ <parent> <artifactId>powertools-examples</artifactId> <groupId>software.amazon.lambda</groupId> - <version>1.13.0</version> + <version>1.14.0</version> </parent> <dependencies> diff --git a/examples/powertools-examples-sqs/pom.xml b/examples/powertools-examples-sqs/pom.xml index 2cb649f43..4373ed702 100644 --- a/examples/powertools-examples-sqs/pom.xml +++ b/examples/powertools-examples-sqs/pom.xml @@ -8,7 +8,7 @@ <parent> <artifactId>powertools-examples</artifactId> <groupId>software.amazon.lambda</groupId> - <version>1.13.0</version> + <version>1.14.0</version> </parent> <dependencies> diff --git a/examples/powertools-examples-validation/pom.xml b/examples/powertools-examples-validation/pom.xml index 9671d9808..50c777e14 100644 --- a/examples/powertools-examples-validation/pom.xml +++ b/examples/powertools-examples-validation/pom.xml @@ -8,7 +8,7 @@ <parent> <artifactId>powertools-parent</artifactId> <groupId>software.amazon.lambda</groupId> - <version>1.13.0</version> + <version>1.14.0</version> </parent> From 43d82ec045ee10c7bd25f971cd58d15461312664 Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Tue, 21 Feb 2023 12:36:28 +0100 Subject: [PATCH 28/29] Fix example names, and don't deploy them --- examples/pom.xml | 5 +++++ examples/powertools-examples-core/pom.xml | 2 +- examples/powertools-examples-idempotency/pom.xml | 2 +- examples/powertools-examples-parameters/pom.xml | 2 +- examples/powertools-examples-serialization/pom.xml | 2 +- examples/powertools-examples-sqs/pom.xml | 2 +- examples/powertools-examples-validation/pom.xml | 2 +- 7 files changed, 11 insertions(+), 6 deletions(-) diff --git a/examples/pom.xml b/examples/pom.xml index 818258c22..7ac5491b9 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -49,4 +49,9 @@ <module>powertools-examples-validation</module> </modules> + <!-- Don't deploy the examples --> + <properties> + <maven.deploy.skip>true</maven.deploy.skip> + </properties> + </project> \ No newline at end of file diff --git a/examples/powertools-examples-core/pom.xml b/examples/powertools-examples-core/pom.xml index 4b52aa24a..86f3afd0d 100644 --- a/examples/powertools-examples-core/pom.xml +++ b/examples/powertools-examples-core/pom.xml @@ -3,7 +3,7 @@ <modelVersion>4.0.0</modelVersion> <artifactId>powertools-examples-core</artifactId> <packaging>jar</packaging> - <name>A sample Hello World created for SAM CLI using powertools core utilities</name> + <name>AWS Lambda Powertools for Java library Examples - Core</name> <parent> <artifactId>powertools-examples</artifactId> diff --git a/examples/powertools-examples-idempotency/pom.xml b/examples/powertools-examples-idempotency/pom.xml index e21561c70..438933178 100644 --- a/examples/powertools-examples-idempotency/pom.xml +++ b/examples/powertools-examples-idempotency/pom.xml @@ -3,7 +3,7 @@ <modelVersion>4.0.0</modelVersion> <artifactId>powertools-examples-idempotency</artifactId> <packaging>jar</packaging> - <name>A sample Hello World using powertools idempotency</name> + <name>AWS Lambda Powertools for Java library Examples - Idempotency</name> <parent> <artifactId>powertools-examples</artifactId> diff --git a/examples/powertools-examples-parameters/pom.xml b/examples/powertools-examples-parameters/pom.xml index ed5ca5d87..f3797c948 100644 --- a/examples/powertools-examples-parameters/pom.xml +++ b/examples/powertools-examples-parameters/pom.xml @@ -3,7 +3,7 @@ <modelVersion>4.0.0</modelVersion> <artifactId>powertools-examples-parameters</artifactId> <packaging>jar</packaging> - <name>Sample app demoing parameters utility of Powertools.</name> + <name>AWS Lambda Powertools for Java library Examples - Parameters</name> <parent> <artifactId>powertools-examples</artifactId> diff --git a/examples/powertools-examples-serialization/pom.xml b/examples/powertools-examples-serialization/pom.xml index fb0a3a930..f1d45f760 100644 --- a/examples/powertools-examples-serialization/pom.xml +++ b/examples/powertools-examples-serialization/pom.xml @@ -3,7 +3,7 @@ <modelVersion>4.0.0</modelVersion> <artifactId>powertools-examples-serialization</artifactId> <packaging>jar</packaging> - <name>Sample app demoing serialization utility of Powertools.</name> + <name>AWS Lambda Powertools for Java library Examples - Serialization</name> <parent> <artifactId>powertools-examples</artifactId> diff --git a/examples/powertools-examples-sqs/pom.xml b/examples/powertools-examples-sqs/pom.xml index 4373ed702..0dbcabc53 100644 --- a/examples/powertools-examples-sqs/pom.xml +++ b/examples/powertools-examples-sqs/pom.xml @@ -3,7 +3,7 @@ <modelVersion>4.0.0</modelVersion> <artifactId>powertools-examples-sqs</artifactId> <packaging>jar</packaging> - <name>Sample app demoing SQS Batch Processing utility of Powertools.</name> + <name>AWS Lambda Powertools for Java library Examples - SQS</name> <parent> <artifactId>powertools-examples</artifactId> diff --git a/examples/powertools-examples-validation/pom.xml b/examples/powertools-examples-validation/pom.xml index 50c777e14..f7522303b 100644 --- a/examples/powertools-examples-validation/pom.xml +++ b/examples/powertools-examples-validation/pom.xml @@ -3,7 +3,7 @@ <modelVersion>4.0.0</modelVersion> <artifactId>powertools-examples-validation</artifactId> <packaging>jar</packaging> - <name>Sample app demoing validation utility of Powertools.</name> + <name>AWS Lambda Powertools for Java library Examples - Validation</name> <parent> <artifactId>powertools-parent</artifactId> From c45904757afc7b7902eea48172df6b23ecc7d282 Mon Sep 17 00:00:00 2001 From: Scott Gerring <gerrings@amazon.com> Date: Tue, 21 Feb 2023 16:20:33 +0100 Subject: [PATCH 29/29] Remove redundant bits from examples pom --- examples/pom.xml | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/examples/pom.xml b/examples/pom.xml index 7ac5491b9..c61e858c5 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -17,28 +17,6 @@ <description> A suite of examples accompanying for AWS Lambda Powertools. </description> - <url>https://aws.amazon.com/lambda/</url> - <issueManagement> - <system>GitHub Issues</system> - <url>https://github.com/awslabs/aws-lambda-powertools-java/issues</url> - </issueManagement> - <scm> - <url>https://github.com/awslabs/aws-lambda-powertools-java.git</url> - </scm> - <developers> - <developer> - <name>AWS Lambda Powertools team</name> - <organization>Amazon Web Services</organization> - <organizationUrl>https://aws.amazon.com/</organizationUrl> - </developer> - </developers> - - <distributionManagement> - <snapshotRepository> - <id>ossrh</id> - <url>https://aws.oss.sonatype.org/content/repositories/snapshots</url> - </snapshotRepository> - </distributionManagement> <modules> <module>powertools-examples-core</module>