You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2020/09/04 16:05:44 UTC

[dubbo-go-hessian2] branch fix/1.6.3-zhantu created (now f739223)

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

alexstocks pushed a change to branch fix/1.6.3-zhantu
in repository https://gitbox.apache.org/repos/asf/dubbo-go-hessian2.git.


      at f739223  revert zhantu interface{} attachment

This branch includes the following new commits:

     new f739223  revert zhantu interface{} attachment

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[dubbo-go-hessian2] 01/01: revert zhantu interface{} attachment

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit f73922387446d1230c781eb05b48db28085d85d3
Author: AlexStocks <al...@foxmail.com>
AuthorDate: Sat Sep 5 00:05:39 2020 +0800

    revert zhantu interface{} attachment
---
 contributing.md  | 40 +++++++++++++++++++++++++++++++++++++++-
 hessian.go       |  6 ++----
 hessian_test.go  | 16 +---------------
 request.go       | 18 +++++++++---------
 request_test.go  |  8 ++++----
 response.go      | 22 ++++++++++------------
 response_test.go |  5 +----
 7 files changed, 66 insertions(+), 49 deletions(-)

diff --git a/contributing.md b/contributing.md
index 15c9610..5130151 100644
--- a/contributing.md
+++ b/contributing.md
@@ -1,4 +1,4 @@
-Contributing to Hessian2 Protocol Go Implementation
+Contributing to Dubbogo
 
 ## 1. Branch
 
@@ -24,3 +24,41 @@ The title format of the pull request `MUST` follow the following rules:
   >- Start with `Dep:` for adding depending libs.
   >- Start with `Rem:` for removing feature/struct/function/member/files.
 
+## 3. Code Style
+
+### 3.1 log
+
+>- 1 when logging the function's input parameter, you should add '@' before input parameter name.
+
+### 3.2 naming
+
+>- 1 do not use an underscore in package name, such as `filter_impl`.
+>- 2 do not use an underscore in constants, such as `DUBBO_PROTOCOL`. use 'DubboProtocol' instead.
+
+### 3.3 comment
+
+>- 1 there should be comment for every export func/var.
+>- 2 the comment should begin with function name/var name.
+
+### 3.4 import 
+
+We dubbogo import blocks should be splited into 3 blocks.
+
+```Go
+// block 1: the go internal package
+import (
+  "fmt"
+)
+
+// block 2: the third package
+import (
+  "github.com/dubbogo/xxx"
+  
+  "github.com/RoaringBitmap/roaring"
+)
+
+// block 3: the dubbo-go package
+import (
+  "github.com/apache/dubbo-go/common"
+) 
+```
\ No newline at end of file
diff --git a/hessian.go b/hessian.go
index 6527604..c80345c 100644
--- a/hessian.go
+++ b/hessian.go
@@ -21,9 +21,7 @@ import (
 	"bufio"
 	"encoding/binary"
 	"time"
-)
 
-import (
 	perrors "github.com/pkg/errors"
 )
 
@@ -218,7 +216,7 @@ func (h *HessianCodec) ReadBody(rspObj interface{}) error {
 }
 
 // ignore body, but only read attachments
-func (h *HessianCodec) ReadAttachments() (map[string]interface{}, error) {
+func (h *HessianCodec) ReadAttachments() (map[string]string, error) {
 	if h.reader.Buffered() < h.bodyLen {
 		return nil, ErrBodyNotEnough
 	}
@@ -237,7 +235,7 @@ func (h *HessianCodec) ReadAttachments() (map[string]interface{}, error) {
 		if err = unpackRequestBody(NewDecoderWithSkip(buf[:]), rspObj); err != nil {
 			return nil, perrors.WithStack(err)
 		}
-		return rspObj[6].(map[string]interface{}), nil
+		return rspObj[6].(map[string]string), nil
 	case PackageResponse:
 		rspObj := &Response{}
 		if err = unpackResponseBody(NewDecoderWithSkip(buf[:]), rspObj); err != nil {
diff --git a/hessian_test.go b/hessian_test.go
index 6f89f0b..653bdfb 100644
--- a/hessian_test.go
+++ b/hessian_test.go
@@ -23,9 +23,7 @@ import (
 	"reflect"
 	"testing"
 	"time"
-)
 
-import (
 	"github.com/stretchr/testify/assert"
 )
 
@@ -192,11 +190,10 @@ func TestRequest(t *testing.T) {
 }
 
 func TestHessianCodec_ReadAttachments(t *testing.T) {
-	RegisterPOJO(&AttachObject{})
 	body := &Response{
 		RspObj:      &CaseB{A: "A", B: CaseA{A: "a", B: 1, C: Case{A: "c", B: 2}}},
 		Exception:   nil,
-		Attachments: map[string]interface{}{DUBBO_VERSION_KEY: "2.6.4", "att": AttachObject{Id: 23, Name: "haha"}},
+		Attachments: map[string]string{DUBBO_VERSION_KEY: "2.6.4"},
 	}
 	resp, err := doTestHessianEncodeHeader(t, PackageResponse, Response_OK, body)
 	assert.NoError(t, err)
@@ -214,17 +211,6 @@ func TestHessianCodec_ReadAttachments(t *testing.T) {
 	attrs, err := codecR2.ReadAttachments()
 	assert.NoError(t, err)
 	assert.Equal(t, "2.6.4", attrs[DUBBO_VERSION_KEY])
-	assert.Equal(t, AttachObject{Id: 23, Name: "haha"}, *(attrs["att"].(*AttachObject)))
-	assert.NotEqual(t, AttachObject{Id: 24, Name: "nohaha"}, *(attrs["att"].(*AttachObject)))
 
 	t.Log(attrs)
 }
-
-type AttachObject struct {
-	Id   int32
-	Name string `dubbo:name`
-}
-
-func (AttachObject) JavaClassName() string {
-	return "com.test.Test"
-}
diff --git a/request.go b/request.go
index c668fcb..bad438b 100644
--- a/request.go
+++ b/request.go
@@ -23,9 +23,7 @@ import (
 	"strconv"
 	"strings"
 	"time"
-)
 
-import (
 	perrors "github.com/pkg/errors"
 )
 
@@ -151,13 +149,13 @@ func getArgsTypeList(args []interface{}) (string, error) {
 
 type Request struct {
 	Params      interface{}
-	Attachments map[string]interface{}
+	Attachments map[string]string
 }
 
 // NewRequest create a new Request
-func NewRequest(params interface{}, atta map[string]interface{}) *Request {
+func NewRequest(params interface{}, atta map[string]string) *Request {
 	if atta == nil {
-		atta = make(map[string]interface{})
+		atta = make(map[string]string)
 	}
 	return &Request{
 		Params:      params,
@@ -327,22 +325,24 @@ func unpackRequestBody(decoder *Decoder, reqObj interface{}) error {
 	}
 	if v, ok := attachments.(map[interface{}]interface{}); ok {
 		v[DUBBO_VERSION_KEY] = dubboVersion
-		req[6] = ToMapStringInterface(v)
+		req[6] = ToMapStringString(v)
 		return nil
 	}
 
 	return perrors.Errorf("get wrong attachments: %+v", attachments)
 }
 
-func ToMapStringInterface(origin map[interface{}]interface{}) map[string]interface{} {
-	dest := make(map[string]interface{})
+func ToMapStringString(origin map[interface{}]interface{}) map[string]string {
+	dest := make(map[string]string, len(origin))
 	for k, v := range origin {
 		if kv, ok := k.(string); ok {
 			if v == nil {
 				dest[kv] = ""
 				continue
 			}
-			dest[kv] = v
+			if vv, ok := v.(string); ok {
+				dest[kv] = vv
+			}
 		}
 	}
 	return dest
diff --git a/request_test.go b/request_test.go
index 37ec48d..2b7f1f3 100644
--- a/request_test.go
+++ b/request_test.go
@@ -129,7 +129,7 @@ func TestIssue192(t *testing.T) {
 	tests := []struct {
 		name string
 		args args
-		want map[string]interface{}
+		want map[string]string
 	}{
 		{
 			name: "not null",
@@ -140,7 +140,7 @@ func TestIssue192(t *testing.T) {
 					"":  "",
 				},
 			},
-			want: map[string]interface{}{
+			want: map[string]string{
 				"1": "",
 				"2": "3",
 				"":  "",
@@ -149,8 +149,8 @@ func TestIssue192(t *testing.T) {
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			if got := ToMapStringInterface(tt.args.origin); !reflect.DeepEqual(got, tt.want) {
-				t.Errorf("ToMapStringInterface() = %v, want %v", got, tt.want)
+			if got := ToMapStringString(tt.args.origin); !reflect.DeepEqual(got, tt.want) {
+				t.Errorf("ToMapStringString() = %v, want %v", got, tt.want)
 			}
 		})
 	}
diff --git a/response.go b/response.go
index 910323b..ea7408f 100644
--- a/response.go
+++ b/response.go
@@ -37,13 +37,13 @@ import (
 type Response struct {
 	RspObj      interface{}
 	Exception   error
-	Attachments map[string]interface{}
+	Attachments map[string]string
 }
 
 // NewResponse create a new Response
-func NewResponse(rspObj interface{}, exception error, attachments map[string]interface{}) *Response {
+func NewResponse(rspObj interface{}, exception error, attachments map[string]string) *Response {
 	if attachments == nil {
-		attachments = make(map[string]interface{})
+		attachments = make(map[string]string, 8)
 	}
 	return &Response{
 		RspObj:      rspObj,
@@ -176,7 +176,7 @@ func unpackResponseBody(decoder *Decoder, resp interface{}) error {
 				return perrors.WithStack(err)
 			}
 			if v, ok := attachments.(map[interface{}]interface{}); ok {
-				atta := ToMapStringInterface(v)
+				atta := ToMapStringString(v)
 				response.Attachments = atta
 			} else {
 				return perrors.Errorf("get wrong attachments: %+v", attachments)
@@ -201,7 +201,7 @@ func unpackResponseBody(decoder *Decoder, resp interface{}) error {
 				return perrors.WithStack(err)
 			}
 			if v, ok := attachments.(map[interface{}]interface{}); ok {
-				response.Attachments = ToMapStringInterface(v)
+				response.Attachments = ToMapStringString(v)
 			} else {
 				return perrors.Errorf("get wrong attachments: %+v", attachments)
 			}
@@ -222,7 +222,7 @@ func unpackResponseBody(decoder *Decoder, resp interface{}) error {
 				return perrors.WithStack(err)
 			}
 			if v, ok := attachments.(map[interface{}]interface{}); ok {
-				atta := ToMapStringInterface(v)
+				atta := ToMapStringString(v)
 				response.Attachments = atta
 			} else {
 				return perrors.Errorf("get wrong attachments: %+v", attachments)
@@ -338,9 +338,8 @@ var versionInt = make(map[string]int)
 
 // https://github.com/apache/dubbo/blob/dubbo-2.7.1/dubbo-common/src/main/java/org/apache/dubbo/common/Version.java#L96
 // isSupportResponseAttachment is for compatibility among some dubbo version
-func isSupportResponseAttachment(ver interface{}) bool {
-	version, ok := ver.(string)
-	if !ok || len(version) == 0 {
+func isSupportResponseAttachment(version string) bool {
+	if len(version) == 0 {
 		return false
 	}
 
@@ -358,9 +357,8 @@ func isSupportResponseAttachment(ver interface{}) bool {
 	return v >= LOWEST_VERSION_FOR_RESPONSE_ATTACHMENT
 }
 
-func version2Int(ver interface{}) int {
-	version, ok := ver.(string)
-	if !ok || len(version) == 0 {
+func version2Int(version string) int {
+	if len(version) == 0 {
 		return 0
 	}
 	var v = 0
diff --git a/response_test.go b/response_test.go
index 5f0e07a..7299389 100644
--- a/response_test.go
+++ b/response_test.go
@@ -168,10 +168,7 @@ func TestCopySlice(t *testing.T) {
 }
 
 func TestIsSupportResponseAttachment(t *testing.T) {
-	is := isSupportResponseAttachment("2.X")
-	assert.False(t, is)
-
-	is = isSupportResponseAttachment("2.0.10")
+	is := isSupportResponseAttachment("2.0.10")
 	assert.False(t, is)
 
 	is = isSupportResponseAttachment("2.5.3")