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>