/
metadata.go
58 lines (48 loc) · 1.29 KB
/
metadata.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package trigger
import (
"github.com/project-flogo/core/data"
"github.com/project-flogo/core/data/metadata"
"reflect"
"strings"
)
type Metadata struct {
Settings map[string]data.TypedValue
HandlerSettings map[string]data.TypedValue
Output map[string]data.TypedValue
Reply map[string]data.TypedValue
//DEPRECATED
ID string
}
func NewMetadata(mdStructs ...interface{}) *Metadata {
if len(mdStructs) == 1 {
if mdJson, ok := mdStructs[0].(string); ok {
return metadataFromOldJson(mdJson)
}
}
var settings map[string]data.TypedValue
var handlerSettings map[string]data.TypedValue
var output map[string]data.TypedValue
var reply map[string]data.TypedValue
for _, mdStruct := range mdStructs {
typedMap := metadata.StructToTypedMap(mdStruct)
name := getName(mdStruct)
switch name {
case "settings":
settings = typedMap
case "handlersettings":
handlerSettings = typedMap
case "output":
output = typedMap
case "reply":
reply = typedMap
}
}
return &Metadata{Settings: settings, HandlerSettings: handlerSettings, Output: output, Reply: reply}
}
func getName(mdStruct interface{}) string {
if t := reflect.TypeOf(mdStruct); t.Kind() == reflect.Ptr {
return strings.ToLower(t.Elem().Name())
} else {
return strings.ToLower(t.Name())
}
}