MavenProjectStub uses immutable collections for modifiable data
---------------------------------------------------------------

                 Key: MPLUGIN-60
                 URL: http://jira.codehaus.org/browse/MPLUGIN-60
             Project: Maven 2.x Plugin Tools
          Issue Type: Bug
         Environment: Maven 2.0.7, JDK 1.5.0_12, WinXP, 
maven-testing-harness:1.1
            Reporter: Benjamin Bentmann
            Priority: Minor
         Attachments: immutable-lists.patch

For example, calling MavenProjectStub.addCompileSourceRoot() twice causes the 
following stack trace
{code}
java.lang.UnsupportedOperationException
        at java.util.AbstractList.add(AbstractList.java:151)
        at java.util.AbstractList.add(AbstractList.java:89)
        at 
org.apache.maven.plugin.testing.stubs.MavenProjectStub.addCompileSourceRoot(MavenProjectStub.java:328)
{code}
This is caused by the usage of Collections.singletonList() in various methods 
to initialize modifiable collection members. However, singletonList() returns 
an immutable collection as stated in its javadoc.

The attached patch should fix this. Besides, the patch uses eager 
initialization for the collections such that getters like 
getCompileSourceRoots() return non-null data right from the beginning. This 
makes the stub more consistent with the behavior of MavenProject.

Apropos MavenProject: I wonder why many (if not all) methods inherited from 
MavenProject are overriden by MavenProjectStub. For instance, 
MavenProject.addCompileSourceRoot() already provides (non-trivial) management 
of the source root collection. The stub in turn badly overwrites this, making 
the tests behave differently than during a real build while apparently not 
providing any more features to the unit tests. Likewise I cannot quite 
understand why methods like getDependencies() are overwritten with noops while 
the MavenProject's implementation nicely delegates to the model.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to