github.com/TIBCOSoftware/flogo-lib@v0.5.9/core/mapper/exprmapper/exprmapper.go (about) 1 package exprmapper 2 3 import ( 4 "fmt" 5 "github.com/TIBCOSoftware/flogo-lib/core/data" 6 "github.com/TIBCOSoftware/flogo-lib/core/mapper/assign" 7 "github.com/TIBCOSoftware/flogo-lib/core/mapper/exprmapper/expression" 8 "github.com/TIBCOSoftware/flogo-lib/logger" 9 10 //Pre registry all function for now 11 _ "github.com/TIBCOSoftware/flogo-lib/core/mapper/exprmapper/function/array/length" 12 _ "github.com/TIBCOSoftware/flogo-lib/core/mapper/exprmapper/function/number/random" 13 _ "github.com/TIBCOSoftware/flogo-lib/core/mapper/exprmapper/function/string/concat" 14 _ "github.com/TIBCOSoftware/flogo-lib/core/mapper/exprmapper/function/string/equals" 15 _ "github.com/TIBCOSoftware/flogo-lib/core/mapper/exprmapper/function/string/equalsignorecase" 16 _ "github.com/TIBCOSoftware/flogo-lib/core/mapper/exprmapper/function/string/length" 17 _ "github.com/TIBCOSoftware/flogo-lib/core/mapper/exprmapper/function/string/substring" 18 ) 19 20 var log = logger.GetLogger("expr-mapper") 21 22 const ( 23 MAP_TO_INPUT = "$INPUT" 24 ) 25 26 func MapExpreesion(mapping *data.MappingDef, inputScope, outputScope data.Scope, resolver data.Resolver) error { 27 mappingValue, err := GetExpresssionValue(mapping.Value, inputScope, resolver) 28 if err != nil { 29 return err 30 } 31 err = assign.SetValueToOutputScope(mapping.MapTo, outputScope, mappingValue) 32 if err != nil { 33 err = fmt.Errorf("Set value %+v to output [%s] error - %s", mappingValue, mapping.MapTo, err.Error()) 34 log.Error(err) 35 return err 36 } 37 log.Debugf("Set value %+v to %s Done", mappingValue, mapping.MapTo) 38 return nil 39 } 40 41 func GetExpresssionValue(mappingV interface{}, inputScope data.Scope, resolver data.Resolver) (interface{}, error) { 42 mappingValue, ok := mappingV.(string) 43 if !ok { 44 return mappingV, nil 45 } 46 exp, err := expression.ParseExpression(mappingValue) 47 if err == nil { 48 //flogo expression 49 log.Debugf("[%s] is an valid expression", mappingValue) 50 expValue, err := exp.EvalWithScope(inputScope, resolver) 51 if err != nil { 52 return nil, fmt.Errorf("Execution failed for mapping [%s] due to error - %s", mappingValue, err.Error()) 53 } 54 return expValue, nil 55 } else { 56 log.Debugf("[%s] is not an expression, take it as assign", mappingValue) 57 return assign.GetMappingValue(mappingV, inputScope, resolver) 58 } 59 }