All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.panteleyev.commons.xml.XMLStreamWriterWrapper Maven / Gradle / Ivy

/*
 Copyright © 2024 Petr Panteleyev 
 SPDX-License-Identifier: BSD-2-Clause
 */
package org.panteleyev.commons.xml;

import javax.xml.namespace.QName;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import java.io.OutputStream;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Map;
import java.util.Set;

import static org.panteleyev.commons.xml.Formatters.DATE_FORMATTER;
import static org.panteleyev.commons.xml.Formatters.DATE_TIME_FORMATTER;

/**
 * Implements convenience wrapper for {@link XMLStreamWriter} instances.
 * 

Attribute values are converted to string accoring to the following rules:

* * * * * * * *
ClassString Value
{@link String}as is
{@link LocalDateTime}ISO date time
{@link Enum}{@link Enum#name()}
{@link LocalDate}{@link LocalDate#toEpochDay()} or ISO date depending on {@link Option options}.
{@link Object}{@link Object#toString()}
*/ @SuppressWarnings("UnusedReturnValue") public class XMLStreamWriterWrapper implements AutoCloseable { /** * Serialization options. */ public enum Option { /** * Exports {@link LocalDate} as {@link LocalDate#toEpochDay() epoch day}, otherwise as ISO_DATE. */ LOCAL_DATE_AS_EPOCH_DAY } private static final XMLOutputFactory XML_OUTPUT_FACTORY = XMLOutputFactory.newInstance(); private final XMLStreamWriter writer; private final boolean localDateAsEpochDay; /** * Creates an instance of {@link XMLStreamWriterWrapper} with default options. * * @param out output stream * @return instance of {@link XMLStreamWriterWrapper} */ public static XMLStreamWriterWrapper newInstance(OutputStream out) { return newInstance(out, Set.of()); } /** * Creates an instance of {@link XMLStreamWriterWrapper} with specified options. * * @param out output stream * @param options set of options * @return instance of {@link XMLStreamWriterWrapper} */ public static XMLStreamWriterWrapper newInstance(OutputStream out, Set




© 2015 - 2025 Weber Informatics LLC | Privacy Policy