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() {