Author: vsiveton
Date: Fri Dec 10 10:32:41 2010
New Revision: 1044272

URL: http://svn.apache.org/viewvc?rev=1044272&view=rev
Log:
MDOAP-27: Generated files aren't useable with Jena

o added validate parameter

Added:
    
maven/plugins/trunk/maven-doap-plugin/src/test/resources/generated-doap-1.0.rdf 
  (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
    
maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java
    
maven/plugins/trunk/maven-doap-plugin/src/test/java/org/apache/maven/plugin/doap/DoapUtilTest.java
    
maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/asf-doap-configuration/asf-doap-configuration-plugin-config.xml
    
maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/doap-configuration/doap-configuration-plugin-config.xml

Modified: maven/plugins/trunk/maven-doap-plugin/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/pom.xml?rev=1044272&r1=1044271&r2=1044272&view=diff
==============================================================================
--- maven/plugins/trunk/maven-doap-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-doap-plugin/pom.xml Fri Dec 10 10:32:41 2010
@@ -49,6 +49,13 @@ under the License.
     <url>http://jira.codehaus.org/browse/MDOAP</url>
   </issueManagement>
 
+  <repositories>
+    <repository>
+      <id>jena</id>
+      <url>http://openjena.org/repo/</url>
+    </repository>
+  </repositories>
+
   <properties>
     <scmVersion>1.0</scmVersion>
   </properties>
@@ -120,6 +127,11 @@ under the License.
         </exclusion>
       </exclusions>
     </dependency>
+    <dependency>
+      <groupId>com.hp.hpl.jena</groupId>
+      <artifactId>jena</artifactId>
+      <version>2.6.3</version>
+    </dependency>
 
     <!-- test -->
     <dependency>

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=1044272&r1=1044271&r2=1044272&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
 Fri Dec 10 10:32:41 2010
@@ -282,6 +282,14 @@ public class DoapMojo
      */
     private String about;
 
+    /**
+     * Flag to validate the generated DOAP.
+     *
+     * @parameter default-value="true"
+     * @since 1.1
+     */
+    private boolean validate;
+
     // ----------------------------------------------------------------------
     // Public methods
     // ----------------------------------------------------------------------
@@ -416,6 +424,20 @@ public class DoapMojo
         {
             throw new MojoExecutionException( "Error when closing the 
writer.", e );
         }
+
+        if ( validate )
+        {
+            List errors = DoapUtil.validate( doapFile );
+            if ( !errors.isEmpty() )
+            {
+                for ( int i = 0; i < errors.size(); i++ )
+                {
+                    getLog().error( errors.get( i ).toString() );
+                }
+
+                throw new MojoExecutionException( "Error parsing the generated 
doap file, see above." );
+            }
+        }
     }
 
     // ----------------------------------------------------------------------

Modified: 
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=1044272&r1=1044271&r2=1044272&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java
 (original)
+++ 
maven/plugins/trunk/maven-doap-plugin/src/main/java/org/apache/maven/plugin/doap/DoapUtil.java
 Fri Dec 10 10:32:41 2010
@@ -19,6 +19,8 @@ package org.apache.maven.plugin.doap;
  * under the License.
  */
 
+import java.io.File;
+import java.net.MalformedURLException;
 import java.text.DateFormat;
 import java.util.ArrayList;
 import java.util.Date;
@@ -35,6 +37,11 @@ import org.codehaus.plexus.util.StringUt
 import org.codehaus.plexus.util.xml.XMLWriter;
 import org.codehaus.plexus.util.xml.XmlWriterUtil;
 
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.ModelFactory;
+import com.hp.hpl.jena.rdf.model.RDFReader;
+import com.hp.hpl.jena.rdf.model.impl.RDFDefaultErrorHandler;
+
 /**
  * Utility class for DOAP mojo.
  *
@@ -220,6 +227,45 @@ public class DoapUtil
         return (List) filterDevelopersOrContributorsByDoapRoles( i18n, 
developersOrContributors ).get( "unknowns" );
     }
 
+    /**
+     * Validate the given DOAP file.
+     *
+     * @param doapFile not null and should exists.
+     * @return an empty list if the DOAP file is valid, otherwise a list of 
errors.
+     * @since 1.1
+     */
+    public static List validate( File doapFile )
+    {
+        if ( doapFile == null || !doapFile.isFile() )
+        {
+            throw new IllegalArgumentException( "The DOAP file should exist" );
+        }
+
+        Model model = ModelFactory.createDefaultModel();
+        RDFReader r = model.getReader( "RDF/XML" );
+        r.setProperty( "error-mode", "strict-error" );
+        final List errors = new ArrayList();
+        r.setErrorHandler( new RDFDefaultErrorHandler()
+        {
+            /** {...@inheritdoc} */
+            public void error( Exception e )
+            {
+                errors.add( e.getMessage() );
+            }
+        } );
+
+        try
+        {
+            r.read( model, doapFile.toURI().toURL().toString() );
+        }
+        catch ( MalformedURLException e )
+        {
+            // ignored
+        }
+
+        return errors;
+    }
+
     // ----------------------------------------------------------------------
     // Private methods
     // ----------------------------------------------------------------------

Modified: 
maven/plugins/trunk/maven-doap-plugin/src/test/java/org/apache/maven/plugin/doap/DoapUtilTest.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/src/test/java/org/apache/maven/plugin/doap/DoapUtilTest.java?rev=1044272&r1=1044271&r2=1044272&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-doap-plugin/src/test/java/org/apache/maven/plugin/doap/DoapUtilTest.java
 (original)
+++ 
maven/plugins/trunk/maven-doap-plugin/src/test/java/org/apache/maven/plugin/doap/DoapUtilTest.java
 Fri Dec 10 10:32:41 2010
@@ -19,6 +19,7 @@ package org.apache.maven.plugin.doap;
  * under the License.
  */
 
+import java.io.File;
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.List;
@@ -170,4 +171,17 @@ public class DoapUtilTest
         assertTrue( DoapUtil.getDevelopersOrContributorsWithTranslatorRole( 
i18n, developersOrContributors ).isEmpty() );
         assertFalse( DoapUtil.getDevelopersOrContributorsWithUnknownRole( 
i18n, developersOrContributors ).isEmpty() );
     }
+
+    /**
+     * Test method for:
+     * {...@link DoapUtil#validate(java.io.File)}
+     *
+     * @throws Exception if any
+     */
+    public void testValidate()
+        throws Exception
+    {
+        File doapFile = new File( getBasedir(), 
"src/test/resources/generated-doap-1.0.rdf" );
+        assertFalse( DoapUtil.validate( doapFile ).isEmpty() );
+    }
 }

Added: 
maven/plugins/trunk/maven-doap-plugin/src/test/resources/generated-doap-1.0.rdf
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/src/test/resources/generated-doap-1.0.rdf?rev=1044272&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-doap-plugin/src/test/resources/generated-doap-1.0.rdf 
(added)
+++ 
maven/plugins/trunk/maven-doap-plugin/src/test/resources/generated-doap-1.0.rdf 
Fri Dec 10 10:32:41 2010
@@ -0,0 +1,47 @@
+
+<!-- ====================================================================== -->
+<!-- ===================== - DO NOT EDIT THIS FILE! - ===================== -->
+<!-- ====================================================================== -->
+<!--                                                                        -->
+<!-- Any modifications will be overwritten.                                 -->
+<!--                                                                        -->
+<!-- Generated by Maven Doap Plugin on 12/10/10 4:53 AM                     -->
+<!-- See: http://maven.apache.org/plugins/maven-doap-plugin/                -->
+<!--                                                                        -->
+<!-- ====================================================================== -->
+
+<rdf:RDF xml:lang="en" xmlns="http://usefulinc.com/ns/doap#"; 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"; 
xmlns:foaf="http://xmlns.com/foaf/0.1/";>
+  <Project rdf:about="http://maven.apache.org/plugins/maven-doap-plugin/tests";>
+
+    <!-- 
====================================================================== -->
+    <!-- A name of something.                                                  
 -->
+    <!-- 
====================================================================== -->
+
+    <name rdf:resource="Maven DOAP Plugin Test"/>
+
+    <!-- 
====================================================================== -->
+    <!-- Plain text description of a project, of 2-4 sentences in length.      
 -->
+    <!-- 
====================================================================== -->
+
+    <description xml:lang="en">Test the DOAP plugin</description>
+    <shortdesc xml:lang="en">Test the DOAP plugin</shortdesc>
+
+    <!-- 
====================================================================== -->
+    <!-- URL of a project's homepage, associated with exactly one project.     
 -->
+    <!-- 
====================================================================== -->
+
+    <homepage 
rdf:resource="http://maven.apache.org/plugins/maven-doap-plugin/tests"/>
+
+    <!-- 
====================================================================== -->
+    <!-- Programming language.                                                 
 -->
+    <!-- 
====================================================================== -->
+
+    <programming-language rdf:resource="java"/>
+
+    <!-- 
====================================================================== -->
+    <!-- Download page.                                                        
 -->
+    <!-- 
====================================================================== -->
+
+    <download-page 
rdf:resource="http://maven.apache.org/plugins/maven-doap-plugin/tests/download.html"/>
+  </Project>
+</rdf:RDF>
\ No newline at end of file

Propchange: 
maven/plugins/trunk/maven-doap-plugin/src/test/resources/generated-doap-1.0.rdf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-doap-plugin/src/test/resources/generated-doap-1.0.rdf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: 
maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/asf-doap-configuration/asf-doap-configuration-plugin-config.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/asf-doap-configuration/asf-doap-configuration-plugin-config.xml?rev=1044272&r1=1044271&r2=1044272&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/asf-doap-configuration/asf-doap-configuration-plugin-config.xml
 (original)
+++ 
maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/asf-doap-configuration/asf-doap-configuration-plugin-config.xml
 Fri Dec 10 10:32:41 2010
@@ -57,6 +57,7 @@ under the License.
           <localRepository>${localRepository}</localRepository>
           
<doapFile>target/test/unit/asf-doap-configuration/asf-doap-configuration.rdf</doapFile>
           <lang>en</lang>
+          <validate>true</validate>
 
           <doapOptions>
             <programmingLanguage>java</programmingLanguage>

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=1044272&r1=1044271&r2=1044272&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
 Fri Dec 10 10:32:41 2010
@@ -57,6 +57,7 @@ under the License.
           <localRepository>${localRepository}</localRepository>
           
<doapFile>target/test/unit/doap-configuration/doap-configuration.rdf</doapFile>
           <lang>en</lang>
+          <validate>true</validate>
 
           <doapOptions>
             <programmingLanguage>java</programmingLanguage>


Reply via email to