001package com.plivo.api.xml;
002
003import com.plivo.api.exceptions.PlivoValidationException;
004import com.plivo.api.validators.Validate;
005
006import java.util.ArrayList;
007import java.util.Arrays;
008import java.util.List;
009import javax.xml.bind.annotation.XmlElement;
010import javax.xml.bind.annotation.XmlElements;
011import javax.xml.bind.annotation.XmlRootElement;
012
013@XmlRootElement(name = "Response")
014public class Response extends PlivoXml {
015
016    @XmlElements({
017            @XmlElement(name = "Wait", type = Wait.class),
018            @XmlElement(name = "Dial", type = Dial.class),
019            @XmlElement(name = "Conference", type = Conference.class),
020            @XmlElement(name = "MultiPartyCall", type = MultiPartyCall.class),
021            @XmlElement(name = "Message", type = Message.class),
022            @XmlElement(name = "Play", type = Play.class),
023            @XmlElement(name = "Speak", type = Speak.class),
024            @XmlElement(name = "DTMF", type = Dtmf.class),
025            @XmlElement(name = "PreAnswer", type = PreAnswer.class),
026            @XmlElement(name = "Hangup", type = Hangup.class),
027            @XmlElement(name = "Redirect", type = Redirect.class),
028            @XmlElement(name = "GetDigits", type = GetDigits.class),
029            @XmlElement(name = "GetInput", type = GetInput.class),
030            @XmlElement(name = "Record", type = Record.class),
031            @XmlElement(name = "Stream", type = Stream.class),
032    })
033    private List<com.plivo.api.xml.XmlElement> children = new ArrayList<>();
034
035    public Response children(ResponseNestable... nestable) throws PlivoValidationException {
036    for(ResponseNestable n: nestable){
037      Validate.check(n);
038    }
039        children.addAll(Arrays.asList(nestable));
040        return this;
041    }
042}