Merge pull request #147 from poutsma/SPR-9768

# By Arjen Poutsma
* SPR-9768:
  Preserve comments when using JibxMarshaller
master
Chris Beams 12 years ago
commit ccd7b10237
  1. 11
      spring-core/src/main/java/org/springframework/util/xml/StaxUtils.java
  2. 4
      spring-core/src/main/java/org/springframework/util/xml/XMLEventStreamWriter.java
  3. 8
      spring-core/src/test/java/org/springframework/util/xml/XMLEventStreamWriterTests.java
  4. 4
      spring-oxm/src/main/java/org/springframework/oxm/jibx/JibxMarshaller.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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with 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 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 {@link XMLStreamWriter} that writes to a {@link XMLEventWriter}.
* @return a stream writer that writes to an event writer * @return a stream writer that writes to an event writer

@ -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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with 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 { private void writeStartElement(StartElement startElement) throws XMLStreamException {
eventWriter.add(startElement); 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 { private void writeNamespace(Namespace namespace) throws XMLStreamException {

@ -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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with 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 { public class XMLEventStreamWriterTests {
private static final String XML = private static final String XML =
"<?pi content?><root xmlns='namespace'><prefix:child xmlns:prefix='namespace2'>content</prefix:child></root>" "<?pi content?><root xmlns='namespace'><prefix:child xmlns:prefix='namespace2'><!--comment-->content</prefix:child></root>";
;
private XMLEventStreamWriter streamWriter; private XMLEventStreamWriter streamWriter;
@ -52,6 +51,7 @@ public class XMLEventStreamWriterTests {
streamWriter.writeDefaultNamespace("namespace"); streamWriter.writeDefaultNamespace("namespace");
streamWriter.writeStartElement("prefix", "child", "namespace2"); streamWriter.writeStartElement("prefix", "child", "namespace2");
streamWriter.writeNamespace("prefix", "namespace2"); streamWriter.writeNamespace("prefix", "namespace2");
streamWriter.writeComment("comment");
streamWriter.writeCharacters("content"); streamWriter.writeCharacters("content");
streamWriter.writeEndElement(); streamWriter.writeEndElement();
streamWriter.writeEndElement(); streamWriter.writeEndElement();
@ -61,4 +61,4 @@ public class XMLEventStreamWriterTests {
} }
} }

@ -338,8 +338,8 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe
@Override @Override
protected void marshalXmlEventWriter(Object graph, XMLEventWriter eventWriter) { protected void marshalXmlEventWriter(Object graph, XMLEventWriter eventWriter) {
ContentHandler contentHandler = StaxUtils.createContentHandler(eventWriter); XMLStreamWriter streamWriter = StaxUtils.createEventStreamWriter(eventWriter);
marshalSaxHandlers(graph, contentHandler, null); marshalXmlStreamWriter(graph, streamWriter);
} }

Loading…
Cancel
Save