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 2020/10/21 18:13:19 UTC
[maven] 03/06: LexicalHandler and ContentHandler are at same level,
so don't set LexicalHandler with parent
This is an automated email from the ASF dual-hosted git repository.
rfscholte pushed a commit to branch MNG-6999
in repository https://gitbox.apache.org/repos/asf/maven.git
commit 4ea4c0f887394b323cf9b3dbd628a164423db189
Author: rfscholte <rf...@apache.org>
AuthorDate: Sat Oct 17 16:42:31 2020 +0200
LexicalHandler and ContentHandler are at same level, so don't set LexicalHandler with parent
---
.../xml/sax/filter/AbstractEventXMLFilter.java | 4 +---
.../maven/xml/sax/filter/AbstractSAXFilter.java | 1 +
.../xml/sax/filter/BuildPomXMLFilterFactory.java | 28 ++++++++++------------
.../maven/xml/sax/filter/CiFriendlyXMLFilter.java | 10 ++++++++
.../sax/filter/ConsumerPomXMLFilterFactory.java | 4 +---
.../maven/xml/sax/filter/ModulesXMLFilter.java | 4 +---
.../xml/sax/filter/RelativePathXMLFilter.java | 4 +---
.../xml/sax/filter/ConsumerPomXMLFilterTest.java | 18 ++++++++++++++
8 files changed, 46 insertions(+), 27 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 f5246b1..1b72d11 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
@@ -29,8 +29,6 @@ import org.apache.maven.xml.sax.SAXEventFactory;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.ext.LexicalHandler;
/**
* Builds up a list of SAXEvents, which will be executed with {@link #executeEvents()}
@@ -64,7 +62,7 @@ abstract class AbstractEventXMLFilter extends AbstractSAXFilter
super();
}
- <T extends XMLReader & LexicalHandler> AbstractEventXMLFilter( T parent )
+ AbstractEventXMLFilter( AbstractSAXFilter parent )
{
setParent( parent );
}
diff --git a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/AbstractSAXFilter.java b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/AbstractSAXFilter.java
index e9df96f..1761936 100644
--- a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/AbstractSAXFilter.java
+++ b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/AbstractSAXFilter.java
@@ -43,6 +43,7 @@ public class AbstractSAXFilter extends XMLFilterImpl implements LexicalHandler
public AbstractSAXFilter( AbstractSAXFilter parent )
{
setParent( parent );
+ parent.setLexicalHandler( this );
}
public LexicalHandler getLexicalHandler()
diff --git a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/BuildPomXMLFilterFactory.java b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/BuildPomXMLFilterFactory.java
index 6f3f319..626c7ac 100644
--- a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/BuildPomXMLFilterFactory.java
+++ b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/BuildPomXMLFilterFactory.java
@@ -26,8 +26,6 @@ import java.util.function.Function;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.sax.SAXTransformerFactory;
import org.apache.maven.xml.Factories;
import org.xml.sax.SAXException;
@@ -42,6 +40,18 @@ import org.xml.sax.ext.LexicalHandler;
*/
public class BuildPomXMLFilterFactory
{
+ private final LexicalHandler lexicalHandler;
+
+ public BuildPomXMLFilterFactory()
+ {
+ this( null );
+ }
+
+ public BuildPomXMLFilterFactory( LexicalHandler lexicalHandler )
+ {
+ this.lexicalHandler = lexicalHandler;
+ }
+
/**
*
* @param projectFile will be used by ConsumerPomXMLFilter to get the right filter
@@ -55,7 +65,7 @@ public class BuildPomXMLFilterFactory
{
AbstractSAXFilter parent = new AbstractSAXFilter();
parent.setParent( getXMLReader() );
- parent.setLexicalHandler( getLexicalHander() );
+ parent.setLexicalHandler( lexicalHandler );
if ( getDependencyKeyToVersionMapper() != null )
{
@@ -85,18 +95,6 @@ public class BuildPomXMLFilterFactory
return xmlReader;
}
- private LexicalHandler getLexicalHander() throws TransformerConfigurationException
- {
- TransformerFactory transformerFactory = Factories.newTransformerFactory();
- if ( transformerFactory instanceof SAXTransformerFactory )
- {
- SAXTransformerFactory saxTransformerFactory = (SAXTransformerFactory) transformerFactory;
- return saxTransformerFactory.newTransformerHandler();
- }
- throw new TransformerConfigurationException( "Failed to get LexicalHandler via TransformerFactory:"
- + " it is not an instance of SAXTransformerFactory" );
- }
-
/**
* @return the mapper or {@code null} if relativePaths don't need to be mapped
*/
diff --git a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/CiFriendlyXMLFilter.java b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/CiFriendlyXMLFilter.java
index 4375f18..9c2da0e 100644
--- a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/CiFriendlyXMLFilter.java
+++ b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/CiFriendlyXMLFilter.java
@@ -39,6 +39,16 @@ class CiFriendlyXMLFilter
private boolean parseVersion;
+ CiFriendlyXMLFilter()
+ {
+ super();
+ }
+
+ CiFriendlyXMLFilter( AbstractSAXFilter parent )
+ {
+ super( parent );
+ }
+
public CiFriendlyXMLFilter setChangelist( String changelist )
{
replaceChain = replaceChain.andThen( t -> t.replace( "${changelist}", changelist ) );
diff --git a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ConsumerPomXMLFilterFactory.java b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ConsumerPomXMLFilterFactory.java
index f7751d2..5703b89 100644
--- a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ConsumerPomXMLFilterFactory.java
+++ b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ConsumerPomXMLFilterFactory.java
@@ -49,15 +49,13 @@ public class ConsumerPomXMLFilterFactory
// Ensure that xs:any elements aren't touched by next filters
AbstractSAXFilter filter = new FastForwardFilter( parent );
- CiFriendlyXMLFilter ciFriendlyFilter = new CiFriendlyXMLFilter();
+ CiFriendlyXMLFilter ciFriendlyFilter = new CiFriendlyXMLFilter( filter );
getChangelist().ifPresent( ciFriendlyFilter::setChangelist );
getRevision().ifPresent( ciFriendlyFilter::setRevision );
getSha1().ifPresent( ciFriendlyFilter::setSha1 );
if ( ciFriendlyFilter.isSet() )
{
- ciFriendlyFilter.setParent( parent );
- ciFriendlyFilter.setLexicalHandler( parent );
filter = ciFriendlyFilter;
}
diff --git a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ModulesXMLFilter.java b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ModulesXMLFilter.java
index 261c853..ad1a6c3 100644
--- a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ModulesXMLFilter.java
+++ b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ModulesXMLFilter.java
@@ -21,8 +21,6 @@ package org.apache.maven.xml.sax.filter;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.ext.LexicalHandler;
/**
* Remove all modules, this is just buildtime information
@@ -42,7 +40,7 @@ class ModulesXMLFilter
super();
}
- <T extends XMLReader & LexicalHandler> ModulesXMLFilter( T parent )
+ ModulesXMLFilter( AbstractSAXFilter parent )
{
super( parent );
}
diff --git a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/RelativePathXMLFilter.java b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/RelativePathXMLFilter.java
index 25f2137..573c3f0 100644
--- a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/RelativePathXMLFilter.java
+++ b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/RelativePathXMLFilter.java
@@ -21,8 +21,6 @@ package org.apache.maven.xml.sax.filter;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.ext.LexicalHandler;
/**
* Remove relativePath element, has no value for consumer pom
@@ -42,7 +40,7 @@ class RelativePathXMLFilter
super();
}
- <T extends XMLReader & LexicalHandler> RelativePathXMLFilter( T parent )
+ RelativePathXMLFilter( AbstractSAXFilter parent )
{
super( parent );
}
diff --git a/maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ConsumerPomXMLFilterTest.java b/maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ConsumerPomXMLFilterTest.java
index 16d458b..161519a 100644
--- a/maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ConsumerPomXMLFilterTest.java
+++ b/maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ConsumerPomXMLFilterTest.java
@@ -30,6 +30,7 @@ import java.util.function.Function;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerConfigurationException;
+import org.junit.Ignore;
import org.junit.Test;
import org.xml.sax.SAXException;
@@ -231,5 +232,22 @@ public class ConsumerPomXMLFilterTest extends AbstractXMLFilterTests
String actual = transform( input );
assertThat( actual ).and( expected ).areIdentical();
}
+
+ @Test
+ @Ignore
+ public void lexicalHandler() throws Exception
+ {
+ String input = "<project><!--before--><modules>"
+ + "<!--pre-in-->"
+ + "<module><!--in-->ab</module>"
+ + "<module>../cd</module>"
+ + "<!--post-in-->"
+ + "</modules>"
+ + "<!--after--></project>";
+ String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+ "<project><!--before--><!--after--></project>";
+ String actual = transform( input );
+ assertThat( actual ).and( expected ).areIdentical();
+ }
}