constructor = aClass.getConstructor(parameterTypes);
diff --git a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaEnvironment.java b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaEnvironment.java
index 2d47b49..52f5e1b 100644
--- a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaEnvironment.java
+++ b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaEnvironment.java
@@ -26,7 +26,6 @@ public interface CapaEnvironment {
*
* + AWS
* + ALIBABA
- * + CTRIP
*
*
* @return the deploy cloud name
diff --git a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaProperties.java b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaProperties.java
index 17ad9d8..2d7c044 100644
--- a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaProperties.java
+++ b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaProperties.java
@@ -27,7 +27,10 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Properties;
@@ -73,10 +76,10 @@ public abstract class CapaProperties {
});
/**
- * Capa's plugin properties supplier.
+ * Capa's plugins properties supplier.
*/
- public static final Function PLUGIN_PROPERTIES_SUPPLIER
- = (clazz) -> FILE_CACHE_MAP.computeIfAbsent(clazz.getName(),
+ public static final Function PLUGINS_PROPERTIES_SUPPLIER
+ = (clazz) -> (List) FILE_CACHE_MAP.computeIfAbsent(clazz.getName(),
s -> loadCapaFileByJavaSpi(clazz));
/**
@@ -122,14 +125,19 @@ static T loadCapaConfig(final String fileName, Class configClazz) {
}
}
- static T loadCapaFileByJavaSpi(Class configClazz) {
+ static List loadCapaFileByJavaSpi(Class configClazz) {
try {
ServiceLoader loader = ServiceLoader.load(configClazz);
Iterator iterator = loader.iterator();
if (!iterator.hasNext()) {
- return null;
+ return Collections.emptyList();
}
- return iterator.next();
+ List objs = new ArrayList<>(1);
+ while (iterator.hasNext()) {
+ T obj = iterator.next();
+ objs.add(obj);
+ }
+ return objs;
} catch (Exception e) {
throw new IllegalArgumentException(configClazz.getName() + " spi file not found.", e);
}
diff --git a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/plugin/PluginLoader.java b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/plugin/PluginLoader.java
index de783be..15a03b1 100644
--- a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/plugin/PluginLoader.java
+++ b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/plugin/PluginLoader.java
@@ -18,6 +18,8 @@
import group.rxcloud.capa.infrastructure.CapaClassLoader;
+import java.util.Collections;
+import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
@@ -28,13 +30,13 @@
*/
public final class PluginLoader {
- private static final Map pluginImplCache;
+ private static final Map pluginImplCache;
static {
pluginImplCache = new ConcurrentHashMap<>();
}
- public static Map getPluginImplCache() {
+ public static Map getPluginImplCache() {
return pluginImplCache;
}
@@ -46,9 +48,25 @@ public static Map getPluginImplCache() {
* @return the optional of plugin impl
*/
public static Optional loadPluginImpl(Class pluginSuperClazz) {
- Object o = pluginImplCache.computeIfAbsent(pluginSuperClazz,
- aClass -> CapaClassLoader.loadPluginClassObj(pluginSuperClazz));
- return Optional.ofNullable((T) o);
+ List list = pluginImplCache.computeIfAbsent(pluginSuperClazz,
+ aClass -> CapaClassLoader.loadPluginClassObjs(pluginSuperClazz));
+ if (list == null || list.isEmpty()) {
+ return Optional.empty();
+ }
+ return Optional.ofNullable(list.get(0));
+ }
+
+ /**
+ * Load plugin impls by java spi.
+ *
+ * @param the plugin interface type
+ * @param pluginSuperClazz the plugin interface class
+ * @return the optional of plugin impls
+ */
+ public static Optional> loadPluginImpls(Class pluginSuperClazz) {
+ List list = pluginImplCache.computeIfAbsent(pluginSuperClazz,
+ aClass -> CapaClassLoader.loadPluginClassObjs(pluginSuperClazz));
+ return Optional.ofNullable(list);
}
/**
@@ -60,14 +78,14 @@ public static Optional loadPluginImpl(Class pluginSuperClazz) {
* @return the plugin impl
*/
public static T loadPluginImpl(Class pluginSuperClazz, Supplier defaultPluginObj) {
- Object o = pluginImplCache.computeIfAbsent(pluginSuperClazz,
+ List list = pluginImplCache.computeIfAbsent(pluginSuperClazz,
aClass -> {
- T pluginClassObj = CapaClassLoader.loadPluginClassObj(pluginSuperClazz);
- if (pluginClassObj != null) {
- return pluginClassObj;
+ Optional t = loadPluginImpl(pluginSuperClazz);
+ if (t.isPresent()) {
+ return Collections.singletonList(t.get());
}
- return defaultPluginObj.get();
+ return Collections.singletonList(defaultPluginObj.get());
});
- return (T) o;
+ return (T) list.get(0);
}
}
diff --git a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/utils/SpiUtils.java b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/utils/SpiUtils.java
deleted file mode 100644
index 0bf4b12..0000000
--- a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/utils/SpiUtils.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package group.rxcloud.capa.infrastructure.utils;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import group.rxcloud.capa.infrastructure.CapaProperties;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.nio.charset.StandardCharsets;
-import java.util.Map;
-import java.util.Properties;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Load class and create instance from config file.
- * TODO move to {@link CapaProperties}
- */
-@Deprecated
-public final class SpiUtils {
-
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper()
- .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
- .setSerializationInclusion(JsonInclude.Include.NON_NULL);
-
- private static final Map CACHE = new ConcurrentHashMap<>();
-
- private SpiUtils() {
- }
-
- public static T loadConfigNullable(String path, Class configType) {
- try (InputStream in = configType.getResourceAsStream(path)) {
- if (in != null) {
- InputStreamReader inputStreamReader = new InputStreamReader(in, StandardCharsets.UTF_8);
- return OBJECT_MAPPER.readValue(inputStreamReader, configType);
- }
- } catch (IOException e) {
- }
- return null;
- }
-
- @Nullable
- public static T loadFromSpiComponentFileNullable(Class type, String fileSuffix) {
- return loadFromSpiComponentFileNullable(type, null, null, fileSuffix, false);
- }
-
- @Nullable
- public static T loadFromSpiComponentFileNullable(Class type, Class[] argTypes, Object[] args,
- String fileSuffix, boolean cache) {
- try {
- Properties properties = CapaProperties.COMPONENT_PROPERTIES_SUPPLIER.apply(fileSuffix);
- String path = properties.getProperty(type.getName());
- if (path != null) {
- return doNewInstance(path, type, argTypes, args, cache);
- }
- return null;
- } catch (Throwable e) {
- }
- return null;
- }
-
- @Nullable
- public static T newInstanceWithConstructorCache(String path, Class type) {
- return newInstance(path, type, null, null, true);
- }
-
- @Nullable
- public static T newInstance(String path, Class type, Class[] argTypes, Object[] args, boolean cache) {
- if (path == null) {
- return null;
- }
- return doNewInstance(path, type, argTypes, args, cache);
- }
-
- private static String keyOf(String path, Class type, Class[] argTypes) {
- StringBuilder builder = new StringBuilder(type.getName()).append('=').append(path);
- if (argTypes != null) {
- for (Class arg : argTypes) {
- builder.append('_').append(arg.getName());
- }
- }
- return builder.toString();
- }
-
- @Nonnull
- private static T doNewInstance(String path, Class type, Class[] argTypes, Object[] args, boolean cache) {
- String key = keyOf(path, type, argTypes);
- Constructor targetCons = cache
- ? CACHE.computeIfAbsent(key, k -> findConstructor(path, type, argTypes))
- : findConstructor(path, type, argTypes);
- try {
- return targetCons.getParameterCount() == 0 ? targetCons.newInstance() : targetCons.newInstance(args);
- } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
- throw new IllegalArgumentException("Fail to create component. targetType = " + type.getName(), e);
- }
- }
-
- private static Constructor findConstructor(String path, Class type, Class[] argTypes) {
- try {
- Class aClass = path == null ? type : (Class) Class.forName(path);
- return aClass.getConstructor(argTypes);
- } catch (ClassNotFoundException | NoSuchMethodException e) {
- throw new IllegalArgumentException("Fail to find the constructor. path = " + path, e);
- }
- }
-}
diff --git a/sdk-spi-demo/pom.xml b/sdk-spi-demo/pom.xml
index db60b90..0335e60 100644
--- a/sdk-spi-demo/pom.xml
+++ b/sdk-spi-demo/pom.xml
@@ -23,7 +23,7 @@
capa-parent
group.rxcloud
- 1.11.13.2.RELEASE
+ 2.11.1.RELEASE
capa-sdk-spi-demo
diff --git a/sdk-spi-demo/src/main/java/group/rxcloud/capa/spi/demo/http/DemoCapaHttp.java b/sdk-spi-demo/src/main/java/group/rxcloud/capa/spi/demo/http/DemoCapaHttp.java
index 8e14a28..9308cb1 100644
--- a/sdk-spi-demo/src/main/java/group/rxcloud/capa/spi/demo/http/DemoCapaHttp.java
+++ b/sdk-spi-demo/src/main/java/group/rxcloud/capa/spi/demo/http/DemoCapaHttp.java
@@ -18,9 +18,7 @@
import group.rxcloud.capa.component.http.HttpResponse;
import group.rxcloud.capa.infrastructure.serializer.CapaObjectSerializer;
-import group.rxcloud.capa.spi.demo.http.config.DemoRpcServiceOptions;
import group.rxcloud.capa.spi.http.CapaSerializeHttpSpi;
-import group.rxcloud.capa.spi.http.config.RpcServiceOptions;
import group.rxcloud.cloudruntimes.utils.TypeRef;
import okhttp3.OkHttpClient;
import org.slf4j.Logger;
@@ -54,11 +52,7 @@ protected CompletableFuture> invokeSpiApi(String appId,
String httpMethod,
Map headers,
Map> urlParameters,
- TypeRef type,
- RpcServiceOptions rpcServiceOptions) {
- DemoRpcServiceOptions demoRpcServiceOptions = (DemoRpcServiceOptions) rpcServiceOptions;
- logger.info("[DemoCapaHttp.invokeSpiApi] rpcServiceOptions[{}]", demoRpcServiceOptions);
-
+ TypeRef type) {
return CompletableFuture.supplyAsync(
() -> {
logger.info("[DemoCapaHttp.invokeSpiApi] supplyAsync[{}]", System.currentTimeMillis());
diff --git a/sdk-spi-demo/src/main/java/group/rxcloud/capa/spi/demo/http/config/DemoRpcServiceOptions.java b/sdk-spi-demo/src/main/java/group/rxcloud/capa/spi/demo/http/config/DemoRpcServiceOptions.java
deleted file mode 100644
index a826018..0000000
--- a/sdk-spi-demo/src/main/java/group/rxcloud/capa/spi/demo/http/config/DemoRpcServiceOptions.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package group.rxcloud.capa.spi.demo.http.config;
-
-import group.rxcloud.capa.spi.http.config.RpcServiceOptions;
-
-/**
- * RPC service options. Define for AppId.
- */
-public class DemoRpcServiceOptions implements RpcServiceOptions {
-
- /**
- * Unique rpc service ID
- */
- private final String appId;
-
- /**
- * Instantiates a new Capa rpc service options.
- *
- * @param appId the app id
- */
- public DemoRpcServiceOptions(String appId) {
- this.appId = appId;
- }
-}
diff --git a/sdk-spi-demo/src/main/java/group/rxcloud/capa/spi/demo/http/config/DemoSpiOptionsLoader.java b/sdk-spi-demo/src/main/java/group/rxcloud/capa/spi/demo/http/config/DemoSpiOptionsLoader.java
deleted file mode 100644
index 5d069fd..0000000
--- a/sdk-spi-demo/src/main/java/group/rxcloud/capa/spi/demo/http/config/DemoSpiOptionsLoader.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package group.rxcloud.capa.spi.demo.http.config;
-
-import group.rxcloud.capa.spi.http.config.CapaSpiOptionsLoader;
-
-import java.util.Objects;
-
-public class DemoSpiOptionsLoader implements CapaSpiOptionsLoader {
-
- @Override
- public DemoRpcServiceOptions loadRpcServiceOptions(String appId) {
- Objects.requireNonNull(appId, "appId");
- return new DemoRpcServiceOptions(appId);
- }
-}
diff --git a/sdk-spi-demo/src/main/resources/capa-component-rpc-common.properties b/sdk-spi-demo/src/main/resources/capa-component-rpc-common.properties
deleted file mode 100644
index 603ac10..0000000
--- a/sdk-spi-demo/src/main/resources/capa-component-rpc-common.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-# rpc spi options class loader
-group.rxcloud.capa.spi.http.config.CapaSpiOptionsLoader=group.rxcloud.capa.spi.demo.http.config.DemoSpiOptionsLoader
\ No newline at end of file
diff --git a/sdk-spi/pom.xml b/sdk-spi/pom.xml
index 2537bf6..99336a4 100644
--- a/sdk-spi/pom.xml
+++ b/sdk-spi/pom.xml
@@ -23,7 +23,7 @@
capa-parent
group.rxcloud
- 1.11.13.2.RELEASE
+ 2.11.1.RELEASE
capa-sdk-spi
diff --git a/sdk-spi/src/main/java/group/rxcloud/capa/spi/http/CapaHttpSpi.java b/sdk-spi/src/main/java/group/rxcloud/capa/spi/http/CapaHttpSpi.java
index e2b3291..d27b720 100644
--- a/sdk-spi/src/main/java/group/rxcloud/capa/spi/http/CapaHttpSpi.java
+++ b/sdk-spi/src/main/java/group/rxcloud/capa/spi/http/CapaHttpSpi.java
@@ -21,9 +21,6 @@
import group.rxcloud.capa.infrastructure.exceptions.CapaErrorContext;
import group.rxcloud.capa.infrastructure.exceptions.CapaException;
import group.rxcloud.capa.infrastructure.serializer.CapaObjectSerializer;
-import group.rxcloud.capa.spi.http.config.CapaSpiOptionsLoader;
-import group.rxcloud.capa.spi.http.config.CapaSpiProperties;
-import group.rxcloud.capa.spi.http.config.RpcServiceOptions;
import group.rxcloud.cloudruntimes.utils.TypeRef;
import okhttp3.OkHttpClient;
import org.slf4j.Logger;
@@ -90,18 +87,10 @@ protected CompletableFuture> doInvokeApi(String httpMethod,
version, _invoke, appId, _method, method);
}
- // load spi service options
- RpcServiceOptions rpcServiceOptions = getRpcServiceOptions(appId);
- Objects.requireNonNull(rpcServiceOptions, "rpcServiceOptions");
- if (logger.isDebugEnabled()) {
- logger.debug("[Capa.Rpc.Client.http] [CapaHttpSpi] invoke rpc options[{}]",
- rpcServiceOptions);
- }
-
try {
// spi invoke
CompletableFuture> invokeSpiApi = invokeSpiApi(
- appId, method, requestData, httpMethod, headers, urlParameters, type, rpcServiceOptions);
+ appId, method, requestData, httpMethod, headers, urlParameters, type);
invokeSpiApi.whenComplete(this::callbackLog);
return invokeSpiApi;
} catch (CapaException e) {
@@ -114,17 +103,6 @@ protected CompletableFuture> doInvokeApi(String httpMethod,
}
}
- /**
- * Override to get the configuration of the corresponding appId.
- *
- * @param appId the app id
- * @return the rpc service options
- */
- protected RpcServiceOptions getRpcServiceOptions(String appId) {
- CapaSpiOptionsLoader capaSpiOptionsLoader = CapaSpiProperties.getSpiOptionsLoader();
- return capaSpiOptionsLoader.loadRpcServiceOptions(appId);
- }
-
private void callbackLog(HttpResponse tHttpResponse, Throwable throwable) {
if (throwable != null) {
if (throwable instanceof CapaException) {
@@ -157,15 +135,14 @@ private void callbackLog(HttpResponse tHttpResponse, Throwable throwable)
/**
* Invoke spi api and then return async completable future.
*
- * @param the response type parameter
- * @param appId the app id
- * @param method the invoke method
- * @param requestData the request data
- * @param httpMethod the http method
- * @param headers the headers
- * @param urlParameters the url parameters
- * @param type the response type
- * @param rpcServiceOptions the rpc service options
+ * @param the response type parameter
+ * @param appId the app id
+ * @param method the invoke method
+ * @param requestData the request data
+ * @param httpMethod the http method
+ * @param headers the headers
+ * @param urlParameters the url parameters
+ * @param type the response type
* @return the async completable future
*/
protected abstract CompletableFuture> invokeSpiApi(String appId,
@@ -174,6 +151,5 @@ protected abstract CompletableFuture> invokeSpiApi(String ap
String httpMethod,
Map headers,
Map> urlParameters,
- TypeRef type,
- RpcServiceOptions rpcServiceOptions);
+ TypeRef type);
}
diff --git a/sdk-spi/src/main/java/group/rxcloud/capa/spi/http/config/CapaSpiProperties.java b/sdk-spi/src/main/java/group/rxcloud/capa/spi/http/config/CapaSpiProperties.java
deleted file mode 100644
index 5a1550f..0000000
--- a/sdk-spi/src/main/java/group/rxcloud/capa/spi/http/config/CapaSpiProperties.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package group.rxcloud.capa.spi.http.config;
-
-import group.rxcloud.capa.infrastructure.CapaClassLoader;
-
-/**
- * The Capa SPI environment.
- */
-public abstract class CapaSpiProperties {
-
- /**
- * Static lock object.
- */
- private static final Object LOCK = new Object();
-
- private static volatile CapaSpiOptionsLoader instance;
-
- /**
- * Gets default options loader.
- *
- * @return the default options loader
- */
- public static CapaSpiOptionsLoader getSpiOptionsLoader() {
- if (instance == null) {
- synchronized (LOCK) {
- if (instance == null) {
- instance = CapaClassLoader.loadComponentClassObj("rpc-common", CapaSpiOptionsLoader.class);
- }
- }
- }
- // load spi rpc impl
- return instance;
- }
-}
diff --git a/sdk-spi/src/main/java/group/rxcloud/capa/spi/http/config/RpcServiceOptions.java b/sdk-spi/src/main/java/group/rxcloud/capa/spi/http/config/RpcServiceOptions.java
deleted file mode 100644
index 23f1b9d..0000000
--- a/sdk-spi/src/main/java/group/rxcloud/capa/spi/http/config/RpcServiceOptions.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package group.rxcloud.capa.spi.http.config;
-
-
-/**
- * RPC service options. Define for AppId.
- */
-public interface RpcServiceOptions {
-}
diff --git a/sdk-spi/src/main/java/group/rxcloud/capa/spi/telemetry/CapaContextAsyncWrapperSpi.java b/sdk-spi/src/main/java/group/rxcloud/capa/spi/telemetry/CapaContextAsyncWrapperPluginSpi.java
similarity index 88%
rename from sdk-spi/src/main/java/group/rxcloud/capa/spi/telemetry/CapaContextAsyncWrapperSpi.java
rename to sdk-spi/src/main/java/group/rxcloud/capa/spi/telemetry/CapaContextAsyncWrapperPluginSpi.java
index 55cf4c4..6419e87 100644
--- a/sdk-spi/src/main/java/group/rxcloud/capa/spi/telemetry/CapaContextAsyncWrapperSpi.java
+++ b/sdk-spi/src/main/java/group/rxcloud/capa/spi/telemetry/CapaContextAsyncWrapperPluginSpi.java
@@ -16,10 +16,10 @@
*/
package group.rxcloud.capa.spi.telemetry;
-import group.rxcloud.capa.component.telemetry.context.CapaContextAsyncWrapper;
+import group.rxcloud.capa.component.telemetry.context.CapaContextAsyncWrapperPlugin;
/**
* SPI Capa context async wrapper.
*/
-public abstract class CapaContextAsyncWrapperSpi implements CapaContextAsyncWrapper {
+public abstract class CapaContextAsyncWrapperPluginSpi implements CapaContextAsyncWrapperPlugin {
}
diff --git a/sdk-spi/src/main/resources/sample/capa-component-rpc-common.properties b/sdk-spi/src/main/resources/sample/capa-component-rpc-common.properties
deleted file mode 100644
index 1e2ea0f..0000000
--- a/sdk-spi/src/main/resources/sample/capa-component-rpc-common.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-# rpc spi options class loader
-group.rxcloud.capa.spi.http.config.CapaSpiOptionsLoader=your-spi-class-path
\ No newline at end of file
diff --git a/sdk-spi/src/test/java/group/rxcloud/capa/spi/http/CapaSerializeHttpSpiTest.java b/sdk-spi/src/test/java/group/rxcloud/capa/spi/http/CapaSerializeHttpSpiTest.java
index 3136b6e..b3b4487 100644
--- a/sdk-spi/src/test/java/group/rxcloud/capa/spi/http/CapaSerializeHttpSpiTest.java
+++ b/sdk-spi/src/test/java/group/rxcloud/capa/spi/http/CapaSerializeHttpSpiTest.java
@@ -22,7 +22,6 @@
import group.rxcloud.capa.infrastructure.serializer.CapaObjectSerializer;
import group.rxcloud.capa.infrastructure.serializer.DefaultObjectSerializer;
import group.rxcloud.capa.infrastructure.serializer.ExtensionObjectSerializer;
-import group.rxcloud.capa.spi.http.config.RpcServiceOptions;
import group.rxcloud.cloudruntimes.utils.TypeRef;
import okhttp3.Headers;
import okhttp3.MediaType;
@@ -183,14 +182,6 @@ public void testOnResponseInSerializationResponseFutureCallback_Success() throws
future.cancel(true);
}
-
- @Test
- public void testGetRpcServiceOptions_Success() {
- RpcServiceOptions rpcServiceOptions = capaSerializeHttpSpi.getRpcServiceOptions("appId");
- String className = rpcServiceOptions.getClass().getName();
- Assertions.assertEquals("group.rxcloud.capa.spi.http.config.TestRpcServiceOptions", className);
- }
-
@Test
public void testDoInvokeApi_Success() throws ExecutionException, InterruptedException {
String[] pathSegments = new String[]{
@@ -298,8 +289,7 @@ protected CompletableFuture> invokeSpiApi(String appId,
String httpMethod,
Map headers,
Map> urlParameters,
- TypeRef type,
- RpcServiceOptions rpcServiceOptions) {
+ TypeRef type) {
return CompletableFuture.supplyAsync(
() -> {
return new HttpResponse<>(null, null, 200);
diff --git a/sdk-spi/src/test/java/group/rxcloud/capa/spi/http/config/TestRpcServiceOptions.java b/sdk-spi/src/test/java/group/rxcloud/capa/spi/http/config/TestRpcServiceOptions.java
deleted file mode 100644
index 6f9f5ff..0000000
--- a/sdk-spi/src/test/java/group/rxcloud/capa/spi/http/config/TestRpcServiceOptions.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package group.rxcloud.capa.spi.http.config;
-
-/**
- * RPC service options used in tests only.
- */
-public class TestRpcServiceOptions implements RpcServiceOptions {
-
- /**
- * Unique rpc service ID
- */
- private final String appId;
-
- /**
- * Instantiates a new Capa rpc service options.
- *
- * @param appId the app id
- */
- public TestRpcServiceOptions(String appId) {
- this.appId = appId;
- }
-}
diff --git a/sdk-spi/src/test/java/group/rxcloud/capa/spi/http/config/TestSpiOptionsLoader.java b/sdk-spi/src/test/java/group/rxcloud/capa/spi/http/config/TestSpiOptionsLoader.java
deleted file mode 100644
index 9d65cdd..0000000
--- a/sdk-spi/src/test/java/group/rxcloud/capa/spi/http/config/TestSpiOptionsLoader.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package group.rxcloud.capa.spi.http.config;
-
-import java.util.Objects;
-
-/**
- * The spi options loader used in tests only.
- */
-public class TestSpiOptionsLoader implements CapaSpiOptionsLoader {
-
- @Override
- public TestRpcServiceOptions loadRpcServiceOptions(String appId) {
- Objects.requireNonNull(appId, "appId");
- return new TestRpcServiceOptions(appId);
- }
-}
\ No newline at end of file
diff --git a/sdk-spi/src/test/resources/capa-component-rpc-common.properties b/sdk-spi/src/test/resources/capa-component-rpc-common.properties
deleted file mode 100644
index d3f0e57..0000000
--- a/sdk-spi/src/test/resources/capa-component-rpc-common.properties
+++ /dev/null
@@ -1 +0,0 @@
-group.rxcloud.capa.spi.http.config.CapaSpiOptionsLoader=group.rxcloud.capa.spi.http.config.TestSpiOptionsLoader
\ No newline at end of file
diff --git a/sdk-springboot/pom.xml b/sdk-springboot/pom.xml
index 921629f..893467d 100644
--- a/sdk-springboot/pom.xml
+++ b/sdk-springboot/pom.xml
@@ -23,7 +23,7 @@
capa-parent
group.rxcloud
- 1.11.13.2.RELEASE
+ 2.11.1.RELEASE
sdk-springboot
diff --git a/sdk/pom.xml b/sdk/pom.xml
index 7bfd1b4..6b1261b 100644
--- a/sdk/pom.xml
+++ b/sdk/pom.xml
@@ -23,7 +23,7 @@
group.rxcloud
capa-parent
- 1.11.13.2.RELEASE
+ 2.11.1.RELEASE
capa-sdk
diff --git a/sdk/src/main/java/group/rxcloud/capa/telemetry/CapaTelemetryClientGlobal.java b/sdk/src/main/java/group/rxcloud/capa/telemetry/CapTelemetryClientExporter.java
similarity index 95%
rename from sdk/src/main/java/group/rxcloud/capa/telemetry/CapaTelemetryClientGlobal.java
rename to sdk/src/main/java/group/rxcloud/capa/telemetry/CapTelemetryClientExporter.java
index 62c3ce6..934a7ab 100644
--- a/sdk/src/main/java/group/rxcloud/capa/telemetry/CapaTelemetryClientGlobal.java
+++ b/sdk/src/main/java/group/rxcloud/capa/telemetry/CapTelemetryClientExporter.java
@@ -27,13 +27,11 @@
import java.util.ArrayList;
import java.util.List;
-public class CapaTelemetryClientGlobal implements CapaTelemetryClient, OpenTelemetry {
+public class CapTelemetryClientExporter implements CapaTelemetryClient, OpenTelemetry {
// noop as default.
private TracerProvider tracerProvider = TracerProvider.noop();
-
private MeterProvider meterProvider = MeterProvider.noop();
-
private ContextPropagators contextPropagators = ContextPropagators.noop();
protected List registryNames;
@@ -43,7 +41,7 @@ public List registryNames() {
return registryNames;
}
- CapaTelemetryClientGlobal() {
+ CapTelemetryClientExporter() {
this.registryNames = new ArrayList<>(1);
this.registryNames.add("opentelemetry");
}
@@ -129,5 +127,8 @@ public Mono buildMeter(String meterName, String version, String schemaUrl
@Override
public void close() {
+ tracerProvider = null;
+ meterProvider = null;
+ contextPropagators = null;
}
}
diff --git a/sdk/src/main/java/group/rxcloud/capa/telemetry/CapaTelemetryClientBuilder.java b/sdk/src/main/java/group/rxcloud/capa/telemetry/CapaTelemetryClientBuilder.java
index fb8d324..eb065e4 100644
--- a/sdk/src/main/java/group/rxcloud/capa/telemetry/CapaTelemetryClientBuilder.java
+++ b/sdk/src/main/java/group/rxcloud/capa/telemetry/CapaTelemetryClientBuilder.java
@@ -16,102 +16,36 @@
*/
package group.rxcloud.capa.telemetry;
-import group.rxcloud.capa.component.telemetry.SamplerConfig;
import group.rxcloud.capa.component.telemetry.context.CapaContextPropagatorBuilder;
-import group.rxcloud.capa.component.telemetry.context.CapaContextPropagatorSettings;
-import group.rxcloud.capa.component.telemetry.context.ContextConfig;
import group.rxcloud.capa.component.telemetry.metrics.CapaMeterProviderBuilder;
-import group.rxcloud.capa.component.telemetry.metrics.CapaMeterProviderSettings;
-import group.rxcloud.capa.component.telemetry.metrics.MeterConfig;
-import group.rxcloud.capa.component.telemetry.metrics.MetricsReaderConfig;
import group.rxcloud.capa.component.telemetry.trace.CapaTracerProviderBuilder;
-import group.rxcloud.capa.component.telemetry.trace.CapaTracerProviderSettings;
-import group.rxcloud.capa.component.telemetry.trace.SpanLimitsConfig;
-import group.rxcloud.capa.component.telemetry.trace.TracerConfig;
-import io.opentelemetry.context.propagation.TextMapPropagator;
-import io.opentelemetry.sdk.trace.IdGenerator;
-import io.opentelemetry.sdk.trace.SpanProcessor;
-
-import java.util.function.Supplier;
/**
* A builder for the {@link CapaTelemetryClient}
*/
-public class CapaTelemetryClientBuilder implements CapaContextPropagatorSettings, CapaTracerProviderSettings, CapaMeterProviderSettings {
-
- private final CapaTracerProviderBuilder tracerProviderBuilder = new CapaTracerProviderBuilder();
-
- private final CapaMeterProviderBuilder meterProviderBuilder = new CapaMeterProviderBuilder();
-
- private final CapaContextPropagatorBuilder contextPropagatorBuilder = new CapaContextPropagatorBuilder();
-
- @Override
- public CapaTelemetryClientBuilder setTracerConfig(TracerConfig tracerConfig) {
- tracerProviderBuilder.setTracerConfig(tracerConfig);
- return this;
- }
+public class CapaTelemetryClientBuilder {
- @Override
- public CapaTelemetryClientBuilder setSpanLimits(SpanLimitsConfig spanLimits) {
- tracerProviderBuilder.setSpanLimits(spanLimits);
- return this;
- }
-
- @Override
- public CapaTelemetryClientBuilder setIdGenerator(IdGenerator idGenerator) {
- tracerProviderBuilder.setIdGenerator(idGenerator);
- return this;
- }
+ /**
+ * Bind to {@code telemetry} component
+ */
+ private final CapaTracerProviderBuilder tracerProviderBuilder;
+ private final CapaMeterProviderBuilder meterProviderBuilder;
+ private final CapaContextPropagatorBuilder contextPropagatorBuilder;
- @Override
- public CapaTelemetryClientBuilder addProcessor(SpanProcessor processor) {
- tracerProviderBuilder.addProcessor(processor);
- return this;
- }
-
- @Override
- public CapaTelemetryClientBuilder setContextConfig(ContextConfig config) {
- contextPropagatorBuilder.setContextConfig(config);
- return this;
- }
-
- @Override
- public CapaTelemetryClientBuilder addContextPropagators(TextMapPropagator processor) {
- contextPropagatorBuilder.addContextPropagators(processor);
- return this;
- }
-
- @Override
- public CapaTelemetryClientBuilder setMeterConfig(MeterConfig config) {
- meterProviderBuilder.setMeterConfig(config);
- return this;
- }
-
- @Override
- public CapaTelemetryClientBuilder addMetricReaderConfig(MetricsReaderConfig config) {
- meterProviderBuilder.addMetricReaderConfig(config);
- return this;
- }
-
- @Override
- public CapaTelemetryClientBuilder setSamplerConfig(Supplier samplerConfig) {
- meterProviderBuilder.setSamplerConfig(samplerConfig);
- tracerProviderBuilder.setSamplerConfig(samplerConfig);
- return this;
+ public CapaTelemetryClientBuilder() {
+ tracerProviderBuilder = new CapaTracerProviderBuilder();
+ meterProviderBuilder = new CapaMeterProviderBuilder();
+ contextPropagatorBuilder = new CapaContextPropagatorBuilder();
}
public CapaTelemetryClient build() {
- CapaTelemetryClientGlobal client = new CapaTelemetryClientGlobal();
-
+ CapTelemetryClientExporter client = new CapTelemetryClientExporter();
// context
client.setContextPropagators(contextPropagatorBuilder.buildContextPropagators());
-
// tracer
client.setTracerProvider(tracerProviderBuilder.buildTracerProvider());
-
// meter
client.setMeterProvider(meterProviderBuilder.buildMeterProvider());
-
return client;
}
}
diff --git a/sdk/src/test/java/group/rxcloud/capa/configuration/CapaConfigurationClientBuilderTest.java b/sdk/src/test/java/group/rxcloud/capa/configuration/CapaConfigurationClientBuilderTest.java
index 1e7a8a2..bb18586 100644
--- a/sdk/src/test/java/group/rxcloud/capa/configuration/CapaConfigurationClientBuilderTest.java
+++ b/sdk/src/test/java/group/rxcloud/capa/configuration/CapaConfigurationClientBuilderTest.java
@@ -34,7 +34,9 @@ public class CapaConfigurationClientBuilderTest {
public void testBuild_WithCapaConfigStoreBuilderListAsParametersConstructor() {
CapaConfigStoreBuilder storeBuilder = Mockito.mock(CapaConfigStoreBuilder.class);
CapaConfigStore configStore = Mockito.mock(CapaConfigStore.class);
- Mockito.when(storeBuilder.build()).thenReturn(configStore);
+ Mockito.when(storeBuilder.build())
+ .thenReturn(configStore);
+
CapaConfigurationClientBuilder builder = new CapaConfigurationClientBuilder(Lists.newArrayList(storeBuilder));
Assertions.assertNotNull(builder.build());
}
@@ -43,7 +45,9 @@ public void testBuild_WithCapaConfigStoreBuilderListAsParametersConstructor() {
public void testBuild_WithCapaConfigStoreBuilderSupplierAsParametersConstructor() {
CapaConfigStoreBuilder storeBuilder = Mockito.mock(CapaConfigStoreBuilder.class);
CapaConfigStore configStore = Mockito.mock(CapaConfigStore.class);
- Mockito.when(storeBuilder.build()).thenReturn(configStore);
+ Mockito.when(storeBuilder.build())
+ .thenReturn(configStore);
+
CapaConfigurationClientBuilder builder = new CapaConfigurationClientBuilder(() -> storeBuilder);
Assertions.assertNotNull(builder.build());
}
diff --git a/sdk/src/test/java/group/rxcloud/capa/configuration/CapaConfigurationClientStoreTest.java b/sdk/src/test/java/group/rxcloud/capa/configuration/CapaConfigurationClientStoreTest.java
index 3538fcb..55feee5 100644
--- a/sdk/src/test/java/group/rxcloud/capa/configuration/CapaConfigurationClientStoreTest.java
+++ b/sdk/src/test/java/group/rxcloud/capa/configuration/CapaConfigurationClientStoreTest.java
@@ -48,25 +48,29 @@ public class CapaConfigurationClientStoreTest {
@Test
public void testSaveConfiguration_FailWhenThrowUnsupportedOperationException() {
CapaConfigurationClientStore clientStore = new CapaConfigurationClientStore(Collections.emptyList());
- Assertions.assertThrows(UnsupportedOperationException.class, () -> clientStore.saveConfiguration(new SaveConfigurationRequest()).block());
+ Assertions.assertThrows(UnsupportedOperationException.class,
+ () -> clientStore.saveConfiguration(new SaveConfigurationRequest()).block());
}
@Test
public void testDeleteConfiguration_FailWhenThrowUnsupportedOperationException() {
CapaConfigurationClientStore clientStore = new CapaConfigurationClientStore(Collections.emptyList());
- Assertions.assertThrows(UnsupportedOperationException.class, () -> clientStore.deleteConfiguration(new ConfigurationRequestItem()).block());
+ Assertions.assertThrows(UnsupportedOperationException.class,
+ () -> clientStore.deleteConfiguration(new ConfigurationRequestItem()).block());
}
@Test
public void testGetConfiguration_FailWhenThrowUnsupportedOperationException() {
CapaConfigurationClientStore clientStore = new CapaConfigurationClientStore(Collections.emptyList());
- Assertions.assertThrows(UnsupportedOperationException.class, () -> clientStore.getConfiguration(new ConfigurationRequestItem(),TypeRef.STRING).block());
+ Assertions.assertThrows(UnsupportedOperationException.class,
+ () -> clientStore.getConfiguration(new ConfigurationRequestItem(), TypeRef.STRING).block());
}
@Test
public void testSubscribeConfiguration_FailWhenThrowUnsupportedOperationException() {
CapaConfigurationClientStore clientStore = new CapaConfigurationClientStore(Collections.emptyList());
- Assertions.assertThrows(UnsupportedOperationException.class, () -> clientStore.subscribeConfiguration(new ConfigurationRequestItem(),TypeRef.STRING).blockFirst());
+ Assertions.assertThrows(UnsupportedOperationException.class,
+ () -> clientStore.subscribeConfiguration(new ConfigurationRequestItem(), TypeRef.STRING).blockFirst());
}
@Test
@@ -78,19 +82,21 @@ public void testShutDown_Success() {
@Test
public void testGetConfiguration_FailWhenStoreNameIsNull() {
CapaConfigurationClientStore clientStore = new CapaConfigurationClientStore(Collections.emptyList());
- Assertions.assertThrows(CapaException.class, () -> clientStore.getConfiguration("qconfig", "123", Lists.newArrayList("testKey1"), Collections.emptyMap(), TypeRef.STRING).block());
+ Assertions.assertThrows(CapaException.class,
+ () -> clientStore.getConfiguration("apollo", "123", Lists.newArrayList("testKey1"), Collections.emptyMap(), TypeRef.STRING).block());
}
@Test
public void testGetConfigurationLevel1_FailWhenStoreNameIsNull() {
CapaConfigurationClientStore clientStore = new CapaConfigurationClientStore(Collections.emptyList());
- Assertions.assertThrows(CapaException.class, () -> clientStore.getConfiguration("qconfig", "123", Lists.newArrayList("testKey1"), Collections.emptyMap(), null, TypeRef.STRING).block());
+ Assertions.assertThrows(CapaException.class,
+ () -> clientStore.getConfiguration("apollo", "123", Lists.newArrayList("testKey1"), Collections.emptyMap(), null, TypeRef.STRING).block());
}
@Test
public void testGetConfiguration_SuccessWithConfigurationHasValue() {
CapaConfigurationClientStore clientStore = new CapaConfigurationClientStore(constructConfigStoreListWithConfirgurationItemHasValue());
- Mono>> configuration = clientStore.getConfiguration("qconfig", "123", Lists.newArrayList(), Collections.emptyMap(), null, null, TypeRef.STRING);
+ Mono>> configuration = clientStore.getConfiguration("apollo", "123", Lists.newArrayList(), Collections.emptyMap(), null, null, TypeRef.STRING);
List> configurationItems = configuration.block();
Assertions.assertNotNull(configurationItems);
Assertions.assertEquals(1, configurationItems.size());
@@ -105,7 +111,7 @@ public void testGetConfiguration_SuccessWithConfigurationHasValue() {
@Test
public void testGetConfiguration_SuccessWithConfigurationItemIsEmpty() {
CapaConfigurationClientStore clientStore = new CapaConfigurationClientStore(constructConfigStoreListWithConfigurationItemIsEmpty());
- Mono>> configuration = clientStore.getConfiguration("qconfig", "123", Lists.newArrayList("testKey1"), Collections.emptyMap(), "testGroup", "testLabel", TypeRef.STRING);
+ Mono>> configuration = clientStore.getConfiguration("apollo", "123", Lists.newArrayList("testKey1"), Collections.emptyMap(), "testGroup", "testLabel", TypeRef.STRING);
List> configurationItems = configuration.block();
Assertions.assertNull(configurationItems);
}
@@ -113,7 +119,8 @@ public void testGetConfiguration_SuccessWithConfigurationItemIsEmpty() {
@Test
public void testSubscribeConfiguration_SuccessWithSubscribeRespHasValue() {
CapaConfigStore mockConfigStore = Mockito.mock(CapaConfigStore.class);
- Mockito.when(mockConfigStore.getStoreName()).thenReturn("qconfig");
+ Mockito.when(mockConfigStore.getStoreName())
+ .thenReturn("apollo");
SubscribeResp subscribeResp = new SubscribeResp<>();
List> result = new ArrayList<>();
@@ -124,16 +131,17 @@ public void testSubscribeConfiguration_SuccessWithSubscribeRespHasValue() {
configurationItem.setLabel("testLabel");
result.add(configurationItem);
subscribeResp.setItems(result);
- Mockito.when(mockConfigStore.subscribe(any(SubscribeReq.class), any(TypeRef.class))).thenReturn(Flux.just(subscribeResp));
+ Mockito.when(mockConfigStore.subscribe(any(SubscribeReq.class), any(TypeRef.class)))
+ .thenReturn(Flux.just(subscribeResp));
CapaConfigurationClientStore clientStore = new CapaConfigurationClientStore(Lists.newArrayList(mockConfigStore));
-
ConfigurationRequestItem configurationRequestItem = new ConfigurationRequestItem();
- configurationRequestItem.setStoreName("qconfig");
- Flux> subConfigurationRespFlux = clientStore.subscribeConfiguration("qconfig", "123", Lists.newArrayList("testKey1"), Collections.emptyMap(), TypeRef.STRING);
+ configurationRequestItem.setStoreName("apollo");
+ Flux> subConfigurationRespFlux = clientStore.subscribeConfiguration("apollo", "123", Lists.newArrayList("testKey1"), Collections.emptyMap(), TypeRef.STRING);
SubConfigurationResp stringSubConfigurationResp = subConfigurationRespFlux.blockFirst();
Assertions.assertNotNull(stringSubConfigurationResp);
Assertions.assertEquals(1, stringSubConfigurationResp.getItems().size());
+
ConfigurationItem firstItem = stringSubConfigurationResp.getItems().get(0);
Assertions.assertEquals("testKey1", firstItem.getKey());
Assertions.assertEquals("testContent", firstItem.getContent());
@@ -144,7 +152,10 @@ public void testSubscribeConfiguration_SuccessWithSubscribeRespHasValue() {
@Test
public void testClose_Success() throws Exception {
CapaConfigStore mockConfigStore = Mockito.mock(CapaConfigStore.class);
- Mockito.doNothing().when(mockConfigStore).close();
+ Mockito.doNothing()
+ .when(mockConfigStore)
+ .close();
+
CapaConfigurationClientStore clientStore = new CapaConfigurationClientStore(Lists.newArrayList(mockConfigStore));
clientStore.close();
Mockito.verify(mockConfigStore).close();
@@ -152,7 +163,8 @@ public void testClose_Success() throws Exception {
private List constructConfigStoreListWithConfirgurationItemHasValue() {
CapaConfigStore mockConfigStore = Mockito.mock(CapaConfigStore.class);
- Mockito.when(mockConfigStore.getStoreName()).thenReturn("qconfig");
+ Mockito.when(mockConfigStore.getStoreName())
+ .thenReturn("apollo");
List> result = new ArrayList<>();
group.rxcloud.capa.component.configstore.ConfigurationItem configurationItem = new group.rxcloud.capa.component.configstore.ConfigurationItem();
@@ -162,17 +174,20 @@ private List constructConfigStoreListWithConfirgurationItemHasV
configurationItem.setLabel("testLabel");
result.add(configurationItem);
Mono>> just = Mono.just(result);
- Mockito.when(mockConfigStore.get(any(GetRequest.class), any(TypeRef.class))).thenReturn(just);
+ Mockito.when(mockConfigStore.get(any(GetRequest.class), any(TypeRef.class)))
+ .thenReturn(just);
return Lists.newArrayList(mockConfigStore);
}
private List constructConfigStoreListWithConfigurationItemIsEmpty() {
CapaConfigStore mockConfigStore = Mockito.mock(CapaConfigStore.class);
- Mockito.when(mockConfigStore.getStoreName()).thenReturn("qconfig");
+ Mockito.when(mockConfigStore.getStoreName())
+ .thenReturn("apollo");
List result = new ArrayList<>();
Mono> just = Mono.just(result);
- Mockito.when(mockConfigStore.get(any(GetRequest.class), any(TypeRef.class))).thenReturn(just);
+ Mockito.when(mockConfigStore.get(any(GetRequest.class), any(TypeRef.class)))
+ .thenReturn(just);
return Lists.newArrayList(mockConfigStore);
}
}
\ No newline at end of file
diff --git a/sdk/src/test/java/group/rxcloud/capa/rpc/CapaRpcClientBuilderTest.java b/sdk/src/test/java/group/rxcloud/capa/rpc/CapaRpcClientBuilderTest.java
index 178176d..0711e4e 100644
--- a/sdk/src/test/java/group/rxcloud/capa/rpc/CapaRpcClientBuilderTest.java
+++ b/sdk/src/test/java/group/rxcloud/capa/rpc/CapaRpcClientBuilderTest.java
@@ -52,7 +52,8 @@ public class CapaRpcClientBuilderTest {
public void setUp() {
okHttpClient = new OkHttpClient.Builder().build();
defaultObjectSerializer = new DefaultObjectSerializer();
- capaRpcClientHttp = new CapaRpcClientHttp(new TestCapaHttp(okHttpClient, defaultObjectSerializer));
+ TestCapaHttp client = new TestCapaHttp(okHttpClient, defaultObjectSerializer);
+ capaRpcClientHttp = new CapaRpcClientHttp(client);
}
@Test
diff --git a/sdk/src/test/java/group/rxcloud/capa/telemetry/CapaTelemetryClientGlobalTest.java b/sdk/src/test/java/group/rxcloud/capa/telemetry/CapTelemetryClientExporterTest.java
similarity index 76%
rename from sdk/src/test/java/group/rxcloud/capa/telemetry/CapaTelemetryClientGlobalTest.java
rename to sdk/src/test/java/group/rxcloud/capa/telemetry/CapTelemetryClientExporterTest.java
index 4c2d13e..6604e6c 100644
--- a/sdk/src/test/java/group/rxcloud/capa/telemetry/CapaTelemetryClientGlobalTest.java
+++ b/sdk/src/test/java/group/rxcloud/capa/telemetry/CapTelemetryClientExporterTest.java
@@ -19,7 +19,6 @@
import io.opentelemetry.api.GlobalOpenTelemetry;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -27,16 +26,16 @@
* @author: chenyijiang
* @date: 2021/11/26 14:12
*/
-public class CapaTelemetryClientGlobalTest {
+public class CapTelemetryClientExporterTest {
@Test
public void getOrCreate() {
CapaTelemetryClient client = new CapaTelemetryClientBuilder().build();
- assertTrue(client instanceof CapaTelemetryClientGlobal);
+ assertTrue(client instanceof CapTelemetryClientExporter);
assertNotNull(client.getContextPropagators());
- assertNotNull(((CapaTelemetryClientGlobal) client).getPropagators());
- assertNotNull(((CapaTelemetryClientGlobal) client).getMeterProvider());
- assertNotNull(((CapaTelemetryClientGlobal) client).getTracerProvider());
+ assertNotNull(((CapTelemetryClientExporter) client).getPropagators());
+ assertNotNull(((CapTelemetryClientExporter) client).getMeterProvider());
+ assertNotNull(((CapTelemetryClientExporter) client).getTracerProvider());
assertNotNull(GlobalOpenTelemetry.get());
}
}
\ No newline at end of file
diff --git a/sdk/src/test/java/group/rxcloud/capa/telemetry/CapaTelemetryClientBuilderTest.java b/sdk/src/test/java/group/rxcloud/capa/telemetry/CapaTelemetryClientBuilderTest.java
index b1632f8..5f55403 100644
--- a/sdk/src/test/java/group/rxcloud/capa/telemetry/CapaTelemetryClientBuilderTest.java
+++ b/sdk/src/test/java/group/rxcloud/capa/telemetry/CapaTelemetryClientBuilderTest.java
@@ -17,11 +17,10 @@
package group.rxcloud.capa.telemetry;
import group.rxcloud.capa.component.telemetry.SamplerConfig;
-import group.rxcloud.capa.component.telemetry.context.ContextConfig;
-import group.rxcloud.capa.component.telemetry.metrics.MeterConfig;
+import group.rxcloud.capa.component.telemetry.metrics.MeterConfigLoader;
import group.rxcloud.capa.component.telemetry.metrics.MetricsReaderConfig;
import group.rxcloud.capa.component.telemetry.trace.SpanLimitsConfig;
-import group.rxcloud.capa.component.telemetry.trace.TracerConfig;
+import group.rxcloud.capa.component.telemetry.trace.TracerConfigLoader;
import io.opentelemetry.api.metrics.LongCounter;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.Tracer;
@@ -62,8 +61,8 @@ public void buildManual() throws InterruptedException {
.setSamplerConfig(() -> SamplerConfig.DEFAULT_CONFIG)
.setSpanLimits(new SpanLimitsConfig())
.setIdGenerator(IdGenerator.random())
- .setTracerConfig(new TracerConfig())
- .setMeterConfig(new MeterConfig())
+ .setTracerConfig(new TracerConfigLoader())
+ .setMeterConfig(new MeterConfigLoader())
.addMetricReaderConfig(readerConfig)
.setContextConfig(new ContextConfig())
.addContextPropagators(W3CTraceContextPropagator.getInstance())
@@ -71,17 +70,17 @@ public void buildManual() throws InterruptedException {
// tracer
Tracer tracer = capaTelemetryClient.buildTracer("tracer-test")
- .block();
+ .block();
LongCounter counter = capaTelemetryClient.buildMeter("meter-test")
- .block()
- .counterBuilder("counter-test")
- .build();
+ .block()
+ .counterBuilder("counter-test")
+ .build();
Span span = tracer.spanBuilder("span-test")
- .setAttribute("key1", 1)
- .setAttribute("key2", 2)
- .startSpan();
+ .setAttribute("key1", 1)
+ .setAttribute("key2", 2)
+ .startSpan();
// working
for (int i = 0; i < 10; i++) {
Thread.sleep(200);
diff --git a/sdk/src/test/java/group/rxcloud/capa/telemetry/MetricTestExporter.java b/sdk/src/test/java/group/rxcloud/capa/telemetry/MetricTestExporter.java
index 3d184b6..4500d6d 100644
--- a/sdk/src/test/java/group/rxcloud/capa/telemetry/MetricTestExporter.java
+++ b/sdk/src/test/java/group/rxcloud/capa/telemetry/MetricTestExporter.java
@@ -26,8 +26,7 @@
public class MetricTestExporter extends CapaMetricsExporter {
- public MetricTestExporter(
- Supplier samplerConfig) {
+ public MetricTestExporter(Supplier samplerConfig) {
super(samplerConfig);
}
diff --git a/sdk/src/test/java/group/rxcloud/capa/telemetry/TraceProcessor.java b/sdk/src/test/java/group/rxcloud/capa/telemetry/TraceProcessor.java
index ab579b0..ddb0108 100644
--- a/sdk/src/test/java/group/rxcloud/capa/telemetry/TraceProcessor.java
+++ b/sdk/src/test/java/group/rxcloud/capa/telemetry/TraceProcessor.java
@@ -25,7 +25,6 @@ public class TraceProcessor implements SpanProcessor {
@Override
public void onStart(Context context, ReadWriteSpan span) {
-
}
@Override
From f2e77b028a681ee91b44fd158aa36dcced23d6dd Mon Sep 17 00:00:00 2001
From: kevinten10 <596823919@qq.com>
Date: Tue, 10 May 2022 23:35:53 +0800
Subject: [PATCH 2/5] refactor: refactor capa v2
---
README.md | 4 +-
README_ZH.md | 4 +-
examples/pom.xml | 13 +-
pom.xml | 115 ++++++++--
sdk-component/pom.xml | 106 ++++++---
.../CapaConfigurationProperties.java | 4 +-
.../capa/component/CapaLogProperties.java | 9 -
.../capa/component/CapaRpcProperties.java | 4 +-
.../component/CapaTelemetryProperties.java | 9 -
.../configstore/CapaConfigStore.java | 5 -
.../configstore/CapaConfigStoreBuilder.java | 2 +-
.../capa/component/http/CapaHttpBuilder.java | 2 +-
.../component/log/CapaLog4jAppenderAgent.java | 2 +-
.../log/CapaLogbackAppenderAgent.java | 2 +-
.../component/pubsub/CapaPubSubBuilder.java | 2 +-
.../context/CapaContextPropagatorBuilder.java | 2 +-
.../metrics/CapaMeterProviderBuilder.java | 4 +-
.../trace/CapaTracerProviderBuilder.java | 2 +-
.../capa-component-rpc-common.properties | 4 +
...iesTest.java => CapaRpcConstantsTest.java} | 2 +-
sdk-infrastructure/pom.xml | 44 +++-
.../capa/infrastructure/CapaConstants.java | 47 ----
.../CapaInfrastructureProperties.java | 55 +++++
.../capa/infrastructure/CapaProperties.java | 145 ------------
.../exceptions/CapaErrorContext.java | 2 +-
.../exceptions/CapaException.java | 4 +-
.../capa/infrastructure/hook/Mixer.java | 2 +-
.../{ => loader}/CapaClassLoader.java | 75 +++---
.../infrastructure/loader/CapaProperties.java | 89 +++++++
.../{ => metainfo}/CapaEnvironment.java | 27 +--
.../infrastructure/plugin/PluginLoader.java | 36 +--
.../infrastructure/plugin/PluginOrder.java | 25 --
.../capa-infrastructure-cloud.properties | 2 +-
.../{ => loader}/CapaPropertiesTest.java | 4 +-
.../capa/infrastructure/utils/MyImpl.java | 22 --
.../infrastructure/utils/MyImplWithArgs.java | 35 ---
.../infrastructure/utils/MyInterface.java | 22 --
.../utils/MyInterfaceWithArgs.java | 22 --
.../infrastructure/utils/SpiUtilsTest.java | 119 ----------
.../resources/capa-component-test.properties | 2 -
.../src/test/resources/config.json | 4 -
.../src/test/resources/config.properties | 1 -
sdk-spi-demo/pom.xml | 2 +-
.../capa/spi/demo/DemoCapaEnvironment.java | 2 +-
.../capa-infrastructure-cloud.properties | 2 +-
sdk-spi/pom.xml | 2 +-
sdk-springboot/pom.xml | 8 +-
.../pubsub/PubSubBeanPostProcessor.java | 9 +-
.../capa/springboot}/pubsub/Topic.java | 2 +-
.../springboot/pubsub/TopicSubscriber.java | 2 +-
.../capa/springboot}/rpc/Controller.java | 2 +-
.../capa/springboot}/rpc/RequestMapping.java | 2 +-
sdk/pom.xml | 61 ++++-
.../AbstractCapaConfigurationClient.java | 18 +-
.../CapaConfigurationClient.java | 3 +
.../CapaConfigurationClientStore.java | 30 ++-
.../capa/pubsub/AbstractCapaPubSubClient.java | 12 +
.../rxcloud/capa/pubsub/CapaPubSubClient.java | 16 ++
.../capa/pubsub/CapaPubSubClientPubSub.java | 54 ++++-
.../capa/pubsub/domain/TopicEventRequest.java | 217 ------------------
.../capa/pubsub/domain/TopicSubscription.java | 59 -----
.../rxcloud/capa/rpc/CapaApiProtocol.java | 8 +-
.../group/rxcloud/capa/rpc/CapaRpcClient.java | 12 +
.../capa/rpc/CapaRpcClientBuilder.java | 16 +-
.../rxcloud/capa/rpc/CapaRpcClientGrpc.java | 61 +++++
.../rxcloud/capa/rpc/CapaRpcClientHttp.java | 18 +-
.../rxcloud/capa/state/CapaStateClient.java | 6 +
.../capa/telemetry/CapaTelemetryClient.java | 8 +
68 files changed, 726 insertions(+), 987 deletions(-)
create mode 100644 sdk-component/src/main/resources/sample/capa-component-rpc-common.properties
rename sdk-component/src/test/java/group/rxcloud/capa/component/{CapaRpcPropertiesTest.java => CapaRpcConstantsTest.java} (97%)
delete mode 100644 sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaConstants.java
create mode 100644 sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaInfrastructureProperties.java
delete mode 100644 sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaProperties.java
rename sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/{ => loader}/CapaClassLoader.java (57%)
create mode 100644 sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/loader/CapaProperties.java
rename sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/{ => metainfo}/CapaEnvironment.java (65%)
delete mode 100644 sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/plugin/PluginOrder.java
rename sdk-infrastructure/src/test/java/group/rxcloud/capa/infrastructure/{ => loader}/CapaPropertiesTest.java (89%)
delete mode 100644 sdk-infrastructure/src/test/java/group/rxcloud/capa/infrastructure/utils/MyImpl.java
delete mode 100644 sdk-infrastructure/src/test/java/group/rxcloud/capa/infrastructure/utils/MyImplWithArgs.java
delete mode 100644 sdk-infrastructure/src/test/java/group/rxcloud/capa/infrastructure/utils/MyInterface.java
delete mode 100644 sdk-infrastructure/src/test/java/group/rxcloud/capa/infrastructure/utils/MyInterfaceWithArgs.java
delete mode 100644 sdk-infrastructure/src/test/java/group/rxcloud/capa/infrastructure/utils/SpiUtilsTest.java
delete mode 100644 sdk-infrastructure/src/test/resources/capa-component-test.properties
delete mode 100644 sdk-infrastructure/src/test/resources/config.json
delete mode 100644 sdk-infrastructure/src/test/resources/config.properties
rename {sdk/src/main/java/group/rxcloud/capa => sdk-springboot/src/main/java/group/rxcloud/capa/springboot}/pubsub/Topic.java (97%)
rename {sdk/src/main/java/group/rxcloud/capa => sdk-springboot/src/main/java/group/rxcloud/capa/springboot}/rpc/Controller.java (96%)
rename {sdk/src/main/java/group/rxcloud/capa => sdk-springboot/src/main/java/group/rxcloud/capa/springboot}/rpc/RequestMapping.java (96%)
delete mode 100644 sdk/src/main/java/group/rxcloud/capa/pubsub/domain/TopicEventRequest.java
delete mode 100644 sdk/src/main/java/group/rxcloud/capa/pubsub/domain/TopicSubscription.java
create mode 100644 sdk/src/main/java/group/rxcloud/capa/rpc/CapaRpcClientGrpc.java
diff --git a/README.md b/README.md
index 2685205..7771053 100644
--- a/README.md
+++ b/README.md
@@ -120,7 +120,7 @@ For a Maven project, add the following to your pom.xml file:
group.rxcloud
capa-sdk
- 2.11.1.RELEASE
+ 2.12.1.RELEASE
...
@@ -140,7 +140,7 @@ Sample implementation library:
group.rxcloud
capa-sdk-spi-demo
- 2.11.1.RELEASE
+ 2.12.1.RELEASE
...
diff --git a/README_ZH.md b/README_ZH.md
index a441a20..5bfa15d 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -118,7 +118,7 @@ For a Maven project, add the following to your pom.xml file:
group.rxcloud
capa-sdk
- 2.11.1.RELEASE
+ 2.12.1.RELEASE
...
@@ -138,7 +138,7 @@ Sample implementation library:
group.rxcloud
capa-sdk-spi-demo
- 2.11.1.RELEASE
+ 2.12.1.RELEASE
...
diff --git a/examples/pom.xml b/examples/pom.xml
index b6886f0..a84989b 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -23,7 +23,7 @@
capa-parent
group.rxcloud
- 2.11.1.RELEASE
+ 2.12.1.RELEASE
capa-examples
@@ -33,6 +33,7 @@
2.17.1
1.2.10
+ 1.18.22
@@ -52,12 +53,6 @@
org.apache.logging.log4j
log4j-core
${log4j.version}
-
-
- log4j-api
- org.apache.logging.log4j
-
-
+
org.projectlombok
lombok
- 1.18.2
+ ${lombok.version}
diff --git a/pom.xml b/pom.xml
index f39ee8a..ba9f895 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
group.rxcloud
capa-parent
pom
- 2.11.1.RELEASE
+ 2.12.1.RELEASE
capa-sdk-parent
SDK for Capa.
https://github.com/capa-cloud
@@ -81,17 +81,29 @@
8
UTF-8
3.8.1
- 1.11.RELEASE
+
+
+ 1.12.RELEASE
3.3.22.RELEASE
- 1.7.21
- 1.39.0
- 2.12.4
+ 1.7.36
+ 0.10.4
+ 1.0.8
1.9.0
1.9.0-alpha
+ 4.9.1
+ 1.4.10
+ 2.17.1
+ 1.2.10
+ 2.13.2.2
+ 1.45.1
+ 2.9.0
+
+
5.3.1
3.6.0
2.0.2
+
3.1.2
0.13
2.7
@@ -137,46 +149,113 @@
group.rxcloud
cloud-runtimes-api
${cloud-runtimes.version}
+ true
-
io.projectreactor
reactor-core
${reactor-core.version}
+ true
-
org.slf4j
slf4j-api
${slf4j.version}
+ true
+
+
+
+
+ org.apache.logging.log4j
+ log4j-core
+ ${log4j.version}
+ true
+
+
+
+
+ ch.qos.logback
+ logback-core
+ ${logback.version}
+ true
+
+
+ ch.qos.logback
+ logback-classic
+ ${logback.version}
+ true
+
+
+
+ io.opentelemetry
+ opentelemetry-api
+ ${open.telemetry.version}
+ true
+
+
+ io.opentelemetry
+ opentelemetry-api-metrics
+ ${open.telemetry.version.alpha}
+ true
+
+
+
+ group.rxcloud
+ vrml
+ ${vrml.version}
+ pom
+ import
+ true
+
+
+
+ io.vavr
+ vavr
+ ${vavr.version}
+ true
-
com.fasterxml.jackson.core
jackson-databind
${jackson.version}
+ true
-
io.grpc
grpc-protobuf
${grpc.version}
-
-
+
+
- io.opentelemetry
- opentelemetry-api
- ${open.telemetry.version}
+ com.google.code.gson
+ gson
+ ${gson.version}
+ true
+
- io.opentelemetry
- opentelemetry-api-metrics
- ${open.telemetry.version.alpha}
+ com.squareup.okhttp3
+ okhttp
+ ${okhttp.version}
+ true
+
+
+
+ org.jetbrains.kotlin
+ kotlin-stdlib
+ ${kotlin-stdlib.version}
+ true
+
+
+ org.jetbrains.kotlin
+ kotlin-stdlib-common
+ ${kotlin-stdlib.version}
+ true
@@ -335,7 +414,7 @@
**/*.load
**/*.flex
**/*.fc
- **/*.properties
+ **/*.constants
**/*.sh
**/*.bat
**/*.md
diff --git a/sdk-component/pom.xml b/sdk-component/pom.xml
index f30f32b..16ccf63 100644
--- a/sdk-component/pom.xml
+++ b/sdk-component/pom.xml
@@ -23,7 +23,7 @@
group.rxcloud
capa-parent
- 2.11.1.RELEASE
+ 2.12.1.RELEASE
capa-sdk-component
@@ -31,11 +31,7 @@
SDK Component for Capa
- 4.9.1
- 1.4.10
- 2.17.1
- 1.2.10
-
+
@@ -44,66 +40,114 @@
capa-sdk-infrastructure
-
+
+
+ group.rxcloud
+ cloud-runtimes-api
+ true
+
+
+
+ io.projectreactor
+ reactor-core
+ true
+
+
+
+ org.slf4j
+ slf4j-api
+ true
+
+
io.opentelemetry
- opentelemetry-sdk
- ${open.telemetry.version}
+ opentelemetry-api
+ true
io.opentelemetry
- opentelemetry-sdk-metrics
- ${open.telemetry.version.alpha}
+ opentelemetry-api-metrics
+ true
+
+
+
+ group.rxcloud
+ vrml-core
+ true
+
+
+ group.rxcloud
+ vrml-error
+ true
+
+
+ group.rxcloud
+ vrml-resource
+ true
+
+
+ group.rxcloud
+ vrml-spi
+ true
+
+
+
+ io.vavr
+ vavr
+ true
+
+
+
+ io.grpc
+ grpc-protobuf
+ true
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ true
+
+
+
+ com.google.code.gson
+ gson
+ true
-
com.squareup.okhttp3
okhttp
- ${okhttp.version}
-
-
- kotlin-stdlib
- org.jetbrains.kotlin
-
-
- kotlin-stdlib-common
- org.jetbrains.kotlin
-
-
+ true
-
org.jetbrains.kotlin
kotlin-stdlib
- ${kotlin-stdlib.version}
+ true
org.jetbrains.kotlin
kotlin-stdlib-common
- ${kotlin-stdlib.version}
+ true
-
+
org.apache.logging.log4j
log4j-core
- ${log4j.version}
true
+
ch.qos.logback
logback-core
- ${logback.version}
true
ch.qos.logback
logback-classic
- ${logback.version}
-
true
diff --git a/sdk-component/src/main/java/group/rxcloud/capa/component/CapaConfigurationProperties.java b/sdk-component/src/main/java/group/rxcloud/capa/component/CapaConfigurationProperties.java
index e4bdf42..5e0db53 100644
--- a/sdk-component/src/main/java/group/rxcloud/capa/component/CapaConfigurationProperties.java
+++ b/sdk-component/src/main/java/group/rxcloud/capa/component/CapaConfigurationProperties.java
@@ -16,7 +16,7 @@
*/
package group.rxcloud.capa.component;
-import group.rxcloud.capa.infrastructure.CapaProperties;
+import group.rxcloud.capa.infrastructure.loader.CapaProperties;
import java.util.Arrays;
import java.util.Collections;
@@ -35,7 +35,7 @@ abstract class Settings {
private static final String CONFIGURATION_COMPONENT_STORE_NAMES = "CONFIGURATION_COMPONENT_STORE_NAMES";
static {
- Properties properties = CapaProperties.COMPONENT_PROPERTIES_SUPPLIER.apply("configuration-common");
+ Properties properties = CapaProperties.loadComponentProperties("configuration-common");
String storeNames = properties.getProperty(CONFIGURATION_COMPONENT_STORE_NAMES, "");
if (storeNames != null) {
diff --git a/sdk-component/src/main/java/group/rxcloud/capa/component/CapaLogProperties.java b/sdk-component/src/main/java/group/rxcloud/capa/component/CapaLogProperties.java
index 67a5c12..5abad9e 100644
--- a/sdk-component/src/main/java/group/rxcloud/capa/component/CapaLogProperties.java
+++ b/sdk-component/src/main/java/group/rxcloud/capa/component/CapaLogProperties.java
@@ -20,13 +20,4 @@
* Capa log component common properties.
*/
public interface CapaLogProperties {
-
- abstract class Settings {
-
- static {
- }
-
- private Settings() {
- }
- }
}
diff --git a/sdk-component/src/main/java/group/rxcloud/capa/component/CapaRpcProperties.java b/sdk-component/src/main/java/group/rxcloud/capa/component/CapaRpcProperties.java
index 085483f..74b5c8d 100644
--- a/sdk-component/src/main/java/group/rxcloud/capa/component/CapaRpcProperties.java
+++ b/sdk-component/src/main/java/group/rxcloud/capa/component/CapaRpcProperties.java
@@ -16,7 +16,7 @@
*/
package group.rxcloud.capa.component;
-import group.rxcloud.capa.infrastructure.CapaProperties;
+import group.rxcloud.capa.infrastructure.loader.CapaProperties;
import java.util.Properties;
@@ -48,7 +48,7 @@ abstract class Settings {
private static final Integer DEFAULT_HTTP_CLIENT_READTIMEOUTSECONDS = 60;
static {
- Properties properties = CapaProperties.COMPONENT_PROPERTIES_SUPPLIER.apply("rpc");
+ Properties properties = CapaProperties.loadComponentProperties("rpc-common");
API_PROTOCOL = properties.getProperty("API_PROTOCOL", DEFAULT_API_PROTOCOL);
diff --git a/sdk-component/src/main/java/group/rxcloud/capa/component/CapaTelemetryProperties.java b/sdk-component/src/main/java/group/rxcloud/capa/component/CapaTelemetryProperties.java
index 01f1057..d188b5b 100644
--- a/sdk-component/src/main/java/group/rxcloud/capa/component/CapaTelemetryProperties.java
+++ b/sdk-component/src/main/java/group/rxcloud/capa/component/CapaTelemetryProperties.java
@@ -20,13 +20,4 @@
* Capa telemetry component common properties.
*/
public interface CapaTelemetryProperties {
-
- abstract class Settings {
-
- static {
- }
-
- private Settings() {
- }
- }
}
diff --git a/sdk-component/src/main/java/group/rxcloud/capa/component/configstore/CapaConfigStore.java b/sdk-component/src/main/java/group/rxcloud/capa/component/configstore/CapaConfigStore.java
index c4dd186..165aac4 100644
--- a/sdk-component/src/main/java/group/rxcloud/capa/component/configstore/CapaConfigStore.java
+++ b/sdk-component/src/main/java/group/rxcloud/capa/component/configstore/CapaConfigStore.java
@@ -29,11 +29,6 @@
*/
public abstract class CapaConfigStore implements AutoCloseable {
- /**
- * Capa API used in this client.
- */
- public static final String API_VERSION = "v1.0";
-
/**
* A utility class for serialize and deserialize the transient objects.
*/
diff --git a/sdk-component/src/main/java/group/rxcloud/capa/component/configstore/CapaConfigStoreBuilder.java b/sdk-component/src/main/java/group/rxcloud/capa/component/configstore/CapaConfigStoreBuilder.java
index 3fd2c9e..1e235d0 100644
--- a/sdk-component/src/main/java/group/rxcloud/capa/component/configstore/CapaConfigStoreBuilder.java
+++ b/sdk-component/src/main/java/group/rxcloud/capa/component/configstore/CapaConfigStoreBuilder.java
@@ -17,7 +17,7 @@
package group.rxcloud.capa.component.configstore;
-import group.rxcloud.capa.infrastructure.CapaClassLoader;
+import group.rxcloud.capa.infrastructure.loader.CapaClassLoader;
import group.rxcloud.capa.infrastructure.serializer.CapaObjectSerializer;
import group.rxcloud.capa.infrastructure.serializer.DefaultObjectSerializer;
diff --git a/sdk-component/src/main/java/group/rxcloud/capa/component/http/CapaHttpBuilder.java b/sdk-component/src/main/java/group/rxcloud/capa/component/http/CapaHttpBuilder.java
index 2aca826..8b2649b 100644
--- a/sdk-component/src/main/java/group/rxcloud/capa/component/http/CapaHttpBuilder.java
+++ b/sdk-component/src/main/java/group/rxcloud/capa/component/http/CapaHttpBuilder.java
@@ -18,7 +18,7 @@
import group.rxcloud.capa.component.CapaRpcProperties;
-import group.rxcloud.capa.infrastructure.CapaClassLoader;
+import group.rxcloud.capa.infrastructure.loader.CapaClassLoader;
import group.rxcloud.capa.infrastructure.serializer.CapaObjectSerializer;
import group.rxcloud.capa.infrastructure.serializer.DefaultObjectSerializer;
import okhttp3.OkHttpClient;
diff --git a/sdk-component/src/main/java/group/rxcloud/capa/component/log/CapaLog4jAppenderAgent.java b/sdk-component/src/main/java/group/rxcloud/capa/component/log/CapaLog4jAppenderAgent.java
index e2602ef..591b4b3 100644
--- a/sdk-component/src/main/java/group/rxcloud/capa/component/log/CapaLog4jAppenderAgent.java
+++ b/sdk-component/src/main/java/group/rxcloud/capa/component/log/CapaLog4jAppenderAgent.java
@@ -16,7 +16,7 @@
*/
package group.rxcloud.capa.component.log;
-import group.rxcloud.capa.infrastructure.CapaClassLoader;
+import group.rxcloud.capa.infrastructure.loader.CapaClassLoader;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.Filter;
import org.apache.logging.log4j.core.Layout;
diff --git a/sdk-component/src/main/java/group/rxcloud/capa/component/log/CapaLogbackAppenderAgent.java b/sdk-component/src/main/java/group/rxcloud/capa/component/log/CapaLogbackAppenderAgent.java
index 6f841ba..840b2ab 100644
--- a/sdk-component/src/main/java/group/rxcloud/capa/component/log/CapaLogbackAppenderAgent.java
+++ b/sdk-component/src/main/java/group/rxcloud/capa/component/log/CapaLogbackAppenderAgent.java
@@ -18,7 +18,7 @@
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.UnsynchronizedAppenderBase;
-import group.rxcloud.capa.infrastructure.CapaClassLoader;
+import group.rxcloud.capa.infrastructure.loader.CapaClassLoader;
/**
* The agent of the logback impl.
diff --git a/sdk-component/src/main/java/group/rxcloud/capa/component/pubsub/CapaPubSubBuilder.java b/sdk-component/src/main/java/group/rxcloud/capa/component/pubsub/CapaPubSubBuilder.java
index 3ed6f04..a028653 100644
--- a/sdk-component/src/main/java/group/rxcloud/capa/component/pubsub/CapaPubSubBuilder.java
+++ b/sdk-component/src/main/java/group/rxcloud/capa/component/pubsub/CapaPubSubBuilder.java
@@ -16,7 +16,7 @@
*/
package group.rxcloud.capa.component.pubsub;
-import group.rxcloud.capa.infrastructure.CapaClassLoader;
+import group.rxcloud.capa.infrastructure.loader.CapaClassLoader;
/**
* A builder for the {@link CapaPubSub} implementor.
diff --git a/sdk-component/src/main/java/group/rxcloud/capa/component/telemetry/context/CapaContextPropagatorBuilder.java b/sdk-component/src/main/java/group/rxcloud/capa/component/telemetry/context/CapaContextPropagatorBuilder.java
index 18dadf7..6daab93 100644
--- a/sdk-component/src/main/java/group/rxcloud/capa/component/telemetry/context/CapaContextPropagatorBuilder.java
+++ b/sdk-component/src/main/java/group/rxcloud/capa/component/telemetry/context/CapaContextPropagatorBuilder.java
@@ -16,7 +16,7 @@
*/
package group.rxcloud.capa.component.telemetry.context;
-import group.rxcloud.capa.infrastructure.CapaClassLoader;
+import group.rxcloud.capa.infrastructure.loader.CapaClassLoader;
import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.context.propagation.TextMapPropagator;
diff --git a/sdk-component/src/main/java/group/rxcloud/capa/component/telemetry/metrics/CapaMeterProviderBuilder.java b/sdk-component/src/main/java/group/rxcloud/capa/component/telemetry/metrics/CapaMeterProviderBuilder.java
index e94393e..b4dfb01 100644
--- a/sdk-component/src/main/java/group/rxcloud/capa/component/telemetry/metrics/CapaMeterProviderBuilder.java
+++ b/sdk-component/src/main/java/group/rxcloud/capa/component/telemetry/metrics/CapaMeterProviderBuilder.java
@@ -17,12 +17,11 @@
package group.rxcloud.capa.component.telemetry.metrics;
import group.rxcloud.capa.component.telemetry.SamplerConfig;
-import group.rxcloud.capa.infrastructure.CapaClassLoader;
+import group.rxcloud.capa.infrastructure.loader.CapaClassLoader;
import group.rxcloud.capa.infrastructure.utils.SpiUtils;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
-import io.opentelemetry.sdk.metrics.export.MetricExporter;
import io.opentelemetry.sdk.metrics.export.MetricReaderFactory;
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
import org.jetbrains.annotations.NotNull;
@@ -33,7 +32,6 @@
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
-import java.util.function.Supplier;
/**
* Builder for capa metric provider.
diff --git a/sdk-component/src/main/java/group/rxcloud/capa/component/telemetry/trace/CapaTracerProviderBuilder.java b/sdk-component/src/main/java/group/rxcloud/capa/component/telemetry/trace/CapaTracerProviderBuilder.java
index 9c81d41..ca9ed22 100644
--- a/sdk-component/src/main/java/group/rxcloud/capa/component/telemetry/trace/CapaTracerProviderBuilder.java
+++ b/sdk-component/src/main/java/group/rxcloud/capa/component/telemetry/trace/CapaTracerProviderBuilder.java
@@ -17,7 +17,7 @@
package group.rxcloud.capa.component.telemetry.trace;
import group.rxcloud.capa.component.telemetry.SamplerConfig;
-import group.rxcloud.capa.infrastructure.CapaClassLoader;
+import group.rxcloud.capa.infrastructure.loader.CapaClassLoader;
import group.rxcloud.capa.infrastructure.exceptions.CapaErrorContext;
import group.rxcloud.capa.infrastructure.exceptions.CapaException;
import io.opentelemetry.api.trace.TracerProvider;
diff --git a/sdk-component/src/main/resources/sample/capa-component-rpc-common.properties b/sdk-component/src/main/resources/sample/capa-component-rpc-common.properties
new file mode 100644
index 0000000..047531a
--- /dev/null
+++ b/sdk-component/src/main/resources/sample/capa-component-rpc-common.properties
@@ -0,0 +1,4 @@
+# configuration component store names
+API_PROTOCOL=HTTP
+
+HTTP_CLIENT_READ_TIMEOUT_SECONDS=60
\ No newline at end of file
diff --git a/sdk-component/src/test/java/group/rxcloud/capa/component/CapaRpcPropertiesTest.java b/sdk-component/src/test/java/group/rxcloud/capa/component/CapaRpcConstantsTest.java
similarity index 97%
rename from sdk-component/src/test/java/group/rxcloud/capa/component/CapaRpcPropertiesTest.java
rename to sdk-component/src/test/java/group/rxcloud/capa/component/CapaRpcConstantsTest.java
index 9df292b..c14ca5d 100644
--- a/sdk-component/src/test/java/group/rxcloud/capa/component/CapaRpcPropertiesTest.java
+++ b/sdk-component/src/test/java/group/rxcloud/capa/component/CapaRpcConstantsTest.java
@@ -19,7 +19,7 @@
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
-public class CapaRpcPropertiesTest {
+public class CapaRpcConstantsTest {
@Test
public void testGetApiProtocol_Success() {
diff --git a/sdk-infrastructure/pom.xml b/sdk-infrastructure/pom.xml
index 8a269b9..c92273b 100644
--- a/sdk-infrastructure/pom.xml
+++ b/sdk-infrastructure/pom.xml
@@ -23,7 +23,7 @@
capa-parent
group.rxcloud
- 2.11.1.RELEASE
+ 2.12.1.RELEASE
capa-sdk-infrastructure
@@ -31,8 +31,6 @@
SDK infrastructure for Capa
- 0.10.4
- 1.0.1-RELEASE
@@ -40,53 +38,75 @@
group.rxcloud
cloud-runtimes-api
+ true
-
io.projectreactor
reactor-core
+ true
-
org.slf4j
slf4j-api
+ true
-
io.opentelemetry
opentelemetry-api
+ true
io.opentelemetry
opentelemetry-api-metrics
+ true
-
- com.kevinten
+ group.rxcloud
+ vrml-core
+ true
+
+
+ group.rxcloud
vrml-error
- ${vrml.version}
+ true
+
+
+ group.rxcloud
+ vrml-resource
+ true
+
+
+ group.rxcloud
+ vrml-spi
+ true
io.vavr
vavr
- ${vavr.version}
+ true
-
io.grpc
grpc-protobuf
+ true
-
com.fasterxml.jackson.core
jackson-databind
+ true
+
+
+
+ com.google.code.gson
+ gson
+ true
diff --git a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaConstants.java b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaConstants.java
deleted file mode 100644
index 0fa36e1..0000000
--- a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaConstants.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package group.rxcloud.capa.infrastructure;
-
-/**
- * The Capa infrastructure constants.
- */
-interface CapaConstants {
-
- /**
- * The Properties constants.
- */
- interface Properties {
-
- /**
- * The {@code component} properties prefix.
- */
- String CAPA_COMPONENT_PROPERTIES_PREFIX = "/capa-component-";
- /**
- * The {@code infrastructure} properties prefix.
- */
- String CAPA_INFRASTRUCTURE_PROPERTIES_PREFIX = "/capa-infrastructure-";
-
- /**
- * The properties suffix.
- */
- String CAPA_PROPERTIES_SUFFIX = ".properties";
- /**
- * The json suffix.
- */
- String CAPA_JSON_SUFFIX = ".json";
- }
-}
diff --git a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaInfrastructureProperties.java b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaInfrastructureProperties.java
new file mode 100644
index 0000000..4efbf90
--- /dev/null
+++ b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaInfrastructureProperties.java
@@ -0,0 +1,55 @@
+package group.rxcloud.capa.infrastructure;
+
+import group.rxcloud.capa.infrastructure.loader.CapaClassLoader;
+import group.rxcloud.capa.infrastructure.metainfo.CapaEnvironment;
+
+/**
+ * Capa infrastructure common properties.
+ */
+public interface CapaInfrastructureProperties {
+
+ /**
+ * The Properties constants.
+ */
+ interface Constants {
+
+ /**
+ * The {@code component} properties prefix.
+ */
+ String CAPA_COMPONENT_PROPERTIES_PREFIX = "/capa-component-";
+ /**
+ * The {@code infrastructure} properties prefix.
+ */
+ String CAPA_INFRASTRUCTURE_PROPERTIES_PREFIX = "/capa-infrastructure-";
+
+ /**
+ * The properties suffix.
+ */
+ String CAPA_PROPERTIES_SUFFIX = ".properties";
+ /**
+ * The json suffix.
+ */
+ String CAPA_JSON_SUFFIX = ".json";
+ }
+
+ /**
+ * The Settings.
+ */
+ abstract class Settings {
+
+ private static final CapaEnvironment capaEnvironment;
+
+ static {
+ capaEnvironment = CapaClassLoader.loadInfrastructureClassObj("cloud", CapaEnvironment.class);
+ }
+
+ /**
+ * Gets capa environment.
+ *
+ * @return the capa environment
+ */
+ public static CapaEnvironment getCapaEnvironment() {
+ return capaEnvironment;
+ }
+ }
+}
diff --git a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaProperties.java b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaProperties.java
deleted file mode 100644
index 2d7c044..0000000
--- a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaProperties.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package group.rxcloud.capa.infrastructure;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import io.vavr.Function2;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Properties;
-import java.util.ServiceLoader;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.Function;
-
-import static group.rxcloud.capa.infrastructure.CapaConstants.Properties.CAPA_COMPONENT_PROPERTIES_PREFIX;
-import static group.rxcloud.capa.infrastructure.CapaConstants.Properties.CAPA_INFRASTRUCTURE_PROPERTIES_PREFIX;
-import static group.rxcloud.capa.infrastructure.CapaConstants.Properties.CAPA_PROPERTIES_SUFFIX;
-import static group.rxcloud.capa.infrastructure.InnerModule.FILE_CACHE_MAP;
-import static group.rxcloud.capa.infrastructure.InnerModule.loadCapaConfig;
-import static group.rxcloud.capa.infrastructure.InnerModule.loadCapaFileByJavaSpi;
-import static group.rxcloud.capa.infrastructure.InnerModule.loadCapaProperties;
-
-/**
- * Global properties for Capa's SDK, using Supplier so they are dynamically resolved.
- */
-public abstract class CapaProperties {
-
- /**
- * Capa's component properties supplier.
- */
- public static final Function COMPONENT_PROPERTIES_SUPPLIER
- = (componentDomain) -> (Properties) FILE_CACHE_MAP.computeIfAbsent(componentDomain,
- s -> {
- final String fileName = CAPA_COMPONENT_PROPERTIES_PREFIX
- + componentDomain.toLowerCase()
- + CAPA_PROPERTIES_SUFFIX;
- return loadCapaProperties(fileName);
- });
-
- /**
- * Capa's infrastructure properties supplier.
- */
- public static final Function INFRASTRUCTURE_PROPERTIES_SUPPLIER
- = (infrastructureDomain) -> (Properties) FILE_CACHE_MAP.computeIfAbsent(infrastructureDomain,
- s -> {
- final String fileName = CAPA_INFRASTRUCTURE_PROPERTIES_PREFIX
- + infrastructureDomain.toLowerCase()
- + CAPA_PROPERTIES_SUFFIX;
- return loadCapaProperties(fileName);
- });
-
- /**
- * Capa's plugins properties supplier.
- */
- public static final Function PLUGINS_PROPERTIES_SUPPLIER
- = (clazz) -> (List) FILE_CACHE_MAP.computeIfAbsent(clazz.getName(),
- s -> loadCapaFileByJavaSpi(clazz));
-
- /**
- * Capa's config file supplier.
- */
- public static final Function2 CONFIG_FILE_SUPPLIER
- = (fileName, clazz) -> FILE_CACHE_MAP.computeIfAbsent(fileName,
- s -> loadCapaConfig(s, clazz));
-}
-
-interface InnerModule {
-
- /**
- * Capa's file cache map.
- */
- Map FILE_CACHE_MAP = new ConcurrentHashMap<>();
-
- ObjectMapper OBJECT_MAPPER = new ObjectMapper()
- .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
- .setSerializationInclusion(JsonInclude.Include.NON_NULL);
-
- static Properties loadCapaProperties(final String fileName) {
- Objects.requireNonNull(fileName, "fileName not found.");
- try (InputStream in = CapaProperties.class.getResourceAsStream(fileName)) {
- InputStreamReader inputStreamReader = new InputStreamReader(in, StandardCharsets.UTF_8);
- Properties properties = new Properties();
- properties.load(inputStreamReader);
- return properties;
- } catch (IOException e) {
- throw new IllegalArgumentException(fileName + " file not found.", e);
- }
- }
-
- static T loadCapaConfig(final String fileName, Class configClazz) {
- Objects.requireNonNull(fileName, "fileName not found.");
- try (InputStream in = CapaProperties.class.getResourceAsStream(fileName)) {
- InputStreamReader inputStreamReader = new InputStreamReader(in, StandardCharsets.UTF_8);
- return OBJECT_MAPPER.readValue(inputStreamReader, configClazz);
- } catch (JsonParseException | JsonMappingException e) {
- throw new IllegalArgumentException(fileName + " file not load.", e);
- } catch (IOException e) {
- throw new IllegalArgumentException(fileName + " file not found.", e);
- }
- }
-
- static List loadCapaFileByJavaSpi(Class configClazz) {
- try {
- ServiceLoader loader = ServiceLoader.load(configClazz);
- Iterator iterator = loader.iterator();
- if (!iterator.hasNext()) {
- return Collections.emptyList();
- }
- List objs = new ArrayList<>(1);
- while (iterator.hasNext()) {
- T obj = iterator.next();
- objs.add(obj);
- }
- return objs;
- } catch (Exception e) {
- throw new IllegalArgumentException(configClazz.getName() + " spi file not found.", e);
- }
- }
-}
diff --git a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/exceptions/CapaErrorContext.java b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/exceptions/CapaErrorContext.java
index 483eaa8..8460766 100644
--- a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/exceptions/CapaErrorContext.java
+++ b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/exceptions/CapaErrorContext.java
@@ -17,7 +17,7 @@
package group.rxcloud.capa.infrastructure.exceptions;
-import com.kevinten.vrml.error.code.ErrorCodeContext;
+import group.rxcloud.vrml.error.code.ErrorCodeContext;
/**
* Application error info context:
diff --git a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/exceptions/CapaException.java b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/exceptions/CapaException.java
index b6f0a3c..97dac2a 100644
--- a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/exceptions/CapaException.java
+++ b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/exceptions/CapaException.java
@@ -17,8 +17,8 @@
package group.rxcloud.capa.infrastructure.exceptions;
-import com.kevinten.vrml.error.code.ErrorCodeContext;
-import com.kevinten.vrml.error.exception.ErrorCodeException;
+import group.rxcloud.vrml.error.code.ErrorCodeContext;
+import group.rxcloud.vrml.error.exception.ErrorCodeException;
/**
* A Capa's specific exception.
diff --git a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/hook/Mixer.java b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/hook/Mixer.java
index c5c7b85..8ac6bb5 100644
--- a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/hook/Mixer.java
+++ b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/hook/Mixer.java
@@ -16,7 +16,7 @@
*/
package group.rxcloud.capa.infrastructure.hook;
-import group.rxcloud.capa.infrastructure.CapaClassLoader;
+import group.rxcloud.capa.infrastructure.loader.CapaClassLoader;
import io.vavr.Lazy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaClassLoader.java b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/loader/CapaClassLoader.java
similarity index 57%
rename from sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaClassLoader.java
rename to sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/loader/CapaClassLoader.java
index 198e49a..8f50358 100644
--- a/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/CapaClassLoader.java
+++ b/sdk-infrastructure/src/main/java/group/rxcloud/capa/infrastructure/loader/CapaClassLoader.java
@@ -14,28 +14,33 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package group.rxcloud.capa.infrastructure;
+package group.rxcloud.capa.infrastructure.loader;
+
+import group.rxcloud.vrml.core.serialization.Serialization;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
-import java.util.List;
import java.util.Properties;
/**
- * The Capa SPI Class loader.
+ * The Capa SPI Class obj loader.
*/
public final class CapaClassLoader {
+ private static final Logger logger = LoggerFactory.getLogger(CapaClassLoader.class);
+
/**
* Load component class obj.
*
* @param the target class type
* @param componentDomain the component domain
- * @param superClazz the interface class type
+ * @param clazz the interface class type
* @return the target spi class obj
*/
- public static T loadComponentClassObj(String componentDomain, Class superClazz) {
- return loadComponentClassObj(componentDomain, superClazz, null, null);
+ public static T loadComponentClassObj(String componentDomain, Class clazz) {
+ return loadComponentClassObj(componentDomain, clazz, null, null);
}
/**
@@ -43,14 +48,14 @@ public static T loadComponentClassObj(String componentDomain, Class super
*
* @param the target class type
* @param componentDomain the component domain
- * @param superClazz the interface class type
+ * @param clazz the interface class type
* @param parameterTypes the constructor parameters
* @param initargs the constructor initargs
* @return the target spi class obj
*/
- public static T loadComponentClassObj(String componentDomain, Class superClazz, Class>[] parameterTypes, Object[] initargs) {
- Properties properties = CapaProperties.COMPONENT_PROPERTIES_SUPPLIER.apply(componentDomain);
- String implClassPath = properties.getProperty(superClazz.getName());
+ public static T loadComponentClassObj(String componentDomain, Class clazz, Class>[] parameterTypes, Object[] initargs) {
+ Properties properties = CapaProperties.loadComponentProperties(componentDomain);
+ String implClassPath = properties.getProperty(clazz.getName());
return loadClassObj(implClassPath, parameterTypes, initargs);
}
@@ -59,11 +64,11 @@ public static T loadComponentClassObj(String componentDomain, Class super
*
* @param the target class type
* @param infrastructureDomain the infrastructure domain
- * @param superClazz the interface class type
+ * @param clazz the interface class type
* @return the target spi class obj
*/
- public static T loadInfrastructureClassObj(String infrastructureDomain, Class superClazz) {
- return loadInfrastructureClassObj(infrastructureDomain, superClazz, null, null);
+ public static T loadInfrastructureClassObj(String infrastructureDomain, Class clazz) {
+ return loadInfrastructureClassObj(infrastructureDomain, clazz, null, null);
}
/**
@@ -71,50 +76,36 @@ public static T loadInfrastructureClassObj(String infrastructureDomain, Clas
*
* @param the target class type
* @param infrastructureDomain the infrastructure domain
- * @param superClazz the interface class type
+ * @param clazz the interface class type
* @param parameterTypes the constructor parameters
* @param initargs the constructor initargs
* @return the target spi class obj
*/
- public static T loadInfrastructureClassObj(String infrastructureDomain, Class superClazz, Class>[] parameterTypes, Object[] initargs) {
- Properties properties = CapaProperties.INFRASTRUCTURE_PROPERTIES_SUPPLIER.apply(infrastructureDomain);
- String implClassPath = properties.getProperty(superClazz.getName());
+ public static T loadInfrastructureClassObj(String infrastructureDomain, Class clazz, Class>[] parameterTypes, Object[] initargs) {
+ Properties properties = CapaProperties.loadInfrastructureProperties(infrastructureDomain);
+ String implClassPath = properties.getProperty(clazz.getName());
return loadClassObj(implClassPath, parameterTypes, initargs);
}
- /**
- * Load plugin class objs.
- *
- * @param the target class type
- * @param superClazz the interface class type
- * @return the target plugin class objs
- */
- public static List loadPluginClassObjs(Class superClazz) {
- List pluginImpls = CapaProperties.PLUGINS_PROPERTIES_SUPPLIER.apply(superClazz);
- return (List) pluginImpls;
- }
-
// -- Class loader
- public static T loadClassObj(String classPath) {
- try {
- Class aClass = (Class) Class.forName(classPath);
- Constructor constructor = aClass.getConstructor();
- Object newInstance = constructor.newInstance();
- return (T) newInstance;
- } catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException e) {
- throw new IllegalArgumentException("Capa load class error: [" + classPath + "] not found.");
- }
- }
-
- public static T loadClassObj(String classPath, Class>[] parameterTypes, Object[] initargs) {
+ private static T loadClassObj(String classPath, Class>[] parameterTypes, Object[] initargs) {
+ Throwable throwable = null;
try {
Class aClass = (Class