Reading carefully the javadoc I see the mistakes i made in clone :( I
can fix that

The problem arised with a delegate pattern implementation, the
MavenProject instance is encapsulated [1], but the problem comes with
other classes using this constructor to make copies, which will ignore
any customizations made in the delegating object (the subclass).

If the way to make a copy where defined in a method ( clone() seems to
be the right one ) then subclasses could just override that method and
there wouldnt be any need of getters/setters, but right now that
constructor is used in the maven archiver. Adding the getters and
setters is a patch until the other classes are updated to use clone()
and to keep backwards compatibility.

[1] http://tinyurl.com/29jzte


On Thu, Feb 14, 2008 at 4:15 PM, Brett Porter <[EMAIL PROTECTED]> wrote:
> Carlos,
>
>  Can you elaborate on the need for this?
>
>  I understand that since MavenProject is non-final and so are the get/
>  sets they can be overridden and so we should be using the get/set
>  internally. However, it would seem we don't need that funcationality
>  for every field - which particular ones do you see as needing to be
>  overridden?
>
>  Also, I don't think the clone() stuff is right:
>  - you've deprecated the copy constructor even though it is still
>  useful. You also require it's existence which means it shouldn't be
>  deprecated.
>  - clone()'s contract says that it doesn't call any constructors,
>  making the method work but not as documented by the JDK
>  - clone() should call super.clone() to get a valid MavenProject instance
>  - MavenProject doesn't implement clonable
>  Why did you need clone()?
>
>  Thanks,
>  Brett
>
>  On 14/02/2008, at 5:40 PM, [EMAIL PROTECTED] wrote:
>
>  > Author: carlos
>  > Date: Wed Feb 13 22:40:35 2008
>  > New Revision: 627675
>  >
>  > URL: http://svn.apache.org/viewvc?rev=627675&view=rev
>  > Log:
>  > [MNG-3400] MavenProject is not extensible. Merge rev 627670 from trunk
>  >
>  > Modified:
>  >    maven/components/branches/maven-2.0.x/maven-project/src/main/java/
>  > org/apache/maven/project/MavenProject.java
>  >    maven/components/branches/maven-2.0.x/maven-project/src/test/java/
>  > org/apache/maven/project/MavenProjectTest.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=627675&r1=627674&r2=627675&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 Wed Feb 13 22:40:35
>  > 2008
>  > @@ -158,103 +158,107 @@
>  >         model.setArtifactId( EMPTY_PROJECT_ARTIFACT_ID );
>  >         model.setVersion( EMPTY_PROJECT_VERSION );
>  >
>  > -        this.model = model;
>  > +        this.setModel( model );
>  >     }
>  >
>  >     public MavenProject( Model model )
>  >     {
>  > -        this.model = model;
>  > +        this.setModel( model );
>  >     }
>  >
>  > +    /**
>  > +     * @deprecated use [EMAIL PROTECTED] #clone()}
>  > +     */
>  >     public MavenProject( MavenProject project )
>  >     {
>  >         // disown the parent
>  >
>  >         // copy fields
>  > -        this.file = project.file;
>  > +        setFile( project.getFile() );
>  >
>  > -        // don't need a deep copy, they don't get modified or added/
>  > removed to/from - but make them unmodifiable to be sure!
>  > -        if ( project.dependencyArtifacts != null )
>  > +        // don't need a deep copy, they don't get modified or added/
>  > removed to/from - but make them unmodifiable to be
>  > +        // sure!
>  > +        if ( project.getDependencyArtifacts() != null )
>  >         {
>  > -            this.dependencyArtifacts =
>  > Collections.unmodifiableSet( project.dependencyArtifacts );
>  > +
>  > setDependencyArtifacts
>  > ( Collections.unmodifiableSet( project.getDependencyArtifacts() ) );
>  >         }
>  > -
>  > -        if ( project.artifacts != null )
>  > +
>  > +        if ( project.getArtifacts() != null )
>  >         {
>  > -            this.artifacts =
>  > Collections.unmodifiableSet( project.artifacts );
>  > +
>  > setArtifacts( Collections.unmodifiableSet( project.getArtifacts() ) );
>  >         }
>  > -
>  > -        if ( project.pluginArtifacts != null )
>  > +
>  > +        if ( project.getPluginArtifacts() != null )
>  >         {
>  > -            this.pluginArtifacts =
>  > Collections.unmodifiableSet( project.pluginArtifacts );
>  > +
>  > setPluginArtifacts
>  > ( Collections.unmodifiableSet( project.getPluginArtifacts() ) );
>  >         }
>  > -
>  > -        if ( project.reportArtifacts != null )
>  > +
>  > +        if ( project.getReportArtifacts() != null )
>  >         {
>  > -            this.reportArtifacts =
>  > Collections.unmodifiableSet( project.reportArtifacts );
>  > -        }
>  > -
>  > -        if ( project.extensionArtifacts != null )
>  > +
>  > setReportArtifacts
>  > ( Collections.unmodifiableSet( project.getReportArtifacts() ) );
>  > +        }
>  > +
>  > +        if ( project.getExtensionArtifacts() != null )
>  >         {
>  > -            this.extensionArtifacts =
>  > Collections.unmodifiableSet( project.extensionArtifacts );
>  > -        }
>  > -
>  > -        this.parentArtifact = project.parentArtifact;
>  > +
>  > setExtensionArtifacts
>  > ( Collections.unmodifiableSet( project.getExtensionArtifacts() ) );
>  > +        }
>  > +
>  > +        setParentArtifact( ( project.getParentArtifact() ) );
>  >
>  > -        if ( project.remoteArtifactRepositories != null )
>  > +        if ( project.getRemoteArtifactRepositories() != null )
>  >         {
>  > -            this.remoteArtifactRepositories =
>  > Collections.unmodifiableList( project.remoteArtifactRepositories );
>  > -        }
>  > -
>  > -        if ( project.pluginArtifactRepositories != null )
>  > +
>  > setRemoteArtifactRepositories
>  > ( Collections
>  > .unmodifiableList( project.getRemoteArtifactRepositories() ) );
>  > +        }
>  > +
>  > +        if ( project.getPluginArtifactRepositories() != null )
>  >         {
>  > -            this.pluginArtifactRepositories =
>  > Collections.unmodifiableList( project.pluginArtifactRepositories );
>  > -        }
>  > -
>  > -        if ( project.collectedProjects != null )
>  > +
>  > setPluginArtifactRepositories
>  > ( ( Collections
>  > .unmodifiableList( project.getPluginArtifactRepositories() ) ) );
>  > +        }
>  > +
>  > +        if ( project.getCollectedProjects() != null )
>  >         {
>  > -            this.collectedProjects =
>  > Collections.unmodifiableList( project.collectedProjects );
>  > -        }
>  > -
>  > -        if ( project.activeProfiles != null )
>  > +
>  > setCollectedProjects
>  > ( ( Collections
>  > .unmodifiableList( project.getCollectedProjects() ) ) );
>  > +        }
>  > +
>  > +        if ( project.getActiveProfiles() != null )
>  >         {
>  > -            this.activeProfiles =
>  > Collections.unmodifiableList( project.activeProfiles );
>  > -        }
>  > -
>  > +
>  > setActiveProfiles
>  > ( ( Collections.unmodifiableList( project.getActiveProfiles() ) ) );
>  > +        }
>  > +
>  >         if ( project.getAttachedArtifacts() != null )
>  >         {
>  >             // clone properties modifyable by plugins in a forked
>  > lifecycle
>  > -            this.attachedArtifacts = new
>  > ArrayList( project.getAttachedArtifacts() );
>  > -        }
>  > -
>  > -        if ( project.compileSourceRoots != null )
>  > +            setAttachedArtifacts( new
>  > ArrayList( project.getAttachedArtifacts() ) );
>  > +        }
>  > +
>  > +        if ( project.getCompileSourceRoots() != null )
>  >         {
>  >             // clone source roots
>  > -            this.compileSourceRoots = new
>  > ArrayList( project.compileSourceRoots );
>  > -        }
>  > -
>  > -        if ( project.testCompileSourceRoots != null )
>  > +            setCompileSourceRoots( ( new
>  > ArrayList( project.getCompileSourceRoots() ) ) );
>  > +        }
>  > +
>  > +        if ( project.getTestCompileSourceRoots() != null )
>  >         {
>  > -            this.testCompileSourceRoots = new
>  > ArrayList( project.testCompileSourceRoots );
>  > -        }
>  > -
>  > -        if ( project.scriptSourceRoots != null )
>  > +            setTestCompileSourceRoots( ( new
>  > ArrayList( project.getTestCompileSourceRoots() ) ) );
>  > +        }
>  > +
>  > +        if ( project.getScriptSourceRoots() != null )
>  >         {
>  > -            this.scriptSourceRoots = new
>  > ArrayList( project.scriptSourceRoots );
>  > -        }
>  > -
>  > -        this.model = ModelUtils.cloneModel( project.model );
>  > +            setScriptSourceRoots( ( new
>  > ArrayList( project.getScriptSourceRoots() ) ) );
>  > +        }
>  >
>  > -        if ( project.originalModel != null )
>  > +        setModel( ( ModelUtils.cloneModel( project.getModel() ) ) );
>  > +
>  > +        if ( project.getOriginalModel() != null )
>  >         {
>  > -            this.originalModel =
>  > ModelUtils.cloneModel( project.originalModel );
>  > +
>  > setOriginalModel
>  > ( ( ModelUtils.cloneModel( project.getOriginalModel() ) ) );
>  >         }
>  >
>  > -        this.executionRoot = project.executionRoot;
>  > +        setExecutionRoot( project.isExecutionRoot() );
>  >
>  > -        if ( project.artifact != null )
>  > +        if ( project.getArtifact() != null )
>  >         {
>  > -            this.artifact =
>  > ArtifactUtils.copyArtifact( project.artifact );
>  > +
>  > setArtifact( ArtifactUtils.copyArtifact( project.getArtifact() ) );
>  >         }
>  >
>  >         if ( project.getManagedVersionMap() != null )
>  > @@ -262,14 +266,14 @@
>  >             setManagedVersionMap( new
>  > ManagedVersionMap( project.getManagedVersionMap() ) );
>  >         }
>  >
>  > -        if ( project.releaseArtifactRepository != null )
>  > +        if ( project.getReleaseArtifactRepository() != null )
>  >         {
>  > -            releaseArtifactRepository =
>  > project.releaseArtifactRepository;
>  > +
>  > setReleaseArtifactRepository
>  > ( project.getReleaseArtifactRepository() );
>  >         }
>  >
>  > -        if ( project.snapshotArtifactRepository != null )
>  > +        if ( project.getSnapshotArtifactRepository() != null )
>  >         {
>  > -            snapshotArtifactRepository =
>  > project.snapshotArtifactRepository;
>  > +
>  > setSnapshotArtifactRepository
>  > ( project.getSnapshotArtifactRepository() );
>  >         }
>  >     }
>  >
>  > @@ -403,17 +407,17 @@
>  >
>  >     public void setDependencies( List dependencies )
>  >     {
>  > -        model.setDependencies( dependencies );
>  > +        getModel().setDependencies( dependencies );
>  >     }
>  >
>  >     public List getDependencies()
>  >     {
>  > -        return model.getDependencies();
>  > +        return getModel().getDependencies();
>  >     }
>  >
>  >     public DependencyManagement getDependencyManagement()
>  >     {
>  > -        return model.getDependencyManagement();
>  > +        return getModel().getDependencyManagement();
>  >     }
>  >
>  >     //
>  > ----------------------------------------------------------------------
>  > @@ -427,9 +431,9 @@
>  >             path = path.trim();
>  >             if ( path.length() != 0 )
>  >             {
>  > -                if ( !compileSourceRoots.contains( path ) )
>  > +                if ( !getCompileSourceRoots().contains( path ) )
>  >                 {
>  > -                    compileSourceRoots.add( path );
>  > +                    getCompileSourceRoots().add( path );
>  >                 }
>  >             }
>  >         }
>  > @@ -442,9 +446,9 @@
>  >             path = path.trim();
>  >             if ( path.length() != 0 )
>  >             {
>  > -                if ( !scriptSourceRoots.contains( path ) )
>  > +                if ( !getScriptSourceRoots().contains( path ) )
>  >                 {
>  > -                    scriptSourceRoots.add( path );
>  > +                    getScriptSourceRoots().add( path );
>  >                 }
>  >             }
>  >         }
>  > @@ -457,9 +461,9 @@
>  >             path = path.trim();
>  >             if ( path.length() != 0 )
>  >             {
>  > -                if ( !testCompileSourceRoots.contains( path ) )
>  > +                if ( !getTestCompileSourceRoots().contains( path ) )
>  >                 {
>  > -                    testCompileSourceRoots.add( path );
>  > +                    getTestCompileSourceRoots().add( path );
>  >                 }
>  >             }
>  >         }
>  > @@ -821,31 +825,31 @@
>  >
>  >     public void setModelVersion( String pomVersion )
>  >     {
>  > -        model.setModelVersion( pomVersion );
>  > +        getModel().setModelVersion( pomVersion );
>  >     }
>  >
>  >     public String getModelVersion()
>  >     {
>  > -        return model.getModelVersion();
>  > +        return getModel().getModelVersion();
>  >     }
>  >
>  >     public String getId()
>  >     {
>  > -        return model.getId();
>  > +        return getModel().getId();
>  >     }
>  >
>  >     public void setGroupId( String groupId )
>  >     {
>  > -        model.setGroupId( groupId );
>  > +        getModel().setGroupId( groupId );
>  >     }
>  >
>  >     public String getGroupId()
>  >     {
>  > -        String groupId = model.getGroupId();
>  > -
>  > -        if ( groupId == null && model.getParent() != null )
>  > +        String groupId = getModel().getGroupId();
>  > +
>  > +        if ( ( groupId == null ) && ( getModel().getParent() !=
>  > null ) )
>  >         {
>  > -            groupId = model.getParent().getGroupId();
>  > +            groupId = getModel().getParent().getGroupId();
>  >         }
>  >
>  >         return groupId;
>  > @@ -853,25 +857,25 @@
>  >
>  >     public void setArtifactId( String artifactId )
>  >     {
>  > -        model.setArtifactId( artifactId );
>  > +        getModel().setArtifactId( artifactId );
>  >     }
>  >
>  >     public String getArtifactId()
>  >     {
>  > -        return model.getArtifactId();
>  > +        return getModel().getArtifactId();
>  >     }
>  >
>  >     public void setName( String name )
>  >     {
>  > -        model.setName( name );
>  > +        getModel().setName( name );
>  >     }
>  >
>  >     public String getName()
>  >     {
>  >         // TODO: this should not be allowed to be null.
>  > -        if ( model.getName() != null )
>  > +        if ( getModel().getName() != null )
>  >         {
>  > -            return model.getName();
>  > +            return getModel().getName();
>  >         }
>  >         else
>  >         {
>  > @@ -881,16 +885,16 @@
>  >
>  >     public void setVersion( String version )
>  >     {
>  > -        model.setVersion( version );
>  > +        getModel().setVersion( version );
>  >     }
>  >
>  >     public String getVersion()
>  >     {
>  > -        String version = model.getVersion();
>  > -
>  > -        if ( version == null && model.getParent() != null )
>  > +        String version = getModel().getVersion();
>  > +
>  > +        if ( ( version == null ) && ( getModel().getParent() !=
>  > null ) )
>  >         {
>  > -            version = model.getParent().getVersion();
>  > +            version = getModel().getParent().getVersion();
>  >         }
>  >
>  >         return version;
>  > @@ -898,149 +902,149 @@
>  >
>  >     public String getPackaging()
>  >     {
>  > -        return model.getPackaging();
>  > +        return getModel().getPackaging();
>  >     }
>  >
>  >     public void setPackaging( String packaging )
>  >     {
>  > -        model.setPackaging( packaging );
>  > +        getModel().setPackaging( packaging );
>  >     }
>  >
>  >     public void setInceptionYear( String inceptionYear )
>  >     {
>  > -        model.setInceptionYear( inceptionYear );
>  > +        getModel().setInceptionYear( inceptionYear );
>  >     }
>  >
>  >     public String getInceptionYear()
>  >     {
>  > -        return model.getInceptionYear();
>  > +        return getModel().getInceptionYear();
>  >     }
>  >
>  >     public void setUrl( String url )
>  >     {
>  > -        model.setUrl( url );
>  > +        getModel().setUrl( url );
>  >     }
>  >
>  >     public String getUrl()
>  >     {
>  > -        return model.getUrl();
>  > +        return getModel().getUrl();
>  >     }
>  >
>  >     public Prerequisites getPrerequisites()
>  >     {
>  > -        return model.getPrerequisites();
>  > +        return getModel().getPrerequisites();
>  >     }
>  >
>  >     public void setIssueManagement( IssueManagement issueManagement )
>  >     {
>  > -        model.setIssueManagement( issueManagement );
>  > +        getModel().setIssueManagement( issueManagement );
>  >     }
>  >
>  >     public CiManagement getCiManagement()
>  >     {
>  > -        return model.getCiManagement();
>  > +        return getModel().getCiManagement();
>  >     }
>  >
>  >     public void setCiManagement( CiManagement ciManagement )
>  >     {
>  > -        model.setCiManagement( ciManagement );
>  > +        getModel().setCiManagement( ciManagement );
>  >     }
>  >
>  >     public IssueManagement getIssueManagement()
>  >     {
>  > -        return model.getIssueManagement();
>  > +        return getModel().getIssueManagement();
>  >     }
>  >
>  >     public void setDistributionManagement( DistributionManagement
>  > distributionManagement )
>  >     {
>  > -        model.setDistributionManagement( distributionManagement );
>  > +
>  > getModel().setDistributionManagement( distributionManagement );
>  >     }
>  >
>  >     public DistributionManagement getDistributionManagement()
>  >     {
>  > -        return model.getDistributionManagement();
>  > +        return getModel().getDistributionManagement();
>  >     }
>  >
>  >     public void setDescription( String description )
>  >     {
>  > -        model.setDescription( description );
>  > +        getModel().setDescription( description );
>  >     }
>  >
>  >     public String getDescription()
>  >     {
>  > -        return model.getDescription();
>  > +        return getModel().getDescription();
>  >     }
>  >
>  >     public void setOrganization( Organization organization )
>  >     {
>  > -        model.setOrganization( organization );
>  > +        getModel().setOrganization( organization );
>  >     }
>  >
>  >     public Organization getOrganization()
>  >     {
>  > -        return model.getOrganization();
>  > +        return getModel().getOrganization();
>  >     }
>  >
>  >     public void setScm( Scm scm )
>  >     {
>  > -        model.setScm( scm );
>  > +        getModel().setScm( scm );
>  >     }
>  >
>  >     public Scm getScm()
>  >     {
>  > -        return model.getScm();
>  > +        return getModel().getScm();
>  >     }
>  >
>  >     public void setMailingLists( List mailingLists )
>  >     {
>  > -        model.setMailingLists( mailingLists );
>  > +        getModel().setMailingLists( mailingLists );
>  >     }
>  >
>  >     public List getMailingLists()
>  >     {
>  > -        return model.getMailingLists();
>  > +        return getModel().getMailingLists();
>  >     }
>  >
>  >     public void addMailingList( MailingList mailingList )
>  >     {
>  > -        model.addMailingList( mailingList );
>  > +        getModel().addMailingList( mailingList );
>  >     }
>  >
>  >     public void setDevelopers( List developers )
>  >     {
>  > -        model.setDevelopers( developers );
>  > +        getModel().setDevelopers( developers );
>  >     }
>  >
>  >     public List getDevelopers()
>  >     {
>  > -        return model.getDevelopers();
>  > +        return getModel().getDevelopers();
>  >     }
>  >
>  >     public void addDeveloper( Developer developer )
>  >     {
>  > -        model.addDeveloper( developer );
>  > +        getModel().addDeveloper( developer );
>  >     }
>  >
>  >     public void setContributors( List contributors )
>  >     {
>  > -        model.setContributors( contributors );
>  > +        getModel().setContributors( contributors );
>  >     }
>  >
>  >     public List getContributors()
>  >     {
>  > -        return model.getContributors();
>  > +        return getModel().getContributors();
>  >     }
>  >
>  >     public void addContributor( Contributor contributor )
>  >     {
>  > -        model.addContributor( contributor );
>  > +        getModel().addContributor( contributor );
>  >     }
>  >
>  >     public void setBuild( Build build )
>  >     {
>  >         this.buildOverlay = new BuildOverlay( build );
>  >
>  > -        model.setBuild( build );
>  > +        getModel().setBuild( build );
>  >     }
>  >
>  >     public Build getBuild()
>  > @@ -1075,27 +1079,27 @@
>  >
>  >     public void setReporting( Reporting reporting )
>  >     {
>  > -        model.setReporting( reporting );
>  > +        getModel().setReporting( reporting );
>  >     }
>  >
>  >     public Reporting getReporting()
>  >     {
>  > -        return model.getReporting();
>  > +        return getModel().getReporting();
>  >     }
>  >
>  >     public void setLicenses( List licenses )
>  >     {
>  > -        model.setLicenses( licenses );
>  > +        getModel().setLicenses( licenses );
>  >     }
>  >
>  >     public List getLicenses()
>  >     {
>  > -        return model.getLicenses();
>  > +        return getModel().getLicenses();
>  >     }
>  >
>  >     public void addLicense( License license )
>  >     {
>  > -        model.addLicense( license );
>  > +        getModel().addLicense( license );
>  >     }
>  >
>  >     public void setArtifacts( Set artifacts )
>  > @@ -1206,7 +1210,7 @@
>  >
>  >     public List getRepositories()
>  >     {
>  > -        return model.getRepositories();
>  > +        return getModel().getRepositories();
>  >     }
>  >
>  >     //
>  > ----------------------------------------------------------------------
>  > @@ -1215,33 +1219,33 @@
>  >
>  >     public List getReportPlugins()
>  >     {
>  > -        if ( model.getReporting() == null )
>  > +        if ( getModel().getReporting() == null )
>  >         {
>  >             return null;
>  >         }
>  > -        return model.getReporting().getPlugins();
>  > +        return getModel().getReporting().getPlugins();
>  >
>  >     }
>  >
>  >     public List getBuildPlugins()
>  >     {
>  > -        if ( model.getBuild() == null )
>  > +        if ( getModel().getBuild() == null )
>  >         {
>  >             return null;
>  >         }
>  > -        return model.getBuild().getPlugins();
>  > +        return getModel().getBuild().getPlugins();
>  >     }
>  >
>  >     public List getModules()
>  >     {
>  > -        return model.getModules();
>  > +        return getModel().getModules();
>  >     }
>  >
>  >     public PluginManagement getPluginManagement()
>  >     {
>  >         PluginManagement pluginMgmt = null;
>  >
>  > -        Build build = model.getBuild();
>  > +        Build build = getModel().getBuild();
>  >         if ( build != null )
>  >         {
>  >             pluginMgmt = build.getPluginManagement();
>  > @@ -1252,13 +1256,13 @@
>  >
>  >     private Build getModelBuild()
>  >     {
>  > -        Build build = model.getBuild();
>  > +        Build build = getModel().getBuild();
>  >
>  >         if ( build == null )
>  >         {
>  >             build = new Build();
>  >
>  > -            model.setBuild( build );
>  > +            getModel().setBuild( build );
>  >         }
>  >
>  >         return build;
>  > @@ -1322,13 +1326,13 @@
>  >
>  >     public ArtifactRepository
>  > getDistributionManagementArtifactRepository()
>  >     {
>  > -        return getArtifact().isSnapshot() &&
>  > snapshotArtifactRepository != null ? snapshotArtifactRepository
>  > -            : releaseArtifactRepository;
>  > +        return getArtifact().isSnapshot() &&
>  > ( getSnapshotArtifactRepository() != null ) ?
>  > getSnapshotArtifactRepository()
>  > +            : getReleaseArtifactRepository();
>  >     }
>  >
>  >     public List getPluginRepositories()
>  >     {
>  > -        return model.getPluginRepositories();
>  > +        return getModel().getPluginRepositories();
>  >     }
>  >
>  >     public void setActiveProfiles( List activeProfiles )
>  > @@ -1624,6 +1628,42 @@
>  >         return getBuild() != null ? getBuild().getDefaultGoal() :
>  > null;
>  >     }
>  >
>  > +
>  > +    protected void setModel( Model model )
>  > +    {
>  > +        this.model = model;
>  > +    }
>  > +
>  > +    protected void setAttachedArtifacts( List attachedArtifacts )
>  > +    {
>  > +        this.attachedArtifacts = attachedArtifacts;
>  > +    }
>  > +
>  > +    protected void setCompileSourceRoots( List compileSourceRoots )
>  > +    {
>  > +        this.compileSourceRoots = compileSourceRoots;
>  > +    }
>  > +
>  > +    protected void setTestCompileSourceRoots( List
>  > testCompileSourceRoots )
>  > +    {
>  > +        this.testCompileSourceRoots = testCompileSourceRoots;
>  > +    }
>  > +
>  > +    protected void setScriptSourceRoots( List scriptSourceRoots )
>  > +    {
>  > +        this.scriptSourceRoots = scriptSourceRoots;
>  > +    }
>  > +
>  > +    protected ArtifactRepository getReleaseArtifactRepository()
>  > +    {
>  > +        return releaseArtifactRepository;
>  > +    }
>  > +
>  > +    protected ArtifactRepository getSnapshotArtifactRepository()
>  > +    {
>  > +        return snapshotArtifactRepository;
>  > +    }
>  > +
>  >     public Artifact replaceWithActiveArtifact( Artifact
>  > pluginArtifact )
>  >     {
>  >         if ( getProjectReferences() != null && !
>  > getProjectReferences().isEmpty() )
>  > @@ -1743,6 +1783,14 @@
>  >         }
>  >
>  >         return sb.toString();
>  > +    }
>  > +
>  > +    /**
>  > +     * @since 2.0.9
>  > +     */
>  > +    public Object clone()
>  > +    {
>  > +        return new MavenProject( this );
>  >     }
>  >
>  > }
>  >
>  > Modified: maven/components/branches/maven-2.0.x/maven-project/src/
>  > test/java/org/apache/maven/project/MavenProjectTest.java
>  > URL: 
> http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java?rev=627675&r1=627674&r2=627675&view=diff
>  > =
>  > =
>  > =
>  > =
>  > =
>  > =
>  > =
>  > =
>  > ======================================================================
>  > --- maven/components/branches/maven-2.0.x/maven-project/src/test/
>  > java/org/apache/maven/project/MavenProjectTest.java (original)
>  > +++ maven/components/branches/maven-2.0.x/maven-project/src/test/
>  > java/org/apache/maven/project/MavenProjectTest.java Wed Feb 13
>  > 22:40:35 2008
>  > @@ -21,15 +21,13 @@
>  >
>  > import java.io.File;
>  > import java.io.IOException;
>  > -import java.util.Map;
>  > -import java.util.Iterator;
>  > import java.util.List;
>  > +import java.util.Map;
>  >
>  > +import org.apache.maven.artifact.versioning.ManagedVersionMap;
>  > +import org.apache.maven.model.DependencyManagement;
>  > import org.apache.maven.model.Model;
>  > import org.apache.maven.model.Parent;
>  > -import org.apache.maven.model.DependencyManagement;
>  > -import org.apache.maven.model.Dependency;
>  > -import org.apache.maven.artifact.versioning.ManagedVersionMap;
>  >
>  > public class MavenProjectTest
>  >     extends AbstractMavenProjectTestCase
>  > @@ -90,20 +88,20 @@
>  >                         + MavenProject.EMPTY_PROJECT_VERSION,
>  > project.getId() );
>  >     }
>  >
>  > -    public void testCopyConstructor()
>  > +    public void testClone()
>  >         throws Exception
>  >     {
>  >         File f = getFileForClasspathResource( "canonical-pom.xml" );
>  >         MavenProject projectToClone = getProject( f );
>  >
>  > -        MavenProject clonedProject = new
>  > MavenProject( projectToClone );
>  > +        MavenProject clonedProject = (MavenProject)
>  > projectToClone.clone();
>  >         assertEquals( "maven-core", clonedProject.getArtifactId() );
>  >         Map clonedMap = clonedProject.getManagedVersionMap();
>  >         assertNotNull("ManagedVersionMap not copied", clonedMap);
>  >         assertTrue("ManagedVersionMap is not empty",
>  > clonedMap.isEmpty());
>  >     }
>  >
>  > -    public void testCopyConstructorWithDependencyManagement()
>  > +    public void testCloneWithDependencyManagement()
>  >         throws Exception
>  >     {
>  >         File f = getFileForClasspathResource( "dependencyManagement-
>  > pom.xml" );
>  > @@ -118,7 +116,7 @@
>  >         assertNotNull("No ManagedVersionMap", map);
>  >         assertTrue("ManagedVersionMap is empty", !map.isEmpty());
>  >
>  > -        MavenProject clonedProject = new
>  > MavenProject( projectToClone );
>  > +        MavenProject clonedProject = (MavenProject)
>  > projectToClone.clone();
>  >         assertEquals( "maven-core", clonedProject.getArtifactId() );
>  >         Map clonedMap = clonedProject.getManagedVersionMap();
>  >         assertNotNull("ManagedVersionMap not copied", clonedMap);
>  > @@ -146,13 +144,13 @@
>  >         assertEquals( "..", pathAdjustment );
>  >     }
>  >
>  > -    public void testCopyConstructorWithDistributionManagement()
>  > throws Exception
>  > +    public void testCloneWithDistributionManagement() throws
>  > Exception
>  >     {
>  >
>  >         File f =
>  > getFileForClasspathResource( "distributionManagement-pom.xml" );
>  >         MavenProject projectToClone = getProject( f );
>  >
>  > -        MavenProject clonedProject = new
>  > MavenProject( projectToClone );
>  > +        MavenProject clonedProject = (MavenProject)
>  > projectToClone.clone();
>  >         assertNotNull( "clonedProject - distributionManagement",
>  > clonedProject.getDistributionManagementArtifactRepository() );
>  >     }
>  > }
>  >
>  >
>
>  --
>  Brett Porter
>  [EMAIL PROTECTED]
>  http://blogs.exist.com/bporter/
>
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  For additional commands, e-mail: [EMAIL PROTECTED]
>
>



-- 
I could give you my word as a Spaniard.
No good. I've known too many Spaniards.
 -- The Princess Bride

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to