diff --git a/config/fwvdp.go b/config/fwvdp.go index 9b6a34573..4754e4927 100644 --- a/config/fwvdp.go +++ b/config/fwvdp.go @@ -28,17 +28,15 @@ import ( ) // NewfwvProvider constructs a DataProvider -func NewFWVProvider(record, pathPrfx string) (dP DataProvider) { - dP = &FWVProvider{req: record, cache: NewNavigableMap(nil), pathPrfx: pathPrfx} +func NewFWVProvider(record string) (dP DataProvider) { + dP = &FWVProvider{req: record, cache: NewNavigableMap(nil)} return } // fwvProvider implements engine.DataProvider so we can pass it to filters type FWVProvider struct { - req string - cache *NavigableMap - pathPrfx string // if this comes in path it will be ignored - // pathPrfx should be reviewed once the cdrc is removed + req string + cache *NavigableMap } // String is part of engine.DataProvider interface @@ -53,12 +51,6 @@ func (fP *FWVProvider) FieldAsInterface(fldPath []string) (data interface{}, err return } fwvIdx := fldPath[0] - if len(fldPath) == 2 { - fwvIdx = fldPath[1] - } - if fP.pathPrfx != utils.EmptyString && (fldPath[0] != fP.pathPrfx || len(fldPath) < 2) { - return "", utils.ErrPrefixNotFound(strings.Join(fldPath, utils.NestingSep)) - } if data, err = fP.cache.FieldAsInterface(fldPath); err == nil || err != utils.ErrNotFound { // item found in cache return diff --git a/config/slicedp.go b/config/slicedp.go index ee538f4ac..3ab7793a4 100644 --- a/config/slicedp.go +++ b/config/slicedp.go @@ -22,23 +22,20 @@ import ( "fmt" "net" "strconv" - "strings" "github.com/cgrates/cgrates/utils" ) // NewSliceDP constructs a DataProvider -func NewSliceDP(record []string, pathPrfx string) (dP DataProvider) { - dP = &SliceDP{req: record, cache: NewNavigableMap(nil), pathPrfx: pathPrfx} +func NewSliceDP(record []string) (dP DataProvider) { + dP = &SliceDP{req: record, cache: NewNavigableMap(nil)} return } // SliceDP implements engine.DataProvider so we can pass it to filters type SliceDP struct { - req []string - cache *NavigableMap - pathPrfx string // if this comes in path it will be ignored - // pathPrfx should be reviewed once the cdrc is removed + req []string + cache *NavigableMap } // String is part of engine.DataProvider interface @@ -52,13 +49,10 @@ func (cP *SliceDP) FieldAsInterface(fldPath []string) (data interface{}, err err if len(fldPath) == 0 { return } + if len(fldPath) != 1 { + return nil, fmt.Errorf("Invalid fieldPath %+v", fldPath) + } idx := fldPath[0] - if len(fldPath) == 2 { - idx = fldPath[1] - } - if cP.pathPrfx != utils.EmptyString && (fldPath[0] != cP.pathPrfx || len(fldPath) < 2) { - return "", utils.ErrPrefixNotFound(strings.Join(fldPath, utils.NestingSep)) - } if data, err = cP.cache.FieldAsInterface(fldPath); err == nil || err != utils.ErrNotFound { // item found in cache return diff --git a/config/xmldp.go b/config/xmldp.go index 8cd75577c..c59326cd2 100644 --- a/config/xmldp.go +++ b/config/xmldp.go @@ -29,18 +29,16 @@ import ( ) // NewXmlProvider constructs a DataProvider -func NewXmlProvider(req *xmlquery.Node, cdrPath utils.HierarchyPath, pathPrfx string) (dP DataProvider) { - dP = &XmlProvider{req: req, cdrPath: cdrPath, cache: NewNavigableMap(nil), pathPrfx: pathPrfx} +func NewXmlProvider(req *xmlquery.Node, cdrPath utils.HierarchyPath) (dP DataProvider) { + dP = &XmlProvider{req: req, cdrPath: cdrPath, cache: NewNavigableMap(nil)} return } // XmlProvider implements engine.DataProvider so we can pass it to filters type XmlProvider struct { - req *xmlquery.Node - cdrPath utils.HierarchyPath //used to compute relative path - cache *NavigableMap - pathPrfx string // if this comes in path it will be ignored - // pathPrfx should be reviewed once the cdrc is removed + req *xmlquery.Node + cdrPath utils.HierarchyPath //used to compute relative path + cache *NavigableMap } // String is part of engine.DataProvider interface @@ -54,18 +52,12 @@ func (xP *XmlProvider) FieldAsInterface(fldPath []string) (data interface{}, err if len(fldPath) == 0 { return nil, utils.ErrNotFound } - if xP.pathPrfx != utils.EmptyString && fldPath[0] != xP.pathPrfx { - return "", utils.ErrPrefixNotFound(strings.Join(fldPath, utils.NestingSep)) - } if data, err = xP.cache.FieldAsInterface(fldPath); err == nil || err != utils.ErrNotFound { // item found in cache return } - err = nil // cancel previous err - relPath := utils.HierarchyPath(fldPath[len(xP.cdrPath)+1:]) // Need relative path to the xmlElmnt - if xP.pathPrfx == utils.EmptyString { // temporary fix untile re remove cdrc - relPath = utils.HierarchyPath(fldPath[len(xP.cdrPath):]) - } + err = nil // cancel previous err + relPath := utils.HierarchyPath(fldPath[len(xP.cdrPath):]) var slctrStr string for i := range relPath { if sIdx := strings.Index(relPath[i], "["); sIdx != -1 { diff --git a/config/xmldp_test.go b/config/xmldp_test.go index 5dd298453..37d3efa11 100644 --- a/config/xmldp_test.go +++ b/config/xmldp_test.go @@ -409,28 +409,28 @@ func TestXMLIndexes(t *testing.T) { if err != nil { t.Error(err) } - dP := NewXmlProvider(doc, utils.HierarchyPath([]string{}), utils.MetaReq) - if data, err := dP.FieldAsString([]string{"*req", "complete-success-notification", "userid"}); err != nil { + dP := NewXmlProvider(doc, utils.HierarchyPath([]string{})) + if data, err := dP.FieldAsString([]string{"complete-success-notification", "userid"}); err != nil { t.Error(err) } else if data != "386" { t.Errorf("expecting: 386, received: <%s>", data) } - if data, err := dP.FieldAsString([]string{"*req", "complete-success-notification", "username"}); err != nil { + if data, err := dP.FieldAsString([]string{"complete-success-notification", "username"}); err != nil { t.Error(err) } else if data != "sampleusername" { t.Errorf("expecting: sampleusername, received: <%s>", data) } - if data, err := dP.FieldAsString([]string{"*req", "complete-success-notification", "callleg", "seconds"}); err != nil { + if data, err := dP.FieldAsString([]string{"complete-success-notification", "callleg", "seconds"}); err != nil { t.Error(err) } else if data != "38" { t.Errorf("expecting: 38, received: <%s>", data) } - if data, err := dP.FieldAsString([]string{"*req", "complete-success-notification", "callleg[1]", "seconds"}); err != nil { + if data, err := dP.FieldAsString([]string{"complete-success-notification", "callleg[1]", "seconds"}); err != nil { t.Error(err) } else if data != "37" { t.Errorf("expecting: 37, received: <%s>", data) } - if data, err := dP.FieldAsString([]string{"*req", "complete-success-notification", "callleg[@calllegid='222147']", "seconds"}); err != nil { + if data, err := dP.FieldAsString([]string{"complete-success-notification", "callleg[@calllegid='222147']", "seconds"}); err != nil { t.Error(err) } else if data != "37" { t.Errorf("expecting: 37, received: <%s>", data) diff --git a/ers/filecsv.go b/ers/filecsv.go index 8dcaf21f4..608914aac 100644 --- a/ers/filecsv.go +++ b/ers/filecsv.go @@ -143,7 +143,7 @@ func (rdr *CSVFileER) processFile(fPath, fName string) (err error) { } rowNr++ // increment the rowNr after checking if it's not the end of file agReq := agents.NewAgentRequest( - config.NewSliceDP(record, utils.EmptyString), reqVars, + config.NewSliceDP(record), reqVars, nil, nil, rdr.Config().Tenant, rdr.cgrCfg.GeneralCfg().DefaultTenant, utils.FirstNonEmpty(rdr.Config().Timezone, diff --git a/ers/filefwv.go b/ers/filefwv.go index 22b25a4a0..cbc9cc8d2 100644 --- a/ers/filefwv.go +++ b/ers/filefwv.go @@ -169,7 +169,7 @@ func (rdr *FWVFileER) processFile(fPath, fName string) (err error) { rowNr++ // increment the rowNr after checking if it's not the end of file record := string(buf) agReq := agents.NewAgentRequest( - config.NewFWVProvider(record, utils.EmptyString), reqVars, + config.NewFWVProvider(record), reqVars, nil, nil, rdr.Config().Tenant, rdr.cgrCfg.GeneralCfg().DefaultTenant, utils.FirstNonEmpty(rdr.Config().Timezone, @@ -251,7 +251,7 @@ func (rdr *FWVFileER) processTrailer(file *os.File, rowNr, evsPosted int, absPat record := string(buf) reqVars := make(map[string]interface{}) agReq := agents.NewAgentRequest( - config.NewFWVProvider(record, utils.EmptyString), reqVars, + config.NewFWVProvider(record), reqVars, nil, nil, rdr.Config().Tenant, rdr.cgrCfg.GeneralCfg().DefaultTenant, utils.FirstNonEmpty(rdr.Config().Timezone, @@ -288,7 +288,7 @@ func (rdr *FWVFileER) processHeader(file *os.File, rowNr, evsPosted int, absPath func (rdr *FWVFileER) createHeaderMap(record string, rowNr, evsPosted int, absPath string) (err error) { reqVars := make(map[string]interface{}) agReq := agents.NewAgentRequest( - config.NewFWVProvider(record, utils.EmptyString), reqVars, + config.NewFWVProvider(record), reqVars, nil, nil, rdr.Config().Tenant, rdr.cgrCfg.GeneralCfg().DefaultTenant, utils.FirstNonEmpty(rdr.Config().Timezone, diff --git a/ers/filexml.go b/ers/filexml.go index 63d821b2b..7de9b8f4d 100644 --- a/ers/filexml.go +++ b/ers/filexml.go @@ -135,7 +135,7 @@ func (rdr *XMLFileER) processFile(fPath, fName string) (err error) { for _, xmlElmt := range xmlElmts { rowNr++ // increment the rowNr after checking if it's not the end of file agReq := agents.NewAgentRequest( - config.NewXmlProvider(xmlElmt, rdr.Config().XmlRootPath, utils.EmptyString), reqVars, + config.NewXmlProvider(xmlElmt, rdr.Config().XmlRootPath), reqVars, nil, nil, rdr.Config().Tenant, rdr.cgrCfg.GeneralCfg().DefaultTenant, utils.FirstNonEmpty(rdr.Config().Timezone, diff --git a/ers/flatstore.go b/ers/flatstore.go index 19781dd81..f0905151a 100644 --- a/ers/flatstore.go +++ b/ers/flatstore.go @@ -182,7 +182,7 @@ func (rdr *FlatstoreER) processFile(fPath, fName string) (err error) { } rowNr++ // increment the rowNr after checking if it's not the end of file agReq := agents.NewAgentRequest( - config.NewSliceDP(record, utils.EmptyString), reqVars, + config.NewSliceDP(record), reqVars, nil, nil, rdr.Config().Tenant, rdr.cgrCfg.GeneralCfg().DefaultTenant, utils.FirstNonEmpty(rdr.Config().Timezone, diff --git a/ers/partial_csv.go b/ers/partial_csv.go index 992fdc4cd..f784e6bee 100644 --- a/ers/partial_csv.go +++ b/ers/partial_csv.go @@ -158,7 +158,7 @@ func (rdr *PartialCSVFileER) processFile(fPath, fName string) (err error) { } rowNr++ // increment the rowNr after checking if it's not the end of file agReq := agents.NewAgentRequest( - config.NewSliceDP(record, utils.EmptyString), reqVars, + config.NewSliceDP(record), reqVars, nil, nil, rdr.Config().Tenant, rdr.cgrCfg.GeneralCfg().DefaultTenant, utils.FirstNonEmpty(rdr.Config().Timezone,