github.com/TIBCOSoftware/flogo-lib@v0.5.9/core/mapper/exprmapper/ref/mappingref.go (about) 1 package ref 2 3 import ( 4 "errors" 5 "strings" 6 7 "github.com/TIBCOSoftware/flogo-lib/core/data" 8 "github.com/TIBCOSoftware/flogo-lib/logger" 9 ) 10 11 var log = logger.GetLogger("mapping-string") 12 13 type MappingRef struct { 14 ref string 15 } 16 17 func NewMappingRef(ref string) *MappingRef { 18 //Compatible TriggerData, the $TriggerData might in function or expression 19 if strings.Index(ref, "$TriggerData") >= 0 { 20 ref = strings.Replace(ref, "$TriggerData", "$flow", -1) 21 } 22 return &MappingRef{ref: ref} 23 } 24 25 func (m *MappingRef) GetRef() string { 26 return m.ref 27 } 28 29 func (m *MappingRef) Eval(inputScope data.Scope, resovler data.Resolver) (interface{}, error) { 30 log.Debugf("Eval mapping field %s", m.ref) 31 32 if inputScope == nil { 33 return nil, errors.New("Input scope cannot nil while eval mapping ref") 34 } 35 value, err := m.GetValue(inputScope, resovler) 36 if err != nil { 37 log.Errorf("Get From from ref error %+v", err) 38 } 39 40 log.Debugf("Eval mapping field result: %+v", value) 41 return value, err 42 43 } 44 45 func (m *MappingRef) GetValue(inputScope data.Scope, resovler data.Resolver) (interface{}, error) { 46 return resovler.Resolve(m.ref, inputScope) 47 }