AlexStocks commented on code in PR #1963:
URL: https://github.com/apache/dubbo-go/pull/1963#discussion_r937343210


##########
metadata/definition/definition.go:
##########
@@ -121,6 +122,55 @@ func BuildServiceDefinition(service common.Service, url 
*common.URL) *ServiceDef
        return sd
 }
 
+// BuildFullDefinition can build service definition with full url parameters
+func BuildFullDefinition(service common.Service, url *common.URL) 
*FullServiceDefinition {
+       fsd := &FullServiceDefinition{}
+       sd := BuildServiceDefinition(service, url)
+       fsd.ServiceDefinition = *sd
+       fsd.Parameters = make(map[string]string)
+       for k, v := range url.GetParams() {
+               fsd.Parameters[k] = strings.Join(v, ",")
+       }
+       return fsd
+}
+
+// ToBytes convert ServiceDefinition to json string
+func (def *FullServiceDefinition) ToBytes() ([]byte, error) {
+       return json.Marshal(def)
+}
+
+// String will iterate all methods and parameters and convert them to json 
string
+func (def *FullServiceDefinition) String() string {
+       var methodStr strings.Builder
+       for _, m := range def.Methods {
+               var paramType strings.Builder
+               for _, p := range m.ParameterTypes {
+                       paramType.WriteString(fmt.Sprintf("{type:%v}", p))
+               }
+               var param strings.Builder
+               for _, d := range m.Parameters {
+                       
param.WriteString(fmt.Sprintf("{id:%v,type:%v,builderName:%v}", d.ID, d.Type, 
d.TypeBuilderName))
+               }
+               
methodStr.WriteString(fmt.Sprintf("{name:%v,parameterTypes:[%v],returnType:%v,params:[%v]
 }", m.Name, paramType.String(), m.ReturnType, param.String()))
+       }
+       var types strings.Builder
+       for _, d := range def.Types {
+               types.WriteString(fmt.Sprintf("{id:%v,type:%v,builderName:%v}", 
d.ID, d.Type, d.TypeBuilderName))
+       }
+
+       sortSlice := make([]string, 0)
+       var parameters strings.Builder
+       for k := range def.Parameters {
+               sortSlice = append(sortSlice, k)
+       }
+       sort.Slice(sortSlice, func(i, j int) bool { return sortSlice[i] < 
sortSlice[j] })
+       for _, k := range sortSlice {
+               parameters.WriteString(fmt.Sprintf("%v:%v,", k, 
def.Parameters[k]))
+       }
+
+       return fmt.Sprintf("{parameters:{%v}, canonicalName:%v, codeSource:%v, 
methods:[%v], types:[%v]}", strings.TrimRight(parameters.String(), ","), 
def.CanonicalName, def.CodeSource, methodStr.String(), types.String())

Review Comment:
   so long, pls split it into two lines.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to