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 1dd804b5fa6 Add generic type of ReflectionUtil (#23081)
1dd804b5fa6 is described below

commit 1dd804b5fa66b5696ad2434f83e661b8d8063ab3
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Dec 24 20:25:23 2022 +0800

    Add generic type of ReflectionUtil (#23081)
    
    * Remove useless code forDataSourcePoolMetaDataReflection
    
    * Remove useless code forDataSourcePoolMetaDataReflection
    
    * Add generic type of ReflectionUtil
---
 .../infra/util/reflection/ReflectionUtil.java        | 20 ++++++++++++--------
 .../NarayanaXATransactionManagerProvider.java        |  3 +--
 2 files changed, 13 insertions(+), 10 deletions(-)

diff --git 
a/infra/util/src/main/java/org/apache/shardingsphere/infra/util/reflection/ReflectionUtil.java
 
b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/reflection/ReflectionUtil.java
index 17fdea5d40c..36270b33f6e 100644
--- 
a/infra/util/src/main/java/org/apache/shardingsphere/infra/util/reflection/ReflectionUtil.java
+++ 
b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/reflection/ReflectionUtil.java
@@ -39,18 +39,18 @@ public final class ReflectionUtil {
      * @param <T> type of field value
      * @return field value
      */
-    @SuppressWarnings("unchecked")
     public static <T> Optional<T> getFieldValue(final Object target, final 
String fieldName) {
-        return findField(fieldName, target.getClass()).map(optional -> (T) 
getFieldValue(target, optional));
+        return findField(fieldName, target.getClass()).map(optional -> 
getFieldValue(target, optional));
     }
     
+    @SuppressWarnings("unchecked")
     @SneakyThrows(IllegalAccessException.class)
-    private static Object getFieldValue(final Object target, final Field 
field) {
+    private static <T> T getFieldValue(final Object target, final Field field) 
{
         boolean accessible = field.isAccessible();
         if (!accessible) {
             field.setAccessible(true);
         }
-        Object result = field.get(target);
+        T result = (T) field.get(target);
         if (!accessible) {
             field.setAccessible(false);
         }
@@ -74,16 +74,18 @@ public final class ReflectionUtil {
      *
      * @param target target
      * @param fieldName field name
+     * @param <T> type of field value
      * @return field value
      */
+    @SuppressWarnings("unchecked")
     @SneakyThrows(ReflectiveOperationException.class)
-    public static Object getStaticFieldValue(final Class<?> target, final 
String fieldName) {
+    public static <T> T getStaticFieldValue(final Class<?> target, final 
String fieldName) {
         Field field = target.getDeclaredField(fieldName);
         boolean accessible = field.isAccessible();
         if (!accessible) {
             field.setAccessible(true);
         }
-        Object result = field.get(target);
+        T result = (T) field.get(target);
         if (!accessible) {
             field.setAccessible(false);
         }
@@ -116,15 +118,17 @@ public final class ReflectionUtil {
      * @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/kernel/transaction/type/xa/provider/narayana/src/main/java/org/apache/shardingsphere/transaction/xa/narayana/manager/NarayanaXATransactionManagerProvider.java
 
b/kernel/transaction/type/xa/provider/narayana/src/main/java/org/apache/shardingsphere/transaction/xa/narayana/manager/NarayanaXATransactionManagerProvider.java
index 358cb2d88a1..e78f72b8f22 100644
--- 
a/kernel/transaction/type/xa/provider/narayana/src/main/java/org/apache/shardingsphere/transaction/xa/narayana/manager/NarayanaXATransactionManagerProvider.java
+++ 
b/kernel/transaction/type/xa/provider/narayana/src/main/java/org/apache/shardingsphere/transaction/xa/narayana/manager/NarayanaXATransactionManagerProvider.java
@@ -95,9 +95,8 @@ public final class NarayanaXATransactionManagerProvider 
implements XATransaction
         ReflectionUtil.setStaticFieldValue(PropertiesFactory.class, 
"delegatePropertiesFactory", null);
     }
     
-    @SuppressWarnings("unchecked")
     private void cleanBeanInstances() {
-        ((ConcurrentMap<String, Object>) 
ReflectionUtil.getStaticFieldValue(BeanPopulator.class, 
"beanInstances")).clear();
+        ReflectionUtil.<ConcurrentMap<String, 
Object>>getStaticFieldValue(BeanPopulator.class, "beanInstances").clear();
     }
     
     private void cleanAtomicActionRecovery() {

Reply via email to