Return error for FCTemplate instead of panic

This commit is contained in:
TeoV
2018-09-20 03:29:33 -04:00
committed by Dan Christian Bogos
parent b7bd69c6be
commit a0aeaacdae
8 changed files with 70 additions and 28 deletions

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -18,8 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
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
}

View File

@@ -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))
}
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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,