Author: carlos
Date: Thu Feb 14 18:39:02 2008
New Revision: 627932
URL: http://svn.apache.org/viewvc?rev=627932&view=rev
Log:
[MNG-3400] Implement clone properly following Effective Java' book
considerations
Modified:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
Modified:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?rev=627932&r1=627931&r2=627932&view=diff
==============================================================================
---
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
(original)
+++
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
Thu Feb 14 18:39:02 2008
@@ -80,6 +80,7 @@
* </ol>
*/
public class MavenProject
+ implements Cloneable
{
public static final String EMPTY_PROJECT_GROUP_ID = "unknown";
@@ -169,10 +170,14 @@
}
/**
- * @deprecated use [EMAIL PROTECTED] #clone()}
+ * @deprecated use [EMAIL PROTECTED] #clone()} so subclasses can provide a
copy of the same class
*/
public MavenProject( MavenProject project )
{
+ deepCopy( project );
+ }
+
+ private final void deepCopy(MavenProject project){
// disown the parent
// copy fields
@@ -1825,11 +1830,15 @@
}
/**
+ * @throws CloneNotSupportedException
* @since 2.0.9
*/
public Object clone()
+ throws CloneNotSupportedException
{
- return new MavenProject( this );
+ MavenProject clone = (MavenProject) super.clone();
+ clone.deepCopy( this );
+ return clone;
}
}