You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by mc...@apache.org on 2004/06/16 21:45:21 UTC

svn commit: rev 21361 - in avalon/trunk: central/system runtime/merlin/impl runtime/meta/spi tools/magic/src/main/org/apache/avalon/tools tools/magic/src/main/org/apache/avalon/tools/project tools/magic/src/main/org/apache/avalon/tools/tasks

Author: mcconnell
Date: Wed Jun 16 12:45:21 2004
New Revision: 21361

Added:
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/AbstractDeliverableTask.java   (contents, props changed)
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/JavadocTask.java   (contents, props changed)
Modified:
   avalon/trunk/central/system/index.xml
   avalon/trunk/runtime/merlin/impl/build.xml
   avalon/trunk/runtime/meta/spi/build.xml
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/antlib.xml
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/project/Definition.java
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/ArtifactTask.java
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/BarTask.java
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/JarTask.java
Log:
first cut of the javadoc task

Modified: avalon/trunk/central/system/index.xml
==============================================================================
--- avalon/trunk/central/system/index.xml	(original)
+++ avalon/trunk/central/system/index.xml	Wed Jun 16 12:45:21 2004
@@ -141,7 +141,7 @@
       </info>
       <dependencies>
         <include key="avalon-framework-api"/>
-        <include key="avalon-framework-legacy"/>
+        <include key="avalon-framework-legacy" runtime="false" />
       </dependencies>
     </project>
 

Modified: avalon/trunk/runtime/merlin/impl/build.xml
==============================================================================
--- avalon/trunk/runtime/merlin/impl/build.xml	(original)
+++ avalon/trunk/runtime/merlin/impl/build.xml	Wed Jun 16 12:45:21 2004
@@ -17,6 +17,7 @@
 
   <target name="package" depends="standard.package">
     <x:artifact/>
+    <x:javadoc/>
   </target>
 
 </project>

Modified: avalon/trunk/runtime/meta/spi/build.xml
==============================================================================
--- avalon/trunk/runtime/meta/spi/build.xml	(original)
+++ avalon/trunk/runtime/meta/spi/build.xml	Wed Jun 16 12:45:21 2004
@@ -1,6 +1,9 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 
-<project name="avalon-meta-spi" default="dist" basedir=".">
+<project name="avalon-meta-spi" default="dist" basedir="."
+    xmlns:x="antlib:org.apache.avalon.tools">
+
   <property file="build.properties"/>
   <import file="${project.home}/build/standard.xml"/>
+
 </project>

Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/antlib.xml
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/antlib.xml	(original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/antlib.xml	Wed Jun 16 12:45:21 2004
@@ -18,5 +18,6 @@
   <taskdef name="info" classname="org.apache.avalon.tools.tasks.AnnounceTask"/> 
   <taskdef name="artifact" classname="org.apache.avalon.tools.tasks.ArtifactTask"/> 
   <taskdef name="bar" classname="org.apache.avalon.tools.tasks.BarTask"/> 
+  <taskdef name="javadoc" classname="org.apache.avalon.tools.tasks.JavadocTask"/> 
 
 </antlib>

Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/project/Definition.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/project/Definition.java	(original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/project/Definition.java	Wed Jun 16 12:45:21 2004
@@ -114,6 +114,23 @@
         return path;
     }
 
+    public ResourceRef[] getQualifiedRefs( final List visited, int category )
+    {
+        ArrayList list = new ArrayList();
+        ResourceRef[] refs = 
+          getResourceRefs( Policy.RUNTIME, category, true );
+        for( int i=0; i<refs.length; i++ )
+        {
+            ResourceRef ref = refs[i];
+            if( !visited.contains(  ref ) )
+            {
+                list.add( ref );
+                visited.add( ref );
+            }
+        }
+        return (ResourceRef[]) list.toArray( new ResourceRef[0] );
+    }
+
     public String toString()
     {
         return "[" + getInfo().getGroup() + "/" + getInfo().getName() + "]";

Added: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/AbstractDeliverableTask.java
==============================================================================
--- (empty file)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/AbstractDeliverableTask.java	Wed Jun 16 12:45:21 2004
@@ -0,0 +1,92 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * Licensed  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.
+ */
+
+package org.apache.avalon.tools.tasks;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.Copy;
+import org.apache.tools.ant.taskdefs.Delete;
+import org.apache.tools.ant.taskdefs.Jar;
+import org.apache.tools.ant.taskdefs.Mkdir;
+import org.apache.tools.ant.taskdefs.Checksum;
+import org.apache.tools.ant.taskdefs.Manifest;
+import org.apache.tools.ant.taskdefs.ManifestException;
+import org.apache.tools.ant.taskdefs.Execute;
+import org.apache.tools.ant.types.FileSet;
+import org.apache.tools.ant.types.Path;
+
+import org.apache.avalon.tools.home.Context;
+import org.apache.avalon.tools.home.Home;
+import org.apache.avalon.tools.project.Definition;
+import org.apache.avalon.tools.project.ResourceRef;
+
+/**
+ * Load a goal. 
+ *
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ * @version $Revision: 1.2 $ $Date: 2004/03/17 10:30:09 $
+ */
+public class AbstractDeliverableTask extends SystemTask
+{
+    public static final String MD5_EXT = "md5";
+    public static final String ASC_EXT = "asc";
+    public static final String GPG_EXE_KEY = "project.gpg.exe";
+
+    public void checksum( File file )
+    {
+        log( "Creating md5 checksum" );
+
+        File md5 = new File( file.toString() + "." + MD5_EXT );
+
+        Delete delete = (Delete) getProject().createTask( "delete" );
+        delete.setFile( md5 );
+        delete.init();
+        delete.execute();
+
+        Checksum checksum = (Checksum) getProject().createTask( "checksum" );
+        checksum.setFile( file );
+        checksum.setFileext( "." + MD5_EXT );
+        checksum.init();
+        checksum.execute();
+    }
+
+    public void asc( File file ) throws IOException
+    {
+        File asc = new File( file.toString() + "." + ASC_EXT );
+        if( asc.exists() )
+        {
+            asc.delete();
+        }
+
+        String gpg = getProject().getProperty( GPG_EXE_KEY );
+        if(( null != gpg ) && !"".equals( gpg ) )
+        {
+            log( "Creating asc signature using '" + gpg + "']" );
+            Execute execute = new Execute();
+            execute.setCommandline( 
+              new String[]{ gpg, "-a", "-b", file.toString() } );
+            execute.setWorkingDirectory( getProject().getBaseDir() );
+            execute.setSpawn( true );
+            execute.execute();
+        }
+    }
+}

Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/ArtifactTask.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/ArtifactTask.java	(original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/ArtifactTask.java	Wed Jun 16 12:45:21 2004
@@ -211,7 +211,7 @@
         throws IOException
     {
         ArrayList visited = new ArrayList();
-        ResourceRef[] apis = getQualifiedRefs( def, visited, ResourceRef.API );
+        ResourceRef[] apis = def.getQualifiedRefs( visited, ResourceRef.API );
         if( apis.length > 0 )
         {
             writer.write( "\n" );
@@ -221,7 +221,7 @@
             String lead = "avalon.artifact.dependency.api";
             writeRefs( writer, apis, lead );
         }
-        ResourceRef[] spis = getQualifiedRefs( def, visited, ResourceRef.SPI );
+        ResourceRef[] spis = def.getQualifiedRefs( visited, ResourceRef.SPI );
         if( spis.length > 0 )
         {
             writer.write( "\n" );
@@ -232,7 +232,7 @@
             writeRefs( writer, spis, lead );
         }
 
-        ResourceRef[] impl = getQualifiedRefs( def, visited, ResourceRef.IMPL );
+        ResourceRef[] impl = def.getQualifiedRefs( visited, ResourceRef.IMPL );
         if( impl.length > 0 )
         {
             writer.write( "\n" );
@@ -242,22 +242,6 @@
             String lead = "avalon.artifact.dependency";
             writeRefs( writer, impl, lead );
         }
-    }
-
-    private ResourceRef[] getQualifiedRefs( final Definition def, final List visited, int category )
-    {
-        ArrayList list = new ArrayList();
-        ResourceRef[] refs = def.getResourceRefs( Policy.RUNTIME, category, true );
-        for( int i=0; i<refs.length; i++ )
-        {
-            ResourceRef ref = refs[i];
-            if( !visited.contains(  ref ) )
-            {
-                list.add( ref );
-                visited.add( ref );
-            }
-        }
-        return (ResourceRef[]) list.toArray( new ResourceRef[0] );
     }
 
     private void writeRefs( 

Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/BarTask.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/BarTask.java	(original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/BarTask.java	Wed Jun 16 12:45:21 2004
@@ -45,12 +45,9 @@
  * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
  * @version $Revision: 1.2 $ $Date: 2004/03/17 10:30:09 $
  */
-public class BarTask extends SystemTask
+public class BarTask extends AbstractDeliverableTask
 {
-    public static final String MD5_EXT = "md5";
     public static final String BAR_EXT = "bar";
-    public static final String ASC_EXT = "asc";
-    public static final String GPG_EXE_KEY = "project.gpg.exe";
 
     private String m_name;
 
@@ -141,7 +138,10 @@
             addAttribute( block, "Block-Name", def.getInfo().getName() );
             if( null != def.getInfo().getVersion() )
             {
-                addAttribute( block, "Block-Version", def.getInfo().getVersion() );
+                addAttribute( 
+                  block, 
+                  "Block-Version", 
+                  def.getInfo().getVersion() );
             }
 
             manifest.addConfiguredSection( block );
@@ -159,45 +159,5 @@
     {
         Manifest.Attribute attribute = new Manifest.Attribute( name, value );
         section.addConfiguredAttribute( attribute );
-    }
-
-    private void checksum( File file )
-    {
-        log( "Creating md5 checksum" );
-
-        File md5 = new File( file.toString() + "." + MD5_EXT );
-
-        Delete delete = (Delete) getProject().createTask( "delete" );
-        delete.setFile( md5 );
-        delete.init();
-        delete.execute();
-
-        Checksum checksum = (Checksum) getProject().createTask( "checksum" );
-        checksum.setFile( file );
-        checksum.setFileext( "." + MD5_EXT );
-        checksum.init();
-        checksum.execute();
-    }
-
-    private void asc( File file ) throws IOException
-    {
-        File asc = new File( file.toString() + "." + ASC_EXT );
-
-        Delete delete = (Delete) getProject().createTask( "delete" );
-        delete.init();
-        delete.setFile( asc );
-        delete.execute();
-
-        String gpg = getProject().getProperty( GPG_EXE_KEY );
-        if( null != gpg )
-        {
-            log( "Creating asc signature" );
-            Execute execute = new Execute();
-            execute.setCommandline( 
-              new String[]{ gpg, "-a", "-b", file.toString() } );
-            execute.setWorkingDirectory( getProject().getBaseDir() );
-            execute.setSpawn( true );
-            execute.execute();
-        }
     }
 }

Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/JarTask.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/JarTask.java	(original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/JarTask.java	Wed Jun 16 12:45:21 2004
@@ -45,12 +45,9 @@
  * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
  * @version $Revision: 1.2 $ $Date: 2004/03/17 10:30:09 $
  */
-public class JarTask extends SystemTask
+public class JarTask extends AbstractDeliverableTask
 {
-    public static final String MD5_EXT = "md5";
     public static final String JAR_EXT = "jar";
-    public static final String ASC_EXT = "asc";
-    public static final String GPG_EXE_KEY = "project.gpg.exe";
     public static final String JAR_MAIN_KEY = "project.jar.main.class";
     public static final String JAR_CLASSPATH_KEY = "project.jar.classpath";
     
@@ -173,45 +170,5 @@
     {
         Manifest.Attribute attribute = new Manifest.Attribute( name, value );
         section.addConfiguredAttribute( attribute );
-    }
-
-    private void checksum( File jar )
-    {
-        log( "Creating md5 checksum" );
-
-        File md5 = new File( jar.toString() + "." + MD5_EXT );
-
-        Delete delete = (Delete) getProject().createTask( "delete" );
-        delete.setFile( md5 );
-        delete.init();
-        delete.execute();
-
-        Checksum checksum = (Checksum) getProject().createTask( "checksum" );
-        checksum.setFile( jar );
-        checksum.setFileext( "." + MD5_EXT );
-        checksum.init();
-        checksum.execute();
-    }
-
-    private void asc( File jar ) throws IOException
-    {
-        File asc = new File( jar.toString() + "." + ASC_EXT );
-
-        Delete delete = (Delete) getProject().createTask( "delete" );
-        delete.init();
-        delete.setFile( asc );
-        delete.execute();
-
-        String gpg = getProject().getProperty( GPG_EXE_KEY );
-        if( null != gpg )
-        {
-            log( "Creating asc signature" );
-            Execute execute = new Execute();
-            execute.setCommandline( 
-              new String[]{ gpg, "-a", "-b", jar.toString() } );
-            execute.setWorkingDirectory( getProject().getBaseDir() );
-            execute.setSpawn( true );
-            execute.execute();
-        }
     }
 }

Added: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/JavadocTask.java
==============================================================================
--- (empty file)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/JavadocTask.java	Wed Jun 16 12:45:21 2004
@@ -0,0 +1,133 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * Licensed  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.
+ */
+
+package org.apache.avalon.tools.tasks;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.ArrayList;
+
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.types.DirSet;
+import org.apache.tools.ant.types.Path;
+import org.apache.tools.ant.taskdefs.Javadoc;
+
+import org.apache.avalon.tools.home.Context;
+import org.apache.avalon.tools.home.Home;
+import org.apache.avalon.tools.project.Definition;
+import org.apache.avalon.tools.project.ResourceRef;
+import org.apache.avalon.tools.project.Resource;
+
+/**
+ * Build the javadoc for a project. 
+ *
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ * @version $Revision: 1.2 $ $Date: 2004/03/17 10:30:09 $
+ */
+public class JavadocTask extends SystemTask
+{
+    public static final String JAVADOC = "javadoc";
+    public static final String API = "api";
+    public static final String SPI = "spi";
+    public static final String IMPL = "impl";
+
+    public void execute() throws BuildException 
+    {
+        Definition def = getHome().getDefinition( getKey() );
+        File root = getJavadocRootDirectory( def );
+
+        ArrayList visited = new ArrayList();
+        execute( def, visited, ResourceRef.API, "api", root );
+        execute( def, visited, ResourceRef.SPI, "spi", root );
+        execute( def, visited, ResourceRef.IMPL, "impl", root );
+    }
+
+    private void execute( 
+      Definition def, List visited, int category, String branch, File root )
+    {
+        File base = new File( root, branch );
+        ResourceRef[] refs = def.getQualifiedRefs( visited, category );
+        if( refs.length > 0 )
+        {
+            log( 
+              "Javadoc preparation for category: " 
+              + branch + ", " 
+              + refs.length );
+            generate( def, refs, base );
+        }
+    }
+
+    private void generate( 
+       Definition definition, ResourceRef[] refs, File root )
+    {
+        Javadoc javadoc = (Javadoc) getProject().createTask( "javadoc" );
+
+        javadoc.init();
+        javadoc.setDestdir( root );
+        Path source = javadoc.createSourcepath();
+        Path classpath = javadoc.createClasspath();
+        for( int i=0; i<refs.length; i++ )
+        {
+            ResourceRef ref = refs[i];
+            Resource resource = getHome().getResource( ref );
+            if( resource instanceof Definition )
+            {
+                Definition def = (Definition) resource;
+                File base = def.getBasedir();
+                File src = new File( base, "target/build/main" );
+                if( src.exists() )
+                {
+                    source.createPathElement().setLocation( src );
+                    DirSet packages = new DirSet();
+                    packages.setDir( src );
+                    packages.setIncludes( "**/**" );
+                    javadoc.addPackageset( packages );
+                }
+            }
+            else
+            {
+                File artifact = resource.getArtifact( getProject() );
+                classpath.createPathElement().setLocation( artifact );
+            }
+        }
+
+        File basedir = definition.getBasedir();
+        File local = new File( basedir, "target/build/main" );
+        if( local.exists() )
+        {
+            source.createPathElement().setLocation( local );
+            javadoc.execute();
+        }
+    }
+
+    private File getJavadocRootDirectory( Definition def )
+    {
+        File docs = getContext().getDocsDirectory();
+        String version = def.getInfo().getVersion();
+        if( null == version )
+        {
+            return new File( docs, JAVADOC );
+        }
+        else
+        {
+            return new File( docs, version );
+        }
+    }
+}

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org