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;
     }
 
 }


Reply via email to