This is an automated email from the ASF dual-hosted git repository.

albumenj pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.2 by this push:
     new 93d146924a feat: generic timeout (#11677)
93d146924a is described below

commit 93d146924aed71886bae14845c8ee280bd24aa04
Author: aamingaa <[email protected]>
AuthorDate: Tue Apr 11 14:20:48 2023 +0800

    feat: generic timeout (#11677)
    
    * feat: generic timeout
    
    * feat: generic timeout
    
    * feat: fix ut
    
    * feat: change to default
    
    * feat: test verify method
    
    * feat: test verify method
    
    * Update 
dubbo-common/src/test/java/org/apache/dubbo/config/AbstractInterfaceConfigTest.java
    
    change to assertFalse
    
    Co-authored-by: Albumen Kevin <[email protected]>
    
    * Update 
dubbo-common/src/test/java/org/apache/dubbo/config/AbstractInterfaceConfigTest.java
    
    assertFalse
    
    Co-authored-by: Albumen Kevin <[email protected]>
    
    * feat: fix ut。。。
    
    * feat: fix ut。。。
    
    * feat: testVerifyMethod
    
    * feat: testVerifyMethod
    
    * feat: fix msg
    
    ---------
    
    Co-authored-by: Albumen Kevin <[email protected]>
---
 .../dubbo/config/AbstractInterfaceConfig.java      | 14 +++++++++++--
 .../dubbo/config/AbstractReferenceConfig.java      |  5 +++++
 .../dubbo/config/AbstractInterfaceConfigTest.java  | 24 ++++++++++++++++++++--
 .../org/apache/dubbo/config/MethodConfigTest.java  |  2 +-
 4 files changed, 40 insertions(+), 5 deletions(-)

diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
 
b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
index 6fd828d998..aae01b667d 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
@@ -374,7 +374,7 @@ public abstract class AbstractInterfaceConfig extends 
AbstractMethodConfig {
 
     }
 
-    private boolean verifyMethodConfig(MethodConfig methodConfig, Class<?> 
interfaceClass, boolean ignoreInvalidMethodConfig) {
+    protected boolean verifyMethodConfig(MethodConfig methodConfig, Class<?> 
interfaceClass, boolean ignoreInvalidMethodConfig) {
         String methodName = methodConfig.getName();
         if (StringUtils.isEmpty(methodName)) {
             String msg = "<dubbo:method> name attribute is required! Please 
check: " +
@@ -396,7 +396,12 @@ public abstract class AbstractInterfaceConfig extends 
AbstractMethodConfig {
                 logger.warn(CONFIG_NO_METHOD_FOUND, "", "", msg);
                 return false;
             } else {
-                throw new IllegalStateException(msg);
+                if (!isNeedCheckMethod()) {
+                    msg = "Generic call: " + msg;
+                    logger.warn(CONFIG_NO_METHOD_FOUND, "", "", msg);
+                } else {
+                    throw new IllegalStateException(msg);
+                }
             }
         }
         return true;
@@ -413,6 +418,11 @@ public abstract class AbstractInterfaceConfig extends 
AbstractMethodConfig {
         return null;
     }
 
+    @Transient
+    protected boolean isNeedCheckMethod() {
+        return true;
+    }
+
     private boolean hasArgumentConfigProps(Map<String, String> 
configProperties, String methodName, int argIndex) {
         String argPrefix = methodName + "." + argIndex + ".";
         return ConfigurationUtils.hasSubProperties(configProperties, 
argPrefix);
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java
 
b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java
index 6ac7a43948..e659b10b6f 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java
@@ -183,6 +183,11 @@ public abstract class AbstractReferenceConfig extends 
AbstractInterfaceConfig {
         }
     }
 
+    @Override
+    protected boolean isNeedCheckMethod() {
+        return StringUtils.isEmpty(getGeneric());
+    }
+
     /**
      * @return
      * @deprecated instead, use the parameter <b>scope</> to judge if it's in 
jvm, scope=local
diff --git 
a/dubbo-common/src/test/java/org/apache/dubbo/config/AbstractInterfaceConfigTest.java
 
b/dubbo-common/src/test/java/org/apache/dubbo/config/AbstractInterfaceConfigTest.java
index a09ea89e21..44a330aad1 100644
--- 
a/dubbo-common/src/test/java/org/apache/dubbo/config/AbstractInterfaceConfigTest.java
+++ 
b/dubbo-common/src/test/java/org/apache/dubbo/config/AbstractInterfaceConfigTest.java
@@ -18,7 +18,6 @@ package org.apache.dubbo.config;
 
 
 import org.apache.dubbo.common.constants.CommonConstants;
-
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
@@ -236,7 +235,28 @@ class AbstractInterfaceConfigTest {
         Assertions.assertEquals("scope", interfaceConfig.getScope());
     }
 
+    @Test
+    void testVerifyMethod() {
+        InterfaceConfig2 interfaceConfig2 = new InterfaceConfig2();
+        MethodConfig methodConfig = new MethodConfig();
+        methodConfig.setTimeout(5000);
+        methodConfig.setName("sayHello");
+        Class<?> clazz = Greeting.class;
+        boolean verifyResult = 
interfaceConfig2.verifyMethodConfig(methodConfig, clazz, false);
+        Assertions.assertTrue(verifyResult);
+
+        boolean verifyResult2 = 
interfaceConfig2.verifyMethodConfig(methodConfig, clazz, true);
+        Assertions.assertFalse(verifyResult2);
+    }
+
+    public static class InterfaceConfig2 extends AbstractInterfaceConfig {
+        @Override
+        protected boolean isNeedCheckMethod() {
+            return false;
+        }
+    }
+
     public static class InterfaceConfig extends AbstractInterfaceConfig {
 
     }
-}
\ No newline at end of file
+}
diff --git 
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/MethodConfigTest.java
 
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/MethodConfigTest.java
index 7b137c5762..6588e58d58 100644
--- 
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/MethodConfigTest.java
+++ 
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/MethodConfigTest.java
@@ -476,4 +476,4 @@ class MethodConfigTest {
         Map<String, String> metaData = methodConfig.getMetaData();
         Assertions.assertEquals(0, metaData.size(), "Expect empty metadata but 
found: "+metaData);
     }
-}
\ No newline at end of file
+}

Reply via email to