Author: vsiveton
Date: Mon Dec 13 10:31:55 2010
New Revision: 1045054

URL: http://svn.apache.org/viewvc?rev=1045054&view=rev
Log:
MDOAP-33: Add more DOAP options like blog, audience, plateform...

o added more DOAP options

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/doapOptions.mdo

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=1045054&r1=1045053&r2=1045054&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
 Mon Dec 13 10:31:55 2010
@@ -27,6 +27,7 @@ import java.net.URL;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
@@ -370,12 +371,24 @@ public class DoapMojo
         // description
         writeDescription( writer );
 
+        // implements
+        writeImplements( writer );
+
+        // Audience
+        writeAudience( writer );
+
+        // Vendor
+        writeVendor( writer );
+
         // created
         writeCreated( writer );
 
         // homepage and old-homepage
         writeHomepage( writer );
 
+        // Blog
+        writeBlog( writer );
+
         // licenses
         writeLicenses( writer );
 
@@ -388,6 +401,12 @@ public class DoapMojo
         // os
         writeOS( writer );
 
+        // Plateform
+        writePlateform( writer );
+
+        // Language
+        writeLanguage( writer );
+
         // SCM
         writeSourceRepositories( writer );
 
@@ -403,6 +422,9 @@ public class DoapMojo
         // screenshots
         writeScreenshots( writer );
 
+        // service-endpoint
+        writeServiceEndpoint( writer );
+
         // wiki
         writeWiki( writer );
 
@@ -539,18 +561,38 @@ public class DoapMojo
     {
         if ( StringUtils.isNotEmpty( project.getUrl() ) )
         {
-            XmlWriterUtil.writeLineBreak( writer );
-            XmlWriterUtil.writeCommentText( writer,
-                                            "URL of a project's homepage, 
associated with exactly one project.", 2 );
-            DoapUtil.writeRdfResourceElement( writer, "homepage", 
project.getUrl() );
+            try
+            {
+                new URL( project.getUrl() );
+
+                XmlWriterUtil.writeLineBreak( writer );
+                XmlWriterUtil.writeCommentText( writer,
+                                                "URL of a project's homepage, 
associated with exactly one project.", 2 );
+                DoapUtil.writeRdfResourceElement( writer, "homepage", 
project.getUrl() );
+            }
+            catch ( MalformedURLException e )
+            {
+                getLog().error( "The project url " + project.getUrl() + " is 
not a valid URL. Ignored <homepage/> tag." );
+            }
         }
 
         if ( StringUtils.isNotEmpty( doapOptions.getOldHomepage() ) )
         {
-            XmlWriterUtil.writeLineBreak( writer );
-            XmlWriterUtil.writeCommentText( writer,
-                                            "URL of a project's past homepage, 
associated with exactly one project.", 2 );
-            DoapUtil.writeRdfResourceElement( writer, "old-homepage", 
doapOptions.getOldHomepage() );
+            try
+            {
+                new URL( project.getUrl() );
+
+                XmlWriterUtil.writeLineBreak( writer );
+                XmlWriterUtil.writeCommentText( writer,
+                                                "URL of a project's past 
homepage, associated with exactly one project.",
+                                                2 );
+                DoapUtil.writeRdfResourceElement( writer, "old-homepage", 
doapOptions.getOldHomepage() );
+            }
+            catch ( MalformedURLException e )
+            {
+                getLog().error( "The <doapOptions><oldHomepage/></doapOptions> 
parameter "
+                                    + doapOptions.getOldHomepage() + " is not 
a valid URL. Ignored <old-homepage/> tag." );
+            }
         }
     }
 
@@ -748,6 +790,18 @@ public class DoapMojo
             return;
         }
 
+        try
+        {
+            new URL( doapOptions.getWiki() );
+
+        }
+        catch ( MalformedURLException e )
+        {
+            getLog().error( "The <doapOptions><wiki/></doapOptions> parameter 
" + doapOptions.getWiki()
+                                + " is not a valid URL. Ignored <wiki/> tag." 
);
+            return;
+        }
+
         XmlWriterUtil.writeLineBreak( writer );
         XmlWriterUtil.writeCommentText( writer, "URL of Wiki for collaborative 
discussion of project.", 2 );
         DoapUtil.writeRdfResourceElement( writer, "wiki", 
doapOptions.getWiki() );
@@ -793,21 +847,26 @@ public class DoapMojo
      */
     private void writeBugDatabase( XMLWriter writer )
     {
-        if ( project.getIssueManagement() == null )
+        if ( project.getIssueManagement() == null || StringUtils.isEmpty( 
project.getIssueManagement().getUrl() ) )
         {
             return;
         }
 
-        XmlWriterUtil.writeLineBreak( writer );
-        XmlWriterUtil.writeCommentText( writer, "Bug database.", 2 );
-        if ( StringUtils.isNotEmpty( project.getIssueManagement().getUrl() ) )
+        try
         {
-            DoapUtil.writeRdfResourceElement( writer, "bug-database", 
project.getIssueManagement().getUrl() );
+            new URL( project.getIssueManagement().getUrl() );
+
         }
-        else
+        catch ( MalformedURLException e )
         {
-            getLog().warn( "No URL was specified for issue management" );
+            getLog().error( "The project issueManagement url " + 
project.getIssueManagement().getUrl()
+                                + " is not a valid URL. Ignored 
<bug-database/> tag." );
+            return;
         }
+
+        XmlWriterUtil.writeLineBreak( writer );
+        XmlWriterUtil.writeCommentText( writer, "Bug database.", 2 );
+        DoapUtil.writeRdfResourceElement( writer, "bug-database", 
project.getIssueManagement().getUrl() );
     }
 
     /**
@@ -820,7 +879,8 @@ public class DoapMojo
      */
     private void writeMailingList( XMLWriter writer )
     {
-        if ( StringUtils.isEmpty( doapOptions.getMailingList() ) || 
project.getMailingLists() == null || project.getMailingLists().isEmpty() )
+        if ( StringUtils.isEmpty( doapOptions.getMailingList() ) || 
project.getMailingLists() == null
+            || project.getMailingLists().isEmpty() )
         {
             return;
         }
@@ -908,7 +968,7 @@ public class DoapMojo
 
         if ( metadata.getMetadata().getVersioning() == null )
         {
-            getLog().info( "No versioning was found - ignored writing 
<release/> tag." );
+            getLog().info( "No versioning was found. Ignored <release/> tag." 
);
             return;
         }
 
@@ -1551,7 +1611,7 @@ public class DoapMojo
     {
         Set<Entry<String, DoapUtil.Organization>> organizations = 
DoapUtil.getOrganizations();
 
-        for (Entry<String, DoapUtil.Organization> organizationEntry : 
organizations )
+        for ( Entry<String, DoapUtil.Organization> organizationEntry : 
organizations )
         {
             DoapUtil.Organization organization = organizationEntry.getValue();
 
@@ -1573,6 +1633,181 @@ public class DoapMojo
         }
     }
 
+    /**
+     * Write DOAP audience.
+     *
+     * @param writer not null
+     * @see <a 
href="http://usefulinc.com/ns/doap#audience";>http://usefulinc.com/ns/doap#audience</a>
+     * @since 1.1
+     */
+    private void writeAudience( XMLWriter writer )
+    {
+        if ( StringUtils.isEmpty( doapOptions.getAudience() ) )
+        {
+            return;
+        }
+
+        XmlWriterUtil.writeLineBreak( writer );
+        XmlWriterUtil.writeCommentText( writer, "Audience.", 2 );
+        DoapUtil.writeRdfResourceElement( writer, "audience", 
doapOptions.getAudience() );
+    }
+
+    /**
+     * Write DOAP blog.
+     *
+     * @param writer not null
+     * @see <a 
href="http://usefulinc.com/ns/doap#blog";>http://usefulinc.com/ns/doap#blog</a>
+     * @since 1.1
+     */
+    private void writeBlog( XMLWriter writer )
+    {
+        if ( StringUtils.isEmpty( doapOptions.getBlog() ) )
+        {
+            return;
+        }
+
+        try
+        {
+            new URL( doapOptions.getBlog() );
+
+        }
+        catch ( MalformedURLException e )
+        {
+            getLog().error( "The <doapOptions><blog/></doapOptions> parameter 
" + doapOptions.getBlog()
+                                + " is not a valid URL. Ignored <blog/> tag." 
);
+            return;
+        }
+
+        XmlWriterUtil.writeLineBreak( writer );
+        XmlWriterUtil.writeCommentText( writer, "Blog page.", 2 );
+        DoapUtil.writeRdfResourceElement( writer, "blog", 
doapOptions.getBlog() );
+    }
+
+    /**
+     * Write DOAP plateform.
+     *
+     * @param writer not null
+     * @see <a 
href="http://usefulinc.com/ns/doap#plateform";>http://usefulinc.com/ns/doap#plateform</a>
+     * @since 1.1
+     */
+    private void writePlateform( XMLWriter writer )
+    {
+        if ( StringUtils.isEmpty( doapOptions.getPlatform() ) )
+        {
+            return;
+        }
+
+        XmlWriterUtil.writeLineBreak( writer );
+        XmlWriterUtil.writeCommentText( writer, "Plateform.", 2 );
+        DoapUtil.writeRdfResourceElement( writer, "plateform", 
doapOptions.getPlatform() );
+    }
+
+    /**
+     * Write DOAP vendor.
+     *
+     * @param writer not null
+     * @see <a 
href="http://usefulinc.com/ns/doap#vendor";>http://usefulinc.com/ns/doap#vendor</a>
+     * @since 1.1
+     */
+    private void writeVendor( XMLWriter writer )
+    {
+        if ( StringUtils.isEmpty( doapOptions.getVendor() ) || 
project.getOrganization() == null )
+        {
+            return;
+        }
+
+        XmlWriterUtil.writeLineBreak( writer );
+        XmlWriterUtil.writeCommentText( writer, "Vendor.", 2 );
+        if ( StringUtils.isNotEmpty( doapOptions.getPlatform() ) )
+        {
+            DoapUtil.writeRdfResourceElement( writer, "vendor", 
doapOptions.getPlatform() );
+        }
+        else if ( StringUtils.isNotEmpty( project.getOrganization().getName() 
) )
+        {
+            DoapUtil.writeRdfResourceElement( writer, "vendor", 
project.getOrganization().getName() );
+        }
+    }
+
+    /**
+     * Write DOAP language.
+     *
+     * @param writer not null
+     * @see <a 
href="http://usefulinc.com/ns/doap#language";>http://usefulinc.com/ns/doap#language</a>
+     * @since 1.1
+     */
+    private void writeLanguage( XMLWriter writer )
+    {
+        if ( StringUtils.isEmpty( doapOptions.getLanguage() ) )
+        {
+            return;
+        }
+
+        if ( Arrays.binarySearch( Locale.getISOLanguages(), 
doapOptions.getLanguage() ) < 0 )
+        {
+            getLog().error( "The <doapOptions><language/></doapOptions> 
parameter " + doapOptions.getLanguage()
+                                + " is not a valid ISO language. Ignored 
<language/> tag." );
+            return;
+        }
+
+        XmlWriterUtil.writeLineBreak( writer );
+        XmlWriterUtil.writeCommentText( writer, "Language.", 2 );
+        DoapUtil.writeRdfResourceElement( writer, "language", 
doapOptions.getLanguage() );
+    }
+
+    /**
+     * Write DOAP service-endpoint.
+     *
+     * @param writer not null
+     * @see <a 
href="http://usefulinc.com/ns/doap#service-endpoint";>http://usefulinc.com/ns/doap#service-endpoint</a>
+     * @since 1.1
+     */
+    private void writeServiceEndpoint( XMLWriter writer )
+    {
+        if ( StringUtils.isEmpty( doapOptions.getServiceEndpoint() ) )
+        {
+            return;
+        }
+
+        try
+        {
+            new URL( doapOptions.getServiceEndpoint() );
+
+        }
+        catch ( MalformedURLException e )
+        {
+            getLog().error( "The <doapOptions><serviceEndpoint/></doapOptions> 
parameter "
+                                + doapOptions.getServiceEndpoint() + " is not 
a valid URL. Ignored <service-endpoint/> tag." );
+            return;
+        }
+
+        XmlWriterUtil.writeLineBreak( writer );
+        XmlWriterUtil.writeCommentText( writer, "Service endpoint.", 2 );
+        DoapUtil.writeRdfResourceElement( writer, "service-endpoint", 
doapOptions.getServiceEndpoint() );
+    }
+
+    /**
+     * Write DOAP implements.
+     *
+     * @param writer not null
+     * @see <a 
href="http://usefulinc.com/ns/doap#implements";>http://usefulinc.com/ns/doap#implements</a>
+     * @since 1.1
+     */
+    private void writeImplements( XMLWriter writer )
+    {
+        if ( StringUtils.isEmpty( doapOptions.getImplementations() ) )
+        {
+            return;
+        }
+
+        XmlWriterUtil.writeLineBreak( writer );
+        XmlWriterUtil.writeCommentText( writer, "Implements.", 2 );
+        String[] implementations = StringUtils.split( 
doapOptions.getImplementations(), "," );
+        for ( int i = 0; i < implementations.length; i++ )
+        {
+            DoapUtil.writeRdfResourceElement( writer, "implements", 
implementations[i].trim() );
+        }
+    }
+
     // ----------------------------------------------------------------------
     // Static methods
     // ----------------------------------------------------------------------

Modified: maven/plugins/trunk/maven-doap-plugin/src/main/mdo/doapOptions.mdo
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/src/main/mdo/doapOptions.mdo?rev=1045054&r1=1045053&r2=1045054&view=diff
==============================================================================
--- maven/plugins/trunk/maven-doap-plugin/src/main/mdo/doapOptions.mdo 
(original)
+++ maven/plugins/trunk/maven-doap-plugin/src/main/mdo/doapOptions.mdo Mon Dec 
13 10:31:55 2010
@@ -39,9 +39,17 @@ under the License.
       <version>1.0.0</version>
       <fields>
         <field>
-          <name>shortdesc</name>
-          <description><![CDATA[Short (8 or 9 words) plain text description of 
a project.
-...@see <a 
href="http://usefulinc.com/ns/doap#shortdesc";>http://usefulinc.com/ns/doap#shortdesc</a>]]></description>
+          <name>audience</name>
+          <description><![CDATA[Description of target user base.
+...@see <a 
href="http://usefulinc.com/ns/doap#audience";>http://usefulinc.com/ns/doap#audience</a>]]></description>
+          <version>1.0.0</version>
+          <type>String</type>
+          <identifier>true</identifier>
+        </field>
+        <field>
+          <name>blog</name>
+          <description><![CDATA[URI of a blog related to a project.
+...@see <a 
href="http://usefulinc.com/ns/doap#blog";>http://usefulinc.com/ns/doap#blog</a>]]></description>
           <version>1.0.0</version>
           <type>String</type>
           <identifier>true</identifier>
@@ -73,6 +81,23 @@ under the License.
           <identifier>true</identifier>
         </field>
         <field>
+          <name>implementations</name>
+          <description><![CDATA[A specification that a project implements. 
Could be a standard, API or legally defined level of conformance.<br/>
+<b>Note</b>: This string is comma separated to allow several implementations.
+...@see <a 
href="http://usefulinc.com/ns/doap#implements";>http://usefulinc.com/ns/doap#implements</a>]]></description>
+          <version>1.0.0</version>
+          <type>String</type>
+          <identifier>true</identifier>
+        </field>
+        <field>
+          <name>language</name>
+          <description><![CDATA[ISO language code a project has been 
translated into.
+...@see <a 
href="http://usefulinc.com/ns/doap#language";>http://usefulinc.com/ns/doap#language</a>]]></description>
+          <version>1.0.0</version>
+          <type>String</type>
+          <identifier>true</identifier>
+        </field>
+        <field>
           <name>mailingList</name>
           <description><![CDATA[Single web page that allows people to find out 
more information about the mailing lists provided by the project.<br/>
 <b>Note</b>: this field supercedes the default Maven mailing lists.
@@ -99,6 +124,14 @@ under the License.
           <identifier>true</identifier>
         </field>
         <field>
+          <name>platform</name>
+          <description><![CDATA[Indicator of software platform (non-OS 
specific), e.g. Java, Firefox, ECMA CLR.
+...@see <a 
href="http://usefulinc.com/ns/doap#platform";>http://usefulinc.com/ns/doap#platform</a>]]></description>
+          <version>1.0.0</version>
+          <type>String</type>
+          <identifier>true</identifier>
+        </field>
+        <field>
           <name>programmingLanguage</name>
           <description><![CDATA[Programming language a project is implemented 
in or intended for use with.<br/>
 <b>Note</b>: This string is comma separated to allow several 
programming-language.
@@ -117,6 +150,30 @@ under the License.
           <identifier>true</identifier>
         </field>
         <field>
+          <name>serviceEndpoint</name>
+          <description><![CDATA[URI of a web service endpoint where software 
as a service may be accessed.
+...@see <a 
href="http://usefulinc.com/ns/doap#service-endpoint";>http://usefulinc.com/ns/doap#service-endpoint</a>]]></description>
+          <version>1.0.0</version>
+          <type>String</type>
+          <identifier>true</identifier>
+        </field>
+        <field>
+          <name>shortdesc</name>
+          <description><![CDATA[Short (8 or 9 words) plain text description of 
a project.
+...@see <a 
href="http://usefulinc.com/ns/doap#shortdesc";>http://usefulinc.com/ns/doap#shortdesc</a>]]></description>
+          <version>1.0.0</version>
+          <type>String</type>
+          <identifier>true</identifier>
+        </field>
+        <field>
+          <name>vendor</name>
+          <description><![CDATA[Vendor organization: commercial, free or 
otherwise.
+...@see <a 
href="http://usefulinc.com/ns/doap#vendor";>http://usefulinc.com/ns/doap#vendor</a>]]></description>
+          <version>1.0.0</version>
+          <type>String</type>
+          <identifier>true</identifier>
+        </field>
+        <field>
           <name>wiki</name>
           <description><![CDATA[URL of Wiki for collaborative discussion of 
project.
 @see <a 
href="http://usefulinc.com/ns/doap#wiki";>http://usefulinc.com/ns/doap#wiki</a>]]></description>


Reply via email to