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/30 14:23:29 UTC
[maven] 01/01: Merge branch 'master' into MNG-6957
This is an automated email from the ASF dual-hosted git repository.
rfscholte pushed a commit to branch MNG-6957
in repository https://gitbox.apache.org/repos/asf/maven.git
commit b6f0b12145bc362ad74f88b5ca8b26ca23002420
Merge: b9607f0 e7eef9d
Author: rfscholte <rf...@apache.org>
AuthorDate: Fri Oct 30 15:23:11 2020 +0100
Merge branch 'master' into MNG-6957
.../aether/ConsumerModelSourceTransformer.java | 12 +-
.../aether/ConsumerModelSourceTransformerTest.java | 70 ++++++++++
.../apache/maven/project/ProjectBuilderTest.java | 88 +++++-------
.../test/resources/projects/transform/after.pom | 83 ++++++++++++
.../test/resources/projects/transform/before.pom | 86 ++++++++++++
.../building/AbstractModelSourceTransformer.java | 64 +++++----
.../building/BuildModelSourceTransformer.java | 9 +-
.../building/DefaultBuildPomXMLFilterFactory.java | 19 ++-
.../DefaultInheritanceAssemblerTest.java | 7 +-
.../xml/sax/filter/AbstractEventXMLFilter.java | 6 +-
.../maven/xml/sax/filter/AbstractSAXFilter.java | 9 +-
.../maven/xml/sax/filter/BuildPomXMLFilter.java | 3 +-
.../xml/sax/filter/BuildPomXMLFilterFactory.java | 48 ++++---
.../maven/xml/sax/filter/CiFriendlyXMLFilter.java | 18 ++-
.../maven/xml/sax/filter/ConsumerPomXMLFilter.java | 8 +-
.../sax/filter/ConsumerPomXMLFilterFactory.java | 3 +-
.../maven/xml/sax/filter/FastForwardFilter.java | 4 +-
.../maven/xml/sax/filter/ModulesXMLFilter.java | 4 +-
.../xml/sax/filter/RelativePathXMLFilter.java | 4 +-
.../apache/maven/xml/sax/ChainedFilterTest.java | 150 +++++++++++++++++++++
.../xml/sax/filter/AbstractXMLFilterTests.java | 116 +++++++++-------
.../xml/sax/filter/ConsumerPomXMLFilterTest.java | 27 +++-
.../maven/xml/sax/filter/ModulesXMLFilterTest.java | 10 +-
.../maven/xml/sax/filter/ParentXMLFilterTest.java | 5 +-
.../sax/filter/ReactorDependencyXMLFilterTest.java | 9 +-
25 files changed, 660 insertions(+), 202 deletions(-)
diff --cc maven-core/src/main/java/org/apache/maven/internal/aether/ConsumerModelSourceTransformer.java
index 4da661a,d81571d..4d5d263
--- a/maven-core/src/main/java/org/apache/maven/internal/aether/ConsumerModelSourceTransformer.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/aether/ConsumerModelSourceTransformer.java
@@@ -45,11 -46,13 +46,13 @@@ import org.xml.sax.ext.LexicalHandler
class ConsumerModelSourceTransformer extends AbstractModelSourceTransformer
{
@Override
- protected AbstractSAXFilter getSAXFilter( Path pomFile, TransformerContext context )
- protected AbstractSAXFilter getSAXFilter( Path pomFile,
++ protected AbstractSAXFilter getSAXFilter( Path pomFile,
+ TransformerContext context,
+ Consumer<LexicalHandler> lexicalHandlerConsumer )
throws TransformerConfigurationException, SAXException, ParserConfigurationException
{
return new DefaultConsumerPomXMLFilterFactory( new DefaultBuildPomXMLFilterFactory( context,
- true ) ).get( pomFile );
- lexicalHandlerConsumer ) ).get( pomFile );
++ lexicalHandlerConsumer, true ) ).get( pomFile );
}
/**
diff --cc maven-model-builder/src/main/java/org/apache/maven/model/building/BuildModelSourceTransformer.java
index 590db48,44d4c26..f507972
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/BuildModelSourceTransformer.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/BuildModelSourceTransformer.java
@@@ -50,11 -52,14 +52,14 @@@ class BuildModelSourceTransformer exten
@Nullable
private BuildPomXMLFilterListener xmlFilterListener;
- protected AbstractSAXFilter getSAXFilter( Path pomFile, TransformerContext context )
+ protected AbstractSAXFilter getSAXFilter( Path pomFile,
+ TransformerContext context,
+ Consumer<LexicalHandler> lexicalHandlerConsumer )
throws TransformerConfigurationException, SAXException, ParserConfigurationException
{
- BuildPomXMLFilterFactory buildPomXMLFilterFactory = new DefaultBuildPomXMLFilterFactory( context, false );
+ BuildPomXMLFilterFactory buildPomXMLFilterFactory =
- new DefaultBuildPomXMLFilterFactory( context, lexicalHandlerConsumer );
-
++ new DefaultBuildPomXMLFilterFactory( context, lexicalHandlerConsumer, false );
+
return buildPomXMLFilterFactory.get( pomFile );
}
diff --cc maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultBuildPomXMLFilterFactory.java
index ae17b5b,8f9f6ae..4460f45
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultBuildPomXMLFilterFactory.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultBuildPomXMLFilterFactory.java
@@@ -28,10 -29,10 +29,11 @@@ import java.util.function.Function
import org.apache.maven.model.Model;
import org.apache.maven.xml.sax.filter.BuildPomXMLFilterFactory;
import org.apache.maven.xml.sax.filter.RelativeProject;
+ import org.xml.sax.ext.LexicalHandler;
/**
- * A BuildPomXMLFilterFactory which is context aware
-- *
++ * A BuildPomXMLFilterFactory which is context aware
++ *
* @author Robert Scholte
* @since 3.7.0
*/
@@@ -39,17 -40,18 +41,20 @@@ public class DefaultBuildPomXMLFilterFa
{
private final TransformerContext context;
+ /**
- *
++ *
+ * @param context a set of data to extract values from as required for the build pom
++ * @param lexicalHandlerConsumer the lexical handler consumer
+ * @param consume true is this factory used for creating the consumer pom, otherwise false
+ */
- public DefaultBuildPomXMLFilterFactory( TransformerContext context, boolean consume )
+ public DefaultBuildPomXMLFilterFactory( TransformerContext context,
- Consumer<LexicalHandler> lexicalHandlerConsumer )
++ Consumer<LexicalHandler> lexicalHandlerConsumer,
++ boolean consume )
{
- super( consume );
- super( lexicalHandlerConsumer );
++ super( lexicalHandlerConsumer, consume );
this.context = context;
}
-
- public final TransformerContext getContext()
- {
- return context;
- }
--
++
@Override
protected Function<Path, Optional<RelativeProject>> getRelativePathMapper()
{
@@@ -63,25 -65,7 +68,25 @@@
.map( m -> toVersion( m ) )
.orElse( null );
}
-
+
+ @Override
+ protected Optional<String> getChangelist()
+ {
+ return Optional.ofNullable( context.getUserProperty( "changelist" ) );
+ }
+
+ @Override
+ protected Optional<String> getRevision()
+ {
+ return Optional.ofNullable( context.getUserProperty( "revision" ) );
+ }
+
+ @Override
+ protected Optional<String> getSha1()
+ {
+ return Optional.ofNullable( context.getUserProperty( "sha1" ) );
+ }
+
private static RelativeProject toRelativeProject( final Model m )
{
String groupId = m.getGroupId();
diff --cc maven-xml/src/main/java/org/apache/maven/xml/sax/filter/BuildPomXMLFilterFactory.java
index fc7c095,23dc240..09f20f7
--- 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
@@@ -42,13 -41,18 +41,21 @@@ import org.xml.sax.ext.LexicalHandler
*/
public class BuildPomXMLFilterFactory
{
+ private final boolean consume;
-
- public BuildPomXMLFilterFactory( boolean consume )
++
+ private final Consumer<LexicalHandler> lexicalHandlerConsumer;
-
- public BuildPomXMLFilterFactory()
++
++ public BuildPomXMLFilterFactory( Consumer<LexicalHandler> lexicalHandlerConsumer )
+ {
- this( null );
++ this( lexicalHandlerConsumer, false );
+ }
-
- public BuildPomXMLFilterFactory( Consumer<LexicalHandler> lexicalHandlerConsumer )
++
++ public BuildPomXMLFilterFactory( Consumer<LexicalHandler> lexicalHandlerConsumer, boolean consume )
{
+ this.lexicalHandlerConsumer = lexicalHandlerConsumer;
+ this.consume = consume;
}
-
+
/**
*
* @param projectFile will be used by ConsumerPomXMLFilter to get the right filter
@@@ -78,22 -85,10 +88,22 @@@
ParentXMLFilter parentFilter = new ParentXMLFilter( getRelativePathMapper() );
parentFilter.setProjectPath( projectFile.getParent() );
parentFilter.setParent( parent );
- parentFilter.setLexicalHandler( parent );
+ parent.setLexicalHandler( parentFilter );
parent = parentFilter;
}
-
+
+ CiFriendlyXMLFilter ciFriendlyFilter = new CiFriendlyXMLFilter( consume );
+ getChangelist().ifPresent( ciFriendlyFilter::setChangelist );
+ getRevision().ifPresent( ciFriendlyFilter::setRevision );
+ getSha1().ifPresent( ciFriendlyFilter::setSha1 );
-
++
+ if ( ciFriendlyFilter.isSet() )
+ {
+ ciFriendlyFilter.setParent( parent );
- ciFriendlyFilter.setLexicalHandler( parent );
++ parent.setLexicalHandler( ciFriendlyFilter );
+ parent = ciFriendlyFilter;
+ }
+
return new BuildPomXMLFilter( parent );
}
@@@ -103,19 -98,7 +113,7 @@@
xmlReader.setFeature( "http://xml.org/sax/features/namespaces", true );
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
*/
@@@ -128,22 -111,4 +126,22 @@@
{
return null;
}
-
++
+ // getters for the 3 magic properties of CIFriendly versions ( https://maven.apache.org/maven-ci-friendly.html )
+
+ protected Optional<String> getChangelist()
+ {
+ return Optional.empty();
+ }
+
+ protected Optional<String> getRevision()
+ {
+ return Optional.empty();
+ }
+
+ protected Optional<String> getSha1()
+ {
+ return Optional.empty();
+ }
+
}
diff --cc maven-xml/src/main/java/org/apache/maven/xml/sax/filter/CiFriendlyXMLFilter.java
index cecea6a,9c2da0e..438fc0e
--- 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
@@@ -33,19 -33,22 +33,25 @@@ import org.xml.sax.SAXException
class CiFriendlyXMLFilter
extends AbstractSAXFilter
{
+ private final boolean replace;
+
- CiFriendlyXMLFilter( boolean replace )
- {
- this.replace = replace;
- }
-
private Function<String, String> replaceChain = Function.identity();
private String characters;
private boolean parseVersion;
--
- CiFriendlyXMLFilter()
++
++ CiFriendlyXMLFilter( boolean replace )
+ {
- super();
++ this.replace = replace;
+ }
+
- CiFriendlyXMLFilter( AbstractSAXFilter parent )
++ CiFriendlyXMLFilter( AbstractSAXFilter parent, boolean replace )
+ {
+ super( parent );
++ this.replace = replace;
+ }
+
public CiFriendlyXMLFilter setChangelist( String changelist )
{
replaceChain = replaceChain.andThen( t -> t.replace( "${changelist}", changelist ) );
diff --cc maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ConsumerPomXMLFilterFactory.java
index 2b2f542,298a84c..350493f
--- 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
@@@ -45,9 -46,20 +45,10 @@@ public class ConsumerPomXMLFilterFactor
{
BuildPomXMLFilter parent = buildPomXMLFilterFactory.get( projectPath );
-
++
// Ensure that xs:any elements aren't touched by next filters
AbstractSAXFilter filter = new FastForwardFilter( parent );
-
- CiFriendlyXMLFilter ciFriendlyFilter = new CiFriendlyXMLFilter( filter );
- getChangelist().ifPresent( ciFriendlyFilter::setChangelist );
- getRevision().ifPresent( ciFriendlyFilter::setRevision );
- getSha1().ifPresent( ciFriendlyFilter::setSha1 );
-
- if ( ciFriendlyFilter.isSet() )
- {
- filter = ciFriendlyFilter;
- }
--
++
// Strip modules
filter = new ModulesXMLFilter( filter );
// Adjust relativePath
diff --cc maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ConsumerPomXMLFilterTest.java
index d6cd04a,c5cfc18..c2999cf
--- 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
@@@ -42,9 -44,10 +44,10 @@@ public class ConsumerPomXMLFilterTest e
}
@Override
- protected AbstractSAXFilter getFilter() throws SAXException, ParserConfigurationException, TransformerConfigurationException
+ protected AbstractSAXFilter getFilter( Consumer<LexicalHandler> lexicalHandlerConsumer )
+ throws SAXException, ParserConfigurationException, TransformerConfigurationException
{
- final BuildPomXMLFilterFactory buildPomXMLFilterFactory = new BuildPomXMLFilterFactory( true )
- final BuildPomXMLFilterFactory buildPomXMLFilterFactory = new BuildPomXMLFilterFactory( lexicalHandlerConsumer )
++ final BuildPomXMLFilterFactory buildPomXMLFilterFactory = new BuildPomXMLFilterFactory( lexicalHandlerConsumer, true )
{
@Override
protected Function<Path, Optional<RelativeProject>> getRelativePathMapper()
@@@ -57,7 -60,10 +60,7 @@@
{
return null;
}
-
- };
-
- ConsumerPomXMLFilter filter = new ConsumerPomXMLFilterFactory( buildPomXMLFilterFactory )
- {
++
@Override
protected Optional<String> getSha1()
{
@@@ -75,11 -81,7 +78,11 @@@
{
return Optional.of( "CL" );
}
- }.get( Paths.get( "pom.xml" ) );
+
+ };
-
++
+ ConsumerPomXMLFilter filter =
+ new ConsumerPomXMLFilterFactory( buildPomXMLFilterFactory ).get( Paths.get( "pom.xml" ) );
filter.setFeature( "http://xml.org/sax/features/namespaces", true );
return filter;
}
@@@ -232,5 -234,21 +235,21 @@@
String actual = transform( input );
assertThat( actual ).and( expected ).areIdentical();
}
-
+
+ @Test
+ 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" +
++ String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+ "<project><!--before--><!--after--></project>";
+ String actual = transform( input );
+ assertThat( actual ).and( expected ).areIdentical();
+ }
+
}