The archiver is making a copy of the MavenProject using newProject =
new MavenProject(project)
project is a subclass of MavenProject (EclipseMavenProject)
Instead the archiver should do project.clone() if any

Previous to my patch new MavenProject(project) fails with NPE as the
fields are accessed directly. After the patch it works, although I
still think to make copies it should use clone() and that's why I
deprecated the constructor

what @todo are you talking about?

I will fix the clone method.

On Thu, Feb 14, 2008 at 5:17 PM, Brett Porter <[EMAIL PROTECTED]> wrote:
> I'm not sure why the archiver needs to use the delegate? Is it because
>  you lose track of the updates? IF that's all, then you could follow
>  the @todo in the class javadoc :)
>
>  If it truly needs it, clone is the right method - I'd definitely
>  recommend reading the section on clone in Effective Java though :)
>
>  - Brett
>
>
>
>  On 15/02/2008, at 11:57 AM, Carlos Sanchez wrote:
>
>  > 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]
>  >
>
>  --
>  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