001package com.plivo.api.xml;
002
003import javax.xml.bind.annotation.XmlAttribute;
004import javax.xml.bind.annotation.XmlElement;
005import javax.xml.bind.annotation.XmlElements;
006import javax.xml.bind.annotation.XmlRootElement;
007import javax.xml.bind.annotation.XmlValue;
008import java.util.ArrayList;
009import java.util.Arrays;
010import java.util.List;
011import javax.xml.bind.annotation.XmlMixed;
012import com.plivo.api.exceptions.PlivoXmlException;
013
014@XmlRootElement(name = "lang")
015public class Lang extends PlivoXml implements EmphasisNestable,
016                                              LangNestable,
017                                              PNestable,
018                                              ProsodyNestable,
019                                              SNestable,
020                                              SpeakNestable {
021
022  @XmlMixed
023  private List<Object> mixedContent = new ArrayList<Object>();
024
025  @XmlAttribute(name="xml:lang")
026  private String xmllang;
027
028  public Lang() {
029  }
030
031  public Lang(String content) {
032    this.mixedContent.add(content);
033  }
034
035  public Lang(String content, String xmllang) {
036    this.mixedContent.add(content);
037    this.xmllang = xmllang;
038  }
039
040  public String getXmllang() {
041    return this.xmllang;
042  }
043
044  public Lang children(Object... nestables) throws PlivoXmlException {
045    for (Object obj : nestables) {
046      if (obj instanceof LangNestable || obj instanceof String) {
047        mixedContent.add(obj);
048      } else {
049        throw new PlivoXmlException("XML Validation Error: <" + obj.getClass().getSimpleName() + "> can not be nested in <lang>");
050      }
051    }
052    return this;
053  }
054}