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 2019/10/16 20:56:45 UTC

[maven] branch MNG-6656 updated: [MNG-6656] Clean up code based on reviews

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


The following commit(s) were added to refs/heads/MNG-6656 by this push:
     new 3ef3fa1  [MNG-6656] Clean up code based on reviews
3ef3fa1 is described below

commit 3ef3fa1dab989f9ccf4f52601d13c5624ebb9429
Author: rfscholte <rf...@apache.org>
AuthorDate: Wed Oct 16 22:56:37 2019 +0200

    [MNG-6656] Clean up code based on reviews
---
 .../maven/project/DefaultProjectBuilder.java       |  2 -
 .../maven/model/building/DefaultModelBuilder.java  | 56 ++++++++++++++--------
 .../model/building/DefaultModelBuilderFactory.java |  2 +
 .../building/DefaultModelBuildingRequest.java      | 17 -------
 .../model/building/FilterModelBuildingRequest.java | 13 -----
 .../maven/model/building/ModelBuildingRequest.java |  4 --
 .../org/apache/maven/xml/sax/SAXEventUtils.java    |  6 ++-
 .../xml/sax/filter/AbstractEventXMLFilter.java     |  8 ----
 .../maven/xml/sax/filter/BuildPomXMLFilter.java    |  3 ++
 .../xml/sax/filter/BuildPomXMLFilterFactory.java   | 31 ++++++++----
 .../BuildPomXMLFilterListener.java}                | 25 ++++------
 11 files changed, 80 insertions(+), 87 deletions(-)

diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
index ce6c9dc..7e18f1e 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
@@ -164,7 +164,6 @@ public class DefaultProjectBuilder
                 request.setModelBuildingListener( listener );
 
                 request.setPomFile( pomFile );
-                request.setTransformPom( pomFile != null );
                 request.setModelSource( modelSource );
                 request.setLocationTracking( true );
 
@@ -438,7 +437,6 @@ public class DefaultProjectBuilder
         request.setPomFile( pomFile );
         request.setTwoPhaseBuilding( true );
         request.setLocationTracking( true );
-        request.setTransformPom( true );
 
         DefaultModelBuildingListener listener =
             new DefaultModelBuildingListener( project, projectBuildingHelper, config.request );
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index fe3904b..0e50073 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -27,8 +27,10 @@ import java.io.FileInputStream;
 import java.io.FilterOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 import java.io.PipedInputStream;
 import java.io.PipedOutputStream;
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -91,6 +93,7 @@ import org.apache.maven.model.superpom.SuperPomProvider;
 import org.apache.maven.model.validation.ModelValidator;
 import org.apache.maven.xml.Factories;
 import org.apache.maven.xml.sax.filter.BuildPomXMLFilterFactory;
+import org.apache.maven.xml.sax.filter.BuildPomXMLFilterListener;
 import org.codehaus.plexus.interpolation.MapBasedValueSource;
 import org.codehaus.plexus.interpolation.StringSearchInterpolator;
 import org.eclipse.sisu.Nullable;
@@ -156,13 +159,17 @@ public class DefaultModelBuilder
     @Inject
     private ReportingConverter reportingConverter;
     
+    // Using provider so MavenSession can be used in the constructor
     @Inject
-    @Nullable
     private Provider<BuildPomXMLFilterFactory> buildPomXMLFilterFactory; 
     
     @Inject
     @Nullable
     private ModelCacheManager modelCacheManager;
+    
+    @Inject
+    @Nullable
+    private BuildPomXMLFilterListener xmlFilterListener;
 
     public DefaultModelBuilder setModelProcessor( ModelProcessor modelProcessor )
     {
@@ -265,6 +272,12 @@ public class DefaultModelBuilder
         this.reportingConverter = reportingConverter;
         return this;
     }
+    
+    public DefaultModelBuilder setBuildPomXMLFilterFactory( BuildPomXMLFilterFactory buildPomXMLFilterFactory )
+    {
+        this.buildPomXMLFilterFactory = () -> buildPomXMLFilterFactory;
+        return this;
+    }
 
     @SuppressWarnings( "checkstyle:methodlength" )
     @Override
@@ -302,11 +315,11 @@ public class DefaultModelBuilder
         {
             inputModel = readModel( request.getModelSource(), request.getPomFile(), request, problems );
 
-            if ( Features.buildConsumer().isActive() && request.isTransformPom() )
+            if ( Features.buildConsumer().isActive() && request.getPomFile() != null )
             {
                 try
                 {
-                    inputModel = modelProcessor.read( transformData( request.getPomFile() ), null );
+                    inputModel = modelProcessor.read( transformData( request.getPomFile().toPath() ), null );
 
                     inputModel.setPomFile( request.getPomFile() );
                 }
@@ -782,36 +795,41 @@ public class DefaultModelBuilder
         }
     }
     
-    private InputStream transformData( File pomFile )
+    private InputStream transformData( final Path pomFile )
                     throws IOException, TransformerException, SAXException, ParserConfigurationException
     {
-//        return modelData.getSource().getInputStream();
         final TransformerFactory transformerFactory = Factories.newTransformerFactory() ;
         
         final PipedOutputStream pipedOutputStream  = new PipedOutputStream();
         final PipedInputStream pipedInputStream  = new PipedInputStream( pipedOutputStream );
 
         // Should always be FileSource for reactor poms
-//        FileSource source = (FileSource) modelData.getSource();
-        
-//         System.out.println( "transforming " + source.getFile() );
+        // System.out.println( "transforming " + pomFile );
         
         final SAXSource transformSource =
-            new SAXSource( buildPomXMLFilterFactory.get().get( pomFile.toPath() ),
-                           new org.xml.sax.InputSource( new FileInputStream( pomFile ) ) );
+            new SAXSource( buildPomXMLFilterFactory.get().get( pomFile ),
+                           new org.xml.sax.InputSource( new FileInputStream( pomFile.toFile() ) ) );
 
-        FilterOutputStream fos = new FilterOutputStream( pipedOutputStream )
+        OutputStream out;
+        if ( xmlFilterListener != null )
         {
-            @Override
-            public void write( byte[] b, int off, int len )
-                throws IOException
+            out = new FilterOutputStream( pipedOutputStream )
             {
-                System.out.write( b, off, len );
-                super.write( b, off, len );
-            }  
+                @Override
+                public void write( byte[] b, int off, int len )
+                    throws IOException
+                {
+                    super.write( b, off, len );
+                    xmlFilterListener.write( pomFile, b, off, len );
+                }  
+            };
         }
-        ;
-        final StreamResult result = new StreamResult( fos );
+        else
+        {
+            out = pipedOutputStream;
+        }
+
+        final StreamResult result = new StreamResult( out );
         
 ////        final Callable<Void> callable = () ->
 ////        {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java
index 4240574..cd499eb 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java
@@ -64,6 +64,7 @@ import org.apache.maven.model.superpom.DefaultSuperPomProvider;
 import org.apache.maven.model.superpom.SuperPomProvider;
 import org.apache.maven.model.validation.DefaultModelValidator;
 import org.apache.maven.model.validation.ModelValidator;
+import org.apache.maven.xml.sax.filter.BuildPomXMLFilterFactory;
 
 /**
  * A factory to create model builder instances when no dependency injection is available. <em>Note:</em> This class is
@@ -225,6 +226,7 @@ public class DefaultModelBuilderFactory
         modelBuilder.setPluginConfigurationExpander( newPluginConfigurationExpander() );
         modelBuilder.setReportConfigurationExpander( newReportConfigurationExpander() );
         modelBuilder.setReportingConverter( newReportingConverter() );
+        modelBuilder.setBuildPomXMLFilterFactory( new BuildPomXMLFilterFactory() );
 
         return modelBuilder;
     }
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
index 06128a8..b7b54d8 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
@@ -72,8 +72,6 @@ public class DefaultModelBuildingRequest
     private ModelCache modelCache;
 
     private WorkspaceModelResolver workspaceResolver;
-    
-    private boolean transformPom;
 
     /**
      * Creates an empty request.
@@ -103,7 +101,6 @@ public class DefaultModelBuildingRequest
         setModelResolver( request.getModelResolver() );
         setModelBuildingListener( request.getModelBuildingListener() );
         setModelCache( request.getModelCache() );
-        setTransformPom( request.isTransformPom() );
     }
 
     @Override
@@ -410,18 +407,4 @@ public class DefaultModelBuildingRequest
         this.workspaceResolver = workspaceResolver;
         return this;
     }
-    
-    @Override
-    public boolean isTransformPom()
-    {
-        return transformPom;
-    }
-    
-    @Override
-    public ModelBuildingRequest setTransformPom( boolean transformPom )
-    {
-        this.transformPom = transformPom;
-        return this;
-    }
-
 }
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
index a9012a1..527a257 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
@@ -281,17 +281,4 @@ class FilterModelBuildingRequest
         request.setWorkspaceModelResolver( workspaceResolver );
         return this;
     }
-
-    @Override
-    public boolean isTransformPom()
-    {
-        return request.isTransformPom();
-    }
-
-    @Override
-    public ModelBuildingRequest setTransformPom( boolean transform )
-    {
-        request.setTransformPom( transform );
-        return this;
-    }
 }
\ No newline at end of file
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java
index 10aedc1..b8ae4f8 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java
@@ -334,8 +334,4 @@ public interface ModelBuildingRequest
     WorkspaceModelResolver getWorkspaceModelResolver();
 
     ModelBuildingRequest setWorkspaceModelResolver( WorkspaceModelResolver workspaceResolver );
-    
-    boolean isTransformPom();
-    
-    ModelBuildingRequest setTransformPom( boolean transform );
 }
diff --git a/maven-xml/src/main/java/org/apache/maven/xml/sax/SAXEventUtils.java b/maven-xml/src/main/java/org/apache/maven/xml/sax/SAXEventUtils.java
index 483bb7d..237ec44 100644
--- a/maven-xml/src/main/java/org/apache/maven/xml/sax/SAXEventUtils.java
+++ b/maven-xml/src/main/java/org/apache/maven/xml/sax/SAXEventUtils.java
@@ -19,6 +19,8 @@ package org.apache.maven.xml.sax;
  * under the License.
  */
 
+import java.util.regex.Pattern;
+
 /**
  * Utility class for SAXEvents
  * 
@@ -27,6 +29,8 @@ package org.apache.maven.xml.sax;
  */
 public final class SAXEventUtils
 {
+    private static final Pattern PATTERN = Pattern.compile( "[^:]+$" );
+    
     private SAXEventUtils()
     {
     }
@@ -40,6 +44,6 @@ public final class SAXEventUtils
      */
     public static String renameQName( String oldQName, String newLocalName )
     {
-        return oldQName.replaceFirst( "[^:]+$", newLocalName );
+        return PATTERN.matcher( oldQName ).replaceFirst( newLocalName );
     }
 }
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 e563032..f718103 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
@@ -60,14 +60,6 @@ abstract class AbstractEventXMLFilter extends AbstractSAXFilter
         return true;
     }
     
-//    protected final void applyCharacters() throws SAXException
-//    {
-//        if ( characters != null )
-//        {
-//            processEvent( characters );
-//        }
-//    }
-    
     AbstractEventXMLFilter()
     {
         super();
diff --git a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/BuildPomXMLFilter.java b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/BuildPomXMLFilter.java
index 041d5c1..14bcf70 100644
--- a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/BuildPomXMLFilter.java
+++ b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/BuildPomXMLFilter.java
@@ -44,6 +44,9 @@ public class BuildPomXMLFilter extends AbstractSAXFilter
         super( parent );
     }
     
+    /**
+     * Don't allow overwriting parent
+     */
     @Override
     public final void setParent( XMLReader parent )
     {
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 d115673..66c5fc9 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
@@ -41,7 +41,7 @@ import org.xml.sax.ext.LexicalHandler;
  * 
  * @since 3.7.0
  */
-public abstract class BuildPomXMLFilterFactory
+public class BuildPomXMLFilterFactory
 {
     public final BuildPomXMLFilter get( Path projectFile )
         throws SAXException, ParserConfigurationException, TransformerConfigurationException
@@ -83,14 +83,14 @@ public abstract class BuildPomXMLFilterFactory
         return new BuildPomXMLFilter( parent );
     }
     
-    protected XMLReader getXMLReader() throws SAXException, ParserConfigurationException 
+    private XMLReader getXMLReader() throws SAXException, ParserConfigurationException 
     {
         XMLReader xmlReader = Factories.newXMLReader();
         xmlReader.setFeature( "http://xml.org/sax/features/namespaces", true );
         return xmlReader;
     }
     
-    protected LexicalHandler getLexicalHander() throws TransformerConfigurationException 
+    private LexicalHandler getLexicalHander() throws TransformerConfigurationException 
     {
         TransformerFactory transformerFactory = Factories.newTransformerFactory();
         if ( transformerFactory instanceof SAXTransformerFactory )
@@ -104,16 +104,31 @@ public abstract class BuildPomXMLFilterFactory
     
     // getters for the 3 magic properties of CIFriendly versions ( https://maven.apache.org/maven-ci-friendly.html )
     
-    protected abstract Optional<String> getChangelist();
+    protected Optional<String> getChangelist()
+    {
+        return Optional.empty();
+    }
         
-    protected abstract Optional<String> getRevision();
+    protected Optional<String> getRevision()
+    {
+        return Optional.empty();
+    }
     
-    protected abstract Optional<String> getSha1();
+    protected Optional<String> getSha1()
+    {
+        return Optional.empty();
+    }
     
     /**
      * @return the mapper or {@code null} if relativePaths don't need to be mapped
      */
-    protected abstract Function<Path, Optional<RelativeProject>> getRelativePathMapper();
+    protected Function<Path, Optional<RelativeProject>> getRelativePathMapper()
+    {
+        return null;
+    }
     
-    protected abstract Function<DependencyKey, String> getDependencyKeyToVersionMapper();
+    protected Function<DependencyKey, String> getDependencyKeyToVersionMapper()
+    {
+        return null;
+    }
 }
diff --git a/maven-xml/src/main/java/org/apache/maven/xml/sax/SAXEventUtils.java b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/BuildPomXMLFilterListener.java
similarity index 63%
copy from maven-xml/src/main/java/org/apache/maven/xml/sax/SAXEventUtils.java
copy to maven-xml/src/main/java/org/apache/maven/xml/sax/filter/BuildPomXMLFilterListener.java
index 483bb7d..e984640 100644
--- a/maven-xml/src/main/java/org/apache/maven/xml/sax/SAXEventUtils.java
+++ b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/BuildPomXMLFilterListener.java
@@ -1,4 +1,4 @@
-package org.apache.maven.xml.sax;
+package org.apache.maven.xml.sax.filter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,27 +19,22 @@ package org.apache.maven.xml.sax;
  * under the License.
  */
 
+import java.nio.file.Path;
+
 /**
- * Utility class for SAXEvents
  * 
  * @author Robert Scholte
  * @since 3.7.0
  */
-public final class SAXEventUtils
+public interface BuildPomXMLFilterListener
 {
-    private SAXEventUtils()
-    {
-    }
-    
     /**
-     * Returns the newLocalName prefixed with the namespace of the oldQName if present 
+     * Captures the result of the XML transformation
      * 
-     * @param oldQName the QName, used for its namespace
-     * @param newLocalName the preferred localName
-     * @return the new QName
+     * @param pomFile the original to being transformed
+     * @param b the byte array
+     * @param off the offset
+     * @param len the length
      */
-    public static String renameQName( String oldQName, String newLocalName )
-    {
-        return oldQName.replaceFirst( "[^:]+$", newLocalName );
-    }
+    void write( Path pomFile, byte[] b, int off, int len );
 }