func()

in internal/pkg/core/deployers/types/sequence.go [34:68]


func (seq *Sequence) unmarshal(decoder *xml.Decoder, position artifacts.Position) (artifacts.Sequence, error) {
	var mediatorList []artifacts.Mediator
	if position.Hierarchy == "" {
		position.Hierarchy = "sequence"
	} else {
		position.Hierarchy = position.Hierarchy + "->sequence"
	}
OuterLoop:
	for {
		token, err := decoder.Token()
		if err != nil {
			break
		}
		line, _ := decoder.InputPos()
		position := artifacts.Position{LineNo: line, FileName: position.FileName, Hierarchy: position.Hierarchy}
		switch element := token.(type) {
		case xml.StartElement:
			switch element.Name.Local {
			case "log":
				logMediator := LogMediator{}
				mediator, err := logMediator.Unmarshal(decoder, element, position)
				if err != nil {
					return artifacts.Sequence{}, err
				}
				mediatorList = append(mediatorList, mediator)
			}
		case xml.EndElement:
			// Stop when the </sequence> tag is encountered
			if element.Name.Local == "sequence" {
				break OuterLoop
			}
		}
	}
	return artifacts.Sequence{MediatorList: mediatorList, Position: position}, nil
}