You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/12/24 12:48:34 UTC
[shardingsphere] branch master updated: Add generic type of AgentReflectionUtil (#23082)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new a185a10ad46 Add generic type of AgentReflectionUtil (#23082)
a185a10ad46 is described below
commit a185a10ad46c4875877901eb7b45949173d3845c
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sat Dec 24 20:48:27 2022 +0800
Add generic type of AgentReflectionUtil (#23082)
---
.../shardingsphere/agent/core/util/AgentReflectionUtil.java | 12 ++++++++----
.../tracing/jaeger/advice/CommandExecutorTaskAdvice.java | 2 +-
.../tracing/jaeger/advice/JDBCExecutorCallbackAdvice.java | 4 ++--
.../opentelemetry/advice/JDBCExecutorCallbackAdvice.java | 5 ++---
.../tracing/zipkin/advice/CommandExecutorTaskAdvice.java | 2 +-
.../tracing/zipkin/advice/JDBCExecutorCallbackAdvice.java | 4 ++--
6 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/util/AgentReflectionUtil.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/util/AgentReflectionUtil.java
index 187e4ab1a73..9643202215d 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/util/AgentReflectionUtil.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/util/AgentReflectionUtil.java
@@ -35,10 +35,12 @@ public final class AgentReflectionUtil {
*
* @param target target
* @param fieldName field name
+ * @param <T> type of field value
* @return field value
*/
+ @SuppressWarnings("unchecked")
@SneakyThrows(ReflectiveOperationException.class)
- public static Object getFieldValue(final Object target, final String fieldName) {
+ public static <T> T getFieldValue(final Object target, final String fieldName) {
Class<?> clazz = target.getClass();
while (null != clazz) {
try {
@@ -47,7 +49,7 @@ public final class AgentReflectionUtil {
if (!accessible) {
field.setAccessible(true);
}
- Object result = field.get(target);
+ T result = (T) field.get(target);
if (!accessible) {
field.setAccessible(false);
}
@@ -65,15 +67,17 @@ public final class AgentReflectionUtil {
* @param method method
* @param target target
* @param args arguments
+ * @param <T> type of invoke result
* @return invoke result
*/
+ @SuppressWarnings("unchecked")
@SneakyThrows(ReflectiveOperationException.class)
- public static Object invokeMethod(final Method method, final Object target, final Object... args) {
+ public static <T> T invokeMethod(final Method method, final Object target, final Object... args) {
boolean accessible = method.isAccessible();
if (!accessible) {
method.setAccessible(true);
}
- Object result = method.invoke(target, args);
+ T result = (T) method.invoke(target, args);
if (!accessible) {
method.setAccessible(false);
}
diff --git a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/CommandExecutorTaskAdvice.java b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/CommandExecutorTaskAdvice.java
index 9cc709934b3..beb4a32ba59 100644
--- a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/CommandExecutorTaskAdvice.java
+++ b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/CommandExecutorTaskAdvice.java
@@ -49,7 +49,7 @@ public final class CommandExecutorTaskAdvice implements InstanceMethodAdvice {
@Override
public void afterMethod(final TargetAdviceObject target, final Method method, final Object[] args, final Object result) {
ExecutorDataMap.getValue().remove(JaegerConstants.ROOT_SPAN);
- BackendConnection connection = ((ConnectionSession) AgentReflectionUtil.getFieldValue(target, "connectionSession")).getBackendConnection();
+ BackendConnection connection = AgentReflectionUtil.<ConnectionSession>getFieldValue(target, "connectionSession").getBackendConnection();
Scope scope = GlobalTracer.get().scopeManager().active();
scope.span().setTag(JaegerConstants.ShardingSphereTags.CONNECTION_COUNT.getKey(), connection.getConnectionSize());
scope.close();
diff --git a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JDBCExecutorCallbackAdvice.java b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JDBCExecutorCallbackAdvice.java
index 446aba8142e..57f74cfec46 100644
--- a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JDBCExecutorCallbackAdvice.java
+++ b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JDBCExecutorCallbackAdvice.java
@@ -55,8 +55,8 @@ public final class JDBCExecutorCallbackAdvice implements InstanceMethodAdvice {
builder = builder.asChildOf(root);
}
JDBCExecutionUnit executionUnit = (JDBCExecutionUnit) args[0];
- Map<String, DatabaseType> storageTypes = (Map<String, DatabaseType>) AgentReflectionUtil.getFieldValue(target, "storageTypes");
- DataSourceMetaData metaData = (DataSourceMetaData) AgentReflectionUtil.invokeMethod(
+ Map<String, DatabaseType> storageTypes = AgentReflectionUtil.getFieldValue(target, "storageTypes");
+ DataSourceMetaData metaData = AgentReflectionUtil.invokeMethod(
JDBCExecutorCallback.class.getDeclaredMethod("getDataSourceMetaData", DatabaseMetaData.class, DatabaseType.class),
target, executionUnit.getStorageResource().getConnection().getMetaData(), storageTypes.get(executionUnit.getExecutionUnit().getDataSourceName()));
builder.withTag(Tags.COMPONENT.getKey(), JaegerConstants.COMPONENT_NAME)
diff --git a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/JDBCExecutorCallbackAdvice.java b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/JDBCExecutorCallbackAdvice.java
index bcb31c6c28e..3d7732bcd5f 100644
--- a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/JDBCExecutorCallbackAdvice.java
+++ b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/JDBCExecutorCallbackAdvice.java
@@ -57,9 +57,8 @@ public class JDBCExecutorCallbackAdvice implements InstanceMethodAdvice {
spanBuilder.setAttribute(OpenTelemetryConstants.COMPONENT, OpenTelemetryConstants.COMPONENT_NAME);
spanBuilder.setAttribute(OpenTelemetryConstants.DB_TYPE, OpenTelemetryConstants.DB_TYPE_VALUE);
JDBCExecutionUnit executionUnit = (JDBCExecutionUnit) args[0];
- Map<String, DatabaseType> storageTypes = (Map<String, DatabaseType>) AgentReflectionUtil.getFieldValue(target, "storageTypes");
- DataSourceMetaData metaData = (DataSourceMetaData) AgentReflectionUtil.invokeMethod(
- JDBCExecutorCallback.class.getDeclaredMethod("getDataSourceMetaData", DatabaseMetaData.class, DatabaseType.class),
+ Map<String, DatabaseType> storageTypes = AgentReflectionUtil.getFieldValue(target, "storageTypes");
+ DataSourceMetaData metaData = AgentReflectionUtil.invokeMethod(JDBCExecutorCallback.class.getDeclaredMethod("getDataSourceMetaData", DatabaseMetaData.class, DatabaseType.class),
target, executionUnit.getStorageResource().getConnection().getMetaData(), storageTypes.get(executionUnit.getExecutionUnit().getDataSourceName()));
spanBuilder.setAttribute(OpenTelemetryConstants.DB_INSTANCE, executionUnit.getExecutionUnit().getDataSourceName())
.setAttribute(OpenTelemetryConstants.PEER_HOSTNAME, metaData.getHostname())
diff --git a/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/CommandExecutorTaskAdvice.java b/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/CommandExecutorTaskAdvice.java
index 6b38243b953..91755e4b968 100644
--- a/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/CommandExecutorTaskAdvice.java
+++ b/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/CommandExecutorTaskAdvice.java
@@ -45,7 +45,7 @@ public final class CommandExecutorTaskAdvice implements InstanceMethodAdvice {
@Override
public void afterMethod(final TargetAdviceObject target, final Method method, final Object[] args, final Object result) {
- BackendConnection connection = ((ConnectionSession) AgentReflectionUtil.getFieldValue(target, "connectionSession")).getBackendConnection();
+ BackendConnection connection = AgentReflectionUtil.<ConnectionSession>getFieldValue(target, "connectionSession").getBackendConnection();
Span span = (Span) ExecutorDataMap.getValue().remove(ZipkinConstants.ROOT_SPAN);
span.tag(ZipkinConstants.Tags.CONNECTION_COUNT, String.valueOf(connection.getConnectionSize()));
span.finish();
diff --git a/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/JDBCExecutorCallbackAdvice.java b/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/JDBCExecutorCallbackAdvice.java
index 1c7ababf26f..9f6b16b1c06 100644
--- a/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/JDBCExecutorCallbackAdvice.java
+++ b/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/JDBCExecutorCallbackAdvice.java
@@ -50,8 +50,8 @@ public final class JDBCExecutorCallbackAdvice implements InstanceMethodAdvice {
span.tag(ZipkinConstants.Tags.COMPONENT, ZipkinConstants.COMPONENT_NAME);
span.tag(ZipkinConstants.Tags.DB_TYPE, ZipkinConstants.DB_TYPE_VALUE);
JDBCExecutionUnit executionUnit = (JDBCExecutionUnit) args[0];
- Map<String, DatabaseType> storageTypes = (Map<String, DatabaseType>) AgentReflectionUtil.getFieldValue(target, "storageTypes");
- DataSourceMetaData metaData = (DataSourceMetaData) AgentReflectionUtil.invokeMethod(
+ Map<String, DatabaseType> storageTypes = AgentReflectionUtil.getFieldValue(target, "storageTypes");
+ DataSourceMetaData metaData = AgentReflectionUtil.invokeMethod(
JDBCExecutorCallback.class.getDeclaredMethod("getDataSourceMetaData", DatabaseMetaData.class, DatabaseType.class),
target, executionUnit.getStorageResource().getConnection().getMetaData(), storageTypes.get(executionUnit.getExecutionUnit().getDataSourceName()));
span.tag(ZipkinConstants.Tags.DB_INSTANCE, executionUnit.getExecutionUnit().getDataSourceName());