| 70 | } |
| 71 | |
| 72 | func parseErrorHandler(rawMessage *v1.RawMessage) (v1.ErrorHandler, error) { |
| 73 | var properties map[v1.ErrorHandlerType]v1.RawMessage |
| 74 | err := json.Unmarshal(*rawMessage, &properties) |
| 75 | if err != nil { |
| 76 | return nil, err |
| 77 | } |
| 78 | if len(properties) > 1 { |
| 79 | return nil, fmt.Errorf("you must provide just 1 error handler, provided %d", len(properties)) |
| 80 | } |
| 81 | |
| 82 | for errHandlType, errHandlValue := range properties { |
| 83 | var dst v1.ErrorHandler |
| 84 | switch errHandlType { |
| 85 | case v1.ErrorHandlerTypeNone: |
| 86 | dst = new(v1.ErrorHandlerNone) |
| 87 | case v1.ErrorHandlerTypeLog: |
| 88 | dst = new(v1.ErrorHandlerLog) |
| 89 | case v1.ErrorHandlerTypeSink: |
| 90 | dst = new(v1.ErrorHandlerSink) |
| 91 | default: |
| 92 | return nil, fmt.Errorf("unknown error handler type %s", errHandlType) |
| 93 | } |
| 94 | |
| 95 | if err = json.Unmarshal(errHandlValue, dst); err != nil { |
| 96 | return nil, err |
| 97 | } |
| 98 | if err = dst.Validate(); err != nil { |
| 99 | return nil, err |
| 100 | } |
| 101 | |
| 102 | return dst, nil |
| 103 | } |
| 104 | |
| 105 | return nil, errors.New("you must provide any supported error handler") |
| 106 | } |
| 107 | |
| 108 | func setErrorHandlerConfiguration(errorHandlerBinding *bindings.Binding, errorHandler v1.ErrorHandler) error { |
| 109 | properties, err := errorHandler.Configuration() |