Skip to content

Commit

Permalink
refactor: extract GetMessageDescriptor logic
Browse files Browse the repository at this point in the history
  • Loading branch information
yin1999 committed Jan 9, 2024
1 parent 5b73da1 commit 8c2d3b3
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 19 deletions.
14 changes: 14 additions & 0 deletions common/serial/typed_message.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,20 @@ func GetMessageType(message proto.Message) string {
return string(message.ProtoReflect().Descriptor().FullName())
}

// GetMessageDescriptor returns the MessageDescriptor of the message with fullName.
func GetMessageDescriptor(fullName string) (protoreflect.MessageDescriptor, error) {
mt, err := protoregistry.GlobalFiles.FindDescriptorByName(protoreflect.FullName(fullName))
if err != nil {
return nil, errors.New("Serial: Unknown message name: " + fullName)
}

message, ok := mt.(protoreflect.MessageDescriptor)
if !ok {
return nil, errors.New("Serial: Message with name: " + fullName + " is not a MessageDescriptor")
}
return message, nil
}

// GetInstance creates a new instance of the message with messageType.
func GetInstance(messageType string) (proto.Message, error) {
// mType := proto.MessageType(messageType)
Expand Down
16 changes: 16 additions & 0 deletions common/serial/typed_message_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,19 @@ func TestConvertingNilMessage(t *testing.T) {
t.Error("expect nil, but actually not")
}
}

func TestGetMessageDescriptor(t *testing.T) {
_, err := GetMessageDescriptor("")
if err == nil {
t.Error("expect non-nil error, but got nil")
}

md, err := GetMessageDescriptor("google.protobuf.Any")
if err != nil {
t.Error("expect nil error, but got ", err)
}

if md == nil || md.FullName() != "google.protobuf.Any" {
t.Error("expect google.protobuf.Any, but got ", md)
}
}
12 changes: 3 additions & 9 deletions infra/conf/v4/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ package v4
import (
"strings"

"google.golang.org/protobuf/reflect/protoreflect"
"google.golang.org/protobuf/reflect/protoregistry"
"google.golang.org/protobuf/types/dynamicpb"
"google.golang.org/protobuf/types/known/anypb"

Expand Down Expand Up @@ -46,14 +44,10 @@ func (c *APIConfig) Build() (*commander.Config, error) {
if !strings.HasPrefix(s, "#") {
continue
}
mt, err := protoregistry.GlobalFiles.FindDescriptorByName(protoreflect.FullName(s[1:]))
if err != nil {
return nil, newError("Cannot find API", s, "").Base(err)
}

message, ok := mt.(protoreflect.MessageDescriptor)
if !ok {
return nil, newError("Cannot find API", s, "").Base(err)
message, err := serial.GetMessageDescriptor(s[1:])
if err != nil {
return nil, newError("Cannot find API", s[1:]).Base(err)
}

serviceConfig := dynamicpb.NewMessage(message)
Expand Down
12 changes: 2 additions & 10 deletions infra/conf/v4/services.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import (
"encoding/json"

"google.golang.org/protobuf/encoding/protojson"
"google.golang.org/protobuf/reflect/protoreflect"
"google.golang.org/protobuf/reflect/protoregistry"
"google.golang.org/protobuf/types/dynamicpb"
"google.golang.org/protobuf/types/known/anypb"

Expand All @@ -15,18 +13,12 @@ import (
func (c *Config) BuildServices(service map[string]*json.RawMessage) ([]*anypb.Any, error) {
var ret []*anypb.Any
for k, v := range service {
mt, err := protoregistry.GlobalFiles.FindDescriptorByName(protoreflect.FullName(k))
message, err := serial.GetMessageDescriptor(k)
if err != nil {
return nil, newError("Cannot find service", k, "").Base(err)
}

message, ok := mt.(protoreflect.MessageDescriptor)
if !ok {
return nil, newError("Cannot find service", k, "").Base(err)
return nil, newError("Cannot find service", k).Base(err)
}

serviceConfig := dynamicpb.NewMessage(message)

unmarshalOpt := protojson.UnmarshalOptions{DiscardUnknown: false}

if err := unmarshalOpt.Unmarshal(*v, serviceConfig); err != nil {
Expand Down

0 comments on commit 8c2d3b3

Please sign in to comment.