Skip to content

Commit 8399d6c

Browse files
authored
Merge pull request #24 from reactivegroup/refactor/classLoader
refactor: refactor spi class loader
2 parents 45b3bb1 + 982bf7d commit 8399d6c

27 files changed

+274
-146
lines changed

capa-spi-aws-config/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<parent>
2424
<artifactId>capa-aws-parent</artifactId>
2525
<groupId>group.rxcloud</groupId>
26-
<version>1.0.3.RELEASE</version>
26+
<version>1.0.4.RELEASE</version>
2727
</parent>
2828

2929
<artifactId>capa-spi-aws-config</artifactId>

capa-spi-aws-config/src/main/java/group/rxcloud/capa/spi/aws/config/AwsCapaConfigStore.java

Lines changed: 58 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ protected <T> Mono<List<ConfigurationItem<T>>> doGet(String appId, String group,
135135
.clientId(UUID.randomUUID().toString())
136136
.configuration(configurationName)
137137
.clientConfigurationVersion(clientConfigurationVersion)
138-
.environment(AwsCapaConfigurationProperties.AppConfigProperties.Settings.getAwsAppConfigEnv())
138+
.environment(AwsCapaConfigurationProperties.AppConfigProperties.Settings.getConfigAwsAppConfigEnv())
139139
.build();
140140

141141
return Mono.fromFuture(() -> appConfigAsyncClient.getConfiguration(request))
@@ -182,30 +182,30 @@ private synchronized <T> Configuration<T> initConfig(String applicationName, Str
182182
return Configuration.EMPTY;
183183
}
184184
return Mono.create(monoSink -> {
185-
AwsCapaConfigurationScheduler.INSTANCE.configInitScheduler
186-
.schedule(() -> {
187-
String version = getCurVersion(applicationName, configurationName);
188-
189-
GetConfigurationRequest request = GetConfigurationRequest.builder()
190-
.application(applicationName)
191-
.clientId(UUID.randomUUID().toString())
192-
.configuration(configurationName)
193-
.clientConfigurationVersion(version)
194-
.environment(AwsCapaConfigurationProperties.AppConfigProperties.Settings.getAwsAppConfigEnv())
195-
.build();
196-
197-
GetConfigurationResponse resp = null;
198-
try {
199-
resp = appConfigAsyncClient.getConfiguration(request).get();
200-
} catch (InterruptedException | ExecutionException e) {
201-
LOGGER.error("error occurs when getConfiguration,configurationName:{},version:{}", request.configuration(), request.clientConfigurationVersion(), e);
202-
}
203-
if (resp != null && !Objects.equals(resp.configurationVersion(), version)) {
204-
Configuration<T> tConfiguration = initConfigurationItem(applicationName, configurationName, type, resp.content(), resp.configurationVersion());
205-
monoSink.success(tConfiguration);
206-
}
207-
});
208-
})
185+
AwsCapaConfigurationScheduler.INSTANCE.configInitScheduler
186+
.schedule(() -> {
187+
String version = getCurVersion(applicationName, configurationName);
188+
189+
GetConfigurationRequest request = GetConfigurationRequest.builder()
190+
.application(applicationName)
191+
.clientId(UUID.randomUUID().toString())
192+
.configuration(configurationName)
193+
.clientConfigurationVersion(version)
194+
.environment(AwsCapaConfigurationProperties.AppConfigProperties.Settings.getConfigAwsAppConfigEnv())
195+
.build();
196+
197+
GetConfigurationResponse resp = null;
198+
try {
199+
resp = appConfigAsyncClient.getConfiguration(request).get();
200+
} catch (InterruptedException | ExecutionException e) {
201+
LOGGER.error("error occurs when getConfiguration,configurationName:{},version:{}", request.configuration(), request.clientConfigurationVersion(), e);
202+
}
203+
if (resp != null && !Objects.equals(resp.configurationVersion(), version)) {
204+
Configuration<T> tConfiguration = initConfigurationItem(applicationName, configurationName, type, resp.content(), resp.configurationVersion());
205+
monoSink.success(tConfiguration);
206+
}
207+
});
208+
})
209209
.map(resp -> (Configuration<T>) resp)
210210
.block();
211211
}
@@ -224,33 +224,33 @@ private synchronized <T> void createSubscribe(String applicationName, String con
224224
return;
225225
}
226226
Flux.create(fluxSink -> {
227-
AwsCapaConfigurationScheduler.INSTANCE.configSubscribePollingScheduler
228-
.schedulePeriodically(() -> {
229-
String version = getCurVersion(applicationName, configurationName);
230-
231-
GetConfigurationRequest request = GetConfigurationRequest.builder()
232-
.application(applicationName)
233-
.clientId(UUID.randomUUID().toString())
234-
.configuration(configurationName)
235-
.clientConfigurationVersion(version)
236-
.environment(AwsCapaConfigurationProperties.AppConfigProperties.Settings.getAwsAppConfigEnv())
237-
.build();
238-
239-
GetConfigurationResponse resp = null;
240-
try {
241-
resp = appConfigAsyncClient.getConfiguration(request).get();
242-
} catch (InterruptedException | ExecutionException e) {
243-
LOGGER.error("error occurs when getConfiguration,configurationName:{},version:{}", request.configuration(), request.clientConfigurationVersion(), e);
244-
}
245-
// update subscribed status if needs
246-
getConfiguration(applicationName, configurationName).getSubscribed().compareAndSet(false, true);
247-
248-
if (resp != null && !Objects.equals(resp.configurationVersion(), version)) {
249-
fluxSink.next(resp);
250-
}
251-
// todo: make the polling frequency configurable
252-
}, 0, 1, TimeUnit.SECONDS);
253-
})
227+
AwsCapaConfigurationScheduler.INSTANCE.configSubscribePollingScheduler
228+
.schedulePeriodically(() -> {
229+
String version = getCurVersion(applicationName, configurationName);
230+
231+
GetConfigurationRequest request = GetConfigurationRequest.builder()
232+
.application(applicationName)
233+
.clientId(UUID.randomUUID().toString())
234+
.configuration(configurationName)
235+
.clientConfigurationVersion(version)
236+
.environment(AwsCapaConfigurationProperties.AppConfigProperties.Settings.getConfigAwsAppConfigEnv())
237+
.build();
238+
239+
GetConfigurationResponse resp = null;
240+
try {
241+
resp = appConfigAsyncClient.getConfiguration(request).get();
242+
} catch (InterruptedException | ExecutionException e) {
243+
LOGGER.error("error occurs when getConfiguration,configurationName:{},version:{}", request.configuration(), request.clientConfigurationVersion(), e);
244+
}
245+
// update subscribed status if needs
246+
getConfiguration(applicationName, configurationName).getSubscribed().compareAndSet(false, true);
247+
248+
if (resp != null && !Objects.equals(resp.configurationVersion(), version)) {
249+
fluxSink.next(resp);
250+
}
251+
// todo: make the polling frequency configurable
252+
}, 0, 1, TimeUnit.SECONDS);
253+
})
254254
.publishOn(AwsCapaConfigurationScheduler.INSTANCE.configPublisherScheduler)
255255
.map(origin -> {
256256
GetConfigurationResponse resp = (GetConfigurationResponse) origin;
@@ -268,11 +268,12 @@ private <T> Flux<SubscribeResp<T>> doSub(String applicationName, String configur
268268
if (Objects.equals(configuration, Configuration.EMPTY)) {
269269
return Flux.empty();
270270
}
271-
return Flux.create(fluxSink -> {
272-
configuration.addListener(configurationItem -> {
273-
fluxSink.next(configurationItem);
274-
});
275-
})
271+
return Flux
272+
.create(fluxSink -> {
273+
configuration.addListener(configurationItem -> {
274+
fluxSink.next(configurationItem);
275+
});
276+
})
276277
.map(resp -> (ConfigurationItem<T>) resp)
277278
.map(resp -> convert(resp, appId));
278279
}

capa-spi-aws-config/src/main/java/group/rxcloud/capa/spi/aws/config/AwsCapaConfigurationProperties.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
*/
1717
package group.rxcloud.capa.spi.aws.config;
1818

19-
import group.rxcloud.capa.infrastructure.config.CapaProperties;
19+
20+
import group.rxcloud.capa.infrastructure.CapaProperties;
2021

2122
import java.util.Properties;
2223

@@ -32,27 +33,28 @@ abstract class Settings {
3233
private static String awsAppConfigName = "AWS AppConfig";
3334
private static String awsAppConfigEnv = "ENV";
3435

35-
private static final String RPC_AWS_APP_CONFIG_NAME = "RPC_AWS_APP_CONFIG_NAME";
36-
private static final String RPC_AWS_APP_CONFIG_ENV = "RPC_AWS_APP_CONFIG_ENV";
36+
private static final String CONFIGURATION_COMPONENT_STORE_NAME = "CONFIGURATION_COMPONENT_STORE_NAME";
37+
private static final String CONFIG_AWS_APP_CONFIG_ENV = "CONFIG_AWS_APP_CONFIG_ENV";
3738

3839
static {
39-
Properties properties = CapaProperties.COMPONENT_PROPERTIES_SUPPLIER.apply("configuration-aws");
40+
Properties properties = CapaProperties.COMPONENT_PROPERTIES_SUPPLIER.apply("configuration");
41+
42+
awsAppConfigName = properties.getProperty(CONFIGURATION_COMPONENT_STORE_NAME, awsAppConfigName);
4043

41-
awsAppConfigName = properties.getProperty(RPC_AWS_APP_CONFIG_NAME, awsAppConfigName);
44+
Properties awsProperties = CapaProperties.COMPONENT_PROPERTIES_SUPPLIER.apply("configuration-aws");
4245

43-
awsAppConfigEnv = properties.getProperty(RPC_AWS_APP_CONFIG_ENV, awsAppConfigEnv);
46+
awsAppConfigEnv = awsProperties.getProperty(CONFIG_AWS_APP_CONFIG_ENV, awsAppConfigEnv);
4447
}
4548

4649
public static String getAwsAppConfigName() {
4750
return awsAppConfigName;
4851
}
4952

50-
public static String getAwsAppConfigEnv() {
53+
public static String getConfigAwsAppConfigEnv() {
5154
return awsAppConfigEnv;
5255
}
5356

5457
private Settings() {
55-
5658
}
5759
}
5860
}
Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,2 @@
1-
# configstore aws app config name
2-
RPC_AWS_APP_CONFIG_NAME=AWS AppConfig
3-
#
41
# configstore aws app config env
5-
RPC_AWS_APP_CONFIG_ENV=ENV
2+
CONFIG_AWS_APP_CONFIG_ENV=ENV

capa-spi-aws-config/src/main/resources/capa-component-configuration-common.properties

Whitespace-only changes.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
# configuration component
22
group.rxcloud.capa.component.configstore.CapaConfigStore=group.rxcloud.capa.spi.aws.config.AwsCapaConfigStore
3+
#
4+
# configuration component store name
5+
CONFIGURATION_COMPONENT_STORE_NAME=AWS AppConfig

capa-spi-aws-config/src/test/java/group/rxcloud/capa/spi/aws/config/AwsCapaConfigStoreIgnoreTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
*/
3838

3939
class AwsCapaConfigStoreIgnoreTest {
40+
4041
AwsCapaConfigStore ins = new AwsCapaConfigStore(new DefaultObjectSerializer());
4142

4243
@BeforeEach
@@ -47,7 +48,6 @@ public void setUp(){
4748
@Disabled
4849
@Test
4950
void testDoGet(){
50-
5151
Mono<List<ConfigurationItem<User>>> mono = ins.doGet("100012345", "", "", Lists.newArrayList("test1.json"), new HashMap<>(), TypeRef.get(User.class));
5252
mono.subscribe(resp->{
5353
System.out.println(resp.get(0).getContent().getAge());
@@ -61,13 +61,11 @@ void testDoGet(){
6161
while (true){
6262

6363
}
64-
6564
}
6665

6766
@Disabled
6867
@Test
6968
void testDoSubscribe(){
70-
7169
Flux<SubscribeResp<User>> flux1 = ins.doSubscribe("100012345", "", "", Lists.newArrayList("test1.json"), new HashMap<>(), TypeRef.get(User.class));
7270
flux1.subscribe(resp -> {
7371
System.out.println("1:"+resp.getItems().get(0).getContent().getAge());

capa-spi-aws-config/src/test/java/group/rxcloud/capa/spi/aws/config/AwsCapaConfigStoreTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
@FixMethodOrder(MethodSorters.JVM)
5656
@RunWith(PowerMockRunner.class)
5757
class AwsCapaConfigStoreTest {
58+
5859
AwsCapaConfigStore ins;
5960

6061
@BeforeEach

capa-spi-aws-config/src/test/java/group/rxcloud/capa/spi/aws/config/User.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
* @author Reckless Xu
2121
*/
2222
public class User {
23+
2324
private String name;
2425

2526
private Integer age;

capa-spi-aws-config/src/test/java/group/rxcloud/capa/spi/aws/config/serializer/DefaultSerializerTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
* 2021/11/25
2929
*/
3030
class DefaultSerializerTest {
31+
3132
@Test
3233
void testDeserialize_Success(){
3334
SdkBytes sdkBytes = SdkBytes.fromUtf8String("{\n" +

capa-spi-aws-infrastructure/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<parent>
2424
<artifactId>capa-aws-parent</artifactId>
2525
<groupId>group.rxcloud</groupId>
26-
<version>1.0.3.RELEASE</version>
26+
<version>1.0.4.RELEASE</version>
2727
</parent>
2828

2929
<artifactId>capa-spi-aws-infrastructure</artifactId>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
package group.rxcloud.capa.spi.aws.infrastructure;
18+
19+
import group.rxcloud.capa.infrastructure.CapaEnvironment;
20+
import group.rxcloud.capa.infrastructure.CapaProperties;
21+
22+
import java.util.Properties;
23+
24+
/**
25+
* The Aws capa environment.
26+
*/
27+
public class AwsCapaEnvironment implements CapaEnvironment {
28+
29+
@Override
30+
public String getDeployCloud() {
31+
return "AWS";
32+
}
33+
34+
@Override
35+
public String getDeployRegion() {
36+
String regionKey = Settings.getRegionKey();
37+
return System.getProperty(regionKey);
38+
}
39+
40+
@Override
41+
public String getDeployEnv() {
42+
String envKey = Settings.getEnvKey();
43+
return System.getProperty(envKey);
44+
}
45+
46+
abstract static class Settings {
47+
48+
private static String regionKey = "REGION";
49+
private static String envKey = "ENV";
50+
51+
private static final String INFRASTRUCTURE_CLOUD_REGION_KEY = "INFRASTRUCTURE_CLOUD_REGION_KEY";
52+
private static final String INFRASTRUCTURE_CLOUD_ENV_KEY = "INFRASTRUCTURE_CLOUD_ENV_KEY";
53+
54+
static {
55+
Properties properties = CapaProperties.INFRASTRUCTURE_PROPERTIES_SUPPLIER.apply("cloud-aws");
56+
57+
regionKey = properties.getProperty(INFRASTRUCTURE_CLOUD_REGION_KEY, regionKey);
58+
59+
envKey = properties.getProperty(INFRASTRUCTURE_CLOUD_ENV_KEY, envKey);
60+
}
61+
62+
public static String getRegionKey() {
63+
return regionKey;
64+
}
65+
66+
public static String getEnvKey() {
67+
return envKey;
68+
}
69+
70+
private Settings() {
71+
}
72+
}
73+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# region system variable key
2+
INFRASTRUCTURE_CLOUD_REGION_KEY=REGION
3+
#
4+
# env system variable key
5+
INFRASTRUCTURE_CLOUD_ENV_KEY=ENV
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# {@code CapaEnvironment} spi class load
2+
group.rxcloud.capa.infrastructure.CapaEnvironment=group.rxcloud.capa.spi.aws.infrastructure.AwsCapaEnvironment

capa-spi-aws-mesh/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<parent>
2424
<artifactId>capa-aws-parent</artifactId>
2525
<groupId>group.rxcloud</groupId>
26-
<version>1.0.3.RELEASE</version>
26+
<version>1.0.4.RELEASE</version>
2727
</parent>
2828

2929
<artifactId>capa-spi-aws-mesh</artifactId>

capa-spi-aws-mesh/src/main/java/group/rxcloud/capa/spi/aws/mesh/AwsCapaRpcProperties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717
package group.rxcloud.capa.spi.aws.mesh;
1818

19-
import group.rxcloud.capa.infrastructure.config.CapaProperties;
19+
import group.rxcloud.capa.infrastructure.CapaProperties;
2020
import group.rxcloud.capa.infrastructure.exceptions.CapaErrorContext;
2121
import group.rxcloud.capa.infrastructure.exceptions.CapaException;
2222

0 commit comments

Comments
 (0)