package org.atomnuke.atom.io.writer.stax;
import java.io.OutputStream;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import org.atomnuke.atom.io.AtomWriteException;
import org.atomnuke.atom.io.AtomWriter;
import org.atomnuke.atom.io.cfg.WriterConfiguration;
import org.atomnuke.atom.model.Entry;
import org.atomnuke.atom.model.Feed;
/**
*
* @author zinic
*/
public class StaxAtomWriter implements AtomWriter {
private final WriterConfiguration writerConfiguration;
private final XMLOutputFactory outputFactory;
public StaxAtomWriter(WriterConfiguration writerConfiguration, XMLOutputFactory outputFactory) {
this.writerConfiguration = writerConfiguration;
this.outputFactory = outputFactory;
}
@Override
public void write(OutputStream output, Feed f) throws AtomWriteException {
try {
final XMLStreamWriter writer = outputFactory.createXMLStreamWriter(output);
Writer.instance().write(new WriterContext(writer, writerConfiguration), f);
} catch (XMLStreamException xmlse) {
throw new AtomWriteException("Failed to write Atom entry. Reason: " + xmlse.getMessage(), xmlse);
}
}
@Override
public void write(OutputStream output, Entry e) throws AtomWriteException {
try {
final XMLStreamWriter writer = outputFactory.createXMLStreamWriter(output);
Writer.instance().write(new WriterContext(writer, writerConfiguration), e);
} catch (XMLStreamException xmlse) {
throw new AtomWriteException("Failed to write Atom entry. Reason: " + xmlse.getMessage(), xmlse);
}
}
}