diff --git a/examples/README.md b/examples/README.md index 0109c17..f2ec29c 100644 --- a/examples/README.md +++ b/examples/README.md @@ -75,7 +75,7 @@ type uppercaseResponse struct { V string `json:"v"` - Err error `json:"err"` + Err string `json:"err"` // errors don't define JSON marshaling } type countRequest struct { @@ -109,7 +109,7 @@ return func(ctx context.Context, request interface{}) (interface{}, error) { req := request.(uppercaseRequest) v, err := svc.Uppercase(req.S) - return uppercaseResponse{v, err}, nil + return uppercaseResponse{v, err.Error()}, nil } } @@ -483,7 +483,10 @@ return "", err } resp := response.(uppercaseResponse) - return resp.V, resp.Err + if resp.Err != "" { + return resp.V, errors.New(resp.Err) + } + return resp.V, nil } ``` diff --git a/examples/stringsvc1/main.go b/examples/stringsvc1/main.go index e4f5e4e..ea4e5b8 100644 --- a/examples/stringsvc1/main.go +++ b/examples/stringsvc1/main.go @@ -59,7 +59,7 @@ return func(ctx context.Context, request interface{}) (interface{}, error) { req := request.(uppercaseRequest) v, err := svc.Uppercase(req.S) - return uppercaseResponse{v, err}, nil + return uppercaseResponse{v, err.Error()}, nil } } @@ -97,7 +97,7 @@ type uppercaseResponse struct { V string `json:"v"` - Err error `json:"err"` + Err string `json:"err"` // errors don't define JSON marshaling } type countRequest struct { diff --git a/examples/stringsvc2/transport.go b/examples/stringsvc2/transport.go index 8968a13..080cf0d 100644 --- a/examples/stringsvc2/transport.go +++ b/examples/stringsvc2/transport.go @@ -13,7 +13,7 @@ return func(ctx context.Context, request interface{}) (interface{}, error) { req := request.(uppercaseRequest) v, err := svc.Uppercase(req.S) - return uppercaseResponse{v, err}, nil + return uppercaseResponse{v, err.Error()}, nil } } @@ -51,7 +51,7 @@ type uppercaseResponse struct { V string `json:"v"` - Err error `json:"err"` + Err string `json:"err"` } type countRequest struct { diff --git a/examples/stringsvc3/proxying.go b/examples/stringsvc3/proxying.go index b37bb5d..6a10afd 100644 --- a/examples/stringsvc3/proxying.go +++ b/examples/stringsvc3/proxying.go @@ -1,6 +1,7 @@ package main import ( + "errors" "fmt" "net/http" "net/url" @@ -57,7 +58,10 @@ } resp := response.(uppercaseResponse) - return resp.V, resp.Err + if resp.Err != "" { + return resp.V, errors.New(resp.Err) + } + return resp.V, nil } func factory(ctx context.Context, qps int) loadbalancer.Factory { diff --git a/examples/stringsvc3/transport.go b/examples/stringsvc3/transport.go index 7e5e8d5..cb5c4e9 100644 --- a/examples/stringsvc3/transport.go +++ b/examples/stringsvc3/transport.go @@ -15,7 +15,7 @@ return func(ctx context.Context, request interface{}) (interface{}, error) { req := request.(uppercaseRequest) v, err := svc.Uppercase(req.S) - return uppercaseResponse{v, err}, nil + return uppercaseResponse{v, err.Error()}, nil } } @@ -70,7 +70,7 @@ type uppercaseResponse struct { V string `json:"v"` - Err error `json:"err"` + Err string `json:"err"` } type countRequest struct {