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