o Added contributor/developer processors

git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@756980 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Benjamin Bentmann 2009-03-21 18:10:28 +00:00
parent 609077e2b4
commit e7eeaba62a
4 changed files with 164 additions and 5 deletions

View File

@ -0,0 +1,70 @@
package org.apache.maven.project.processor;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.apache.maven.model.Contributor;
import org.apache.maven.model.Model;
public class ContributorsProcessor
extends BaseProcessor
{
public void process( Object parent, Object child, Object target, boolean isChildMostSpecialized )
{
super.process( parent, child, target, isChildMostSpecialized );
Model p = (Model) parent;
Model c = (Model) child;
Model t = (Model) target;
if ( !c.getContributors().isEmpty() )
{
copyContributors( c.getContributors(), t );
}
else if ( p != null && !p.getContributors().isEmpty() )
{
copyContributors( p.getContributors(), t );
}
}
private static void copyContributors( List<Contributor> contributors, Model target )
{
for ( Contributor contributor : contributors )
{
Contributor copy = new Contributor();
copy.setName( contributor.getName() );
copy.setEmail( contributor.getEmail() );
copy.setUrl( contributor.getUrl() );
copy.setOrganization( contributor.getOrganization() );
copy.setOrganizationUrl( contributor.getOrganizationUrl() );
copy.setTimezone( contributor.getTimezone() );
copy.setRoles( new ArrayList<String>( contributor.getRoles() ) );
Properties props = new Properties();
props.putAll( contributor.getProperties() );
copy.setProperties( props );
target.addContributor( copy );
}
}
}

View File

@ -0,0 +1,71 @@
package org.apache.maven.project.processor;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.apache.maven.model.Developer;
import org.apache.maven.model.Model;
public class DevelopersProcessor
extends BaseProcessor
{
public void process( Object parent, Object child, Object target, boolean isChildMostSpecialized )
{
super.process( parent, child, target, isChildMostSpecialized );
Model p = (Model) parent;
Model c = (Model) child;
Model t = (Model) target;
if ( !c.getDevelopers().isEmpty() )
{
copyDevelopers( c.getDevelopers(), t );
}
else if ( p != null && !p.getDevelopers().isEmpty() )
{
copyDevelopers( p.getDevelopers(), t );
}
}
private static void copyDevelopers( List<Developer> developers, Model target )
{
for ( Developer developer : developers )
{
Developer copy = new Developer();
copy.setId( developer.getId() );
copy.setName( developer.getName() );
copy.setEmail( developer.getEmail() );
copy.setUrl( developer.getUrl() );
copy.setOrganization( developer.getOrganization() );
copy.setOrganizationUrl( developer.getOrganizationUrl() );
copy.setTimezone( developer.getTimezone() );
copy.setRoles( new ArrayList<String>( developer.getRoles() ) );
Properties props = new Properties();
props.putAll( developer.getProperties() );
copy.setProperties( props );
target.addDeveloper( copy );
}
}
}

View File

@ -176,7 +176,8 @@ public class ProcessorContext
new MailingListProcessor(), new IssueManagementProcessor(),
new CiManagementProcessor(), new ReportingProcessor(),
new RepositoriesProcessor(), new DistributionManagementProcessor(),
new LicensesProcessor(), new ScmProcessor(), new PrerequisitesProcessor() );
new LicensesProcessor(), new ScmProcessor(), new PrerequisitesProcessor(),
new ContributorsProcessor(), new DevelopersProcessor() );
Model target = processModelsForInheritance( convertDomainModelsToMavenModels( domainModels ), processors, true );
PomClassicDomainModel model = convertToDomainModel( target, false );

View File

@ -983,11 +983,28 @@ public class PomConstructionTest
assertEquals( "repo", pom.getValue( "licenses[1]/distribution" ) );
assertEquals( "free", pom.getValue( "licenses[1]/comments" ) );
/* FIXME
assertEquals( 1, ((List<?>)pom.getValue( "developers" )).size() );
assertEquals( 1, ( (List<?>) pom.getValue( "developers" ) ).size() );
assertEquals( "dev", pom.getValue( "developers[1]/id" ) );
assertEquals( "project-developer", pom.getValue( "developers[1]/name" ) );
assertEquals( "developer@", pom.getValue( "developers[1]/email" ) );
assertEquals( "http://developer", pom.getValue( "developers[1]/url" ) );
assertEquals( "developer", pom.getValue( "developers[1]/organization" ) );
assertEquals( "http://devel.org", pom.getValue( "developers[1]/organizationUrl" ) );
assertEquals( "-1", pom.getValue( "developers[1]/timezone" ) );
assertEquals( "yes", pom.getValue( "developers[1]/properties/developer" ) );
assertEquals( 1, ( (List<?>) pom.getValue( "developers[1]/roles" ) ).size() );
assertEquals( "devel", pom.getValue( "developers[1]/roles[1]" ) );
assertEquals( 1, ((List<?>)pom.getValue( "contributors" )).size() );
//*/
assertEquals( 1, ( (List<?>) pom.getValue( "contributors" ) ).size() );
assertEquals( "project-contributor", pom.getValue( "contributors[1]/name" ) );
assertEquals( "contributor@", pom.getValue( "contributors[1]/email" ) );
assertEquals( "http://contributor", pom.getValue( "contributors[1]/url" ) );
assertEquals( "contributor", pom.getValue( "contributors[1]/organization" ) );
assertEquals( "http://contrib.org", pom.getValue( "contributors[1]/organizationUrl" ) );
assertEquals( "+1", pom.getValue( "contributors[1]/timezone" ) );
assertEquals( "yes", pom.getValue( "contributors[1]/properties/contributor" ) );
assertEquals( 1, ( (List<?>) pom.getValue( "contributors[1]/roles" ) ).size() );
assertEquals( "contrib", pom.getValue( "contributors[1]/roles[1]" ) );
assertEquals( 1, ( (List<?>) pom.getValue( "mailingLists" ) ).size() );
assertEquals( "project-mailing-list", pom.getValue( "mailingLists[1]/name" ) );