diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemWriter.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemWriter.java index d2672347f..48afcb9fa 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemWriter.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemWriter.java @@ -73,6 +73,7 @@ import org.springframework.util.StringUtils; * @author Robert Kasanicky * @author Michael Minella * @author Parikshit Dutta + * @author Mahmoud Ben Hassine */ public class StaxEventItemWriter extends AbstractItemStreamItemWriter implements ResourceAwareItemWriterItemStream, InitializingBean { @@ -635,7 +636,7 @@ ResourceAwareItemWriterItemStream, InitializingBean { XMLEventFactory factory = createXmlEventFactory(); // write start document - if (getStandalone()==null) { + if (getStandalone() == null) { writer.add(factory.createStartDocument(getEncoding(), getVersion())); } else { diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/builder/StaxEventItemWriterBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/builder/StaxEventItemWriterBuilder.java index 0a4a531ab..02050a7b2 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/builder/StaxEventItemWriterBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/builder/StaxEventItemWriterBuilder.java @@ -28,6 +28,7 @@ import org.springframework.util.Assert; * * @author Michael Minella * @author Parikshit Dutta + * @author Mahmoud Ben Hassine * @since 4.0 * @see StaxEventItemWriter */ @@ -200,7 +201,7 @@ public class StaxEventItemWriterBuilder { } /** - * Standalone document declaration for the output document. Defaults to null. + * Standalone document declaration for the output document. Defaults to {@code null}. * * @param standalone Boolean standalone document declaration * @return the current instance of the builder diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/StaxEventItemWriterTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/StaxEventItemWriterTests.java index 047711ada..c315db4c4 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/StaxEventItemWriterTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/StaxEventItemWriterTests.java @@ -57,6 +57,7 @@ import static org.mockito.Mockito.when; * Tests for {@link StaxEventItemWriter}. * * @author Parikshit Dutta + * @author Mahmoud Ben Hassine */ public class StaxEventItemWriterTests { @@ -1024,13 +1025,7 @@ public class StaxEventItemWriterTests { private String getOutputFileContent(String encoding, boolean discardHeader) throws IOException { String value = FileUtils.readFileToString(resource.getFile(), encoding); if (discardHeader) { - // standalone is omitted if not explicitly set, meaning it will be 'yes'/'no' or no standalone attribute - if (value.contains("standalone")) { - boolean standalone = value.contains("standalone='yes'"); - return value.replace("", ""); - } - return value.replace("", ""); + return value.replaceFirst("<\\?xml.*?\\?>", ""); } return value; } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/builder/StaxEventItemWriterBuilderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/builder/StaxEventItemWriterBuilderTests.java index 0ac218def..52b800d59 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/builder/StaxEventItemWriterBuilderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/builder/StaxEventItemWriterBuilderTests.java @@ -47,6 +47,7 @@ import static org.junit.Assert.assertTrue; /** * @author Michael Minella * @author Parikshit Dutta + * @author Mahmoud Ben Hassine */ public class StaxEventItemWriterBuilderTests { @@ -240,7 +241,7 @@ public class StaxEventItemWriterBuilderTests { staxEventItemWriter.write(this.items); staxEventItemWriter.close(); - String output = getOutputFileContent(staxEventItemWriter.getEncoding(), false); + String output = getOutputFileContent(staxEventItemWriter.getEncoding()); assertFalse(output.contains("standalone=")); } @@ -260,7 +261,7 @@ public class StaxEventItemWriterBuilderTests { staxEventItemWriter.write(this.items); staxEventItemWriter.close(); - String output = getOutputFileContent(staxEventItemWriter.getEncoding(), false); + String output = getOutputFileContent(staxEventItemWriter.getEncoding()); assertTrue(output.contains("standalone='yes'")); } @@ -280,31 +281,16 @@ public class StaxEventItemWriterBuilderTests { staxEventItemWriter.write(this.items); staxEventItemWriter.close(); - String output = getOutputFileContent(staxEventItemWriter.getEncoding(), false); + String output = getOutputFileContent(staxEventItemWriter.getEncoding()); assertTrue(output.contains("standalone='no'")); } - private String getOutputFileContent(String encoding) throws IOException { - return getOutputFileContent(encoding, true); - } - /** * @param encoding the encoding - * @param discardHeader the flag to strip XML header * @return output file content as String */ - private String getOutputFileContent(String encoding, boolean discardHeader) throws IOException { - String value = FileUtils.readFileToString(resource.getFile(), encoding); - if (discardHeader) { - // standalone is omitted if not explicitly set, meaning it will be 'yes'/'no' or no standalone attribute - if (value.contains("standalone")) { - boolean standalone = value.contains("standalone='yes'"); - return value.replace("", ""); - } - return value.replace("", ""); - } - return value; + private String getOutputFileContent(String encoding) throws IOException { + return FileUtils.readFileToString(resource.getFile(), encoding); } @XmlRootElement(name="item", namespace="https://www.springframework.org/test")