Skip to content

Commit

Permalink
Fix:modify uppercase and lowercase issues (apache#2570)
Browse files Browse the repository at this point in the history
  • Loading branch information
FinalT authored Jan 14, 2024
1 parent 4f11dba commit 61933d0
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 39 deletions.
7 changes: 4 additions & 3 deletions cmd/protoc-gen-go-triple/gen/generator/genTriple.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,9 @@ func ProcessProtoFile(file *descriptor.FileDescriptorProto) (TripleGo, error) {
for _, method := range service.GetMethod() {
serviceMethods = append(serviceMethods, Method{
MethodName: method.GetName(),
RequestType: strings.Split(method.GetInputType(), ".")[len(strings.Split(method.GetInputType(), "."))-1],
RequestType: util.ToUpper(strings.Split(method.GetInputType(), ".")[len(strings.Split(method.GetInputType(), "."))-1]),
StreamsRequest: method.GetClientStreaming(),
ReturnType: strings.Split(method.GetOutputType(), ".")[len(strings.Split(method.GetOutputType(), "."))-1],
ReturnType: util.ToUpper(strings.Split(method.GetOutputType(), ".")[len(strings.Split(method.GetOutputType(), "."))-1]),
StreamsReturn: method.GetServerStreaming(),
})
if method.GetClientStreaming() || method.GetServerStreaming() {
Expand Down Expand Up @@ -100,7 +100,8 @@ func ProcessProtoFile(file *descriptor.FileDescriptorProto) (TripleGo, error) {
} else {
tripleGo.Path = goPkg
}
tripleGo.FileName = strings.Split(file.GetName(), ".")[0]
_, fileName := filepath.Split(file.GetName())
tripleGo.FileName = strings.Split(fileName, ".")[0]
return tripleGo, nil
}

Expand Down
62 changes: 26 additions & 36 deletions cmd/protoc-gen-go-triple/gen/generator/tripleTpl.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ import (
"strings"
)

import (
"dubbo.apache.org/dubbo-go/v3/cmd/protoc-gen-go-triple/util"
)

var (
Tpls []*template.Template
TplPreamble *template.Template
Expand Down Expand Up @@ -65,28 +69,21 @@ func init() {
if err != nil {
log.Fatal(err)
}
TplClientInterface, err = template.New("clientInterface").Parse(InterfaceTpl)
TplClientInterface, err = template.New("clientInterface").Funcs(template.FuncMap{
"upper": util.ToUpper,
}).Parse(InterfaceTpl)
if err != nil {
log.Fatal(err)
}
TplClientInterfaceImpl, err = template.New("clientInterfaceImpl").Funcs(template.FuncMap{
"lower": func(s string) string {
if s == "" {
return ""
}
return strings.ToLower(s[:1]) + s[1:]
},
"lower": util.ToLower,
"upper": util.ToUpper,
}).Parse(InterfaceImplTpl)
if err != nil {
log.Fatal(err)
}
TplClientImpl, err = template.New("clientImpl").Funcs(template.FuncMap{
"lower": func(s string) string {
if s == "" {
return ""
}
return strings.ToLower(s[:1]) + s[1:]
},
"lower": util.ToLower,
}).Parse(ClientImplTpl)
if err != nil {
log.Fatal(err)
Expand All @@ -99,28 +96,21 @@ func init() {
if err != nil {
log.Fatal(err)
}
TplHandler, err = template.New("handler").Parse(HandlerTpl)
TplHandler, err = template.New("handler").Funcs(template.FuncMap{
"upper": util.ToUpper,
}).Parse(HandlerTpl)
if err != nil {
log.Fatal(err)
}
TplServerImpl, err = template.New("serverImpl").Funcs(template.FuncMap{
"lower": func(s string) string {
if s == "" {
return ""
}
return strings.ToLower(s[:1]) + s[1:]
},
"lower": util.ToLower,
}).Parse(ServerImplTpl)
if err != nil {
log.Fatal(err)
}
TplServerInfo, err = template.New("serverInfo").Funcs(template.FuncMap{
"lower": func(s string) string {
if s == "" {
return ""
}
return strings.ToLower(s[:1]) + s[1:]
},
"lower": util.ToLower,
"upper": util.ToUpper,
}).Parse(ServiceInfoTpl)
if err != nil {
log.Fatal(err)
Expand Down Expand Up @@ -202,7 +192,7 @@ const TypeCheckTpl = `var ({{$t := .}}{{range $s := .Services}}

const InterfaceTpl = `// {{$t := .}}{{range $s := .Services}}{{.ServiceName}} is a client for the {{$t.ProtoPackage}}.{{$s.ServiceName}} service.
type {{$s.ServiceName}} interface { {{- range $s.Methods}}
{{.MethodName}}(ctx context.Context{{if .StreamsRequest}}{{else}}, req *{{.RequestType}}{{end}}, opts ...client.CallOption) {{if or .StreamsReturn .StreamsRequest}}({{$s.ServiceName}}_{{.MethodName}}Client, error){{else}}(*{{.ReturnType}}, error){{end}}{{end}}
{{upper .MethodName}}(ctx context.Context{{if .StreamsRequest}}{{else}}, req *{{.RequestType}}{{end}}, opts ...client.CallOption) {{if or .StreamsReturn .StreamsRequest}}({{$s.ServiceName}}_{{.MethodName}}Client, error){{else}}(*{{.ReturnType}}, error){{end}}{{end}}
}{{end}}
`
Expand All @@ -227,7 +217,7 @@ type {{.ServiceName}}Impl struct {
conn *client.Connection
}
{{range .Methods}}{{if .StreamsRequest}}{{if .StreamsReturn}}
func (c *{{$s.ServiceName}}Impl) {{.MethodName}}(ctx context.Context, opts ...client.CallOption) ({{$s.ServiceName}}_{{.MethodName}}Client, error) {
func (c *{{$s.ServiceName}}Impl) {{upper .MethodName}}(ctx context.Context, opts ...client.CallOption) ({{$s.ServiceName}}_{{.MethodName}}Client, error) {
stream, err := c.conn.CallBidiStream(ctx, "{{.MethodName}}", opts...)
if err != nil {
return nil, err
Expand All @@ -236,7 +226,7 @@ func (c *{{$s.ServiceName}}Impl) {{.MethodName}}(ctx context.Context, opts ...cl
return &{{$s.ServiceName}}{{.MethodName}}Client{rawStream}, nil
}
{{else}}
func (c *{{$s.ServiceName}}Impl) {{.MethodName}}(ctx context.Context, opts ...client.CallOption) ({{$s.ServiceName}}_{{.MethodName}}Client, error) {
func (c *{{$s.ServiceName}}Impl) {{upper .MethodName}}(ctx context.Context, opts ...client.CallOption) ({{$s.ServiceName}}_{{.MethodName}}Client, error) {
stream, err := c.conn.CallClientStream(ctx, "{{.MethodName}}", opts...)
if err != nil {
return nil, err
Expand All @@ -245,7 +235,7 @@ func (c *{{$s.ServiceName}}Impl) {{.MethodName}}(ctx context.Context, opts ...cl
return &{{$s.ServiceName}}{{.MethodName}}Client{rawStream}, nil
}
{{end}}{{else}}{{if .StreamsReturn}}
func (c *{{$s.ServiceName}}Impl) {{.MethodName}}(ctx context.Context, req *{{.RequestType}}, opts ...client.CallOption) ({{$s.ServiceName}}_{{.MethodName}}Client, error) {
func (c *{{$s.ServiceName}}Impl) {{upper .MethodName}}(ctx context.Context, req *{{.RequestType}}, opts ...client.CallOption) ({{$s.ServiceName}}_{{.MethodName}}Client, error) {
stream, err := c.conn.CallServerStream(ctx, req, "{{.MethodName}}", opts...)
if err != nil {
return nil, err
Expand All @@ -254,7 +244,7 @@ func (c *{{$s.ServiceName}}Impl) {{.MethodName}}(ctx context.Context, req *{{.Re
return &{{$s.ServiceName}}{{.MethodName}}Client{rawStream}, nil
}
{{else}}
func (c *{{$s.ServiceName}}Impl) {{.MethodName}}(ctx context.Context, req *{{.RequestType}}, opts ...client.CallOption) (*{{.ReturnType}}, error) {
func (c *{{$s.ServiceName}}Impl) {{upper .MethodName}}(ctx context.Context, req *{{.RequestType}}, opts ...client.CallOption) (*{{.ReturnType}}, error) {
resp := new({{.ReturnType}})
if err := c.conn.CallUnary(ctx, []interface{}{req}, resp, "{{.MethodName}}", opts...); err != nil {
return nil, err
Expand Down Expand Up @@ -369,7 +359,7 @@ const MethodInfoTpl = `{{$t := .}}{{range $i, $s := .Services}}var {{.ServiceNam

const HandlerTpl = `{{$t := .}}{{range $s := .Services}}// {{.ServiceName}}Handler is an implementation of the {{$t.ProtoPackage}}.{{.ServiceName}} service.
type {{.ServiceName}}Handler interface { {{- range $s.Methods}}
{{.MethodName}}(context.Context, {{if .StreamsRequest}}{{$s.ServiceName}}_{{.MethodName}}Server{{else}}*{{.RequestType}}{{if .StreamsReturn}}, {{$s.ServiceName}}_{{.MethodName}}Server{{end}}{{end}}) {{if .StreamsReturn}}error{{else}}(*{{.ReturnType}}, error){{end}}{{end}}
{{upper .MethodName}}(context.Context, {{if .StreamsRequest}}{{$s.ServiceName}}_{{.MethodName}}Server{{else}}*{{.RequestType}}{{if .StreamsReturn}}, {{$s.ServiceName}}_{{.MethodName}}Server{{end}}{{end}}) {{if .StreamsReturn}}error{{else}}(*{{.ReturnType}}, error){{end}}{{end}}
}
func Register{{.ServiceName}}Handler(srv *server.Server, hdlr {{.ServiceName}}Handler, opts ...server.ServiceOption) error {
Expand Down Expand Up @@ -465,7 +455,7 @@ const ServiceInfoTpl = `{{$t := .}}{{range $s := .Services}}var {{.ServiceName}}
},
MethodFunc: func(ctx context.Context, args []interface{}, handler interface{}) (interface{}, error) {
stream := args[0].({{$s.ServiceName}}_{{.MethodName}}Server)
if err := handler.({{$s.ServiceName}}Handler).{{.MethodName}}(ctx, stream); err != nil {
if err := handler.({{$s.ServiceName}}Handler).{{upper .MethodName}}(ctx, stream); err != nil {
return nil, err
}
return nil, nil
Expand All @@ -479,7 +469,7 @@ const ServiceInfoTpl = `{{$t := .}}{{range $s := .Services}}var {{.ServiceName}}
},
MethodFunc: func(ctx context.Context, args []interface{}, handler interface{}) (interface{}, error) {
stream := args[0].({{$s.ServiceName}}_{{.MethodName}}Server)
res, err := handler.({{$s.ServiceName}}Handler).{{.MethodName}}(ctx, stream)
res, err := handler.({{$s.ServiceName}}Handler).{{upper .MethodName}}(ctx, stream)
if err != nil {
return nil, err
}
Expand All @@ -498,7 +488,7 @@ const ServiceInfoTpl = `{{$t := .}}{{range $s := .Services}}var {{.ServiceName}}
MethodFunc: func(ctx context.Context, args []interface{}, handler interface{}) (interface{}, error) {
req := args[0].(*{{.RequestType}})
stream := args[1].({{$s.ServiceName}}_{{.MethodName}}Server)
if err := handler.({{$s.ServiceName}}Handler).{{.MethodName}}(ctx, req, stream); err != nil {
if err := handler.({{$s.ServiceName}}Handler).{{upper .MethodName}}(ctx, req, stream); err != nil {
return nil, err
}
return nil, nil
Expand All @@ -512,7 +502,7 @@ const ServiceInfoTpl = `{{$t := .}}{{range $s := .Services}}var {{.ServiceName}}
},
MethodFunc: func(ctx context.Context, args []interface{}, handler interface{}) (interface{}, error) {
req := args[0].(*{{.RequestType}})
res, err := handler.({{$s.ServiceName}}Handler).{{.MethodName}}(ctx, req)
res, err := handler.({{$s.ServiceName}}Handler).{{upper .MethodName}}(ctx, req)
if err != nil {
return nil, err
}
Expand Down
36 changes: 36 additions & 0 deletions cmd/protoc-gen-go-triple/util/strings.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package util

import "strings"

// ToUpper will capitalize the first character
func ToUpper(s string) string {
if s == "" {
return ""
}
return strings.ToUpper(s[:1]) + s[1:]
}

// ToLower will lowercase the first character
func ToLower(s string) string {
if s == "" {
return ""
}
return strings.ToLower(s[:1]) + s[1:]
}

0 comments on commit 61933d0

Please sign in to comment.