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));
+    }
 }