Author: carlos
Date: Thu Feb 14 18:45:54 2008
New Revision: 627933
URL: http://svn.apache.org/viewvc?rev=627933&view=rev
Log:
[MNG-3400] Implement clone properly following Effective Java' book
considerations. Merge rev 627932 from trunk
Modified:
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
Modified:
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
URL:
http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?rev=627933&r1=627932&r2=627933&view=diff
==============================================================================
---
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
(original)
+++
maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
Thu Feb 14 18:45:54 2008
@@ -80,6 +80,7 @@
* </ol>
*/
public class MavenProject
+ implements Cloneable
{
public static final String EMPTY_PROJECT_GROUP_ID = "unknown";
@@ -167,10 +168,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
@@ -1786,11 +1791,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;
}
}