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
}