Author: vsiveton Date: Sun Dec 12 11:54:55 2010 New Revision: 1044801 URL: http://svn.apache.org/viewvc?rev=1044801&view=rev Log: MDOAP-29: Detect Apache projects
o included ASFext for ASF project Modified: maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java maven/plugins/trunk/maven-doap-plugin/src/main/mdo/asfextOptions.mdo maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/doap-configuration/doap-configuration-plugin-config.xml Modified: maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java?rev=1044801&r1=1044800&r2=1044801&view=diff ============================================================================== --- maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java (original) +++ maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java Sun Dec 12 11:54:55 2010 @@ -235,8 +235,8 @@ public class DoapMojo * </asfExtOptions> * </pre> * - * <b>Note</b>: By default, <code>asfExtOptions/included</code> is set to <code>true</code> to include the ASF - * extensions. <br/> + * <b>Note</b>: By default, <code><asfExtOptions><included/></asfExtOptions></code> will be + * automatically set to <code>true</code> if the project is hosted at ASF. <br/> * See <a href="./apidocs/org/apache/maven/plugin/doap/options/ASFExtOptions.html">Javadoc</a> <br/> * * @parameter expression="${asfExtOptions}" @@ -245,6 +245,7 @@ public class DoapMojo * http://svn.apache.org/repos/asf/infrastructure/site-tools/trunk/projects/asfext</a> * @see <a href="http://projects.apache.org/docs/pmc.html">http://projects.apache.org/docs/pmc.html</a> * @see <a href="http://projects.apache.org/docs/standards.html">http://projects.apache.org/docs/standards.html</a> + * @see ASFExtOptions#isASFProject(MavenProject) */ private ASFExtOptions asfExtOptions; @@ -296,6 +297,16 @@ public class DoapMojo throws MojoExecutionException { // ---------------------------------------------------------------------------- + // Includes ASF extensions + // ---------------------------------------------------------------------------- + + if ( !asfExtOptions.isIncluded() && ASFExtOptions.isASFProject( project ) ) + { + getLog().info( "This project is an ASF project, ASF Extensions to DOAP will be added." ); + asfExtOptions.setIncluded( true ); + } + + // ---------------------------------------------------------------------------- // setup pretty print xml writer // ---------------------------------------------------------------------------- Modified: maven/plugins/trunk/maven-doap-plugin/src/main/mdo/asfextOptions.mdo URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/src/main/mdo/asfextOptions.mdo?rev=1044801&r1=1044800&r2=1044801&view=diff ============================================================================== --- maven/plugins/trunk/maven-doap-plugin/src/main/mdo/asfextOptions.mdo (original) +++ maven/plugins/trunk/maven-doap-plugin/src/main/mdo/asfextOptions.mdo Sun Dec 12 11:54:55 2010 @@ -43,11 +43,10 @@ http://svn.apache.org/repos/asf/infrastr <fields> <field> <name>included</name> - <description>Flag to use or not the ASF extension in the generated DOAP. Required.</description> + <description>Flag to use or not the ASF extension in the generated DOAP.</description> <version>1.0.0</version> <type>boolean</type> <identifier>true</identifier> - <defaultValue>true</defaultValue> </field> <field> <name>pmc</name> @@ -99,6 +98,9 @@ http://svn.apache.org/repos/asf/infrastr <codeSegment> <code> <![CDATA[ + /** Apache domain name, i.e. apache.org */ + public static final String APACHE_DOMAIN_NAME = "apache.org"; + /** The ASF ext namespace. */ public static final String ASFEXT_NAMESPACE = "http://projects.apache.org/ns/asfext#"; @@ -285,6 +287,89 @@ http://svn.apache.org/repos/asf/infrastr return pmc; } + + /** + * Try to find if the given project is hosted at Apache. + * + * @param project not null + * @return <code>true</code> if the SCM url, distribution management url, project url or organization url is hosted + * in the Apache domain name, <code>false</code> otherwise. + * @see #APACHE_DOMAIN_NAME + * @since 1.1 + */ + public static boolean isASFProject( org.apache.maven.project.MavenProject project ) + { + if ( project == null ) + { + throw new IllegalArgumentException( "project is required" ); + } + + if ( project.getScm() != null ) + { + if ( org.codehaus.plexus.util.StringUtils.isNotEmpty( project.getScm().getUrl() ) + && project.getScm().getUrl().indexOf( APACHE_DOMAIN_NAME ) > 0 ) + { + return true; + } + + if ( org.codehaus.plexus.util.StringUtils.isNotEmpty( project.getScm().getConnection() ) + && project.getScm().getConnection().indexOf( APACHE_DOMAIN_NAME ) > 0 ) + { + return true; + } + + if ( org.codehaus.plexus.util.StringUtils.isNotEmpty( project.getScm().getDeveloperConnection() ) + && project.getScm().getDeveloperConnection().indexOf( APACHE_DOMAIN_NAME ) > 0 ) + { + return true; + } + } + + if ( project.getDistributionManagement() != null ) + { + if ( org.codehaus.plexus.util.StringUtils.isNotEmpty( project.getDistributionManagement().getDownloadUrl() ) + && project.getDistributionManagement().getDownloadUrl().indexOf( APACHE_DOMAIN_NAME ) > 0 ) + { + return true; + } + + if ( project.getDistributionManagement().getRepository() != null + && org.codehaus.plexus.util.StringUtils.isNotEmpty( project.getDistributionManagement().getRepository().getUrl() ) + && project.getDistributionManagement().getRepository().getUrl().indexOf( APACHE_DOMAIN_NAME ) > 0 ) + { + return true; + } + + if ( project.getDistributionManagement().getSnapshotRepository() != null + && org.codehaus.plexus.util.StringUtils.isNotEmpty( project.getDistributionManagement().getSnapshotRepository().getUrl() ) + && project.getDistributionManagement().getSnapshotRepository().getUrl().indexOf( APACHE_DOMAIN_NAME ) > 0 ) + { + return true; + } + + if ( project.getDistributionManagement().getSite() != null + && org.codehaus.plexus.util.StringUtils.isNotEmpty( project.getDistributionManagement().getSite().getUrl() ) + && project.getDistributionManagement().getSite().getUrl().indexOf( APACHE_DOMAIN_NAME ) > 0 ) + { + return true; + } + } + + if ( project.getOrganization() != null + && org.codehaus.plexus.util.StringUtils.isNotEmpty( project.getOrganization().getUrl() ) + && project.getOrganization().getUrl().indexOf( APACHE_DOMAIN_NAME ) > 0 ) + { + return true; + } + + if ( org.codehaus.plexus.util.StringUtils.isNotEmpty( project.getUrl() ) + && project.getUrl().indexOf( APACHE_DOMAIN_NAME ) > 0 ) + { + return true; + } + + return false; + } ]]> </code> </codeSegment> Modified: maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/doap-configuration/doap-configuration-plugin-config.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/doap-configuration/doap-configuration-plugin-config.xml?rev=1044801&r1=1044800&r2=1044801&view=diff ============================================================================== --- maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/doap-configuration/doap-configuration-plugin-config.xml (original) +++ maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/doap-configuration/doap-configuration-plugin-config.xml Sun Dec 12 11:54:55 2010 @@ -34,12 +34,12 @@ under the License. <name>Maven DOAP Plugin Test</name> <description>Test the DOAP plugin</description> - <url>http://maven.apache.org/plugins/maven-doap-plugin/tests</url> + <url>http://foo.org/plugins/maven-doap-plugin/tests</url> <scm> - <connection>scm:svn:http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/doap-configuration</connection> - <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/doap-configuration</developerConnection> - <url>http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/doap-configuration</url> + <connection>scm:svn:http://svn.foo.org/repos/asf/maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/doap-configuration</connection> + <developerConnection>scm:svn:https://svn.foo.org/repos/asf/maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/doap-configuration</developerConnection> + <url>http://svn.foo.org/viewvc/maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/doap-configuration</url> </scm> <issueManagement>