else
{
getLog().info( "Generating a pure DOAP file " + outputFile.getAbsolutePath() );
}
XMLWriter writer = new PrettyPrintXMLWriter( w, project.getModel().getModelEncoding(), null );
// ----------------------------------------------------------------------------
// Convert POM to DOAP
// ----------------------------------------------------------------------------
DoapUtil.writeHeader( writer );
// Heading
DoapUtil.writeStartElement( writer, "rdf", "RDF" );
if ( Arrays.binarySearch( Locale.getISOLanguages(), lang ) < 0 )
{
messages.addMessage( new String[] { "doapOptions", "lang" }, lang, UserMessages.INVALID_ISO_DATE );
throw new MojoExecutionException( messages.getErrorMessages().get( 0 ) );
}
writer.addAttribute( "xml:lang", lang );
if ( StringUtils.isEmpty( doapOptions.getXmlnsNamespaceURI() ) )
{
messages.addMessage( new String[] { "doapOptions", "xmlnsNamespaceURI" }, null, UserMessages.REQUIRED );
throw new MojoExecutionException( messages.getErrorMessages().get( 0 ) );
}
writer.addAttribute( "xmlns"
+ ( StringUtils.isEmpty( doapOptions.getXmlnsPrefix() ) ? "" : ":"
+ doapOptions.getXmlnsPrefix() ), doapOptions.getXmlnsNamespaceURI() );
writer.addAttribute( "xmlns:rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#" );
writer.addAttribute( "xmlns:foaf", "http://xmlns.com/foaf/0.1/" );
if ( asfExtOptions.isIncluded() )
{
if ( StringUtils.isEmpty( asfExtOptions.getXmlnsPrefix() ) )
{
messages.addMessage( new String[] { "doapOptions", "xmlnsPrefix" }, null, UserMessages.REQUIRED );
throw new MojoExecutionException( messages.getErrorMessages().get( 0 ) );
}
if ( StringUtils.isEmpty( asfExtOptions.getXmlnsNamespaceURI() ) )
{
messages.addMessage( new String[] { "doapOptions", "xmlnsNamespaceURI" }, null, UserMessages.REQUIRED );
}
writer.addAttribute( "xmlns"
+ ( StringUtils.isEmpty( asfExtOptions.getXmlnsPrefix() ) ? "" : ":"
+ asfExtOptions.getXmlnsPrefix() ), asfExtOptions.getXmlnsNamespaceURI() );
}
if ( extOptions != null && extOptions.length > 0 && !extOptions[0].getExtensions().isEmpty() )
{
for ( ExtOptions extOption : extOptions )
{
if ( StringUtils.isEmpty( extOption.getXmlnsPrefix() ) )
{
messages.addMessage( new String[] { "extOptions", "extOption", "xmlnsPrefix" }, null,
UserMessages.REQUIRED );
throw new MojoExecutionException( messages.getErrorMessages().get( 0 ) );
}
if ( StringUtils.isEmpty( extOption.getXmlnsNamespaceURI() ) )
{
messages.addMessage( new String[] { "extOptions", "extOption", "xmlnsNamespaceURI" }, null,
UserMessages.REQUIRED );
throw new MojoExecutionException( messages.getErrorMessages().get( 0 ) );
}
writer.addAttribute( "xmlns"
+ ( StringUtils.isEmpty( extOption.getXmlnsPrefix() ) ? "" : ":"
+ extOption.getXmlnsPrefix() ),
extOption.getXmlnsNamespaceURI() );
}
}
// Project
DoapUtil.writeStartElement( writer, doapOptions.getXmlnsPrefix(), "Project" );
boolean added = false;
if ( artifact != null )
{
String about_ = project.getUrl();
if ( StringUtils.isNotEmpty( about_ ) )
{
try
{
new URL( about_ );
writer.addAttribute( "rdf:about", about_ );
added = true;
}
catch ( MalformedURLException e )
{
}
}
if ( !added )
{
messages.getWarnMessages().add( "The project's url defined from " + artifact.toConfiguration()
+ " is empty or not a valid URL, using <about/> parameter." );
}
}
if ( !added )
{
if ( StringUtils.isNotEmpty( about ) )
{
try
{
new URL( about );
writer.addAttribute( "rdf:about", about );
}
catch ( MalformedURLException e )
{
messages.addMessage( new String[] { "about" }, about, UserMessages.INVALID_URL );
}
added = true;
}
}
if ( !added )
{
messages.addMessage( new String[] { "about" }, null, UserMessages.RECOMMENDED );
}
// name
writeName( writer, project );
// description
writeDescription( writer, project );
// implements
writeImplements( writer );
// Audience
writeAudience( writer );
// Vendor
writeVendor( writer, project );
// created
writeCreated( writer, project );
// homepage and old-homepage
writeHomepage( writer, project );
// Blog
writeBlog( writer );
// licenses
writeLicenses( writer, project );
// programming-language
writeProgrammingLanguage( writer, project );
// category
writeCategory( writer, project );
// os
writeOS( writer, project );
// Plateform
writePlateform( writer );
// Language
writeLanguage( writer );
// SCM
writeSourceRepositories( writer, project );
// bug-database
writeBugDatabase( writer, project );
// mailing list
writeMailingList( writer, project );
// download-page and download-mirror
writeDownloadPage( writer, project );
// screenshots
writeScreenshots( writer, project );
// service-endpoint
writeServiceEndpoint( writer );
// wiki
writeWiki( writer, project );
// Releases
writeReleases( writer, project );
// Developers
@SuppressWarnings( "unchecked" )
List<Contributor> developers = project.getDevelopers();
writeContributors( writer, developers );
// Contributors
@SuppressWarnings( "unchecked" )
List<Contributor> contributors = project.getContributors();
writeContributors( writer, contributors );
// Extra DOAP
@SuppressWarnings( "unchecked" )
Map<String, String> map = doapOptions.getExtra();
writeExtra( writer, project, "Extra DOAP vocabulary.", map, doapOptions.getXmlnsPrefix() );
// ASFext
writeASFext( writer, project );
// Extra extensions
writeExtensions( writer );
writer.endElement(); // Project
writeOrganizations( writer );
writer.endElement(); // rdf:RDF
try
{
w.close();
}