DTD.java

package tools.jackson.dataformat.xml.ser;

import javax.xml.stream.XMLStreamException;

import org.codehaus.stax2.XMLStreamWriter2;

import tools.jackson.dataformat.xml.util.ArgUtil;

/**
 * Value container to represent XML Document Type Declaration,
 * to be written using {@link XmlGeneratorInitializer}.
 *
 * @since 3.2
 */
public record DTD(String rootName,
        String systemId, String publicId,
        String internalSubset)
    implements PrologDirective
{
    public DTD {
        rootName = ArgUtil.nonEmptyNonNull("rootName", rootName);
        systemId = ArgUtil.emptyToNull(systemId);
        publicId = ArgUtil.emptyToNull(publicId);
        internalSubset = ArgUtil.emptyToNull(internalSubset);
    }

    @Override
    public void write(ToXmlGenerator xmlGen, XMLStreamWriter2 xmlWriter)
        throws XMLStreamException
    {
        xmlWriter.writeDTD(rootName(), systemId(), publicId(), internalSubset());
    }
}