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 2021/09/17 14:23:56 UTC

[maven] 02/04: Fix minor issues after review

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

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

commit 8559fcc8edfba237d8173f745bcfc4cd5b1fed10
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Thu Jul 22 11:01:06 2021 +0200

    Fix minor issues after review
---
 .../apache/maven/model/io/DefaultModelReader.java  | 52 +++++++++++++++-------
 .../transform/BuildToRawPomXMLFilterFactory.java   |  4 +-
 .../maven/model/transform/FastForwardFilter.java   |  5 ++-
 .../RawToConsumerPomXMLFilterFactory.java          |  7 +--
 .../model/transform/RelativePathXMLFilter.java     |  7 +--
 .../model/transform/ModulesXMLFilterTest.java      |  2 +-
 6 files changed, 48 insertions(+), 29 deletions(-)

diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java b/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java
index fd4cb8a..f55039b 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java
@@ -59,6 +59,10 @@ public class DefaultModelReader
     @Inject
     private ModelSourceTransformer transformer;
 
+    private Method readMethod;
+
+    private Method readMethodEx;
+
     public void setTransformer( ModelSourceTransformer transformer )
     {
         this.transformer = transformer;
@@ -131,33 +135,20 @@ public class DefaultModelReader
             parser.setInput( reader );
 
             TransformerContext context = getTransformerContext( options );
-            if ( context != null )
-            {
-                parser = transformer.transform( parser, pomFile, context );
-            }
+            XmlPullParser transformingParser = context != null
+                    ? transformer.transform( parser, pomFile, context ) : parser;
 
-            // TODO: avoid or at least cache reflection data
             InputSource source = getSource( options );
             boolean strict = isStrict( options );
             try
             {
                 if ( source != null )
                 {
-                    MavenXpp3ReaderEx mr = new MavenXpp3ReaderEx();
-                    Method readMethod = mr.getClass().getDeclaredMethod( "read",
-                            XmlPullParser.class, boolean.class, InputSource.class );
-                    readMethod.setAccessible( true );
-                    Object model = readMethod.invoke( mr, parser, strict, source );
-                    return (Model) model;
+                    return readModelEx( transformingParser, source, strict );
                 }
                 else
                 {
-                    MavenXpp3Reader mr = new MavenXpp3Reader();
-                    Method readMethod = mr.getClass().getDeclaredMethod( "read",
-                            XmlPullParser.class, boolean.class );
-                    readMethod.setAccessible( true );
-                    Object model = readMethod.invoke( mr, parser, strict );
-                    return (Model) model;
+                    return readModel( transformingParser, strict );
                 }
             }
             catch ( InvocationTargetException e )
@@ -184,4 +175,31 @@ public class DefaultModelReader
         }
     }
 
+    private Model readModel( XmlPullParser parser, boolean strict )
+            throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
+    {
+        if ( readMethod == null )
+        {
+            readMethod = MavenXpp3Reader.class.getDeclaredMethod( "read", XmlPullParser.class, boolean.class );
+            readMethod.setAccessible( true );
+        }
+        MavenXpp3Reader mr = new MavenXpp3Reader();
+        Object model = readMethod.invoke( mr, parser, strict );
+        return ( Model ) model;
+    }
+
+    private Model readModelEx( XmlPullParser parser, InputSource source, boolean strict )
+            throws NoSuchMethodException, IllegalAccessException, InvocationTargetException
+    {
+        if ( readMethodEx == null )
+        {
+            readMethodEx = MavenXpp3ReaderEx.class.getDeclaredMethod( "read",
+                    XmlPullParser.class, boolean.class, InputSource.class );
+            readMethodEx.setAccessible( true );
+        }
+        MavenXpp3ReaderEx mr = new MavenXpp3ReaderEx();
+        Object model = readMethodEx.invoke( mr, parser, strict, source );
+        return ( Model ) model;
+    }
+
 }
diff --git a/maven-model-transform/src/main/java/org/apache/maven/model/transform/BuildToRawPomXMLFilterFactory.java b/maven-model-transform/src/main/java/org/apache/maven/model/transform/BuildToRawPomXMLFilterFactory.java
index 4673102..3d1f1a2 100644
--- a/maven-model-transform/src/main/java/org/apache/maven/model/transform/BuildToRawPomXMLFilterFactory.java
+++ b/maven-model-transform/src/main/java/org/apache/maven/model/transform/BuildToRawPomXMLFilterFactory.java
@@ -50,9 +50,11 @@ public class BuildToRawPomXMLFilterFactory
      *
      * @param projectFile will be used by ConsumerPomXMLFilter to get the right filter
      */
-    public final XmlPullParser get( XmlPullParser parser, Path projectFile )
+    public final XmlPullParser get( XmlPullParser orgParser, Path projectFile )
 
     {
+        XmlPullParser parser = orgParser;
+
         if ( getDependencyKeyToVersionMapper() != null )
         {
             parser = new ReactorDependencyXMLFilter( parser, getDependencyKeyToVersionMapper() );
diff --git a/maven-model-transform/src/main/java/org/apache/maven/model/transform/FastForwardFilter.java b/maven-model-transform/src/main/java/org/apache/maven/model/transform/FastForwardFilter.java
index c5c2171..91977c0 100644
--- a/maven-model-transform/src/main/java/org/apache/maven/model/transform/FastForwardFilter.java
+++ b/maven-model-transform/src/main/java/org/apache/maven/model/transform/FastForwardFilter.java
@@ -29,7 +29,7 @@ import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 /**
  * This filter will skip all following filters and write directly to the output.
- * Should be used in case of a DOM that should not be effected by other filters, even though the elements match
+ * Should be used in case of a DOM that should not be effected by other filters, even though the elements match.
  *
  * @author Robert Scholte
  * @author Guillaume Nodet
@@ -90,7 +90,8 @@ class FastForwardFilter extends BufferingParser
         }
         else if ( xmlPullParser.getEventType() == END_TAG )
         {
-            if ( --domDepth == 0 )
+            domDepth--;
+            if ( domDepth == 0 )
             {
                 enable();
             }
diff --git a/maven-model-transform/src/main/java/org/apache/maven/model/transform/RawToConsumerPomXMLFilterFactory.java b/maven-model-transform/src/main/java/org/apache/maven/model/transform/RawToConsumerPomXMLFilterFactory.java
index aa0c432..e36342b 100644
--- a/maven-model-transform/src/main/java/org/apache/maven/model/transform/RawToConsumerPomXMLFilterFactory.java
+++ b/maven-model-transform/src/main/java/org/apache/maven/model/transform/RawToConsumerPomXMLFilterFactory.java
@@ -24,7 +24,7 @@ import java.nio.file.Path;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 
 /**
- *
+ * @author Guillaume Nodet
  * @author Robert Scholte
  * @since 4.0.0
  */
@@ -37,10 +37,11 @@ public class RawToConsumerPomXMLFilterFactory
         this.buildPomXMLFilterFactory = buildPomXMLFilterFactory;
     }
 
-    public final XmlPullParser get( XmlPullParser parser, Path projectPath )
+    public final XmlPullParser get( XmlPullParser orgParser, Path projectPath )
     {
-        parser = buildPomXMLFilterFactory.get( parser, projectPath );
+        XmlPullParser parser = orgParser;
 
+        parser = buildPomXMLFilterFactory.get( parser, projectPath );
 
         // Ensure that xs:any elements aren't touched by next filters
         parser = new FastForwardFilter( parser );
diff --git a/maven-model-transform/src/main/java/org/apache/maven/model/transform/RelativePathXMLFilter.java b/maven-model-transform/src/main/java/org/apache/maven/model/transform/RelativePathXMLFilter.java
index 4368f2c..3064a29 100644
--- a/maven-model-transform/src/main/java/org/apache/maven/model/transform/RelativePathXMLFilter.java
+++ b/maven-model-transform/src/main/java/org/apache/maven/model/transform/RelativePathXMLFilter.java
@@ -59,12 +59,9 @@ public class RelativePathXMLFilter extends NodeBufferingParser
                 skip = false;
                 event = null;
             }
-            else
+            else if ( skip )
             {
-                if ( skip )
-                {
-                    event = null;
-                }
+                event = null;
             }
             if ( prev != null )
             {
diff --git a/maven-model-transform/src/test/java/org/apache/maven/model/transform/ModulesXMLFilterTest.java b/maven-model-transform/src/test/java/org/apache/maven/model/transform/ModulesXMLFilterTest.java
index b3b31f5..0080788 100644
--- a/maven-model-transform/src/test/java/org/apache/maven/model/transform/ModulesXMLFilterTest.java
+++ b/maven-model-transform/src/test/java/org/apache/maven/model/transform/ModulesXMLFilterTest.java
@@ -29,7 +29,7 @@ public class ModulesXMLFilterTest
 {
 
     @Override
-    protected ModulesXMLFilter getFilter(XmlPullParser parser)
+    protected ModulesXMLFilter getFilter( XmlPullParser parser )
     {
         return new ModulesXMLFilter( parser );
     }