Henrik Rueping created MNG-8174:
-----------------------------------

             Summary: DefaultModelBuilder throws a NPE on self-referencing 
property
                 Key: MNG-8174
                 URL: https://issues.apache.org/jira/browse/MNG-8174
             Project: Maven
          Issue Type: Bug
    Affects Versions: 3.9.8, 3.9.5
            Reporter: Henrik Rueping


The method org.apache.maven.model.building.DefaultModelBuilder.build(...) 
throws a Null-Pointer Exception when trying to resolve a pom with a 
self-referencing property, e.g.
{code:xml}
<properties>
  <prop>${prop}</prop>
</properties>
{code}
A (rather) minimal example can be found at

[https://github.com/HenrikRueping/pom-property-resolution-test]

The stacktrace is
{code:java}
java.lang.NullPointerException: Attribute value can not be null
        at org.codehaus.plexus.util.xml.Xpp3Dom.setAttribute(Xpp3Dom.java:208)
        at 
org.apache.maven.model.interpolation.StringVisitorModelInterpolator$ModelVisitor.visit(StringVisitorModelInterpolator.java:725)
        at 
org.apache.maven.model.interpolation.StringVisitorModelInterpolator$ModelVisitor.visit(StringVisitorModelInterpolator.java:730)
        at 
org.apache.maven.model.interpolation.StringVisitorModelInterpolator$ModelVisitor.visit(StringVisitorModelInterpolator.java:730)
        at 
org.apache.maven.model.interpolation.StringVisitorModelInterpolator$ModelVisitor.visit(StringVisitorModelInterpolator.java:730)
        at 
org.apache.maven.model.interpolation.StringVisitorModelInterpolator$ModelVisitor.visit(StringVisitorModelInterpolator.java:730)
        at 
org.apache.maven.model.interpolation.StringVisitorModelInterpolator$ModelVisitor.visit(StringVisitorModelInterpolator.java:693)
        at 
org.apache.maven.model.interpolation.StringVisitorModelInterpolator$ModelVisitor.visit(StringVisitorModelInterpolator.java:674)
        at 
org.apache.maven.model.interpolation.StringVisitorModelInterpolator$ModelVisitor.visit(StringVisitorModelInterpolator.java:524)
        at 
org.apache.maven.model.interpolation.StringVisitorModelInterpolator$ModelVisitor.visit(StringVisitorModelInterpolator.java:571)
        at 
org.apache.maven.model.interpolation.StringVisitorModelInterpolator$ModelVisitor.visit(StringVisitorModelInterpolator.java:232)
        at 
org.apache.maven.model.interpolation.StringVisitorModelInterpolator.interpolateModel(StringVisitorModelInterpolator.java:101)
        at 
org.apache.maven.model.building.DefaultModelBuilder.interpolateModel(DefaultModelBuilder.java:770)
        at 
org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:385)
        at 
org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:247)
{code}
It seems like the cause is that Xpp3Dom.setAttribute does not accept null 
values,
but the interpolate Method 
in org.apache.maven.model.interpolation.StringVisitorModelInterpolator returns 
null on a self-referencing property.

My Expectation would be that in such a case either a ModelBuildingException is 
thrown, or it behaves like in the usual case of an undefined property, e.g. the 
string "${prop}" is in the parsed model.

Maybe it is a good idea to add for each test case with an undefined property an 
analogous test case with a self-referencing property.

In Eclipse this Exception is still thrown when editing a pom with a 
self-referencing property.

I would say this is a minor issue, currently I can simply catch the 
NullPointerException hoping that there are no other causes for a 
NullPointerException.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to