This is an automated email from the ASF dual-hosted git repository.
alexstocks pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 1eaf18e upgrade hessian2 to v1.11.0 (#1720)
1eaf18e is described below
commit 1eaf18e3185ef9cf0fb551520086202bc4b4d442
Author: 望哥 <[email protected]>
AuthorDate: Thu Jan 20 13:06:33 2022 +0800
upgrade hessian2 to v1.11.0 (#1720)
* upgrade hessian2 to v1.11.0
* directly assign decoded obj to response
* fix dubbo hessian unit test
---
go.mod | 2 +-
go.sum | 4 +--
protocol/dubbo/hessian2/hessian_dubbo_test.go | 51 +++++++++++++++++----------
protocol/dubbo/hessian2/hessian_response.go | 8 ++---
4 files changed, 37 insertions(+), 28 deletions(-)
diff --git a/go.mod b/go.mod
index f33cab8..f44661a 100644
--- a/go.mod
+++ b/go.mod
@@ -9,7 +9,7 @@ require (
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5
github.com/alibaba/sentinel-golang v1.0.4
github.com/apache/dubbo-getty v1.4.7-rc2
- github.com/apache/dubbo-go-hessian2 v1.10.2
+ github.com/apache/dubbo-go-hessian2 v1.11.0
github.com/creasty/defaults v1.5.2
github.com/dubbogo/go-zookeeper v1.0.4-0.20211212162352-f9d2183d89d5
github.com/dubbogo/gost v1.11.22
diff --git a/go.sum b/go.sum
index 92fbad1..e77c496 100644
--- a/go.sum
+++ b/go.sum
@@ -85,8 +85,8 @@ github.com/apache/dubbo-getty v1.4.7-rc2
h1:Q/vDRoT35kSa0iMdMJSTjBFFHjLryDWPitq3
github.com/apache/dubbo-getty v1.4.7-rc2/go.mod
h1:+6IHweEgfMCShEzGzQw2H7Wt33nYTJ/U9lNH9tHrzMM=
github.com/apache/dubbo-go-hessian2 v1.9.1/go.mod
h1:xQUjE7F8PX49nm80kChFvepA/AvqAZ0oh/UaB6+6pBE=
github.com/apache/dubbo-go-hessian2 v1.9.3/go.mod
h1:xQUjE7F8PX49nm80kChFvepA/AvqAZ0oh/UaB6+6pBE=
-github.com/apache/dubbo-go-hessian2 v1.10.2
h1:Wb27FKBmgutoZWcXHt1C/WM4e+sBVW0NdLQQZ5ITlrU=
-github.com/apache/dubbo-go-hessian2 v1.10.2/go.mod
h1:7rEw9guWABQa6Aqb8HeZcsYPHsOS7XT1qtJvkmI6c5w=
+github.com/apache/dubbo-go-hessian2 v1.11.0
h1:VTdT6NStuEqNmyT3AdSN2DLDBqhXvAAyAAAoh9hLavk=
+github.com/apache/dubbo-go-hessian2 v1.11.0/go.mod
h1:7rEw9guWABQa6Aqb8HeZcsYPHsOS7XT1qtJvkmI6c5w=
github.com/apache/thrift v0.12.0/go.mod
h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
github.com/apache/thrift v0.13.0/go.mod
h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod
h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
diff --git a/protocol/dubbo/hessian2/hessian_dubbo_test.go
b/protocol/dubbo/hessian2/hessian_dubbo_test.go
index fe09e4f..4931e48 100644
--- a/protocol/dubbo/hessian2/hessian_dubbo_test.go
+++ b/protocol/dubbo/hessian2/hessian_dubbo_test.go
@@ -116,39 +116,52 @@ func doTestResponse(t *testing.T, packageType
PackageType, responseStatus byte,
func TestResponse(t *testing.T) {
caseObj := Case{A: "a", B: 1}
decodedResponse := &DubboResponse{}
+ hessian.RegisterPOJO(&caseObj)
arr := []*Case{&caseObj}
- var arrRes []interface{}
- decodedResponse.RspObj = &arrRes
+ decodedResponse.RspObj = nil
doTestResponse(t, PackageResponse, Response_OK, arr, decodedResponse,
func() {
+ arrRes, ok := decodedResponse.RspObj.([]*Case)
+ if !ok {
+ t.Errorf("expect []*Case, but get %s",
reflect.TypeOf(decodedResponse.RspObj).String())
+ return
+ }
assert.Equal(t, 1, len(arrRes))
assert.Equal(t, &caseObj, arrRes[0])
})
- decodedResponse.RspObj = &Case{}
- doTestResponse(t, PackageResponse, Response_OK, &Case{A: "a", B: 1},
decodedResponse, nil)
+ doTestResponse(t, PackageResponse, Response_OK, &caseObj,
decodedResponse, func() {
+ assert.Equal(t, &caseObj, decodedResponse.RspObj)
+ })
s := "ok!!!!!"
- strObj := ""
- decodedResponse.RspObj = &strObj
- doTestResponse(t, PackageResponse, Response_OK, s, decodedResponse, nil)
+ doTestResponse(t, PackageResponse, Response_OK, s, decodedResponse,
func() {
+ assert.Equal(t, s, decodedResponse.RspObj)
+ })
- var intObj int64
- decodedResponse.RspObj = &intObj
- doTestResponse(t, PackageResponse, Response_OK, int64(3),
decodedResponse, nil)
+ doTestResponse(t, PackageResponse, Response_OK, int64(3),
decodedResponse, func() {
+ assert.Equal(t, int64(3), decodedResponse.RspObj)
+ })
- boolObj := false
- decodedResponse.RspObj = &boolObj
- doTestResponse(t, PackageResponse, Response_OK, true, decodedResponse,
nil)
+ doTestResponse(t, PackageResponse, Response_OK, true, decodedResponse,
func() {
+ assert.Equal(t, true, decodedResponse.RspObj)
+ })
- strObj = ""
- decodedResponse.RspObj = &strObj
- doTestResponse(t, PackageResponse, hessian.Response_SERVER_ERROR,
"error!!!!!", decodedResponse, nil)
+ errorMsg := "error!!!!!"
+ decodedResponse.RspObj = nil
+ doTestResponse(t, PackageResponse, Response_SERVER_ERROR, errorMsg,
decodedResponse, func() {
+ assert.Equal(t, "java exception:error!!!!!",
decodedResponse.Exception.Error())
+ })
+ decodedResponse.RspObj = nil
+ decodedResponse.Exception = nil
mapObj := map[string][]*Case{"key": {&caseObj}}
- mapRes := map[interface{}]interface{}{}
- decodedResponse.RspObj = &mapRes
doTestResponse(t, PackageResponse, Response_OK, mapObj,
decodedResponse, func() {
+ mapRes, ok :=
decodedResponse.RspObj.(map[interface{}]interface{})
+ if !ok {
+ t.Errorf("expect map[string][]*Case, but get %s",
reflect.TypeOf(decodedResponse.RspObj).String())
+ return
+ }
c, ok := mapRes["key"]
if !ok {
assert.FailNow(t, "no key in decoded response map")
@@ -214,7 +227,7 @@ func TestHessianCodec_ReadAttachments(t *testing.T) {
t.Log(h)
err = codecR1.ReadBody(body)
- assert.Equal(t, "can not find go type name com.test.caseb in registry",
err.Error())
+ assert.NoError(t, err)
attrs, err := codecR2.ReadAttachments()
assert.NoError(t, err)
assert.Equal(t, "2.6.4", attrs[DUBBO_VERSION_KEY])
diff --git a/protocol/dubbo/hessian2/hessian_response.go
b/protocol/dubbo/hessian2/hessian_response.go
index 9a5bfcd..1572197 100644
--- a/protocol/dubbo/hessian2/hessian_response.go
+++ b/protocol/dubbo/hessian2/hessian_response.go
@@ -228,13 +228,9 @@ func unpackResponseBody(decoder *hessian.Decoder, resp
interface{}) error {
}
}
- // If the return value is nil,
- // we should consider it normal
- if rsp == nil {
- return nil
- }
+ response.RspObj = rsp
- return perrors.WithStack(ReflectResponse(rsp, response.RspObj))
+ return nil
case RESPONSE_NULL_VALUE, RESPONSE_NULL_VALUE_WITH_ATTACHMENTS:
if rspType == RESPONSE_NULL_VALUE_WITH_ATTACHMENTS {