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/12 18:28:56 UTC

svn commit: rev 21148 - in avalon/trunk/tools/project/src/main/org/apache/avalon/tools: home tasks

Author: mcconnell
Date: Sat Jun 12 09:28:55 2004
New Revision: 21148

Modified:
   avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Context.java
   avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Home.java
   avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/ArtifactTask.java
   avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/HomeTask.java
   avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JUnitTestTask.java
   avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JarTask.java
   avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/PluginTask.java
Log:
cleaning up property handling and adding support for disabling of unit test execution at system level

Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Context.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Context.java	(original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Context.java	Sat Jun 12 09:28:55 2004
@@ -20,6 +20,10 @@
 import java.io.File;
 import java.util.Hashtable;
 import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.SimpleTimeZone;
+import java.util.TimeZone;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Task;
@@ -322,4 +326,17 @@
         }
         return new File( root, path );
     }
+
+    public static String getSignature()
+    {
+        return getSignature( new Date() );
+    }
+
+    public static String getSignature( Date date )
+    {
+        SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMdd.HHmmss" );
+        sdf.setTimeZone( TimeZone.getTimeZone( "UTC" ) );
+        return sdf.format( date );
+    }
+
 }

Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Home.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Home.java	(original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/home/Home.java	Sat Jun 12 09:28:55 2004
@@ -69,8 +69,8 @@
     public static final String KEY = "project.home";
     public static final String HOME_KEY = "project.home";
 
-    private static final String USER_PROPERTIES = "user.properties";
-    private static final String BUILD_PROPERTIES = "build.properties";
+    public static final String AVALON_HOME_KEY = "avalon.home";
+    public static final String AVALON_REPOSITORY_KEY = "avalon.repository";
 
     //-------------------------------------------------------------
     // mutable state
@@ -78,12 +78,10 @@
 
     private boolean m_init = false;
 
-    private String m_id;
-
     private Home m_home;
     private Repository m_repository;
     private File m_system;
-    private File m_file;
+    private File m_index;
 
     private final Hashtable m_resources = new Hashtable();
     private BuildListener m_listener;
@@ -92,38 +90,33 @@
     // constructor
     //-------------------------------------------------------------
 
-    public Home( Project project, String id )
+    public Home( Project project, File index )
     {
         setProject( project );
-        m_id = id;
-        setupHome();
-    }
+        m_index = index;
+        log( "Building system definition." );
+        try
+        {
+            m_system = m_index.getParentFile();
 
-    //-------------------------------------------------------------
-    // Task
-    //-------------------------------------------------------------
+            Element root = ElementHelper.getRootElement( m_index );
+            final Element repo = ElementHelper.getChild( root, "repository" );
+            final Element resources = ElementHelper.getChild( root, "resources" );
+            final Element projects = ElementHelper.getChild( root, "projects" );
 
-    private String getHomeID()
-    {
-        if( null == m_id )
-        {
-            return KEY;
-        }
-        else
-        {
-            return m_id;
-        }
-    }
+            //
+            // construct the repository, build the definition of the available 
+            // resources and projects used within the system and associate a build
+            // listener
+            //
 
-    private Home getHome()
-    {
-        if( m_home != null )
-        {
-            return m_home;
+            m_repository = createRepository( repo );
+            buildResourceList( resources );
+            buildProjectList( projects );
         }
-        else
+        catch( Throwable e )
         {
-            return this;
+            throw new BuildException( e );
         }
     }
 
@@ -281,40 +274,9 @@
         return repository;
     }
 
-    private void setupHome()
-    {
-        Project project = getProject();
-        log( "Building system definition." );
-        try
-        {
-            File index = getIndexFile();
-            m_system = index.getParentFile();
-            setupProperties( project, m_system );
-            Element root = ElementHelper.getRootElement( index );
-            final Element repo = ElementHelper.getChild( root, "repository" );
-            final Element resources = ElementHelper.getChild( root, "resources" );
-            final Element projects = ElementHelper.getChild( root, "projects" );
-
-            //
-            // construct the repository, build the definition of the available 
-            // resources and projects used within the system and associate a build
-            // listener
-            //
-
-            m_repository = createRepository( repo );
-            buildResourceList( resources );
-            buildProjectList( projects );
-
-        }
-        catch( Throwable e )
-        {
-            throw new BuildException( e );
-        }
-    }
-
     private File getIndexFile()
     {
-        if( null != m_file ) return m_file;
+        if( null != m_index ) return m_index;
 
         String path = project.getProperty( KEY );
         if( null != path )
@@ -347,31 +309,6 @@
         }
     }
 
-    private void setupProperties( Project project, File dir )
-    {
-        setupUserProperties( project, dir );
-        setupBuildProperties( project, dir );
-    }
-
-    private void setupUserProperties( Project project, File basedir )
-    {
-        File user = Context.getFile( basedir, USER_PROPERTIES );
-        readProperties( project, user );
-    }
-
-    private void setupBuildProperties( Project project, File basedir )
-    {
-        File build = Context.getFile( basedir, BUILD_PROPERTIES );
-        readProperties( project, build );
-    }
-
-    private void readProperties( Project project, File file ) throws BuildException 
-    {
-        Property props = (Property) project.createTask( "property" );
-        props.setFile( file );
-        props.init();
-        props.execute();
-    }
 
    /*
     public void build( Definition definition )

Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/ArtifactTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/ArtifactTask.java	(original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/ArtifactTask.java	Sat Jun 12 09:28:55 2004
@@ -203,10 +203,8 @@
               + file;
             throw new BuildException( error );
         }
-        SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMdd.HHmmss" );
-        sdf.setTimeZone( TimeZone.getTimeZone( "UTC" ) );
         Date created = new Date( file.lastModified() );
-        return sdf.format( created );
+        return Context.getSignature( created );
     }
 
     private void writeClasspath( final Writer writer, final Definition def )

Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/HomeTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/HomeTask.java	(original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/HomeTask.java	Sat Jun 12 09:28:55 2004
@@ -24,6 +24,7 @@
 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.Property;
 import org.apache.tools.ant.taskdefs.Jar;
 import org.apache.tools.ant.types.FileSet;
 import org.apache.tools.ant.types.Path;
@@ -41,71 +42,88 @@
 public class HomeTask extends ContextualTask
 {
     private static final String CACHE_DIR_KEY = "project.home.cache.dir";
+    private static final String USER_PROPERTIES = "user.properties";
+    private static final String BUILD_PROPERTIES = "build.properties";
 
     private static Home HOME;
 
-    private String m_id;
-
-   /**
-    * Set the home ref id to the system home.  If not supplied the 
-    * default system home 'project.home' id will apply.
-    *
-    * @param id a home id
-    */
-    public void setRefid( String id )
-    {
-        m_id = id;
-    }
-
     public void init() 
     {
         if( !isInitialized() )
         {
             super.init();
+            Project project = getProject();
+            File index = getIndexFile();
+            setupProperties( project, index.getParentFile() );
             if( null == HOME )
             {
-                HOME = new Home( getProject(), Home.KEY );
+                HOME = new Home( project, index );
             }
-            getProject().addReference( Home.KEY, HOME );
+            project.addReference( Home.KEY, HOME );
+            
             getProject().setNewProperty( 
               CACHE_DIR_KEY, 
               HOME.getRepository().getCacheDirectory().toString() );
         }
     }
 
-    private String getHomeID()
+    private void setupProperties( Project project, File dir )
     {
-        if( null == m_id )
-        {
-            return Home.KEY;
-        }
-        else
-        {
-            return m_id;
-        }
+        setupUserProperties( project, dir );
+        setupBuildProperties( project, dir );
     }
 
-    private Home getHomeFromReference( String id )
+    private void setupUserProperties( Project project, File dir )
     {
-        Object object = getProject().getReference( id );
-        if( null == object )
-        {
-            return null;
-        }
-        if( object instanceof Home )
+        File user = Context.getFile( dir, USER_PROPERTIES );
+        readProperties( project, user );
+    }
+
+    private void setupBuildProperties( Project project, File dir )
+    {
+        File build = Context.getFile( dir, BUILD_PROPERTIES );
+        readProperties( project, build );
+    }
+
+    private void readProperties( Project project, File file ) throws BuildException 
+    {
+        Property props = (Property) project.createTask( "property" );
+        props.init();
+        props.setFile( file );
+        props.execute();
+    }
+
+    private File getIndexFile()
+    {
+        String path = getProject().getProperty( Home.KEY );
+        if( null != path )
         {
-            return (Home) object;
+            File index = Context.getFile( project.getBaseDir(), path );
+            if( index.exists() )
+            {
+                if( index.isDirectory() )
+                {
+                    return new File( index, "index.xml" );
+                }
+                else
+                {
+                    return index;
+                }
+            }
+            else
+            {
+                final String error = 
+                  "Property value 'project.home' references a non-existant file: "
+                  + index;
+                throw new BuildException( error );
+            }
         }
         else
         {
             final String error = 
-              "System home ref id '" + id 
-              + "' declared or implied in task [" 
-              + getTaskName() 
-              + "] in the project ["
-              + getProject().getName() 
-              + "] references a object that is not a system home.";
+              "Cannot continue due to unresolved 'project.home' property.";
             throw new BuildException( error );
         }
     }
+
 }

Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JUnitTestTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JUnitTestTask.java	(original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JUnitTestTask.java	Sat Jun 12 09:28:55 2004
@@ -47,6 +47,8 @@
  */
 public class JUnitTestTask extends SystemTask
 {
+    public static final String TEST_ENABLED_KEY = "project.test.enabled";
+
     public static final String TEST_KEY = "project.test";
     public static final String TEST_VALUE = "test";
 
@@ -100,6 +102,13 @@
     public void execute() throws BuildException 
     {
         Project project = getProject();
+
+        String enabled = project.getProperty( TEST_ENABLED_KEY );
+        if(( null != enabled ) && enabled.equals( "false" ))
+        {
+            return;
+        }
+
         File build = getContext().getBuildDirectory();
 
         String testPath = project.getProperty( TEST_SRC_KEY );

Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JarTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JarTask.java	(original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JarTask.java	Sat Jun 12 09:28:55 2004
@@ -28,6 +28,8 @@
 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;
@@ -49,6 +51,8 @@
     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";
     
     public void execute() throws BuildException 
     {
@@ -57,12 +61,13 @@
         File deliverables = 
           getContext().getDeliverablesDirectory();
 
+        Definition def = getHome().getDefinition( getKey() );
         File jarFile = getJarFile( deliverables );
         if( classes.exists() )
         {
             try
             {
-                boolean modified = jar( classes, jarFile );
+                boolean modified = jar( def, classes, jarFile );
                 if( modified )
                 {
                     checksum( jarFile );
@@ -100,7 +105,7 @@
         }
     }
 
-    private boolean jar( File classes, File jarFile )
+    private boolean jar( Definition def, File classes, File jarFile )
     {
         File dir = jarFile.getParentFile();
         mkDir( dir );
@@ -110,15 +115,69 @@
         {
             modified = jarFile.lastModified();
         }
+
  
         Jar jar = (Jar) getProject().createTask( "jar" );
         jar.setDestFile( jarFile );
         jar.setBasedir( classes );
         jar.setIndex( true );
+        addManifest( jar, def );
         jar.init();
         jar.execute();
 
         return jarFile.lastModified() > modified;
+    }
+
+    private void addManifest( Jar jar, Definition def )
+    {
+        try
+        {
+            Manifest manifest = new Manifest();
+            Manifest.Section main = manifest.getMainSection();
+
+            addAttribute( main, "Created-By", "Apache Avalon" );
+            addAttribute( main, "Built-By", System.getProperty( "user.name" ) );
+            addAttribute( main, "Extension-Name", def.getInfo().getName() );
+            addAttribute( main, "Specification-Vendor", "The Apache Software Foundation Avalon Project" );
+
+            if( null != def.getInfo().getVersion() )
+            {
+                addAttribute( main, "Specification-Version", def.getInfo().getVersion() );
+            }
+            else
+            {
+                addAttribute( main, "Specification-Version", "1.0" );
+            }
+            addAttribute( main, "Implementation-Vendor", "The Apache Software Foundation Avalon Project" );
+            addAttribute( main, "Implementation-Vendor-Id", "org.apache.avalon" );
+            addAttribute( main, "Implementation-Version", "123" );
+
+            String classpath = getProject().getProperty( JAR_CLASSPATH_KEY );
+            if( null != classpath )
+            {
+                addAttribute( main, "Class-Path", classpath );
+            }
+
+            String mainClass = getProject().getProperty( JAR_MAIN_KEY );
+            if( null != mainClass )
+            {
+                addAttribute( main, "Main-Class", mainClass );
+            }
+            
+            jar.addConfiguredManifest( manifest );
+        }
+        catch( Throwable e )
+        {
+            throw new BuildException( e );
+        }
+    }
+
+    private void addAttribute( 
+      Manifest.Section section, String name, String value )
+      throws ManifestException
+    {
+        Manifest.Attribute attribute = new Manifest.Attribute( name, value );
+        section.addConfiguredAttribute( attribute );
     }
 
     private void checksum( File jar )

Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/PluginTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/PluginTask.java	(original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/PluginTask.java	Sat Jun 12 09:28:55 2004
@@ -87,8 +87,6 @@
             Resource resource = new Resource( getHome(), info );
             File file = resource.getArtifact( project );
 
-            //File file = getHome().getRepository().getResource( project, resource );
-
             //
             // create a utility data object from the defintion
             //

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