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:28 UTC

[maven] branch MNG-6957 updated (b9607f0 -> b6f0b12)

This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a change to branch MNG-6957
in repository https://gitbox.apache.org/repos/asf/maven.git.


    from b9607f0  fix merge
     add e7eef9d  [MNG-6999] Chained (consumer) XMLFilters can result in "floating" comments
     new b6f0b12  Merge branch 'master' into MNG-6957

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../aether/ConsumerModelSourceTransformer.java     |  12 +-
 .../aether/ConsumerModelSourceTransformerTest.java |  70 ++++++++++
 .../apache/maven/project/ProjectBuilderTest.java   |  88 +++++-------
 .../test/resources/projects/transform/after.pom    |   2 +
 .../test/resources/projects/transform/before.pom   |   5 +
 .../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, 498 insertions(+), 202 deletions(-)
 create mode 100644 maven-core/src/test/java/org/apache/maven/internal/aether/ConsumerModelSourceTransformerTest.java
 copy maven-model-builder/src/test/resources/poms/factory/simple.xml => maven-core/src/test/resources/projects/transform/after.pom (99%)
 copy maven-model-builder/src/test/resources/poms/factory/simple.xml => maven-core/src/test/resources/projects/transform/before.pom (95%)
 create mode 100644 maven-xml/src/test/java/org/apache/maven/xml/sax/ChainedFilterTest.java


[maven] 01/01: Merge branch 'master' into MNG-6957

Posted by rf...@apache.org.
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();
+     }
+ 
  }