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>&lt;asfExtOptions&gt;&lt;included/&gt;&lt;/asfExtOptions&gt;</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>


Reply via email to