From 16a1f915b234968aaa2b54b9235297b4ed63fc01 Mon Sep 17 00:00:00 2001 From: fangyincheng <fangyincheng@sina.com> Date: Mon, 20 May 2019 21:36:11 +0800 Subject: [PATCH] Add:add lowercase function & update examples --- common/proxy/proxy.go | 8 ++++++-- common/proxy/proxy_test.go | 9 ++++++--- examples/dubbo/go-client/app/client.go | 8 ++++++++ examples/dubbo/go-client/app/user.go | 1 + .../src/main/java/com/ikurento/user/Consumer.java | 4 ++++ .../main/resources/META-INF/spring/dubbo.provider.xml | 3 ++- examples/jsonrpc/go-client/app/client.go | 10 +++++++++- examples/jsonrpc/go-client/app/user.go | 3 ++- .../src/main/java/com/ikurento/user/Consumer.java | 11 +++++++++++ .../main/resources/META-INF/spring/dubbo.provider.xml | 3 ++- 10 files changed, 51 insertions(+), 9 deletions(-) diff --git a/common/proxy/proxy.go b/common/proxy/proxy.go index 8a2b65c6b..6c42dab8f 100644 --- a/common/proxy/proxy.go +++ b/common/proxy/proxy.go @@ -82,6 +82,10 @@ func (p *Proxy) Implement(v common.RPCService) { numField := valueOfElem.NumField() for i := 0; i < numField; i++ { t := typeOf.Field(i) + methodName := t.Tag.Get("dubbo") + if methodName == "" { + methodName = t.Name + } f := valueOfElem.Field(i) if f.Kind() == reflect.Func && f.IsValid() && f.CanSet() { if t.Type.NumIn() != 2 && t.Type.NumIn() != 3 { @@ -115,8 +119,8 @@ func (p *Proxy) Implement(v common.RPCService) { funcOuts[0] = t.Type.Out(0) // do method proxy here: - f.Set(reflect.MakeFunc(f.Type(), makeDubboCallProxy(t.Name, funcOuts))) - log.Debug("set method [%s]", t.Name) + f.Set(reflect.MakeFunc(f.Type(), makeDubboCallProxy(methodName, funcOuts))) + log.Debug("set method [%s]", methodName) } } diff --git a/common/proxy/proxy_test.go b/common/proxy/proxy_test.go index 8a7c8c880..8720298aa 100644 --- a/common/proxy/proxy_test.go +++ b/common/proxy/proxy_test.go @@ -17,9 +17,10 @@ import ( ) type TestService struct { - MethodOne func(context.Context, []interface{}, *struct{}) error - MethodTwo func([]interface{}, *struct{}) error - Echo func([]interface{}, *struct{}) error + MethodOne func(context.Context, []interface{}, *struct{}) error + MethodTwo func([]interface{}, *struct{}) error + MethodThree func([]interface{}, *struct{}) error `dubbo:"methodThree"` + Echo func([]interface{}, *struct{}) error } func (s *TestService) Service() string { @@ -48,6 +49,8 @@ func TestProxy_Implement(t *testing.T) { assert.NoError(t, err) err = p.Get().(*TestService).MethodTwo(nil, nil) assert.NoError(t, err) + err = p.Get().(*TestService).MethodThree(nil, nil) + assert.NoError(t, err) err = p.Get().(*TestService).Echo(nil, nil) assert.NoError(t, err) diff --git a/examples/dubbo/go-client/app/client.go b/examples/dubbo/go-client/app/client.go index ddec042d7..3632a0e72 100644 --- a/examples/dubbo/go-client/app/client.go +++ b/examples/dubbo/go-client/app/client.go @@ -69,6 +69,14 @@ func main() { } gxlog.CInfo("response result: %v", user) + gxlog.CInfo("\n\n\nstart to test dubbo - getUser") + user = &User{} + err = conMap["com.ikurento.user.UserProvider"].GetRPCService().(*UserProvider).GetUser2(context.TODO(), []interface{}{1}, user) + if err != nil { + fmt.Println("getUser - error: ", err) + } + gxlog.CInfo("response result: %v", user) + gxlog.CInfo("\n\n\nstart to test dubbo illegal method") err = conMap["com.ikurento.user.UserProvider"].GetRPCService().(*UserProvider).GetUser1(context.TODO(), []interface{}{"A003"}, user) if err != nil { diff --git a/examples/dubbo/go-client/app/user.go b/examples/dubbo/go-client/app/user.go index 119511596..1dd100ce4 100644 --- a/examples/dubbo/go-client/app/user.go +++ b/examples/dubbo/go-client/app/user.go @@ -78,6 +78,7 @@ func (User) JavaClassName() string { type UserProvider struct { GetUser func(ctx context.Context, req []interface{}, rsp *User) error GetUser1 func(ctx context.Context, req []interface{}, rsp *User) error + GetUser2 func(ctx context.Context, req []interface{}, rsp *User) error `dubbo:"getUser"` Echo func(ctx context.Context, req []interface{}, rsp *string) error // Echo represent EchoFilter will be used } diff --git a/examples/dubbo/java-client/src/main/java/com/ikurento/user/Consumer.java b/examples/dubbo/java-client/src/main/java/com/ikurento/user/Consumer.java index 5830ac716..c04acefbe 100644 --- a/examples/dubbo/java-client/src/main/java/com/ikurento/user/Consumer.java +++ b/examples/dubbo/java-client/src/main/java/com/ikurento/user/Consumer.java @@ -13,6 +13,7 @@ package com.ikurento.user; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; +import com.alibaba.dubbo.rpc.service.EchoService; import java.util.List; public class Consumer { @@ -39,6 +40,9 @@ public class Consumer { private void testGetUser() throws Exception { try { + EchoService echoService = (EchoService)userProvider; + Object status = echoService.$echo("OK"); + System.out.println("echo: "+status); User user1 = userProvider.GetUser("A003"); System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] " + " UserInfo, Id:" + user1.getId() + ", name:" + user1.getName() + ", sex:" + user1.getSex().toString() diff --git a/examples/dubbo/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml b/examples/dubbo/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml index bdbd84417..b3a1b19d6 100644 --- a/examples/dubbo/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml +++ b/examples/dubbo/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml @@ -24,12 +24,13 @@ <dubbo:application name="user-info-server"/> <!-- 杩炴帴鍒板摢涓湰鍦版敞鍐屼腑蹇� --> <dubbo:registry id="ikurento" address="zookeeper://127.0.0.1:2181" /> + <dubbo:registry id="ikurento2" address="zookeeper://127.0.0.1:2182" /> <!-- 鐢╠ubbo鍗忚鍦�20880绔彛鏆撮湶鏈嶅姟 --> <!-- dubbo:protocol host="127.0.0.1" / --> <dubbo:protocol id="dubbo" name="dubbo" host="127.0.0.1" port="20010" /> <dubbo:protocol id="jsonrpc" name="jsonrpc" host="127.0.0.1" port="10010" /> <!-- 澹版槑闇€瑕佹毚闇茬殑鏈嶅姟鎺ュ彛 --> - <dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="demoService"/> + <dubbo:service registry="ikurento,ikurento2" timeout="3000" interface="com.ikurento.user.UserProvider" ref="demoService"/> <dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="otherService" version="2.0"/> <dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="otherService" group="as" version="2.0"/> diff --git a/examples/jsonrpc/go-client/app/client.go b/examples/jsonrpc/go-client/app/client.go index cb8ca1923..5eb6babb2 100644 --- a/examples/jsonrpc/go-client/app/client.go +++ b/examples/jsonrpc/go-client/app/client.go @@ -50,7 +50,7 @@ func main() { res := "" err := conMap["com.ikurento.user.UserProvider"].GetRPCService().(*UserProvider).Echo(context.TODO(), []interface{}{"OK"}, &res) if err != nil { - panic(err) + fmt.Println("echo - error: ", err) } gxlog.CInfo("res: %s", res) @@ -64,6 +64,14 @@ func main() { } gxlog.CInfo("response result: %v", user) + gxlog.CInfo("\n\n\nstart to test jsonrpc - getUser") + user = &JsonRPCUser{} + err = conMap["com.ikurento.user.UserProvider"].GetRPCService().(*UserProvider).GetUser2(context.TODO(), []interface{}{1}, user) + if err != nil { + fmt.Println("getUser - error: ", err) + } + gxlog.CInfo("response result: %v", user) + gxlog.CInfo("\n\n\nstart to test jsonrpc illegal method") err = conMap["com.ikurento.user.UserProvider"].GetRPCService().(*UserProvider).GetUser1(context.TODO(), []interface{}{"A003"}, user) if err != nil { diff --git a/examples/jsonrpc/go-client/app/user.go b/examples/jsonrpc/go-client/app/user.go index 5030f8103..20a62a010 100644 --- a/examples/jsonrpc/go-client/app/user.go +++ b/examples/jsonrpc/go-client/app/user.go @@ -32,7 +32,8 @@ func (u JsonRPCUser) String() string { type UserProvider struct { GetUser func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error GetUser1 func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error - Echo func(ctx context.Context, req []interface{}, rsp *string) error // Echo represent EchoFilter will be used + GetUser2 func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error `dubbo:"getUser"` + Echo func(ctx context.Context, req []interface{}, rsp *string) error // Echo represent EchoFilter will be used } func (u *UserProvider) Service() string { diff --git a/examples/jsonrpc/java-client/src/main/java/com/ikurento/user/Consumer.java b/examples/jsonrpc/java-client/src/main/java/com/ikurento/user/Consumer.java index 5830ac716..a9e5aaa51 100644 --- a/examples/jsonrpc/java-client/src/main/java/com/ikurento/user/Consumer.java +++ b/examples/jsonrpc/java-client/src/main/java/com/ikurento/user/Consumer.java @@ -13,6 +13,7 @@ package com.ikurento.user; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; +import com.alibaba.dubbo.rpc.service.EchoService; import java.util.List; public class Consumer { @@ -39,6 +40,16 @@ public class Consumer { private void testGetUser() throws Exception { try { + EchoService echoService = (EchoService)userProvider; + Object status = echoService.$echo("OK"); + System.out.println("echo: "+status); + } catch (Exception e) { + e.printStackTrace(); + } + try { + EchoService echoService = (EchoService)userProvider; + Object status = echoService.$echo("OK"); + System.out.println("echo: "+status); User user1 = userProvider.GetUser("A003"); System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] " + " UserInfo, Id:" + user1.getId() + ", name:" + user1.getName() + ", sex:" + user1.getSex().toString() diff --git a/examples/jsonrpc/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml b/examples/jsonrpc/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml index bdbd84417..b3a1b19d6 100644 --- a/examples/jsonrpc/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml +++ b/examples/jsonrpc/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml @@ -24,12 +24,13 @@ <dubbo:application name="user-info-server"/> <!-- 杩炴帴鍒板摢涓湰鍦版敞鍐屼腑蹇� --> <dubbo:registry id="ikurento" address="zookeeper://127.0.0.1:2181" /> + <dubbo:registry id="ikurento2" address="zookeeper://127.0.0.1:2182" /> <!-- 鐢╠ubbo鍗忚鍦�20880绔彛鏆撮湶鏈嶅姟 --> <!-- dubbo:protocol host="127.0.0.1" / --> <dubbo:protocol id="dubbo" name="dubbo" host="127.0.0.1" port="20010" /> <dubbo:protocol id="jsonrpc" name="jsonrpc" host="127.0.0.1" port="10010" /> <!-- 澹版槑闇€瑕佹毚闇茬殑鏈嶅姟鎺ュ彛 --> - <dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="demoService"/> + <dubbo:service registry="ikurento,ikurento2" timeout="3000" interface="com.ikurento.user.UserProvider" ref="demoService"/> <dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="otherService" version="2.0"/> <dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="otherService" group="as" version="2.0"/> -- GitLab