У меня есть класс, который инкапсулирует StAX Writer для особой бизнес-записи XML. Вы можете вставить некоторые доменные объекты, и логика генерирует соответствующий XML.
Я не хочу предлагать экземпляр XMLStreamWriter
по соображениям безопасности, поэтому этот класс является единственным ответственным за запись в этого писателя. XMLStreamWriter
будет создан в этом классе. Для поддержки почти всех выходных вариантов, таких как Result, OutputStream и Writer, я также предоставляю конструкции для этих вариантов.
public CustomStreamWriter ([...], Result result) {
this([...], (Object) result);
}
public CustomStreamWriter ([...], OutputStream outputStream) {
this([...], (Object) outputStream);
}
public CustomStreamWriter ([...], Writer writer) {
this([...], (Object) writer);
}
protected CustomStreamWriter ([...], Object outputHandler) {
// Initialize some final fields and do some stuff with [...]
XMLOutputFactory factory = XMLOutputFactory.newInstance();
if(outputHandler instanceof OutputStream) {
this.writer = factory.createXMLStreamWriter((OutputStream) outputHandler);
} else if(outputHandler instanceof Result) {
this.writer = factory.createXMLStreamWriter((Result) outputHandler);
} else if(outputHandler instanceof Writer) {
this.writer = factory.createXMLStreamWriter((Writer) outputHandler);
}
}
Когда я смотрю на это, я думаю, что это очень уродливо и не очень хороший способ добиться этого. Stackoverflow, у вас есть намеки на меня?