Author: mcconnell
Date: Wed Jun 30 03:10:42 2004
New Revision: 22313

Added:
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/BlockTask.java
Modified:
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/antlib.xml
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Context.java
   
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/AbstractDeliverableTask.java
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/DeclareTask.java
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/JUnitTestTask.java
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/JarTask.java
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/JavacTask.java
Log:
Addition of a block task (does automatic creation of the block defintion for standalon 
and embedded scenarios).

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 30 03:10:42 2004
@@ -21,6 +21,7 @@
   <taskdef name="publish" classname="org.apache.avalon.tools.tasks.PublishTask"/> 

   <taskdef name="property" classname="org.apache.avalon.tools.tasks.PropertyTask"/> 

   <taskdef name="replicate" classname="org.apache.avalon.tools.tasks.ReplicateTask"/> 

+  <taskdef name="block" classname="org.apache.avalon.tools.tasks.BlockTask"/> 

   <typedef name="path" classname="org.apache.avalon.tools.model.MagicPath"/> 

 

 </antlib>


Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Context.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Context.java       
 (original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Context.java       
 Wed Jun 30 03:10:42 2004
@@ -43,6 +43,8 @@
 

     public static final String TARGET = "target";

     public static final String BUILD = "build";

+    public static final String CLASSES = "classes";

+    public static final String TEST_CLASSES = "test-classes";

     public static final String TEMP = "temp";

     public static final String TEST = "test";

     public static final String DELIVERABLES = "deliverables";

@@ -51,7 +53,6 @@
     private static final String USER_PROPERTIES = "user.properties";

     private static final String BUILD_PROPERTIES = "build.properties";

 

-

     public static final String SRC_KEY = "project.src";

     public static final String SRC_VALUE = "src";

 

@@ -97,6 +98,8 @@
     private File m_target;

     private File m_build;

     private File m_deliverables;

+    private File m_classes;

+    private File m_testClasses;

     private File m_temp;

     private File m_docs;

     private File m_test;

@@ -137,8 +140,10 @@
         m_target = new File( basedir, TARGET );

         m_build = setBuildPath( BUILD );

         m_deliverables = setBuildPath( DELIVERABLES );

+        m_classes = setBuildPath( CLASSES );

         m_temp = setBuildPath( TEMP );

         m_test = setBuildPath( TEST );

+        m_testClasses = setBuildPath( TEST_CLASSES );

         m_docs = setBuildPath( DOCS );

 

         project.addReference( KEY, this );

@@ -201,6 +206,16 @@
     public File getDeliverablesDirectory()

     {

         return m_deliverables;

+    }

+

+    public File getClassesDirectory()

+    {

+        return m_classes;

+    }

+

+    public File getTestClassesDirectory()

+    {

+        return m_testClasses;

     }

 

     public File getTempDirectory()


Modified: 
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/AbstractDeliverableTask.java
==============================================================================
--- 
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/AbstractDeliverableTask.java
        (original)
+++ 
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/AbstractDeliverableTask.java
        Wed Jun 30 03:10:42 2004
@@ -64,9 +64,10 @@
         }
 
         final String gpg = getProject().getProperty( GPG_EXE_KEY );
+
         if(( null != gpg ) && !"".equals( gpg ) )
         {
-            log( "Creating asc signature using '" + gpg + "']" );
+            log( "Creating asc signature using '" + gpg + "'." );
             final ExecTask execute = (ExecTask) getProject().createTask( "exec" );
 
             execute.setExecutable( gpg );

Added: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/BlockTask.java
==============================================================================
--- (empty file)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/BlockTask.java     
 Wed Jun 30 03:10:42 2004
@@ -0,0 +1,194 @@
+/* 

+ * 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 org.apache.avalon.tools.model.Definition;

+import org.apache.avalon.tools.model.ResourceRef;

+import org.apache.avalon.tools.model.Info;

+import org.apache.avalon.tools.model.Resource;

+import org.apache.tools.ant.BuildException;

+import org.apache.avalon.tools.model.Plugin.ListenerDef;

+import org.apache.avalon.tools.model.Plugin.TaskDef;

+import org.apache.avalon.tools.model.Plugin;

+import org.apache.avalon.tools.model.Policy;

+

+import java.io.IOException;

+import java.io.OutputStream;

+import java.io.FileOutputStream;

+import java.io.File;

+import java.io.OutputStreamWriter;

+import java.io.Writer;

+import java.util.List;

+import java.util.ArrayList;

+

+/**

+ * Create meta-data for a block.

+ *

+ * @author <a href="mailto:[EMAIL PROTECTED]">Avalon Development Team</a>

+ * @version $Revision: 1.2 $ $Date: 2004/03/17 10:30:09 $

+ */

+public class BlockTask extends DeclareTask

+{

+    private static final String BLOCK = "block";

+    private static final String MAIN = "main";

+    private static final String TEST = "test";

+

+    public static class Component

+    {

+        private String m_name;

+        private String m_classname;

+

+        public Component()

+        {

+        }

+

+        public void setName( final String name )

+        {

+            m_name = name;

+        }

+

+        public void setClass( final String classname )

+        {

+            m_classname = classname;

+        }

+

+        public String getName()

+        {

+            return m_name;

+        }

+

+        public String getClassname()

+        {

+            return m_classname;

+        }

+    }

+

+    private String m_target;

+    private String m_container;

+    private List m_components = new ArrayList();

+

+    public void setName( final String name )

+    {

+        m_container = name;

+    }

+

+   /**

+    * Optional attribute indicating that the block is to be generated

+    * as an embedded BLOCK-INF/block.xml into either the MAIN or TEST

+    * classes directory as indicated by the target parameter.

+    */

+    public void setEmbed( final String target )

+    {

+        if( MAIN.equalsIgnoreCase( target ) )

+        {

+            m_target = MAIN;

+        }

+        else if( TEST.equalsIgnoreCase( target ) )

+        {

+            m_target = TEST;

+        }

+        else

+        {

+            final String error = 

+              "Embed policy not recognized (use MAIN or TEST)";

+            throw new BuildException( error );

+        }

+    }

+

+    private String getName( Definition def )

+    {

+        if( null == m_container )

+        {

+            return def.getInfo().getName();

+        }

+        else

+        {

+            return m_container;

+        }

+    }

+

+    protected File getPluginFile()

+    {

+        if( null == m_target )

+        {

+            return super.getPluginFile();

+        }

+        else

+        {

+            File root = getEmbeddedRoot( m_target );

+            File blockinf = new File( root, "BLOCK-INF" );

+            return new File( blockinf, "block.xml" );

+        }

+    }

+

+    private File getEmbeddedRoot( String target )

+    {

+        if( MAIN.equals( m_target ) )

+        {

+            return getContext().getClassesDirectory();

+        }

+        else

+        {

+            return getContext().getTestClassesDirectory();

+        }

+    }

+

+    public Component createComponent()

+    {

+        final Component component = new Component();

+        m_components.add( component );

+        return component;

+    }

+

+    public void init()

+    {

+        super.init();

+        super.setType( BLOCK );

+    }

+

+    protected void writePlugin( final Writer writer, final Definition def )

+        throws IOException

+    {

+        final Info info = def.getInfo();

+

+        writer.write( "\n\n<container name=\"" + getName( def ) + "\">" );

+        writer.write( "\n\n  <classloader>" );

+        boolean standalone = (null == m_target);

+        writeClasspath( writer, def, "    ", standalone );

+        writer.write( "\n  </classloader>" );

+        writer.write( "\n" );

+

+        Component[] components = 

+          (Component[]) m_components.toArray( new Component[0] );

+        for( int i=0; i<components.length; i++ )

+        {

+            Component component = components[i];

+            writeComponent( writer, component );

+        }

+

+        writer.write( "\n</container>\n" );

+    }

+

+    private void writeComponent( final Writer writer, final Component component )

+        throws IOException

+    {

+        writer.write( 

+          "\n  <component name=\"" + component.getName() + "\" class=\""

+          + component.getClassname() + "\"/>\n" );

+    }

+}


Modified: 
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/DeclareTask.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/DeclareTask.java   
 (original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/DeclareTask.java   
 Wed Jun 30 03:10:42 2004
@@ -33,19 +33,25 @@
 import java.io.File;

 import java.io.OutputStreamWriter;

 import java.io.Writer;

-

-

-

+import java.util.List;

+import java.util.ArrayList;

 

 /**

- * Load a plugin.

+ * Create meta-data for a plugin.

  *

  * @author <a href="mailto:[EMAIL PROTECTED]">Avalon Development Team</a>

  * @version $Revision: 1.2 $ $Date: 2004/03/17 10:30:09 $

  */

 public class DeclareTask extends SystemTask

 {

-    private static final String TYPE = "plugin";

+    private static final String PLUGIN = "plugin";

+

+    private String m_type = PLUGIN;

+

+    protected void setType( String type )

+    {

+        m_type = type;

+    }

 

     public void execute() throws BuildException 

     {

@@ -55,6 +61,7 @@
         try

         {

             final File file = getPluginFile();

+            file.getParentFile().mkdirs();

             file.createNewFile();

             final OutputStream output = new FileOutputStream( file );

 

@@ -73,32 +80,17 @@
         }

     }

 

-    private File getPluginFile()

+    protected File getPluginFile()

     {

         final File dir = getContext().getDeliverablesDirectory();

-        final File ants = new File( dir, TYPE + "s" );

-        mkDir( ants );

-

+        final File ants = new File( dir, m_type + "s" );

         final Definition def = getHome().getDefinition( getKey() );

         final Info info = def.getInfo();

-        final String filename = getFilename( info );

+        final String filename = info.getShortFilename() + "." + m_type;

         return new File( ants, filename );

     }

 

-    private String getFilename( final Info info )

-    {

-        final String version = info.getVersion();

-        if( null == version )

-        {

-            return info.getName() + "." + TYPE;

-        }

-        else

-        {

-            return info.getName() + "-" + version + "." + TYPE;

-        }

-    }

-

-    public void writePluginDef( final OutputStream output, final Definition def )

+    private void writePluginDef( final OutputStream output, final Definition def )

         throws IOException

     {

         final Writer writer = new OutputStreamWriter( output );

@@ -107,18 +99,7 @@
         writer.flush();

     }

 

-   /**

-    * Write the XML header.

-    * @param writer the writer

-    * @throws IOException if unable to write xml

-    */

-    private void writeHeader( final Writer writer )

-        throws IOException

-    {

-        writer.write( "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>" );

-    }

-

-    private void writePlugin( final Writer writer, final Definition def )

+    protected void writePlugin( final Writer writer, final Definition def )

         throws IOException

     {

         final Info info = def.getInfo();

@@ -131,10 +112,21 @@
             writeTaskDefs( writer, plugin );

             writeListenerDefs( writer, plugin );

         }

-        writeClasspath( writer, def );

+        writeClasspath( writer, def, "  ", true );

         writer.write( "\n</plugin>\n" );

     }

 

+   /**

+    * Write the XML header.

+    * @param writer the writer

+    * @throws IOException if unable to write xml

+    */

+    private void writeHeader( final Writer writer )

+        throws IOException

+    {

+        writer.write( "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>" );

+    }

+

     private void writeTaskDefs( final Writer writer, final Plugin plugin )

         throws IOException

     {

@@ -185,20 +177,28 @@
         {

             writer.write( "\n    <version>" + version + "</version>" );

         }

-        writer.write( "\n    <type>" + TYPE + "</type>" );

+        writer.write( "\n    <type>" + m_type + "</type>" );

         writer.write( "\n  </info>" );

     }

 

-    private void writeClasspath( final Writer writer, final Definition def )

+   /**

+    * Write the classpath.  If the fag is true, then include this defintion 

+    * in the claspath.

+    */

+    protected void writeClasspath( 

+      final Writer writer, final Definition def, String padding, boolean flag )

         throws IOException

     {

-        writer.write( "\n  <classpath>" );

-        final String pad = "    ";

+        writer.write( "\n" + padding + "<classpath>" );

+        final String pad = padding + "  ";

         final ResourceRef[] resources =

           def.getResourceRefs( Policy.RUNTIME, ResourceRef.ANY, true );

         writeResourceRefs( writer, pad, resources );

-        writeResource( writer, pad, def );

-        writer.write( "\n  </classpath>" );

+        if( flag )

+        {

+            writeResource( writer, pad, def );

+        }

+        writer.write( "\n" + padding + "</classpath>" );

     }

 

     private void writeResourceRefs( 


Modified: 
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/JUnitTestTask.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/JUnitTestTask.java 
 (original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/JUnitTestTask.java 
 Wed Jun 30 03:10:42 2004
@@ -107,7 +107,7 @@
 

         if( src.exists() )

         {

-            final File classes = new File( m_test, "classes" );

+            final File classes = getContext().getTestClassesDirectory();

             mkDir( classes );

 

             final Definition definition = getHome().getDefinition( getKey() );


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 30 03:10:42 2004
@@ -41,7 +41,7 @@
     public void execute() throws BuildException 

     {

         final File classes =

-          getContext().getBuildPath( JavacTask.BUILD_CLASSES_KEY );

+          getContext().getClassesDirectory();

         final File deliverables =

           getContext().getDeliverablesDirectory();

 


Modified: 
avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/JavacTask.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/JavacTask.java     
 (original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/JavacTask.java     
 Wed Jun 30 03:10:42 2004
@@ -38,8 +38,6 @@
  */

 public class JavacTask extends SystemTask

 {

-    public static final String BUILD_CLASSES_KEY = "classes";

-    public static final String BUILD_CLASSES_PATH = "classes";

 

     public static final String DEBUG_KEY = "java.compile.debug";

     public static final boolean DEBUG_VALUE = false;

@@ -55,9 +53,6 @@
             final Project project = getProject();

             project.setNewProperty( DEBUG_KEY, "" + DEBUG_VALUE );

             project.setNewProperty( FORK_KEY, "" + FORK_VALUE );

-            getContext().setBuildPath( 

-              BUILD_CLASSES_KEY, 

-              BUILD_CLASSES_PATH );

         }

     }

 

@@ -69,7 +64,7 @@
 

         if( main.exists() )

         {

-            final File classes = getContext().getBuildPath( BUILD_CLASSES_KEY );

+            final File classes = getContext().getClassesDirectory();

             mkDir( classes );

 

             final ResourceRef ref = new ResourceRef( getKey() );


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to