PrologPI.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 Processing Instruction (PI)
 * within Prolog part of the Document (before XML Root element,
 * after XML declaration if one written),
 * to be written using {@link XmlGeneratorInitializer}.
 *
 * @since 3.2
 */
public record PrologPI(String target, String data)
    implements PrologDirective
{
    public PrologPI {
        target = ArgUtil.nonEmptyNonNull("target", target);
        data = ArgUtil.emptyToNull(data);
    }

    @Override
    public void write(ToXmlGenerator xmlGen, XMLStreamWriter2 sw) throws XMLStreamException {
        if (data == null) {
            sw.writeProcessingInstruction(target);
        } else {
            sw.writeProcessingInstruction(target, data);
        }
    }
}