You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2020/04/03 11:31:31 UTC
[dubbo] branch master updated: Fix default config does not work as
expected. (#5952)
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new b37a05d Fix default config does not work as expected. (#5952)
b37a05d is described below
commit b37a05d4e4db138278d4d524de32a8defea5cc21
Author: ken.lj <ke...@gmail.com>
AuthorDate: Fri Apr 3 19:31:16 2020 +0800
Fix default config does not work as expected. (#5952)
fixes #5947
---
.../org/apache/dubbo/common/utils/ReflectUtils.java | 20 ++++++++++----------
.../apache/dubbo/config/context/ConfigManager.java | 2 +-
.../dubbo/config/context/ConfigManagerTest.java | 18 ++++++++++++++++++
3 files changed, 29 insertions(+), 11 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java
index 866d4b6..ea8d51f 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java
@@ -23,7 +23,6 @@ import javassist.NotFoundException;
import java.beans.BeanInfo;
import java.beans.Introspector;
-import java.beans.PropertyDescriptor;
import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
@@ -1261,28 +1260,29 @@ public final class ReflectUtils {
}
/**
- * Get the value from the specified bean and its property.
+ * Get the value from the specified bean and its getter method.
*
- * @param bean the bean instance
- * @param propertyName the name of property
- * @param <T> the type of property value
+ * @param bean the bean instance
+ * @param methodName the name of getter
+ * @param <T> the type of property value
* @return
* @since 2.7.5
*/
- public static <T> T getProperty(Object bean, String propertyName) {
+ public static <T> T getProperty(Object bean, String methodName) {
Class<?> beanClass = bean.getClass();
BeanInfo beanInfo = null;
T propertyValue = null;
+
try {
beanInfo = Introspector.getBeanInfo(beanClass);
- propertyValue = (T) Stream.of(beanInfo.getPropertyDescriptors())
- .filter(propertyDescriptor -> propertyName.equals(propertyDescriptor.getName()))
- .map(PropertyDescriptor::getReadMethod)
+ propertyValue = (T) Stream.of(beanInfo.getMethodDescriptors())
+ .filter(methodDescriptor -> methodName.equals(methodDescriptor.getName()))
.findFirst()
.map(method -> {
try {
- return method.invoke(bean);
+ return method.getMethod().invoke(bean);
} catch (Exception e) {
+ //ignore
}
return null;
}).get();
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/context/ConfigManager.java b/dubbo-common/src/main/java/org/apache/dubbo/config/context/ConfigManager.java
index 81e4bc9..ed0188a 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/context/ConfigManager.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/context/ConfigManager.java
@@ -503,7 +503,7 @@ public class ConfigManager extends LifecycleAdapter implements FrameworkExt {
}
static <C extends AbstractConfig> boolean isDefaultConfig(C config) {
- Boolean isDefault = getProperty(config, "default");
+ Boolean isDefault = getProperty(config, "isDefault");
return isDefault == null || TRUE.equals(isDefault);
}
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/config/context/ConfigManagerTest.java b/dubbo-common/src/test/java/org/apache/dubbo/config/context/ConfigManagerTest.java
index 07d0a52..58fc3cc 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/config/context/ConfigManagerTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/config/context/ConfigManagerTest.java
@@ -205,4 +205,22 @@ public class ConfigManagerTest {
public void testRefreshAll() {
configManager.refreshAll();
}
+
+ @Test
+ public void testDefaultConfig() {
+ ProviderConfig providerConfig = new ProviderConfig();
+ providerConfig.setDefault(false);
+ assertFalse(ConfigManager.isDefaultConfig(providerConfig));
+
+ ProviderConfig providerConfig1 = new ProviderConfig();
+ assertTrue(ConfigManager.isDefaultConfig(providerConfig1));
+
+ ProviderConfig providerConfig3 = new ProviderConfig();
+ providerConfig.setDefault(true);
+ assertTrue(ConfigManager.isDefaultConfig(providerConfig3));
+
+ ProtocolConfig protocolConfig = new ProtocolConfig();
+ protocolConfig.setDefault(false);
+ assertFalse(ConfigManager.isDefaultConfig(protocolConfig));
+ }
}