diff --git a/config/cdrcconfig.go b/config/cdrcconfig.go index e81df5a4d..369831061 100644 --- a/config/cdrcconfig.go +++ b/config/cdrcconfig.go @@ -113,7 +113,9 @@ func (self *CdrcConfig) loadFromJsonCfg(jsnCfg *CdrcJsonCfg) error { } } if jsnCfg.Tenant != nil { - self.Tenant = NewRSRParsersMustCompile(*jsnCfg.Tenant, true) + if self.Tenant, err = NewRSRParsers(*jsnCfg.Tenant, true); err != nil { + return err + } } if jsnCfg.Continue_on_success != nil { self.ContinueOnSuccess = *jsnCfg.Continue_on_success @@ -127,16 +129,24 @@ func (self *CdrcConfig) loadFromJsonCfg(jsnCfg *CdrcJsonCfg) error { self.PartialCacheExpiryAction = *jsnCfg.Partial_cache_expiry_action } if jsnCfg.Header_fields != nil { - self.HeaderFields = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Header_fields) + if self.HeaderFields, err = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Header_fields); err != nil { + return err + } } if jsnCfg.Content_fields != nil { - self.ContentFields = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Content_fields) + if self.ContentFields, err = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Content_fields); err != nil { + return err + } } if jsnCfg.Trailer_fields != nil { - self.TrailerFields = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Trailer_fields) + if self.TrailerFields, err = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Trailer_fields); err != nil { + return err + } } if jsnCfg.Cache_dump_fields != nil { - self.CacheDumpFields = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Cache_dump_fields) + if self.CacheDumpFields, err = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Cache_dump_fields); err != nil { + return err + } } return nil } diff --git a/config/cdreconfig.go b/config/cdreconfig.go index e05bc16eb..f4332d343 100644 --- a/config/cdreconfig.go +++ b/config/cdreconfig.go @@ -39,7 +39,7 @@ type CdreConfig struct { TrailerFields []*FCTemplate } -func (self *CdreConfig) loadFromJsonCfg(jsnCfg *CdreJsonCfg) error { +func (self *CdreConfig) loadFromJsonCfg(jsnCfg *CdreJsonCfg) (err error) { if jsnCfg == nil { return nil } @@ -80,13 +80,19 @@ func (self *CdreConfig) loadFromJsonCfg(jsnCfg *CdreJsonCfg) error { self.CostMultiplyFactor = *jsnCfg.Cost_multiply_factor } if jsnCfg.Header_fields != nil { - self.HeaderFields = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Header_fields) + if self.HeaderFields, err = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Header_fields); err != nil { + return err + } } if jsnCfg.Content_fields != nil { - self.ContentFields = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Content_fields) + if self.ContentFields, err = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Content_fields); err != nil { + return err + } } if jsnCfg.Trailer_fields != nil { - self.TrailerFields = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Trailer_fields) + if self.TrailerFields, err = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Trailer_fields); err != nil { + return err + } } return nil } diff --git a/config/fctemplate.go b/config/fctemplate.go index 56547ee21..fbac26051 100755 --- a/config/fctemplate.go +++ b/config/fctemplate.go @@ -18,8 +18,9 @@ along with this program. If not, see package config -func NewFCTemplateFromFCTemplateJsonCfg(jsnCfg *FcTemplateJsonCfg) *FCTemplate { +func NewFCTemplateFromFCTemplateJsonCfg(jsnCfg *FcTemplateJsonCfg) (*FCTemplate, error) { fcTmp := new(FCTemplate) + var err error if jsnCfg.Tag != nil { fcTmp.Tag = *jsnCfg.Tag } @@ -36,7 +37,10 @@ func NewFCTemplateFromFCTemplateJsonCfg(jsnCfg *FcTemplateJsonCfg) *FCTemplate { } } if jsnCfg.Value != nil { - fcTmp.Value = NewRSRParsersMustCompile(*jsnCfg.Value, true) + fcTmp.Value, err = NewRSRParsers(*jsnCfg.Value, true) + if err != nil { + return nil, err + } } if jsnCfg.Width != nil { fcTmp.Width = *jsnCfg.Width @@ -83,7 +87,7 @@ func NewFCTemplateFromFCTemplateJsonCfg(jsnCfg *FcTemplateJsonCfg) *FCTemplate { if jsnCfg.Mask_length != nil { fcTmp.MaskLen = *jsnCfg.Mask_length } - return fcTmp + return fcTmp, nil } type FCTemplate struct { @@ -109,10 +113,14 @@ type FCTemplate struct { MaskLen int } -func FCTemplatesFromFCTemapltesJsonCfg(jsnCfgFlds []*FcTemplateJsonCfg) []*FCTemplate { +func FCTemplatesFromFCTemapltesJsonCfg(jsnCfgFlds []*FcTemplateJsonCfg) ([]*FCTemplate, error) { retFields := make([]*FCTemplate, len(jsnCfgFlds)) + var err error for i, jsnFld := range jsnCfgFlds { - retFields[i] = NewFCTemplateFromFCTemplateJsonCfg(jsnFld) + retFields[i], err = NewFCTemplateFromFCTemplateJsonCfg(jsnFld) + if err != nil { + return nil, err + } } - return retFields + return retFields, err } diff --git a/config/fctemplate_test.go b/config/fctemplate_test.go index 938e9179d..dc58b6396 100755 --- a/config/fctemplate_test.go +++ b/config/fctemplate_test.go @@ -39,8 +39,9 @@ func TestNewFCTemplateFromFCTemplateJsonCfg(t *testing.T) { Filters: []string{"Filter1", "Filter2"}, Value: NewRSRParsersMustCompile("cgrates.org", true), } - rcv := NewFCTemplateFromFCTemplateJsonCfg(jsonCfg) - if !reflect.DeepEqual(expected, rcv) { + if rcv, err := NewFCTemplateFromFCTemplateJsonCfg(jsonCfg); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(expected, rcv) { t.Errorf("expected: %s ,received: %s", utils.ToJSON(expected), utils.ToJSON(rcv)) } } @@ -78,8 +79,9 @@ func TestFCTemplatesFromFCTemapltesJsonCfg(t *testing.T) { Value: NewRSRParsersMustCompile("SampleValue", true), }, } - rcv := FCTemplatesFromFCTemapltesJsonCfg(jsnCfgs) - if !reflect.DeepEqual(expected, rcv) { + if rcv, err := FCTemplatesFromFCTemapltesJsonCfg(jsnCfgs); err != nil { + t.Error(err) + } else if !reflect.DeepEqual(expected, rcv) { t.Errorf("expected: %s ,received: %s", utils.ToJSON(expected), utils.ToJSON(rcv)) } } diff --git a/config/httpagntcfg.go b/config/httpagntcfg.go index e4a16dd7d..7d5c1b16b 100644 --- a/config/httpagntcfg.go +++ b/config/httpagntcfg.go @@ -113,10 +113,14 @@ func (ha *HttpAgntProcCfg) loadFromJsonCfg(jsnCfg *HttpAgentProcessorJsnCfg) (er ha.ContinueOnSuccess = *jsnCfg.Continue_on_success } if jsnCfg.Request_fields != nil { - ha.RequestFields = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Request_fields) + if ha.RequestFields, err = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Request_fields); err != nil { + return + } } if jsnCfg.Reply_fields != nil { - ha.ReplyFields = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Reply_fields) + if ha.ReplyFields, err = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Reply_fields); err != nil { + return + } } return nil } diff --git a/config/loadersconfig.go b/config/loadersconfig.go index 7cad19bdc..497372209 100644 --- a/config/loadersconfig.go +++ b/config/loadersconfig.go @@ -58,7 +58,7 @@ type LoaderDataType struct { //rename to LoaderDataType Fields []*FCTemplate } -func (self *LoaderDataType) loadFromJsonCfg(jsnCfg *LoaderJsonDataType) error { +func (self *LoaderDataType) loadFromJsonCfg(jsnCfg *LoaderJsonDataType) (err error) { if jsnCfg == nil { return nil } @@ -69,7 +69,9 @@ func (self *LoaderDataType) loadFromJsonCfg(jsnCfg *LoaderJsonDataType) error { self.Filename = *jsnCfg.File_name } if jsnCfg.Fields != nil { - self.Fields = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Fields) + if self.Fields, err = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Fields); err != nil { + return + } } return nil } diff --git a/config/raconfig.go b/config/raconfig.go index e7def58e4..ba0caf256 100644 --- a/config/raconfig.go +++ b/config/raconfig.go @@ -136,10 +136,14 @@ func (self *RARequestProcessor) loadFromJsonCfg(jsnCfg *RAReqProcessorJsnCfg) (e self.Timezone = *jsnCfg.Timezone } if jsnCfg.Request_fields != nil { - self.RequestFields = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Request_fields) + if self.RequestFields, err = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Request_fields); err != nil { + return + } } if jsnCfg.Reply_fields != nil { - self.ReplyFields = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Reply_fields) + if self.ReplyFields, err = FCTemplatesFromFCTemapltesJsonCfg(*jsnCfg.Reply_fields); err != nil { + return + } } return nil } diff --git a/engine/cdrefwv_test.go b/engine/cdrefwv_test.go index 0182cfbad..464b2a07d 100644 --- a/engine/cdrefwv_test.go +++ b/engine/cdrefwv_test.go @@ -254,9 +254,15 @@ func TestWriteCdr(t *testing.T) { var err error wrBuf := &bytes.Buffer{} cfg, _ := config.NewDefaultCGRConfig() - hdrCfgFlds = config.FCTemplatesFromFCTemapltesJsonCfg(hdrJsnCfgFlds) - contentCfgFlds = config.FCTemplatesFromFCTemapltesJsonCfg(contentJsnCfgFlds) - trailerCfgFlds = config.FCTemplatesFromFCTemapltesJsonCfg(trailerJsnCfgFlds) + if hdrCfgFlds, err = config.FCTemplatesFromFCTemapltesJsonCfg(hdrJsnCfgFlds); err != nil { + t.Error(err) + } + if contentCfgFlds, err = config.FCTemplatesFromFCTemapltesJsonCfg(contentJsnCfgFlds); err != nil { + t.Error(err) + } + if trailerCfgFlds, err = config.FCTemplatesFromFCTemapltesJsonCfg(trailerJsnCfgFlds); err != nil { + t.Error(err) + } cdreCfg := &config.CdreConfig{ ExportFormat: utils.MetaFileFWV, HeaderFields: hdrCfgFlds,