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 <[email protected]>
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")

Reply via email to