You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2018/05/13 21:10:37 UTC
[maven-studies] branch maven-xml updated: Respect linebreaks when
adding new elements
This is an automated email from the ASF dual-hosted git repository.
rfscholte pushed a commit to branch maven-xml
in repository https://gitbox.apache.org/repos/asf/maven-studies.git
The following commit(s) were added to refs/heads/maven-xml by this push:
new 79cf041 Respect linebreaks when adding new elements
79cf041 is described below
commit 79cf041c5d367694ccebc49c052b4936c0ce026c
Author: rfscholte <rf...@apache.org>
AuthorDate: Sun May 13 23:10:29 2018 +0200
Respect linebreaks when adding new elements
---
.../apache/maven/xml/filters/ParentXMLFilter.java | 23 ++++++++++++++++++++++
.../maven/xml/filters/ParentXMLFilterTest.java | 20 +++++++++++++++++++
2 files changed, 43 insertions(+)
diff --git a/src/main/java/org/apache/maven/xml/filters/ParentXMLFilter.java b/src/main/java/org/apache/maven/xml/filters/ParentXMLFilter.java
index a5bdff8..1c6bb4b 100644
--- a/src/main/java/org/apache/maven/xml/filters/ParentXMLFilter.java
+++ b/src/main/java/org/apache/maven/xml/filters/ParentXMLFilter.java
@@ -59,6 +59,8 @@ public class ParentXMLFilter
private String resolvedVersion;
+ private char[] linebreak;
+
private List<SAXEvent> saxEvents = new ArrayList<>();
private SAXEventFactory eventFactory;
@@ -155,6 +157,20 @@ public class ParentXMLFilter
switch ( eventState )
{
+ case "parent":
+ int l;
+ for ( l = length ; l >= 0; l-- )
+ {
+ int i = start + l - 1;
+ if ( ch[i] == '\n' || ch[i] == '\r' )
+ {
+ break;
+ }
+ }
+
+ linebreak = new char[l];
+ System.arraycopy( ch, start, linebreak, 0, l );
+ break;
case "relativePath":
String relativePath = new String( ch, start, length );
resolvedVersion = relativePathToVersion( relativePath );
@@ -233,12 +249,19 @@ public class ParentXMLFilter
{
String versionQName = SAXEventUtils.renameQName( qName, "version" );
+// getEventFactory().characters( indent, 0, indent.length ).execute();
+
getEventFactory().startElement( uri, "version", versionQName, null ).execute();
getEventFactory().characters( resolvedVersion.toCharArray(), 0,
resolvedVersion.length() ).execute();
getEventFactory().endElement( uri, "version", versionQName ).execute();
+
+ if ( linebreak != null )
+ {
+ getEventFactory().characters( linebreak, 0, linebreak.length ).execute();
+ }
} );
}
}
diff --git a/src/test/java/org/apache/maven/xml/filters/ParentXMLFilterTest.java b/src/test/java/org/apache/maven/xml/filters/ParentXMLFilterTest.java
index b50fda7..060b320 100644
--- a/src/test/java/org/apache/maven/xml/filters/ParentXMLFilterTest.java
+++ b/src/test/java/org/apache/maven/xml/filters/ParentXMLFilterTest.java
@@ -152,4 +152,24 @@ public class ParentXMLFilterTest extends AbstractXMLFilterTests
assertEquals( expected, actual );
}
+
+
+ @Test
+ public void testIndent() throws Exception
+ {
+ String input = "<parent>\n"
+ + " <groupId>GROUPID</groupId>\n"
+ + " <artifactId>ARTIFACTID</artifactId>\n"
+ + " </parent>";
+ // transformer is responsible for line separator and indents
+ String expected = "<parent>" + System.lineSeparator()
+ + " <groupId>GROUPID</groupId>" + System.lineSeparator()
+ + " <artifactId>ARTIFACTID</artifactId>" + System.lineSeparator()
+ + " <version>1.0.0</version>" + System.lineSeparator()
+ + "</parent>";
+
+ String actual = transform( input, filter );
+
+ assertEquals( expected, actual );
+ }
}
--
To stop receiving notification emails like this one, please contact
rfscholte@apache.org.