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 <[email protected]> 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 ); }
