Skip to content

Commit 3b52fb7

Browse files
authored
Merge branch 'v2' into feature/high-res-metrics
2 parents 65e136d + 8151421 commit 3b52fb7

File tree

56 files changed

+380
-181
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+380
-181
lines changed

.github/workflows/pr_artifacts_size.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ on:
1111
- 'powertools-core/**' # not in v2
1212
- 'powertools-common/**' # v2 only
1313
- 'powertools-e2e-tests/**'
14-
- 'powertools-idempotency/**'
14+
- 'powertools-idempotency-core/**'
15+
- 'powertools-idempotency-dynamodb/**'
1516
- 'powertools-large-messages/**'
1617
- 'powertools-logging/**'
1718
- 'powertools-metrics/**'

.github/workflows/pr_build.yml

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ on:
2626
push:
2727
branches:
2828
- main
29+
- v2
2930
paths:
3031
- 'powertools-batch/**'
3132
- 'powertools-cloudformation/**'

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
**This is pre-release code for Powertools for AWS Lambda (Java) V2! Please check out the `main` branch for the stable release**
44

5-
![aws provider](https://img.shields.io/badge/provider-AWS-orange?logo=amazon-aws&color=ff9900) ![Build status](https://github.com/aws-powertools/powertools-lambda-java/actions/workflows/build.yml/badge.svg) ![Maven Central](https://img.shields.io/maven-central/v/software.amazon.lambda/powertools-parent) [![codecov.io](https://codecov.io/github/aws-powertools/powertools-lambda-java/branch/main/graphs/badge.svg)](https://app.codecov.io/gh/aws-powertools/powertools-lambda-java)
5+
![aws provider](https://img.shields.io/badge/provider-AWS-orange?logo=amazon-aws&color=ff9900) [![V2 Build Status](https://github.com/aws-powertools/powertools-lambda-java/actions/workflows/pr_build.yml/badge.svg?branch=v2)](https://github.com/aws-powertools/powertools-lambda-java/actions/workflows/pr_build.yml) **MAVEN DEPLOY NOT DONE** [![codecov.io](https://codecov.io/github/aws-powertools/powertools-lambda-java/branch/v2/graphs/badge.svg)](https://app.codecov.io/gh/aws-powertools/powertools-lambda-java/tree/v2)
66

77

88
Powertools for AWS Lambda (Java) is a developer toolkit to implement Serverless best practices and increase developer velocity.

docs/utilities/idempotency.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Depending on your version of Java (either Java 1.8 or 11+), the configuration sl
3535
...
3636
<dependency>
3737
<groupId>software.amazon.lambda</groupId>
38-
<artifactId>powertools-idempotency</artifactId>
38+
<artifactId>powertools-idempotency-dynamodb</artifactId>
3939
<version>{{ powertools.version }}</version>
4040
</dependency>
4141
...
@@ -56,7 +56,7 @@ Depending on your version of Java (either Java 1.8 or 11+), the configuration sl
5656
<aspectLibraries>
5757
<aspectLibrary>
5858
<groupId>software.amazon.lambda</groupId>
59-
<artifactId>powertools-idempotency</artifactId>
59+
<artifactId>powertools-idempotency-dynamodb</artifactId>
6060
</aspectLibrary>
6161
</aspectLibraries>
6262
</configuration>
@@ -80,7 +80,7 @@ Depending on your version of Java (either Java 1.8 or 11+), the configuration sl
8080
...
8181
<dependency>
8282
<groupId>software.amazon.lambda</groupId>
83-
<artifactId>powertools-idempotency</artifactId>
83+
<artifactId>powertools-idempotency-dynamodb</artifactId>
8484
<version>{{ powertools.version }}</version>
8585
</dependency>
8686
...
@@ -101,7 +101,7 @@ Depending on your version of Java (either Java 1.8 or 11+), the configuration sl
101101
<aspectLibraries>
102102
<aspectLibrary>
103103
<groupId>software.amazon.lambda</groupId>
104-
<artifactId>powertools-idempotency</artifactId>
104+
<artifactId>powertools-idempotency-dynamodb</artifactId>
105105
</aspectLibrary>
106106
</aspectLibraries>
107107
</configuration>
@@ -131,7 +131,7 @@ Depending on your version of Java (either Java 1.8 or 11+), the configuration sl
131131
}
132132
133133
dependencies {
134-
aspect 'software.amazon.lambda:powertools-idempotency:{{ powertools.version }}'
134+
aspect 'software.amazon.lambda:powertools-idempotency-dynamodb:{{ powertools.version }}'
135135
}
136136
137137
sourceCompatibility = 11 // or higher
@@ -151,7 +151,7 @@ Depending on your version of Java (either Java 1.8 or 11+), the configuration sl
151151
}
152152
153153
dependencies {
154-
aspect 'software.amazon.lambda:powertools-idempotency:{{ powertools.version }}'
154+
aspect 'software.amazon.lambda:powertools-idempotency-dynamodb:{{ powertools.version }}'
155155
}
156156
157157
sourceCompatibility = 1.8

examples/powertools-examples-idempotency/pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
</dependency>
4242
<dependency>
4343
<groupId>software.amazon.lambda</groupId>
44-
<artifactId>powertools-idempotency</artifactId>
44+
<artifactId>powertools-idempotency-dynamodb</artifactId>
4545
<version>${project.version}</version>
4646
</dependency>
4747
<dependency>
@@ -95,7 +95,7 @@
9595
</aspectLibrary>
9696
<aspectLibrary>
9797
<groupId>software.amazon.lambda</groupId>
98-
<artifactId>powertools-idempotency</artifactId>
98+
<artifactId>powertools-idempotency-dynamodb</artifactId>
9999
</aspectLibrary>
100100
</aspectLibraries>
101101
</configuration>

examples/powertools-examples-idempotency/src/main/java/helloworld/App.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import software.amazon.lambda.powertools.idempotency.Idempotency;
3333
import software.amazon.lambda.powertools.idempotency.IdempotencyConfig;
3434
import software.amazon.lambda.powertools.idempotency.Idempotent;
35-
import software.amazon.lambda.powertools.idempotency.persistence.DynamoDBPersistenceStore;
35+
import software.amazon.lambda.powertools.idempotency.persistence.dynamodb.DynamoDBPersistenceStore;
3636
import software.amazon.lambda.powertools.logging.Logging;
3737
import software.amazon.lambda.powertools.utilities.JsonConfig;
3838

pom.xml

-20
Original file line numberDiff line numberDiff line change
@@ -32,25 +32,6 @@
3232
<system>GitHub Issues</system>
3333
<url>https://github.com/aws-powertools/powertools-lambda-java/issues</url>
3434
</issueManagement>
35-
36-
<scm>
37-
<url>https://github.com/aws-powertools/powertools-lambda-java.git</url>
38-
</scm>
39-
<developers>
40-
<developer>
41-
<name>Powertools for AWS Lambda (Java) Team</name>
42-
<organization>Amazon Web Services</organization>
43-
<organizationUrl>https://aws.amazon.com/</organizationUrl>
44-
</developer>
45-
</developers>
46-
47-
<distributionManagement>
48-
<snapshotRepository>
49-
<id>ossrh</id>
50-
<url>https://aws.oss.sonatype.org/content/repositories/snapshots</url>
51-
</snapshotRepository>
52-
</distributionManagement>
53-
5435
<licenses>
5536
<license>
5637
<name>Apache License, Version 2.0</name>
@@ -421,7 +402,6 @@
421402
</configuration>
422403
<executions>
423404
<execution>
424-
<phase>process-sources</phase>
425405
<goals>
426406
<goal>compile</goal>
427407
<goal>test-compile</goal>

powertools-batch/pom.xml

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
</build>
2626

2727
<artifactId>powertools-batch</artifactId>
28+
2829
<dependencies>
2930
<dependency>
3031
<groupId>com.amazonaws</groupId>

powertools-idempotency/pom.xml

+8-60
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,19 @@
2525
</parent>
2626

2727
<artifactId>powertools-idempotency</artifactId>
28-
<packaging>jar</packaging>
28+
<packaging>pom</packaging>
2929

30-
<name>Powertools for AWS Lambda (Java) - Idempotency</name>
30+
<name>Powertools for AWS Lambda (Java) library Idempotency</name>
3131
<description>
3232

3333
</description>
3434

35+
36+
<modules>
37+
<module>powertools-idempotency-core</module>
38+
<module>powertools-idempotency-dynamodb</module>
39+
</modules>
40+
3541
<dependencies>
3642
<dependency>
3743
<groupId>org.aspectj</groupId>
@@ -42,34 +48,6 @@
4248
<groupId>software.amazon.lambda</groupId>
4349
<artifactId>powertools-common</artifactId>
4450
</dependency>
45-
<dependency>
46-
<groupId>software.amazon.lambda</groupId>
47-
<artifactId>powertools-serialization</artifactId>
48-
</dependency>
49-
<dependency>
50-
<groupId>com.amazonaws</groupId>
51-
<artifactId>aws-lambda-java-core</artifactId>
52-
</dependency>
53-
<dependency>
54-
<groupId>software.amazon.awssdk</groupId>
55-
<artifactId>dynamodb</artifactId>
56-
<exclusions>
57-
<exclusion>
58-
<groupId>software.amazon.awssdk</groupId>
59-
<artifactId>netty-nio-client</artifactId>
60-
</exclusion>
61-
<exclusion>
62-
<groupId>software.amazon.awssdk</groupId>
63-
<artifactId>apache-client</artifactId>
64-
</exclusion>
65-
</exclusions>
66-
</dependency>
67-
<dependency>
68-
<groupId>software.amazon.awssdk</groupId>
69-
<artifactId>url-connection-client</artifactId>
70-
<version>${aws.sdk.version}</version>
71-
</dependency>
72-
7351
<!-- Test dependencies -->
7452
<dependency>
7553
<groupId>org.junit.jupiter</groupId>
@@ -106,20 +84,6 @@
10684
<artifactId>aws-lambda-java-tests</artifactId>
10785
<scope>test</scope>
10886
</dependency>
109-
<dependency>
110-
<groupId>com.amazonaws</groupId>
111-
<artifactId>DynamoDBLocal</artifactId>
112-
<version>[1.12,2.0)</version>
113-
<scope>test</scope>
114-
</dependency>
115-
<!--Needed when building locally on M1 Mac-->
116-
<dependency>
117-
<groupId>io.github.ganadist.sqlite4java</groupId>
118-
<artifactId>libsqlite4java-osx-aarch64</artifactId>
119-
<version>1.0.392</version>
120-
<scope>test</scope>
121-
<type>dylib</type>
122-
</dependency>
12387
</dependencies>
12488
<build>
12589
<plugins>
@@ -150,22 +114,6 @@
150114
</execution>
151115
</executions>
152116
</plugin>
153-
<plugin>
154-
<groupId>org.apache.maven.plugins</groupId>
155-
<artifactId>maven-jar-plugin</artifactId>
156-
<version>3.3.0</version>
157-
<configuration>
158-
<archive>
159-
<manifestEntries>
160-
<Automatic-Module-Name>software.amazon.awssdk.enhanced.dynamodb</Automatic-Module-Name>
161-
</manifestEntries>
162-
</archive>
163-
</configuration>
164-
</plugin>
165-
<plugin>
166-
<groupId>org.apache.maven.plugins</groupId>
167-
<artifactId>maven-checkstyle-plugin</artifactId>
168-
</plugin>
169117
</plugins>
170118
</build>
171119
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
~ Copyright 2023 Amazon.com, Inc. or its affiliates.
4+
~ Licensed under the Apache License, Version 2.0 (the
5+
~ "License"); you may not use this file except in compliance
6+
~ with the License. You may obtain a copy of the License at
7+
~ http://www.apache.org/licenses/LICENSE-2.0
8+
~ Unless required by applicable law or agreed to in writing, software
9+
~ distributed under the License is distributed on an "AS IS" BASIS,
10+
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
~ See the License for the specific language governing permissions and
12+
~ limitations under the License.
13+
~
14+
-->
15+
16+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
17+
xmlns="http://maven.apache.org/POM/4.0.0"
18+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
19+
<modelVersion>4.0.0</modelVersion>
20+
21+
<parent>
22+
<groupId>software.amazon.lambda</groupId>
23+
<artifactId>powertools-idempotency</artifactId>
24+
<version>2.0.0-SNAPSHOT</version>
25+
</parent>
26+
27+
<artifactId>powertools-idempotency-core</artifactId>
28+
<packaging>jar</packaging>
29+
30+
<name>Powertools for AWS Lambda (Java) library Idempotency - Core</name>
31+
<description>
32+
Idempotency module common implementation
33+
</description>
34+
35+
<dependencies>
36+
<dependency>
37+
<groupId>software.amazon.lambda</groupId>
38+
<artifactId>powertools-serialization</artifactId>
39+
</dependency>
40+
<!-- Test dependencies -->
41+
</dependencies>
42+
</project>

powertools-idempotency/src/main/java/software/amazon/lambda/powertools/idempotency/IdempotencyConfig.java renamed to powertools-idempotency/powertools-idempotency-core/src/main/java/software/amazon/lambda/powertools/idempotency/IdempotencyConfig.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@
1515
package software.amazon.lambda.powertools.idempotency;
1616

1717
import com.amazonaws.services.lambda.runtime.Context;
18-
import java.time.Duration;
1918
import software.amazon.lambda.powertools.idempotency.internal.cache.LRUCache;
2019

20+
import java.time.Duration;
21+
2122
/**
2223
* Configuration of the idempotency feature. Use the {@link Builder} to create an instance.
2324
*/
@@ -92,7 +93,7 @@ public static class Builder {
9293

9394
private int localCacheMaxItems = 256;
9495
private boolean useLocalCache = false;
95-
private long expirationInSeconds = 60 * 60; // 1 hour
96+
private long expirationInSeconds = 60 * 60L; // 1 hour
9697
private String eventKeyJMESPath;
9798
private String payloadValidationJMESPath;
9899
private boolean throwOnNoIdempotencyKey = false;

powertools-idempotency/src/main/java/software/amazon/lambda/powertools/idempotency/Idempotent.java renamed to powertools-idempotency/powertools-idempotency-core/src/main/java/software/amazon/lambda/powertools/idempotency/Idempotent.java

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package software.amazon.lambda.powertools.idempotency;
1616

1717
import com.amazonaws.services.lambda.runtime.Context;
18+
1819
import java.lang.annotation.ElementType;
1920
import java.lang.annotation.Retention;
2021
import java.lang.annotation.RetentionPolicy;

powertools-idempotency/src/main/java/software/amazon/lambda/powertools/idempotency/internal/IdempotencyHandler.java renamed to powertools-idempotency/powertools-idempotency-core/src/main/java/software/amazon/lambda/powertools/idempotency/internal/IdempotencyHandler.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,8 @@
1414

1515
package software.amazon.lambda.powertools.idempotency.internal;
1616

17-
import static software.amazon.lambda.powertools.idempotency.persistence.DataRecord.Status.EXPIRED;
18-
import static software.amazon.lambda.powertools.idempotency.persistence.DataRecord.Status.INPROGRESS;
19-
2017
import com.amazonaws.services.lambda.runtime.Context;
2118
import com.fasterxml.jackson.databind.JsonNode;
22-
import java.time.Instant;
23-
import java.util.OptionalInt;
2419
import org.aspectj.lang.ProceedingJoinPoint;
2520
import org.aspectj.lang.reflect.MethodSignature;
2621
import org.slf4j.Logger;
@@ -37,6 +32,12 @@
3732
import software.amazon.lambda.powertools.idempotency.persistence.DataRecord;
3833
import software.amazon.lambda.powertools.utilities.JsonConfig;
3934

35+
import java.time.Instant;
36+
import java.util.OptionalInt;
37+
38+
import static software.amazon.lambda.powertools.idempotency.persistence.DataRecord.Status.EXPIRED;
39+
import static software.amazon.lambda.powertools.idempotency.persistence.DataRecord.Status.INPROGRESS;
40+
4041
/**
4142
* Internal class that will handle the Idempotency, and use the {@link software.amazon.lambda.powertools.idempotency.persistence.PersistenceStore}
4243
* to store the result of previous calls.

powertools-idempotency/src/main/java/software/amazon/lambda/powertools/idempotency/internal/IdempotentAspect.java renamed to powertools-idempotency/powertools-idempotency-core/src/main/java/software/amazon/lambda/powertools/idempotency/internal/IdempotentAspect.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,8 @@
1414

1515
package software.amazon.lambda.powertools.idempotency.internal;
1616

17-
import static software.amazon.lambda.powertools.common.internal.LambdaHandlerProcessor.placedOnRequestHandler;
18-
1917
import com.amazonaws.services.lambda.runtime.Context;
2018
import com.fasterxml.jackson.databind.JsonNode;
21-
import java.lang.annotation.Annotation;
22-
import java.lang.reflect.Method;
2319
import org.aspectj.lang.ProceedingJoinPoint;
2420
import org.aspectj.lang.annotation.Around;
2521
import org.aspectj.lang.annotation.Aspect;
@@ -33,6 +29,11 @@
3329
import software.amazon.lambda.powertools.idempotency.exceptions.IdempotencyConfigurationException;
3430
import software.amazon.lambda.powertools.utilities.JsonConfig;
3531

32+
import java.lang.annotation.Annotation;
33+
import java.lang.reflect.Method;
34+
35+
import static software.amazon.lambda.powertools.common.internal.LambdaHandlerProcessor.placedOnRequestHandler;
36+
3637
/**
3738
* Aspect that handles the {@link Idempotent} annotation.
3839
* It uses the {@link IdempotencyHandler} to actually do the job.

0 commit comments

Comments
 (0)