Skip to content

Commit 058fb13

Browse files
committed
Moved AppConfig out
1 parent 7dd85d2 commit 058fb13

File tree

8 files changed

+145
-89
lines changed

8 files changed

+145
-89
lines changed

pom.xml

+1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
<module>powertools-parameters/powertools-parameters-secrets</module>
5959
<module>powertools-parameters/powertools-parameters-dynamodb</module>
6060
<module>powertools-parameters/powertools-parameters-tests</module>
61+
<module>powertools-parameters/powertools-parameters-appconfig</module>
6162
</modules>
6263

6364
<scm>

powertools-parameters/pom.xml

-4
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,6 @@
6262
<groupId>software.amazon.awssdk</groupId>
6363
<artifactId>url-connection-client</artifactId>
6464
</dependency>
65-
<dependency>
66-
<groupId>software.amazon.awssdk</groupId>
67-
<artifactId>appconfigdata</artifactId>
68-
</dependency>
6965

7066
<dependency>
7167
<groupId>com.fasterxml.jackson.core</groupId>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<parent>
8+
<groupId>software.amazon.lambda</groupId>
9+
<artifactId>powertools-parent</artifactId>
10+
<version>2.0.0-SNAPSHOT</version>
11+
<relativePath>../../pom.xml</relativePath>
12+
</parent>
13+
14+
<artifactId>powertools-parameters-appconfig</artifactId>
15+
<name>Powertools for AWS Lambda (Java) library Parameters - AppConfig</name>
16+
<description>AppConfig implementation for the Parameters module</description>
17+
18+
<issueManagement>
19+
<system>GitHub Issues</system>
20+
<url>https://github.com/aws-powertools/powertools-lambda-java/issues</url>
21+
</issueManagement>
22+
<scm>
23+
<url>https://github.com/aws-powertools/powertools-lambda-java.git</url>
24+
</scm>
25+
<developers>
26+
<developer>
27+
<name>Powertools for AWS Lambda team</name>
28+
<organization>Amazon Web Services</organization>
29+
<organizationUrl>https://aws.amazon.com/</organizationUrl>
30+
</developer>
31+
</developers>
32+
33+
<distributionManagement>
34+
<snapshotRepository>
35+
<id>ossrh</id>
36+
<url>https://aws.oss.sonatype.org/content/repositories/snapshots</url>
37+
</snapshotRepository>
38+
</distributionManagement>
39+
40+
<dependencies>
41+
<dependency>
42+
<groupId>software.amazon.lambda</groupId>
43+
<artifactId>powertools-parameters</artifactId>
44+
<version>${project.version}</version>
45+
</dependency>
46+
47+
<dependency>
48+
<groupId>software.amazon.awssdk</groupId>
49+
<artifactId>appconfigdata</artifactId>
50+
<exclusions>
51+
<exclusion>
52+
<groupId>software.amazon.awssdk</groupId>
53+
<artifactId>apache-client</artifactId>
54+
</exclusion>
55+
<exclusion>
56+
<groupId>software.amazon.awssdk</groupId>
57+
<artifactId>netty-nio-client</artifactId>
58+
</exclusion>
59+
</exclusions>
60+
</dependency>
61+
62+
<!-- Test dependencies -->
63+
<dependency>
64+
<groupId>org.junit.jupiter</groupId>
65+
<artifactId>junit-jupiter-api</artifactId>
66+
<scope>test</scope>
67+
</dependency>
68+
<dependency>
69+
<groupId>org.junit.jupiter</groupId>
70+
<artifactId>junit-jupiter-engine</artifactId>
71+
<scope>test</scope>
72+
</dependency>
73+
<dependency>
74+
<groupId>org.mockito</groupId>
75+
<artifactId>mockito-core</artifactId>
76+
<scope>test</scope>
77+
</dependency>
78+
<dependency>
79+
<groupId>org.mockito</groupId>
80+
<artifactId>mockito-inline</artifactId>
81+
<scope>test</scope>
82+
</dependency>
83+
<dependency>
84+
<groupId>org.apache.commons</groupId>
85+
<artifactId>commons-lang3</artifactId>
86+
<scope>test</scope>
87+
</dependency>
88+
<dependency>
89+
<groupId>org.assertj</groupId>
90+
<artifactId>assertj-core</artifactId>
91+
<scope>test</scope>
92+
</dependency>
93+
<dependency>
94+
<groupId>org.aspectj</groupId>
95+
<artifactId>aspectjweaver</artifactId>
96+
<scope>test</scope>
97+
</dependency>
98+
</dependencies>
99+
100+
<build>
101+
<plugins>
102+
<plugin>
103+
<artifactId>maven-surefire-plugin</artifactId>
104+
<version>3.1.2</version>
105+
<configuration>
106+
<environmentVariables>
107+
<AWS_REGION>eu-central-1</AWS_REGION>
108+
</environmentVariables>
109+
</configuration>
110+
</plugin>
111+
<plugin>
112+
<groupId>org.apache.maven.plugins</groupId>
113+
<artifactId>maven-checkstyle-plugin</artifactId>
114+
</plugin>
115+
</plugins>
116+
</build>
117+
</project>

powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/AppConfigProvider.java renamed to powertools-parameters/powertools-parameters-appconfig/src/main/java/software/amazon/lambda/powertools/parameters/appconfig/AppConfigProvider.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*
1313
*/
1414

15-
package software.amazon.lambda.powertools.parameters;
15+
package software.amazon.lambda.powertools.parameters.appconfig;
1616

1717
import java.util.HashMap;
1818
import java.util.Map;
@@ -26,6 +26,7 @@
2626
import software.amazon.awssdk.services.appconfigdata.model.GetLatestConfigurationResponse;
2727
import software.amazon.awssdk.services.appconfigdata.model.StartConfigurationSessionRequest;
2828
import software.amazon.lambda.powertools.common.internal.UserAgentConfigurator;
29+
import software.amazon.lambda.powertools.parameters.BaseProvider;
2930
import software.amazon.lambda.powertools.parameters.cache.CacheManager;
3031
import software.amazon.lambda.powertools.parameters.transform.TransformationManager;
3132

@@ -158,7 +159,7 @@ public AppConfigProvider build() {
158159
.region(Region.of(System.getenv(SdkSystemSetting.AWS_REGION.environmentVariable())))
159160
.overrideConfiguration(ClientOverrideConfiguration.builder()
160161
.putAdvancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX,
161-
UserAgentConfigurator.getUserAgent(PARAMETERS)).build())
162+
UserAgentConfigurator.getUserAgent(BaseProvider.PARAMETERS)).build())
162163
.build();
163164
}
164165

Original file line numberDiff line numberDiff line change
@@ -12,19 +12,16 @@
1212
*
1313
*/
1414

15-
package software.amazon.lambda.powertools.parameters;
16-
17-
import static org.assertj.core.api.Assertions.assertThat;
18-
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
19-
import static org.assertj.core.api.Assertions.assertThatRuntimeException;
20-
import static org.mockito.MockitoAnnotations.openMocks;
15+
package software.amazon.lambda.powertools.parameters.appconfig;
2116

17+
import org.assertj.core.api.Assertions;
2218
import org.junit.jupiter.api.BeforeEach;
2319
import org.junit.jupiter.api.Test;
2420
import org.mockito.ArgumentCaptor;
2521
import org.mockito.Captor;
2622
import org.mockito.Mock;
2723
import org.mockito.Mockito;
24+
import org.mockito.MockitoAnnotations;
2825
import software.amazon.awssdk.core.SdkBytes;
2926
import software.amazon.awssdk.services.appconfigdata.AppConfigDataClient;
3027
import software.amazon.awssdk.services.appconfigdata.model.GetLatestConfigurationRequest;
@@ -52,7 +49,7 @@ public class AppConfigProviderTest {
5249

5350
@BeforeEach
5451
public void init() {
55-
openMocks(this);
52+
MockitoAnnotations.openMocks(this);
5653

5754
provider = AppConfigProvider.builder()
5855
.withClient(client)
@@ -101,18 +98,18 @@ public void getValueRetrievesValue() {
10198
String returnedValue3 = provider.getValue(defaultTestKey);
10299

103100
// Assert
104-
assertThat(returnedValue1).isEqualTo(firstResponse.configuration().asUtf8String());
105-
assertThat(returnedValue2).isEqualTo(secondResponse.configuration().asUtf8String());
106-
assertThat(returnedValue3).isEqualTo(secondResponse.configuration()
101+
Assertions.assertThat(returnedValue1).isEqualTo(firstResponse.configuration().asUtf8String());
102+
Assertions.assertThat(returnedValue2).isEqualTo(secondResponse.configuration().asUtf8String());
103+
Assertions.assertThat(returnedValue3).isEqualTo(secondResponse.configuration()
107104
.asUtf8String()); // Third response is mocked to return null and should re-use previous value
108-
assertThat(startSessionRequestCaptor.getValue().applicationIdentifier()).isEqualTo(applicationName);
109-
assertThat(startSessionRequestCaptor.getValue().environmentIdentifier()).isEqualTo(environmentName);
110-
assertThat(startSessionRequestCaptor.getValue().configurationProfileIdentifier()).isEqualTo(defaultTestKey);
111-
assertThat(getLatestConfigurationRequestCaptor.getAllValues().get(0).configurationToken()).isEqualTo(
105+
Assertions.assertThat(startSessionRequestCaptor.getValue().applicationIdentifier()).isEqualTo(applicationName);
106+
Assertions.assertThat(startSessionRequestCaptor.getValue().environmentIdentifier()).isEqualTo(environmentName);
107+
Assertions.assertThat(startSessionRequestCaptor.getValue().configurationProfileIdentifier()).isEqualTo(defaultTestKey);
108+
Assertions.assertThat(getLatestConfigurationRequestCaptor.getAllValues().get(0).configurationToken()).isEqualTo(
112109
firstSession.initialConfigurationToken());
113-
assertThat(getLatestConfigurationRequestCaptor.getAllValues().get(1).configurationToken()).isEqualTo(
110+
Assertions.assertThat(getLatestConfigurationRequestCaptor.getAllValues().get(1).configurationToken()).isEqualTo(
114111
firstResponse.nextPollConfigurationToken());
115-
assertThat(getLatestConfigurationRequestCaptor.getAllValues().get(2).configurationToken()).isEqualTo(
112+
Assertions.assertThat(getLatestConfigurationRequestCaptor.getAllValues().get(2).configurationToken()).isEqualTo(
116113
secondResponse.nextPollConfigurationToken());
117114
}
118115

@@ -136,7 +133,7 @@ public void getValueNoValueExists() {
136133

137134

138135
// Assert
139-
assertThat(returnedValue).isEqualTo(null);
136+
Assertions.assertThat(returnedValue).isEqualTo(null);
140137
}
141138

142139
/**
@@ -172,15 +169,15 @@ public void multipleKeysRetrievalWorks() {
172169
String secondKeyValue = provider.getValue(param2Key);
173170

174171
// Assert
175-
assertThat(firstKeyValue).isEqualTo(param1Response.configuration().asUtf8String());
176-
assertThat(secondKeyValue).isEqualTo(param2Response.configuration().asUtf8String());
177-
assertThat(startSessionRequestCaptor.getAllValues().get(0).configurationProfileIdentifier()).isEqualTo(
172+
Assertions.assertThat(firstKeyValue).isEqualTo(param1Response.configuration().asUtf8String());
173+
Assertions.assertThat(secondKeyValue).isEqualTo(param2Response.configuration().asUtf8String());
174+
Assertions.assertThat(startSessionRequestCaptor.getAllValues().get(0).configurationProfileIdentifier()).isEqualTo(
178175
param1Key);
179-
assertThat(startSessionRequestCaptor.getAllValues().get(1).configurationProfileIdentifier()).isEqualTo(
176+
Assertions.assertThat(startSessionRequestCaptor.getAllValues().get(1).configurationProfileIdentifier()).isEqualTo(
180177
param2Key);
181-
assertThat(getLatestConfigurationRequestCaptor.getAllValues().get(0).configurationToken()).isEqualTo(
178+
Assertions.assertThat(getLatestConfigurationRequestCaptor.getAllValues().get(0).configurationToken()).isEqualTo(
182179
param1Session.initialConfigurationToken());
183-
assertThat(getLatestConfigurationRequestCaptor.getAllValues().get(1).configurationToken()).isEqualTo(
180+
Assertions.assertThat(getLatestConfigurationRequestCaptor.getAllValues().get(1).configurationToken()).isEqualTo(
184181
param2Session.initialConfigurationToken());
185182

186183
}
@@ -189,15 +186,15 @@ public void multipleKeysRetrievalWorks() {
189186
public void getMultipleValuesThrowsException() {
190187

191188
// Act & Assert
192-
assertThatRuntimeException().isThrownBy(() -> provider.getMultipleValues("path"))
189+
Assertions.assertThatRuntimeException().isThrownBy(() -> provider.getMultipleValues("path"))
193190
.withMessage("Retrieving multiple parameter values is not supported with the AWS App Config Provider");
194191
}
195192

196193
@Test
197194
public void testAppConfigProviderBuilderMissingCacheManager_throwsException() {
198195

199196
// Act & Assert
200-
assertThatIllegalStateException().isThrownBy(() -> AppConfigProvider.builder()
197+
Assertions.assertThatIllegalStateException().isThrownBy(() -> AppConfigProvider.builder()
201198
.withEnvironment(environmentName)
202199
.withApplication(applicationName)
203200
.withClient(client)
@@ -209,7 +206,7 @@ public void testAppConfigProviderBuilderMissingCacheManager_throwsException() {
209206
public void testAppConfigProviderBuilderMissingEnvironment_throwsException() {
210207

211208
// Act & Assert
212-
assertThatIllegalStateException().isThrownBy(() -> AppConfigProvider.builder()
209+
Assertions.assertThatIllegalStateException().isThrownBy(() -> AppConfigProvider.builder()
213210
.withCacheManager(new CacheManager())
214211
.withApplication(applicationName)
215212
.withClient(client)
@@ -221,7 +218,7 @@ public void testAppConfigProviderBuilderMissingEnvironment_throwsException() {
221218
public void testAppConfigProviderBuilderMissingApplication_throwsException() {
222219

223220
// Act & Assert
224-
assertThatIllegalStateException().isThrownBy(() -> AppConfigProvider.builder()
221+
Assertions.assertThatIllegalStateException().isThrownBy(() -> AppConfigProvider.builder()
225222
.withCacheManager(new CacheManager())
226223
.withEnvironment(environmentName)
227224
.withClient(client)

powertools-parameters/powertools-parameters-tests/src/test/java/software/amazon/lambda/powertools/parameters/ParamManagerIntegrationTest.java

-10
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,4 @@ public void secretsProvider_get() {
133133
verify(secretsManagerClient, times(1)).getSecretValue(any(GetSecretValueRequest.class));
134134
}
135135

136-
@Test
137-
public void getAppConfigProvider() {
138-
139-
// Act
140-
AppConfigProvider provider = ParamManager.getAppConfigProvider(appConfigDataClient, "test-env", "test-app");
141-
142-
// Assert
143-
assertThat(provider).isNotNull();
144-
145-
}
146136
}

powertools-parameters/powertools-parameters-tests/src/test/java/software/amazon/lambda/powertools/parameters/ParamManagerTest.java

-6
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,4 @@ public void testGetDynamoDBProvider_requireOtherParameters_throwException() {
9090
assertThatIllegalArgumentException().isThrownBy(() -> ParamManager.getProvider(DynamoDbProvider.class));
9191
}
9292

93-
@Test
94-
public void testGetAppConfigProvider_requireOtherParameters_throwException() {
95-
96-
// Act & Assert
97-
assertThatIllegalArgumentException().isThrownBy(() -> ParamManager.getProvider(AppConfigProvider.class));
98-
}
9993
}

powertools-parameters/src/main/java/software/amazon/lambda/powertools/parameters/ParamManager.java

-40
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
import java.lang.reflect.Constructor;
1818
import java.util.concurrent.ConcurrentHashMap;
19-
import software.amazon.awssdk.services.appconfigdata.AppConfigDataClient;
2019
import software.amazon.lambda.powertools.parameters.cache.CacheManager;
2120
import software.amazon.lambda.powertools.parameters.transform.TransformationManager;
2221

@@ -44,48 +43,9 @@ public static <T extends BaseProvider> T getProvider(Class<T> providerClass) {
4443
if (providerClass == null) {
4544
throw new IllegalStateException("providerClass cannot be null.");
4645
}
47-
if (providerClass == AppConfigProvider.class) {
48-
throw new IllegalArgumentException(
49-
providerClass + " cannot be instantiated like this, additional parameters are required");
50-
}
5146
return (T) providers.computeIfAbsent(providerClass, ParamManager::createProvider);
5247
}
5348

54-
/**
55-
* Get a {@link AppConfigProvider} with default {@link AppConfigDataClient}.<br/>
56-
* If you need to customize the region, or other part of the client, use {@link ParamManager#getAppConfigProvider(AppConfigDataClient, String, String)} instead.
57-
*
58-
* @return a {@link AppConfigProvider}
59-
*/
60-
public static AppConfigProvider getAppConfigProvider(String environment, String application) {
61-
// Because we need a DDB table name to configure our client, we can't use
62-
// ParamManager#getProvider. This means that we need to make sure we do the same stuff -
63-
// set transformation manager and cache manager.
64-
return AppConfigProvider.builder()
65-
.withCacheManager(cacheManager)
66-
.withTransformationManager(transformationManager)
67-
.withEnvironment(environment)
68-
.withApplication(application)
69-
.build();
70-
}
71-
72-
/**
73-
* Get a {@link AppConfigProvider} with your custom {@link AppConfigDataClient}.<br/>
74-
* Use this to configure region or other part of the client. Use {@link ParamManager#getAppConfigProvider(String, String)} if you don't need this customization.
75-
*
76-
* @return a {@link AppConfigProvider}
77-
*/
78-
public static AppConfigProvider getAppConfigProvider(AppConfigDataClient client, String environment,
79-
String application) {
80-
return (AppConfigProvider) providers.computeIfAbsent(AppConfigProvider.class, (k) -> AppConfigProvider.builder()
81-
.withClient(client)
82-
.withCacheManager(cacheManager)
83-
.withTransformationManager(transformationManager)
84-
.withEnvironment(environment)
85-
.withApplication(application)
86-
.build());
87-
}
88-
8949

9050
public static CacheManager getCacheManager() {
9151
return cacheManager;

0 commit comments

Comments
 (0)