This is an automated email from the ASF dual-hosted git repository. rfscholte pushed a commit to branch MNG-6656 in repository https://gitbox.apache.org/repos/asf/maven.git
commit 87601ecee7e0b631f98d12f1e43751008a46a67e Author: rfscholte <[email protected]> AuthorDate: Mon Oct 14 20:40:01 2019 +0200 [MNG-6656] Fix bug in AbstractEventXMLFilter (removed processed events) --- .../xml/sax/filter/AbstractEventXMLFilter.java | 10 ++++-- .../sax/filter/ReactorDependencyXMLFilterTest.java | 38 ++++++++++++++++++++++ 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/AbstractEventXMLFilter.java b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/AbstractEventXMLFilter.java index d52cb7c..633c533 100644 --- a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/AbstractEventXMLFilter.java +++ b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/AbstractEventXMLFilter.java @@ -1,5 +1,7 @@ package org.apache.maven.xml.sax.filter; +import java.util.ArrayDeque; + /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -21,8 +23,10 @@ package org.apache.maven.xml.sax.filter; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Queue; import org.apache.maven.xml.sax.SAXEvent; import org.apache.maven.xml.sax.SAXEventFactory; @@ -40,7 +44,7 @@ import org.xml.sax.ext.LexicalHandler; */ abstract class AbstractEventXMLFilter extends AbstractSAXFilter { - private List<SAXEvent> saxEvents = new ArrayList<>(); + private Queue<SAXEvent> saxEvents = new ArrayDeque<>(); private SAXEventFactory eventFactory; @@ -138,9 +142,9 @@ abstract class AbstractEventXMLFilter extends AbstractSAXFilter } // not with streams due to checked SAXException - for ( SAXEvent saxEvent : saxEvents ) + while( !saxEvents.isEmpty() ) { - saxEvent.execute(); + saxEvents.poll().execute(); } } diff --git a/maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ReactorDependencyXMLFilterTest.java b/maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ReactorDependencyXMLFilterTest.java index 9cf713c..4367982 100644 --- a/maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ReactorDependencyXMLFilterTest.java +++ b/maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ReactorDependencyXMLFilterTest.java @@ -106,4 +106,42 @@ public class ReactorDependencyXMLFilterTest extends AbstractXMLFilterTests assertThat( actual ).and( expected ).ignoreWhitespace().areIdentical(); } + @Test + public void multipleDependencies() throws Exception { + String input = "<project>\n" + + " <modelVersion>4.0.0</modelVersion>\n" + + " <groupId>tests.project</groupId>\n" + + " <artifactId>duplicate-plugin-defs-merged</artifactId>\n" + + " <version>1</version>\n" + + " <build>\n" + + " <plugins>\n" + + " <plugin>\n" + + " <artifactId>maven-compiler-plugin</artifactId>\n" + + " <dependencies>\n" + + " <dependency>\n" + + " <groupId>group</groupId>\n" + + " <artifactId>first</artifactId>\n" + + " <version>1</version>\n" + + " </dependency>\n" + + " </dependencies>\n" + + " </plugin>\n" + + " <plugin>\n" + + " <artifactId>maven-compiler-plugin</artifactId>\n" + + " <dependencies>\n" + + " <dependency>\n" + + " <groupId>group</groupId>\n" + + " <artifactId>second</artifactId>\n" + + " <version>1</version>\n" + + " </dependency>\n" + + " </dependencies>\n" + + " </plugin>\n" + + " </plugins>\n" + + " </build>\n" + + "</project>"; + String expected = input; + + String actual = transform( input ); + + assertThat( actual ).and( expected ).areIdentical(); + } }
