diff --git a/config/reference_config.go b/config/reference_config.go
index 4f2bdbbc2921d3706e440111d45593938ebc99a7..db51dd29147a59a75a354789f8815b9fdb71d374 100644
--- a/config/reference_config.go
+++ b/config/reference_config.go
@@ -171,10 +171,11 @@ func (refconfig *ReferenceConfig) getUrlMap() url.Values {
urlMap.Set(constant.ENVIRONMENT_KEY, consumerConfig.ApplicationConfig.Environment)
//filter
- urlMap.Set(constant.REFERENCE_FILTER_KEY, mergeValue(consumerConfig.Filter, refconfig.Filter, constant.DEFAULT_REFERENCE_FILTERS))
+ var defaultReferenceFilter = constant.DEFAULT_REFERENCE_FILTERS
if refconfig.Generic {
- urlMap.Set(constant.REFERENCE_FILTER_KEY, mergeValue(consumerConfig.Filter, refconfig.Filter, constant.GENERIC_REFERENCE_FILTERS))
+ defaultReferenceFilter = defaultReferenceFilter + constant.DEFAULT_REFERENCE_FILTERS
}
+ urlMap.Set(constant.REFERENCE_FILTER_KEY, mergeValue(consumerConfig.Filter, refconfig.Filter, defaultReferenceFilter))
for _, v := range refconfig.Methods {
urlMap.Set("methods."+v.Name+"."+constant.LOADBALANCE_KEY, v.Loadbalance)
diff --git a/examples/general/dubbo/go-client/app/client.go b/examples/general/dubbo/go-client/app/client.go
index 956ab7466ce6262e559f2a9e1129189f3ac7536c..b7ee0e662a26251a79af13d36215cc2cb44fd794 100644
--- a/examples/general/dubbo/go-client/app/client.go
+++ b/examples/general/dubbo/go-client/app/client.go
@@ -301,7 +301,7 @@ func test3() {
time.Sleep(3 * time.Second)
println("\n\n\nstart to generic invoke")
- resp, err := referenceConfig.GetRPCService().(*config.GenericService).Invoke([]interface{}{"GetUser", []string{"java.lang.String"}, "A003"})
+ resp, err := referenceConfig.GetRPCService().(*config.GenericService).Invoke([]interface{}{"GetUser", []string{"java.lang.String"}, []interface{}{"A003"}})
if err != nil {
panic(err)
}
diff --git a/filter/impl/generic_filter.go b/filter/impl/generic_filter.go
index f65e51ddddafc7acdf4e2c68411313dcec9ae08e..12cb4c7fa59ac4f1f7c1466f385ea9e9b59567b5 100644
--- a/filter/impl/generic_filter.go
+++ b/filter/impl/generic_filter.go
@@ -81,7 +81,7 @@ func struct2MapAll(obj interface{}) interface{} {
t := reflect.TypeOf(obj)
v := reflect.ValueOf(obj)
if t.Kind() == reflect.Struct {
- result := make(map[string]interface{})
+ result := make(map[string]interface{}, t.NumField())
for i := 0; i < t.NumField(); i++ {
if v.Field(i).Kind() == reflect.Struct {
if v.Field(i).CanInterface() {
@@ -100,7 +100,7 @@ func struct2MapAll(obj interface{}) interface{} {
return result
} else if t.Kind() == reflect.Slice {
value := reflect.ValueOf(obj)
- var newTemps []interface{}
+ var newTemps = make([]interface{}, 0, value.Len())
for i := 0; i < value.Len(); i++ {
newTemp := struct2MapAll(value.Index(i).Interface())
newTemps = append(newTemps, newTemp)