diff --git a/spring-core/src/main/java/org/springframework/util/xml/StaxUtils.java b/spring-core/src/main/java/org/springframework/util/xml/StaxUtils.java index 4bd4a7a1ef..808a22ed77 100644 --- a/spring-core/src/main/java/org/springframework/util/xml/StaxUtils.java +++ b/spring-core/src/main/java/org/springframework/util/xml/StaxUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2012 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -309,6 +309,15 @@ public abstract class StaxUtils { return new XMLEventStreamReader(eventReader); } + /** + * Return a {@link XMLStreamWriter} that writes to a {@link XMLEventWriter}. + * @return a stream writer that writes to an event writer + * @since 3.2 + */ + public static XMLStreamWriter createEventStreamWriter(XMLEventWriter eventWriter) { + return new XMLEventStreamWriter(eventWriter, XMLEventFactory.newFactory()); + } + /** * Return a {@link XMLStreamWriter} that writes to a {@link XMLEventWriter}. * @return a stream writer that writes to an event writer diff --git a/spring-core/src/main/java/org/springframework/util/xml/XMLEventStreamWriter.java b/spring-core/src/main/java/org/springframework/util/xml/XMLEventStreamWriter.java index 8e74f7ccb0..c2f8b8509d 100644 --- a/spring-core/src/main/java/org/springframework/util/xml/XMLEventStreamWriter.java +++ b/spring-core/src/main/java/org/springframework/util/xml/XMLEventStreamWriter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2012 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -193,7 +193,7 @@ class XMLEventStreamWriter implements XMLStreamWriter { private void writeStartElement(StartElement startElement) throws XMLStreamException { eventWriter.add(startElement); - endElements.add(eventFactory.createEndElement(startElement.getName(), null)); + endElements.add(eventFactory.createEndElement(startElement.getName(), startElement.getNamespaces())); } private void writeNamespace(Namespace namespace) throws XMLStreamException { diff --git a/spring-core/src/test/java/org/springframework/util/xml/XMLEventStreamWriterTests.java b/spring-core/src/test/java/org/springframework/util/xml/XMLEventStreamWriterTests.java index baa65cbf40..1cf4bf3c0a 100644 --- a/spring-core/src/test/java/org/springframework/util/xml/XMLEventStreamWriterTests.java +++ b/spring-core/src/test/java/org/springframework/util/xml/XMLEventStreamWriterTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2011 the original author or authors. + * Copyright 2002-2012 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,8 +29,7 @@ import static org.custommonkey.xmlunit.XMLAssert.*; public class XMLEventStreamWriterTests { private static final String XML = - "content" - ; + "content"; private XMLEventStreamWriter streamWriter; @@ -52,6 +51,7 @@ public class XMLEventStreamWriterTests { streamWriter.writeDefaultNamespace("namespace"); streamWriter.writeStartElement("prefix", "child", "namespace2"); streamWriter.writeNamespace("prefix", "namespace2"); + streamWriter.writeComment("comment"); streamWriter.writeCharacters("content"); streamWriter.writeEndElement(); streamWriter.writeEndElement(); @@ -61,4 +61,4 @@ public class XMLEventStreamWriterTests { } -} \ No newline at end of file +} diff --git a/spring-oxm/src/main/java/org/springframework/oxm/jibx/JibxMarshaller.java b/spring-oxm/src/main/java/org/springframework/oxm/jibx/JibxMarshaller.java index a988fbd2c1..813c89931e 100644 --- a/spring-oxm/src/main/java/org/springframework/oxm/jibx/JibxMarshaller.java +++ b/spring-oxm/src/main/java/org/springframework/oxm/jibx/JibxMarshaller.java @@ -338,8 +338,8 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe @Override protected void marshalXmlEventWriter(Object graph, XMLEventWriter eventWriter) { - ContentHandler contentHandler = StaxUtils.createContentHandler(eventWriter); - marshalSaxHandlers(graph, contentHandler, null); + XMLStreamWriter streamWriter = StaxUtils.createEventStreamWriter(eventWriter); + marshalXmlStreamWriter(graph, streamWriter); }