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

alexstocks pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git


The following commit(s) were added to refs/heads/develop by this push:
     new 029e040ba feat: Allow using group/version wildcards when the interface 
matches exactly (#3080)
029e040ba is described below

commit 029e040ba9d5d1a6a038264497457eee67682d6f
Author: Akashisang <[email protected]>
AuthorDate: Wed Nov 19 11:46:19 2025 +0800

    feat: Allow using group/version wildcards when the interface matches 
exactly (#3080)
    
    * feat: Allow using group/version wildcards when the interface matches 
exactly
    
    * fix the format error
---
 common/url.go      |  9 +++++++--
 common/url_test.go | 27 ++++++++++++++++++++++++---
 2 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/common/url.go b/common/url.go
index af6e68b08..f90031b98 100644
--- a/common/url.go
+++ b/common/url.go
@@ -477,8 +477,13 @@ func ParseServiceKey(serviceKey string) (string, string, 
string) {
 
 // IsAnyCondition judges if is any condition
 func IsAnyCondition(intf, group, version string, serviceURL *URL) bool {
-       return intf == constant.AnyValue && (group == constant.AnyValue ||
-               group == serviceURL.Group()) && (version == constant.AnyValue 
|| version == serviceURL.Version())
+       matchCondition := func(pattern, actual string) bool {
+               return pattern == constant.AnyValue || pattern == actual
+       }
+
+       return matchCondition(intf, serviceURL.Service()) &&
+               matchCondition(group, serviceURL.Group()) &&
+               matchCondition(version, serviceURL.Version())
 }
 
 // ColonSeparatedKey
diff --git a/common/url_test.go b/common/url_test.go
index 5ee5197e2..2026c82e4 100644
--- a/common/url_test.go
+++ b/common/url_test.go
@@ -519,8 +519,9 @@ func TestIsAnyCondition(t *testing.T) {
                serviceURL *URL
        }
        serviceURL, _ := NewURL(GetLocalIp()+":0", WithProtocol("admin"), 
WithParams(url.Values{
-               constant.GroupKey:   {"group"},
-               constant.VersionKey: {"version"},
+               constant.GroupKey:     {"group"},
+               constant.VersionKey:   {"version"},
+               constant.InterfaceKey: {"intf"},
        }))
        tests := []struct {
                name string
@@ -555,7 +556,7 @@ func TestIsAnyCondition(t *testing.T) {
                                version:    constant.AnyValue,
                                serviceURL: serviceURL,
                        },
-                       want: false,
+                       want: true,
                },
                {
                        name: "test4",
@@ -567,6 +568,26 @@ func TestIsAnyCondition(t *testing.T) {
                        },
                        want: false,
                },
+               {
+                       name: "test5",
+                       args: args{
+                               intf:       "intf",
+                               group:      "group",
+                               version:    constant.AnyValue,
+                               serviceURL: serviceURL,
+                       },
+                       want: true,
+               },
+               {
+                       name: "test6",
+                       args: args{
+                               intf:       "intf",
+                               group:      constant.AnyValue,
+                               version:    "version1",
+                               serviceURL: serviceURL,
+                       },
+                       want: false,
+               },
        }
        for _, tt := range tests {
                t.Run(tt.name, func(t *testing.T) {

Reply via email to