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);
}