diff --git a/config/base_config.go b/config/base_config.go index 909b6bc8f48f51528de93aa67ac788f05a8c18b2..6d5ec7e2498ba65b2a6833b6c9cefcb3394e60df 100644 --- a/config/base_config.go +++ b/config/base_config.go @@ -27,6 +27,7 @@ import ( import ( perrors "github.com/pkg/errors" + "gopkg.in/yaml.v2" ) import ( @@ -366,15 +367,24 @@ func initializeStruct(t reflect.Type, v reflect.Value) { } -// loadYmlConfig Load yml config byte from file -func loadYmlConfig(confRouterFile string) ([]byte, error) { - if len(confRouterFile) == 0 { +// loadYMLConfig Load yml config byte from file +func loadYMLConfig(confProFile string) ([]byte, error) { + if len(confProFile) == 0 { return nil, perrors.Errorf("application configure(provider) file name is nil") } - if path.Ext(confRouterFile) != ".yml" { - return nil, perrors.Errorf("application configure file name{%v} suffix must be .yml", confRouterFile) + if path.Ext(confProFile) != ".yml" { + return nil, perrors.Errorf("application configure file name{%v} suffix must be .yml", confProFile) } - return ioutil.ReadFile(confRouterFile) + return ioutil.ReadFile(confProFile) +} + +// unmarshalYMLConfig Load yml config byte from file , then unmarshal to object +func unmarshalYMLConfig(confProFile string, out interface{}) error { + confFileStream, err := loadYMLConfig(confProFile) + if err != nil { + return perrors.Errorf("ioutil.ReadFile(file:%s) = error:%v", confProFile, perrors.WithStack(err)) + } + return yaml.Unmarshal(confFileStream, out) } diff --git a/config/base_config_test.go b/config/base_config_test.go index d16b2420922ece60ef2135729cd47d5aa73a3760..6973a4a18b5e3a78d9039bc818a5a2a046613783 100644 --- a/config/base_config_test.go +++ b/config/base_config_test.go @@ -18,6 +18,7 @@ package config import ( "fmt" + "path/filepath" "reflect" "testing" ) @@ -517,3 +518,13 @@ func Test_initializeStruct(t *testing.T) { return consumerConfig.References != nil }) } + +func TestUnmarshalYMLConfig(t *testing.T) { + conPath, err := filepath.Abs("./testdata/consumer_config_with_configcenter.yml") + assert.NoError(t, err) + c := &ConsumerConfig{} + assert.NoError(t, unmarshalYMLConfig(conPath, c)) + assert.Equal(t, "default", c.ProxyFactory) + assert.Equal(t, "dubbo.properties", c.ConfigCenterConfig.ConfigFile) + assert.Equal(t, "100ms", c.Connect_Timeout) +} diff --git a/config/condition_router_config.go b/config/condition_router_config.go index 20d096a37399480f33253a6e461cb013a8797599..a95b2d2b1265a4c069abd8cbc682a9474c15f454 100644 --- a/config/condition_router_config.go +++ b/config/condition_router_config.go @@ -30,7 +30,7 @@ import ( //RouterInit Load config file to init router config func RouterInit(confRouterFile string) error { fileRouterFactories := extension.GetFileRouterFactories() - bytes, err := loadYmlConfig(confRouterFile) + bytes, err := loadYMLConfig(confRouterFile) if err != nil { return perrors.Errorf("ioutil.ReadFile(file:%s) = error:%v", confRouterFile, perrors.WithStack(err)) } diff --git a/config/consumer_config.go b/config/consumer_config.go index 98917ebca2ff3abcce6c952a9bc78d93cd74f5d8..94da301ce45acedb720120d56dc07bf76c780d7f 100644 --- a/config/consumer_config.go +++ b/config/consumer_config.go @@ -18,8 +18,6 @@ package config import ( - "io/ioutil" - "path" "time" ) @@ -27,7 +25,6 @@ import ( "github.com/creasty/defaults" "github.com/dubbogo/getty" perrors "github.com/pkg/errors" - "gopkg.in/yaml.v2" ) import ( @@ -90,16 +87,8 @@ func ConsumerInit(confConFile string) error { return perrors.Errorf("application configure(consumer) file name is nil") } - if path.Ext(confConFile) != ".yml" { - return perrors.Errorf("application configure file name{%v} suffix must be .yml", confConFile) - } - - confFileStream, err := ioutil.ReadFile(confConFile) - if err != nil { - return perrors.Errorf("ioutil.ReadFile(file:%s) = error:%v", confConFile, perrors.WithStack(err)) - } consumerConfig = &ConsumerConfig{} - err = yaml.Unmarshal(confFileStream, consumerConfig) + err := unmarshalYMLConfig(confConFile, consumerConfig) if err != nil { return perrors.Errorf("yaml.Unmarshal() = error:%v", perrors.WithStack(err)) } diff --git a/config/provider_config.go b/config/provider_config.go index 2967ecad3a49218aecf87be7d8e2f76281bfb1b4..a36fd4d0a07c3203e53582cbf2f3442d880a3981 100644 --- a/config/provider_config.go +++ b/config/provider_config.go @@ -17,15 +17,9 @@ package config -import ( - "io/ioutil" - "path" -) - import ( "github.com/creasty/defaults" perrors "github.com/pkg/errors" - "gopkg.in/yaml.v2" ) import ( @@ -81,16 +75,8 @@ func ProviderInit(confProFile string) error { return perrors.Errorf("application configure(provider) file name is nil") } - if path.Ext(confProFile) != ".yml" { - return perrors.Errorf("application configure file name{%v} suffix must be .yml", confProFile) - } - - confFileStream, err := ioutil.ReadFile(confProFile) - if err != nil { - return perrors.Errorf("ioutil.ReadFile(file:%s) = error:%v", confProFile, perrors.WithStack(err)) - } providerConfig = &ProviderConfig{} - err = yaml.Unmarshal(confFileStream, providerConfig) + err := unmarshalYMLConfig(confProFile, providerConfig) if err != nil { return perrors.Errorf("yaml.Unmarshal() = error:%v", perrors.WithStack(err)) }