You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by vs...@apache.org on 2008/06/17 23:01:29 UTC

svn commit: r668827 - in /maven/plugins/trunk/maven-doap-plugin: pom.xml src/main/java/org/apache/maven/plugin/doap/DoapMojo.java src/main/java/org/apache/maven/plugin/doap/DoapUtil.java

Author: vsiveton
Date: Tue Jun 17 14:01:28 2008
New Revision: 668827

URL: http://svn.apache.org/viewvc?rev=668827&view=rev
Log:
o bumped to p-u 1.5.4-snap
o bumped to maven 2.0.4 as prerequisite and dependencies
o fixed encoding in the generated doap file
o replaced ASF header in the generated doap file with a generated notice
o added a new utility class with static methods

Added:
    maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java   (with props)
Modified:
    maven/plugins/trunk/maven-doap-plugin/pom.xml
    maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java

Modified: maven/plugins/trunk/maven-doap-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/pom.xml?rev=668827&r1=668826&r2=668827&view=diff
==============================================================================
--- maven/plugins/trunk/maven-doap-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-doap-plugin/pom.xml Tue Jun 17 14:01:28 2008
@@ -36,7 +36,7 @@
   <description>Plugins which generate a DOAP file from information in a POM.</description>
 
   <prerequisites>
-    <maven>2.0.1</maven>
+    <maven>2.0.4</maven>
   </prerequisites>
 
   <issueManagement>
@@ -45,20 +45,23 @@
   </issueManagement>
 
   <dependencies>
+    <!-- Maven -->
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <version>2.0.4</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>2.0.4</version>
     </dependency>
+
+    <!-- misc -->
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
-      <version>1.1</version>
+      <version>1.5.4-SNAPSHOT</version>
     </dependency>
   </dependencies>
 </project>

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=668827&r1=668826&r2=668827&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 Tue Jun 17 14:01:28 2008
@@ -19,23 +19,21 @@
  * under the License.
  */
 
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.util.Iterator;
+
 import org.apache.maven.model.Developer;
 import org.apache.maven.model.License;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.util.WriterFactory;
 import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
 import org.codehaus.plexus.util.xml.XMLWriter;
 
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.Writer;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Iterator;
-
 /**
  * Generate a Description of a Project (DOAP) file from the information found in a POM.
  *
@@ -47,8 +45,6 @@
 public class DoapMojo
     extends AbstractMojo
 {
-    public static final String RDF_RESOURCE = "rdf:resource";
-
     /**
      * The POM from which information will be extracted to create a DOAP file.
      *
@@ -80,8 +76,6 @@
      */
     private String language;
 
-    private XMLWriter w;
-
     /**
      * {@inheritDoc}
      */
@@ -92,115 +86,79 @@
         // setup pretty print xml writer
         // ----------------------------------------------------------------------------
 
-        Writer writer;
-
+        Writer w;
         try
         {
-            writer = new FileWriter( doapFile );
+            w = WriterFactory.newXmlWriter( doapFile );
         }
         catch ( IOException e )
         {
             throw new MojoExecutionException( "Error creating DOAP file.", e );
         }
 
-        PrintWriter pw = new PrintWriter( writer );
-
-        w = new PrettyPrintXMLWriter( pw );
+        XMLWriter writer = new PrettyPrintXMLWriter( w, project.getModel().getModelEncoding(), null );
 
         // ----------------------------------------------------------------------------
         // Convert POM to DOAP
         // ----------------------------------------------------------------------------
 
-        // Grab year for the license.
-        SimpleDateFormat format = new SimpleDateFormat( "yyyy" );
-        String year = format.format( new Date() );
-
-        pw.println( "<!--" );
-        pw.println( "  ~ Copyright " + year + " The Apache Software Foundation." );
-        pw.println( "  ~" );
-        pw.println( "  ~ Licensed under the Apache License, Version 2.0 (the \"License\");" );
-        pw.println( "  ~ you may not use this file except in compliance with the License." );
-        pw.println( "  ~ You may obtain a copy of the License at" );
-        pw.println( "  ~" );
-        pw.println( "  ~      http://www.apache.org/licenses/LICENSE-2.0" );
-        pw.println( "  ~" );
-        pw.println( "  ~ Unless required by applicable law or agreed to in writing, software" );
-        pw.println( "  ~ distributed under the License is distributed on an \"AS IS\" BASIS," );
-        pw.println( "  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied." );
-        pw.println( "  ~ See the License for the specific language governing permissions and" );
-        pw.println( "  ~ limitations under the License." );
-        pw.println( "--> " );
+        DoapUtil.writeHeader( writer );
 
         // Heading
-        w.startElement( "rdf:RDF" );
-        w.addAttribute( "xml:lang", "en" );
-        w.addAttribute( "xmlns", "http://usefulinc.com/ns/doap#" );
-        w.addAttribute( "xmlns:rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#" );
-        w.addAttribute( "xmlns:asfext", "http://projects.apache.org/ns/asfext#" );
-        w.addAttribute( "xmlns:foaf", "http://xmlns.com/foaf/0.1/" );
+        writer.startElement( "rdf:RDF" );
+        writer.addAttribute( "xml:lang", "en" );
+        writer.addAttribute( "xmlns", "http://usefulinc.com/ns/doap#" );
+        writer.addAttribute( "xmlns:rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#" );
+        writer.addAttribute( "xmlns:asfext", "http://projects.apache.org/ns/asfext#" );
+        writer.addAttribute( "xmlns:foaf", "http://xmlns.com/foaf/0.1/" );
 
         // Project
-        w.startElement( "Project" );
-        w.addAttribute( "rdf:about", "http://Maven.rdf.apache.org/" );
-        element( "created", project.getInceptionYear() );
+        writer.startElement( "Project" );
+        writer.addAttribute( "rdf:about", "http://Maven.rdf.apache.org/" );
+        DoapUtil.writeElement( writer, "created", project.getInceptionYear() );
 
         if ( project.getLicenses().size() > 0 )
         {
             //TODO: how to map to usefulinc site, or if this is necessary, the OSI page might
             //      be more appropriate.
-            rdfResourceElement( "license", ((License) project.getLicenses().get( 0 )).getUrl() );
+            DoapUtil.writeRdfResourceElement( writer, "license", ((License) project.getLicenses().get( 0 )).getUrl() );
         }
 
-        element( "name", project.getName() );
-        rdfResourceElement( "homepage", project.getUrl() );
-        rdfResourceElement( "asfext:pmc", project.getUrl() );
-        element( "shortdesc", project.getDescription() );
-        element( "description", project.getDescription() );
+        DoapUtil.writeElement( writer, "name", project.getName() );
+        DoapUtil.writeRdfResourceElement( writer, "homepage", project.getUrl() );
+        DoapUtil.writeRdfResourceElement( writer, "asfext:pmc", project.getUrl() );
+        DoapUtil.writeElement( writer, "shortdesc", project.getDescription() );
+        DoapUtil.writeElement( writer, "description", project.getDescription() );
 
         if ( project.getIssueManagement() != null )
         {
-            rdfResourceElement( "bug-database", project.getIssueManagement().getUrl() );
+            DoapUtil.writeRdfResourceElement( writer, "bug-database", project.getIssueManagement().getUrl() );
         }
-        rdfResourceElement( "mailing-list", composeUrl( project.getUrl() , "/mail-lists.html" ) );
-        rdfResourceElement( "download-page", composeUrl( project.getUrl() , "/download.html" ) );
-        element( "programming-language", language );
+        DoapUtil.writeRdfResourceElement( writer, "mailing-list", composeUrl( project.getUrl() , "/mail-lists.html" ) );
+        DoapUtil.writeRdfResourceElement( writer, "download-page", composeUrl( project.getUrl() , "/download.html" ) );
+        DoapUtil.writeElement( writer, "programming-language", language );
         //TODO: how to lookup category, map it, or just declare it.
-        rdfResourceElement( "category", "http://projects.apache.org/category/" + category );
+        DoapUtil.writeRdfResourceElement( writer, "category", "http://projects.apache.org/category/" + category );
 
         // Releases
         publishReleases();
 
         // SCM
-        publishSourceRepository();
+        publishSourceRepository( writer );
 
         // Developers
-        publishMaintainers();
+        publishMaintainers( writer );
 
-        w.endElement();
-        w.endElement();
-
-        pw.close();
-    }
+        writer.endElement();
+        writer.endElement();
 
-    private void element( String name,
-                          String value )
-    {
-        if ( value != null )
+        try
         {
-            w.startElement( name );
-            w.writeText( value );
-            w.endElement();
+            w.close();
         }
-    }
-
-    private void rdfResourceElement( String name,
-                                     String value )
-    {
-        if ( value != null )
+        catch ( IOException e )
         {
-            w.startElement( name );
-            w.addAttribute( RDF_RESOURCE, value );
-            w.endElement();
+            throw new MojoExecutionException( "Error when closing the writer.", e );
         }
     }
 
@@ -209,7 +167,7 @@
     {
     }
 
-    private void publishSourceRepository()
+    private void publishSourceRepository( XMLWriter w )
     {
         //<repository>
         //  <SVNRepository>
@@ -225,14 +183,14 @@
 
         w.startElement( "repository" );
         w.startElement( "SVNRepository" );
-        rdfResourceElement( "location", project.getScm().getConnection().substring( 8 ) );
-        rdfResourceElement( "browse", project.getScm().getUrl() );
+        DoapUtil.writeRdfResourceElement( w, "location", project.getScm().getConnection().substring( 8 ) );
+        DoapUtil.writeRdfResourceElement( w, "browse", project.getScm().getUrl() );
         w.endElement();
         w.endElement();
 
     }
 
-    private void publishMaintainers()
+    private void publishMaintainers( XMLWriter w )
     {
         //<maintainer>
         //  <foaf:Person>
@@ -255,7 +213,7 @@
             w.startElement( "foaf:name" );
             w.writeText( d.getName() );
             w.endElement();
-            rdfResourceElement( "foaf:mbox", "mailto:" + d.getEmail() );
+            DoapUtil.writeRdfResourceElement( w, "foaf:mbox", "mailto:" + d.getEmail() );
             w.endElement();
             w.endElement();
         }
@@ -275,9 +233,7 @@
         {
             return base + path.substring( 1 );
         }
-        else
-        {
-            return base + path;
-        }
+
+        return base + path;
     }
 }

Added: maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java?rev=668827&view=auto
==============================================================================
--- maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java (added)
+++ maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java Tue Jun 17 14:01:28 2008
@@ -0,0 +1,109 @@
+package org.apache.maven.plugin.doap;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.xml.XMLWriter;
+import org.codehaus.plexus.util.xml.XmlWriterUtil;
+
+/**
+ * Utility class for DOAP mojo.
+ *
+ * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
+ * @version $Id$
+ */
+public class DoapUtil
+{
+    private static final String RDF_RESOURCE = "rdf:resource";
+
+    /**
+     * Write comments in the DOAP file header
+     *
+     * @param writer not null
+     */
+    public static void writeHeader( XMLWriter writer )
+    {
+        XmlWriterUtil.writeLineBreak( writer );
+
+        XmlWriterUtil.writeCommentLineBreak( writer );
+        XmlWriterUtil.writeComment( writer, StringUtils.repeat( "=", 21 ) + " - DO NOT EDIT THIS FILE! - "
+            + StringUtils.repeat( "=", 21 ) );
+        XmlWriterUtil.writeCommentLineBreak( writer );
+        XmlWriterUtil.writeComment( writer, " " );
+        XmlWriterUtil.writeComment( writer, "Any modifications will be overwritten." );
+        XmlWriterUtil.writeComment( writer, " " );
+        DateFormat dateFormat = DateFormat.getDateTimeInstance( DateFormat.SHORT, DateFormat.SHORT, Locale.US );
+        XmlWriterUtil.writeComment( writer, "Generated by Maven Doap Plugin on "
+            + dateFormat.format( new Date( System.currentTimeMillis() ) ) );
+        XmlWriterUtil.writeComment( writer, "See: http://maven.apache.org/plugins/maven-doap-plugin/" );
+        XmlWriterUtil.writeComment( writer, " " );
+        XmlWriterUtil.writeCommentLineBreak( writer );
+
+        XmlWriterUtil.writeLineBreak( writer );
+    }
+
+    /**
+     * @param writer not null
+     * @param name not null
+     * @param value not null
+     * @throws IllegalArgumentException if name is null or empty
+     */
+    public static void writeElement( XMLWriter writer, String name, String value )
+        throws IllegalArgumentException
+    {
+        if ( StringUtils.isEmpty( name ) )
+        {
+            throw new IllegalArgumentException( "name should be defined" );
+        }
+
+        if ( value != null )
+        {
+            writer.startElement( name );
+            writer.writeText( value );
+            writer.endElement();
+        }
+    }
+
+    /**
+     * @param writer not null
+     * @param name not null
+     * @param value not null
+     * @throws IllegalArgumentException if name is null or empty
+     */
+    public static void writeRdfResourceElement( XMLWriter writer, String name, String value )
+        throws IllegalArgumentException
+    {
+        if ( StringUtils.isEmpty( name ) )
+        {
+            throw new IllegalArgumentException( "name should be defined" );
+        }
+
+        if ( value != null )
+        {
+            writer.startElement( name );
+            writer.addAttribute( RDF_RESOURCE, value );
+            writer.endElement();
+        }
+    }
+}

Propchange: maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision



Re: svn commit: r668827 - in /maven/plugins/trunk/maven-doap-plugin: pom.xml src/main/java/org/apache/maven/plugin/doap/DoapMojo.java src/main/java/org/apache/maven/plugin/doap/DoapUtil.java

Posted by Dennis Lundberg <de...@apache.org>.
plexus-utils later than 1.1 has a Maven 2.0.6 prerequisite

vsiveton@apache.org wrote:
> Author: vsiveton
> Date: Tue Jun 17 14:01:28 2008
> New Revision: 668827
> 
> URL: http://svn.apache.org/viewvc?rev=668827&view=rev
> Log:
> o bumped to p-u 1.5.4-snap
> o bumped to maven 2.0.4 as prerequisite and dependencies
> o fixed encoding in the generated doap file
> o replaced ASF header in the generated doap file with a generated notice
> o added a new utility class with static methods
> 
> Added:
>     maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java   (with props)
> Modified:
>     maven/plugins/trunk/maven-doap-plugin/pom.xml
>     maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java
> 
> Modified: maven/plugins/trunk/maven-doap-plugin/pom.xml
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/pom.xml?rev=668827&r1=668826&r2=668827&view=diff
> ==============================================================================
> --- maven/plugins/trunk/maven-doap-plugin/pom.xml (original)
> +++ maven/plugins/trunk/maven-doap-plugin/pom.xml Tue Jun 17 14:01:28 2008
> @@ -36,7 +36,7 @@
>    <description>Plugins which generate a DOAP file from information in a POM.</description>
>  
>    <prerequisites>
> -    <maven>2.0.1</maven>
> +    <maven>2.0.4</maven>
>    </prerequisites>
>  
>    <issueManagement>
> @@ -45,20 +45,23 @@
>    </issueManagement>
>  
>    <dependencies>
> +    <!-- Maven -->
>      <dependency>
>        <groupId>org.apache.maven</groupId>
>        <artifactId>maven-project</artifactId>
> -      <version>2.0</version>
> +      <version>2.0.4</version>
>      </dependency>
>      <dependency>
>        <groupId>org.apache.maven</groupId>
>        <artifactId>maven-plugin-api</artifactId>
> -      <version>2.0</version>
> +      <version>2.0.4</version>
>      </dependency>
> +
> +    <!-- misc -->
>      <dependency>
>        <groupId>org.codehaus.plexus</groupId>
>        <artifactId>plexus-utils</artifactId>
> -      <version>1.1</version>
> +      <version>1.5.4-SNAPSHOT</version>
>      </dependency>
>    </dependencies>
>  </project>
> 
> 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=668827&r1=668826&r2=668827&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 Tue Jun 17 14:01:28 2008
> @@ -19,23 +19,21 @@
>   * under the License.
>   */
>  
> +import java.io.File;
> +import java.io.IOException;
> +import java.io.PrintWriter;
> +import java.io.Writer;
> +import java.util.Iterator;
> +
>  import org.apache.maven.model.Developer;
>  import org.apache.maven.model.License;
>  import org.apache.maven.plugin.AbstractMojo;
>  import org.apache.maven.plugin.MojoExecutionException;
>  import org.apache.maven.project.MavenProject;
> +import org.codehaus.plexus.util.WriterFactory;
>  import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
>  import org.codehaus.plexus.util.xml.XMLWriter;
>  
> -import java.io.File;
> -import java.io.FileWriter;
> -import java.io.IOException;
> -import java.io.PrintWriter;
> -import java.io.Writer;
> -import java.text.SimpleDateFormat;
> -import java.util.Date;
> -import java.util.Iterator;
> -
>  /**
>   * Generate a Description of a Project (DOAP) file from the information found in a POM.
>   *
> @@ -47,8 +45,6 @@
>  public class DoapMojo
>      extends AbstractMojo
>  {
> -    public static final String RDF_RESOURCE = "rdf:resource";
> -
>      /**
>       * The POM from which information will be extracted to create a DOAP file.
>       *
> @@ -80,8 +76,6 @@
>       */
>      private String language;
>  
> -    private XMLWriter w;
> -
>      /**
>       * {@inheritDoc}
>       */
> @@ -92,115 +86,79 @@
>          // setup pretty print xml writer
>          // ----------------------------------------------------------------------------
>  
> -        Writer writer;
> -
> +        Writer w;
>          try
>          {
> -            writer = new FileWriter( doapFile );
> +            w = WriterFactory.newXmlWriter( doapFile );
>          }
>          catch ( IOException e )
>          {
>              throw new MojoExecutionException( "Error creating DOAP file.", e );
>          }
>  
> -        PrintWriter pw = new PrintWriter( writer );
> -
> -        w = new PrettyPrintXMLWriter( pw );
> +        XMLWriter writer = new PrettyPrintXMLWriter( w, project.getModel().getModelEncoding(), null );
>  
>          // ----------------------------------------------------------------------------
>          // Convert POM to DOAP
>          // ----------------------------------------------------------------------------
>  
> -        // Grab year for the license.
> -        SimpleDateFormat format = new SimpleDateFormat( "yyyy" );
> -        String year = format.format( new Date() );
> -
> -        pw.println( "<!--" );
> -        pw.println( "  ~ Copyright " + year + " The Apache Software Foundation." );
> -        pw.println( "  ~" );
> -        pw.println( "  ~ Licensed under the Apache License, Version 2.0 (the \"License\");" );
> -        pw.println( "  ~ you may not use this file except in compliance with the License." );
> -        pw.println( "  ~ You may obtain a copy of the License at" );
> -        pw.println( "  ~" );
> -        pw.println( "  ~      http://www.apache.org/licenses/LICENSE-2.0" );
> -        pw.println( "  ~" );
> -        pw.println( "  ~ Unless required by applicable law or agreed to in writing, software" );
> -        pw.println( "  ~ distributed under the License is distributed on an \"AS IS\" BASIS," );
> -        pw.println( "  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied." );
> -        pw.println( "  ~ See the License for the specific language governing permissions and" );
> -        pw.println( "  ~ limitations under the License." );
> -        pw.println( "--> " );
> +        DoapUtil.writeHeader( writer );
>  
>          // Heading
> -        w.startElement( "rdf:RDF" );
> -        w.addAttribute( "xml:lang", "en" );
> -        w.addAttribute( "xmlns", "http://usefulinc.com/ns/doap#" );
> -        w.addAttribute( "xmlns:rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#" );
> -        w.addAttribute( "xmlns:asfext", "http://projects.apache.org/ns/asfext#" );
> -        w.addAttribute( "xmlns:foaf", "http://xmlns.com/foaf/0.1/" );
> +        writer.startElement( "rdf:RDF" );
> +        writer.addAttribute( "xml:lang", "en" );
> +        writer.addAttribute( "xmlns", "http://usefulinc.com/ns/doap#" );
> +        writer.addAttribute( "xmlns:rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#" );
> +        writer.addAttribute( "xmlns:asfext", "http://projects.apache.org/ns/asfext#" );
> +        writer.addAttribute( "xmlns:foaf", "http://xmlns.com/foaf/0.1/" );
>  
>          // Project
> -        w.startElement( "Project" );
> -        w.addAttribute( "rdf:about", "http://Maven.rdf.apache.org/" );
> -        element( "created", project.getInceptionYear() );
> +        writer.startElement( "Project" );
> +        writer.addAttribute( "rdf:about", "http://Maven.rdf.apache.org/" );
> +        DoapUtil.writeElement( writer, "created", project.getInceptionYear() );
>  
>          if ( project.getLicenses().size() > 0 )
>          {
>              //TODO: how to map to usefulinc site, or if this is necessary, the OSI page might
>              //      be more appropriate.
> -            rdfResourceElement( "license", ((License) project.getLicenses().get( 0 )).getUrl() );
> +            DoapUtil.writeRdfResourceElement( writer, "license", ((License) project.getLicenses().get( 0 )).getUrl() );
>          }
>  
> -        element( "name", project.getName() );
> -        rdfResourceElement( "homepage", project.getUrl() );
> -        rdfResourceElement( "asfext:pmc", project.getUrl() );
> -        element( "shortdesc", project.getDescription() );
> -        element( "description", project.getDescription() );
> +        DoapUtil.writeElement( writer, "name", project.getName() );
> +        DoapUtil.writeRdfResourceElement( writer, "homepage", project.getUrl() );
> +        DoapUtil.writeRdfResourceElement( writer, "asfext:pmc", project.getUrl() );
> +        DoapUtil.writeElement( writer, "shortdesc", project.getDescription() );
> +        DoapUtil.writeElement( writer, "description", project.getDescription() );
>  
>          if ( project.getIssueManagement() != null )
>          {
> -            rdfResourceElement( "bug-database", project.getIssueManagement().getUrl() );
> +            DoapUtil.writeRdfResourceElement( writer, "bug-database", project.getIssueManagement().getUrl() );
>          }
> -        rdfResourceElement( "mailing-list", composeUrl( project.getUrl() , "/mail-lists.html" ) );
> -        rdfResourceElement( "download-page", composeUrl( project.getUrl() , "/download.html" ) );
> -        element( "programming-language", language );
> +        DoapUtil.writeRdfResourceElement( writer, "mailing-list", composeUrl( project.getUrl() , "/mail-lists.html" ) );
> +        DoapUtil.writeRdfResourceElement( writer, "download-page", composeUrl( project.getUrl() , "/download.html" ) );
> +        DoapUtil.writeElement( writer, "programming-language", language );
>          //TODO: how to lookup category, map it, or just declare it.
> -        rdfResourceElement( "category", "http://projects.apache.org/category/" + category );
> +        DoapUtil.writeRdfResourceElement( writer, "category", "http://projects.apache.org/category/" + category );
>  
>          // Releases
>          publishReleases();
>  
>          // SCM
> -        publishSourceRepository();
> +        publishSourceRepository( writer );
>  
>          // Developers
> -        publishMaintainers();
> +        publishMaintainers( writer );
>  
> -        w.endElement();
> -        w.endElement();
> -
> -        pw.close();
> -    }
> +        writer.endElement();
> +        writer.endElement();
>  
> -    private void element( String name,
> -                          String value )
> -    {
> -        if ( value != null )
> +        try
>          {
> -            w.startElement( name );
> -            w.writeText( value );
> -            w.endElement();
> +            w.close();
>          }
> -    }
> -
> -    private void rdfResourceElement( String name,
> -                                     String value )
> -    {
> -        if ( value != null )
> +        catch ( IOException e )
>          {
> -            w.startElement( name );
> -            w.addAttribute( RDF_RESOURCE, value );
> -            w.endElement();
> +            throw new MojoExecutionException( "Error when closing the writer.", e );
>          }
>      }
>  
> @@ -209,7 +167,7 @@
>      {
>      }
>  
> -    private void publishSourceRepository()
> +    private void publishSourceRepository( XMLWriter w )
>      {
>          //<repository>
>          //  <SVNRepository>
> @@ -225,14 +183,14 @@
>  
>          w.startElement( "repository" );
>          w.startElement( "SVNRepository" );
> -        rdfResourceElement( "location", project.getScm().getConnection().substring( 8 ) );
> -        rdfResourceElement( "browse", project.getScm().getUrl() );
> +        DoapUtil.writeRdfResourceElement( w, "location", project.getScm().getConnection().substring( 8 ) );
> +        DoapUtil.writeRdfResourceElement( w, "browse", project.getScm().getUrl() );
>          w.endElement();
>          w.endElement();
>  
>      }
>  
> -    private void publishMaintainers()
> +    private void publishMaintainers( XMLWriter w )
>      {
>          //<maintainer>
>          //  <foaf:Person>
> @@ -255,7 +213,7 @@
>              w.startElement( "foaf:name" );
>              w.writeText( d.getName() );
>              w.endElement();
> -            rdfResourceElement( "foaf:mbox", "mailto:" + d.getEmail() );
> +            DoapUtil.writeRdfResourceElement( w, "foaf:mbox", "mailto:" + d.getEmail() );
>              w.endElement();
>              w.endElement();
>          }
> @@ -275,9 +233,7 @@
>          {
>              return base + path.substring( 1 );
>          }
> -        else
> -        {
> -            return base + path;
> -        }
> +
> +        return base + path;
>      }
>  }
> 
> Added: maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java?rev=668827&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java (added)
> +++ maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java Tue Jun 17 14:01:28 2008
> @@ -0,0 +1,109 @@
> +package org.apache.maven.plugin.doap;
> +
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +import java.text.DateFormat;
> +import java.util.Date;
> +import java.util.Locale;
> +
> +import org.codehaus.plexus.util.StringUtils;
> +import org.codehaus.plexus.util.xml.XMLWriter;
> +import org.codehaus.plexus.util.xml.XmlWriterUtil;
> +
> +/**
> + * Utility class for DOAP mojo.
> + *
> + * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
> + * @version $Id$
> + */
> +public class DoapUtil
> +{
> +    private static final String RDF_RESOURCE = "rdf:resource";
> +
> +    /**
> +     * Write comments in the DOAP file header
> +     *
> +     * @param writer not null
> +     */
> +    public static void writeHeader( XMLWriter writer )
> +    {
> +        XmlWriterUtil.writeLineBreak( writer );
> +
> +        XmlWriterUtil.writeCommentLineBreak( writer );
> +        XmlWriterUtil.writeComment( writer, StringUtils.repeat( "=", 21 ) + " - DO NOT EDIT THIS FILE! - "
> +            + StringUtils.repeat( "=", 21 ) );
> +        XmlWriterUtil.writeCommentLineBreak( writer );
> +        XmlWriterUtil.writeComment( writer, " " );
> +        XmlWriterUtil.writeComment( writer, "Any modifications will be overwritten." );
> +        XmlWriterUtil.writeComment( writer, " " );
> +        DateFormat dateFormat = DateFormat.getDateTimeInstance( DateFormat.SHORT, DateFormat.SHORT, Locale.US );
> +        XmlWriterUtil.writeComment( writer, "Generated by Maven Doap Plugin on "
> +            + dateFormat.format( new Date( System.currentTimeMillis() ) ) );
> +        XmlWriterUtil.writeComment( writer, "See: http://maven.apache.org/plugins/maven-doap-plugin/" );
> +        XmlWriterUtil.writeComment( writer, " " );
> +        XmlWriterUtil.writeCommentLineBreak( writer );
> +
> +        XmlWriterUtil.writeLineBreak( writer );
> +    }
> +
> +    /**
> +     * @param writer not null
> +     * @param name not null
> +     * @param value not null
> +     * @throws IllegalArgumentException if name is null or empty
> +     */
> +    public static void writeElement( XMLWriter writer, String name, String value )
> +        throws IllegalArgumentException
> +    {
> +        if ( StringUtils.isEmpty( name ) )
> +        {
> +            throw new IllegalArgumentException( "name should be defined" );
> +        }
> +
> +        if ( value != null )
> +        {
> +            writer.startElement( name );
> +            writer.writeText( value );
> +            writer.endElement();
> +        }
> +    }
> +
> +    /**
> +     * @param writer not null
> +     * @param name not null
> +     * @param value not null
> +     * @throws IllegalArgumentException if name is null or empty
> +     */
> +    public static void writeRdfResourceElement( XMLWriter writer, String name, String value )
> +        throws IllegalArgumentException
> +    {
> +        if ( StringUtils.isEmpty( name ) )
> +        {
> +            throw new IllegalArgumentException( "name should be defined" );
> +        }
> +
> +        if ( value != null )
> +        {
> +            writer.startElement( name );
> +            writer.addAttribute( RDF_RESOURCE, value );
> +            writer.endElement();
> +        }
> +    }
> +}
> 
> Propchange: maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
> 
> Propchange: maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java
> ------------------------------------------------------------------------------
>     svn:keywords = Author Date Id Revision
> 
> 
> 


-- 
Dennis Lundberg

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org