[SCB-2625] use clazz.getDeclaredConstructor().newInstance() instead of clazz.newInstance() (#3162)
diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/produce/ProduceProcessorManager.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/produce/ProduceProcessorManager.java
index 78c3d7f..c5d8693 100644
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/produce/ProduceProcessorManager.java
+++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/produce/ProduceProcessorManager.java
@@ -68,7 +68,7 @@
Map<String, ProduceProcessor> produceViewMap) {
ProduceProcessor newInstance;
try {
- newInstance = produceViewMap.get(DEFAULT_SERIAL_CLASS).getClass().newInstance();
+ newInstance = produceViewMap.get(DEFAULT_SERIAL_CLASS).getClass().getDeclaredConstructor().newInstance();
newInstance.setSerializationView(serialViewClass);
return newInstance;
} catch (Throwable e) {
diff --git a/core/src/main/java/org/apache/servicecomb/core/handler/AbstractHandlerManager.java b/core/src/main/java/org/apache/servicecomb/core/handler/AbstractHandlerManager.java
index eb8d205..c823ce3 100644
--- a/core/src/main/java/org/apache/servicecomb/core/handler/AbstractHandlerManager.java
+++ b/core/src/main/java/org/apache/servicecomb/core/handler/AbstractHandlerManager.java
@@ -93,7 +93,7 @@
List<Handler> handlerList = new ArrayList<>();
for (Class<Handler> cls : chainClasses) {
try {
- handlerList.add(cls.newInstance());
+ handlerList.add(cls.getDeclaredConstructor().newInstance());
} catch (Exception e) {
// 在启动阶段直接抛异常出来
throw new Error(e);
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/spring/PaasNamespaceHandler.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/spring/PaasNamespaceHandler.java
index 5b65bf7..f434818 100644
--- a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/spring/PaasNamespaceHandler.java
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/spring/PaasNamespaceHandler.java
@@ -50,10 +50,10 @@
String className = entry.getValue().toString();
try {
Class<?> clazz = Class.forName(className);
- Object instance = clazz.newInstance();
+ Object instance = clazz.getDeclaredConstructor().newInstance();
registerBeanDefinitionParser(entry.getKey().toString(),
(BeanDefinitionParser) instance);
- } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
+ } catch (ReflectiveOperationException e) {
// 类找不到,说明没部署相应的jar包,这不一定是错误
// 可能是业务就选择不部署相应的jar包
// 所以只是打印个info日志
diff --git a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/priority/ConfigObjectFactory.java b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/priority/ConfigObjectFactory.java
index 63a3b9c..ecedf26 100644
--- a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/priority/ConfigObjectFactory.java
+++ b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/priority/ConfigObjectFactory.java
@@ -56,7 +56,7 @@
public <T> ConfigObject<T> create(Class<T> cls, Map<String, Object> parameters) {
try {
- return create(cls.newInstance(), parameters);
+ return create(cls.getDeclaredConstructor().newInstance(), parameters);
} catch (Throwable e) {
throw new IllegalStateException("create config object failed, class=" + cls.getName(), e);
}
diff --git a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/config/AbstractPropertiesLoader.java b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/config/AbstractPropertiesLoader.java
index 723ec0a..4cee687 100644
--- a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/config/AbstractPropertiesLoader.java
+++ b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/config/AbstractPropertiesLoader.java
@@ -65,12 +65,12 @@
throw new Error(errMsg);
}
- PropertyExtended instance = (PropertyExtended) classExternalProperty.newInstance();
+ PropertyExtended instance = (PropertyExtended) classExternalProperty.getDeclaredConstructor().newInstance();
Map<String, String> extendedPropertiesMap = instance.getExtendedProperties();
if (extendedPropertiesMap != null && !extendedPropertiesMap.isEmpty()) {
propertiesMap.putAll(extendedPropertiesMap);
}
- } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
+ } catch (ReflectiveOperationException e) {
String errMsg = "Fail to create instance of class: " + extendedPropertyClass;
LOGGER.error(errMsg);
throw new Error(errMsg, e);
diff --git a/foundations/foundation-ssl/src/main/java/org/apache/servicecomb/foundation/ssl/SSLCustom.java b/foundations/foundation-ssl/src/main/java/org/apache/servicecomb/foundation/ssl/SSLCustom.java
index bec5467..4c11664 100644
--- a/foundations/foundation-ssl/src/main/java/org/apache/servicecomb/foundation/ssl/SSLCustom.java
+++ b/foundations/foundation-ssl/src/main/java/org/apache/servicecomb/foundation/ssl/SSLCustom.java
@@ -45,9 +45,9 @@
public static SSLCustom createSSLCustom(String name) {
try {
if (name != null && !name.isEmpty()) {
- return (SSLCustom) Class.forName(name).newInstance();
+ return (SSLCustom) Class.forName(name).getDeclaredConstructor().newInstance();
}
- } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
+ } catch (ReflectiveOperationException e) {
LOG.warn("init SSLCustom class failed, name is " + name);
}
return defaultSSLCustom();
diff --git a/foundations/foundation-ssl/src/main/java/org/apache/servicecomb/foundation/ssl/SSLOptionFactory.java b/foundations/foundation-ssl/src/main/java/org/apache/servicecomb/foundation/ssl/SSLOptionFactory.java
index a6b55c8..4abe85c 100644
--- a/foundations/foundation-ssl/src/main/java/org/apache/servicecomb/foundation/ssl/SSLOptionFactory.java
+++ b/foundations/foundation-ssl/src/main/java/org/apache/servicecomb/foundation/ssl/SSLOptionFactory.java
@@ -31,8 +31,8 @@
static SSLOptionFactory createSSLOptionFactory(String className) {
if (className != null && !className.isEmpty()) {
try {
- return (SSLOptionFactory) Class.forName(className).newInstance();
- } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
+ return (SSLOptionFactory) Class.forName(className).getDeclaredConstructor().newInstance();
+ } catch (ReflectiveOperationException e) {
throw new IllegalStateException("Failed to create SSLOptionFactory.", e);
}
}
diff --git a/providers/provider-pojo/src/main/java/org/apache/servicecomb/provider/pojo/instance/PojoInstanceFactory.java b/providers/provider-pojo/src/main/java/org/apache/servicecomb/provider/pojo/instance/PojoInstanceFactory.java
index d5ee0f6..291d0cd 100644
--- a/providers/provider-pojo/src/main/java/org/apache/servicecomb/provider/pojo/instance/PojoInstanceFactory.java
+++ b/providers/provider-pojo/src/main/java/org/apache/servicecomb/provider/pojo/instance/PojoInstanceFactory.java
@@ -30,7 +30,7 @@
public Object create(String className) {
try {
Class<?> clazz = Class.forName(className);
- return clazz.newInstance();
+ return clazz.getDeclaredConstructor().newInstance();
} catch (Exception e) {
throw new Error("Fail to create instance of class:" + className, e);
}
diff --git a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/converter/ConverterMgr.java b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/converter/ConverterMgr.java
index b1c8df2..e0900da 100644
--- a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/converter/ConverterMgr.java
+++ b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/converter/ConverterMgr.java
@@ -90,7 +90,7 @@
private static void initTypeFormatMap() {
try {
for (Entry<Class<? extends Property>, JavaType> entry : PROPERTY_MAP.entrySet()) {
- Property property = entry.getKey().newInstance();
+ Property property = entry.getKey().getDeclaredConstructor().newInstance();
String key = genTypeFormatKey(property.getType(), property.getFormat());
TYPE_FORMAT_MAP.put(key, entry.getValue());
}
diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/producer/ProducerBeanParamMapper.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/producer/ProducerBeanParamMapper.java
index 66075af..3b4778f 100644
--- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/producer/ProducerBeanParamMapper.java
+++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/producer/ProducerBeanParamMapper.java
@@ -55,7 +55,7 @@
public void swaggerArgumentToInvocationArguments(SwaggerInvocation invocation,
Map<String, Object> swaggerArguments, Map<String, Object> invocationArguments) {
try {
- Object paramInstance = producerParamType.newInstance();
+ Object paramInstance = producerParamType.getDeclaredConstructor().newInstance();
invocationArguments.put(invocationArgumentName, paramInstance);
for (FieldMeta fieldMeta : fields) {
diff --git a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestTransportClientManager.java b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestTransportClientManager.java
index fd9db2f..b3890ef 100644
--- a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestTransportClientManager.java
+++ b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestTransportClientManager.java
@@ -31,7 +31,7 @@
private RestTransportClientManager() {
try {
- restClient = TransportClientConfig.getRestTransportClientCls().newInstance();
+ restClient = TransportClientConfig.getRestTransportClientCls().getDeclaredConstructor().newInstance();
restClient.init(transportVertx);
} catch (Exception e) {
throw new IllegalStateException("Failed to init RestTransportClient.", e);