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/07/05 16:07:08 UTC

svn commit: rev 22593 - in avalon/trunk: . tools tools/magic tools/magic/src/main/org/apache/avalon/tools/model tools/magic/src/main/org/apache/avalon/tools/tasks

Author: mcconnell
Date: Mon Jul  5 07:07:08 2004
New Revision: 22593

Modified:
   avalon/trunk/build.xml
   avalon/trunk/tools/index.xml
   avalon/trunk/tools/magic/README.TXT
   avalon/trunk/tools/magic/bootstrap.xml
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Gump.java
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Home.java
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Info.java
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Magic.java
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/XMLDefinitionBuilder.java
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/GumpTask.java
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/PluginTask.java
Log:


Modified: avalon/trunk/build.xml
==============================================================================
--- avalon/trunk/build.xml	(original)
+++ avalon/trunk/build.xml	Mon Jul  5 07:07:08 2004
@@ -50,7 +50,7 @@
     <x:gump description="Magic Test Module" 
          public="true" filename="gump.xml">
       <x:url href="http://avalon.apache.org/"/>
-      <x:svn href="https://svn.apache.org/repos/asf/avalon/trunk"/>
+      <x:svn repository="avalon-svn" dir="trunk"/>
       <x:license file="central/system/license/LICENSE.TXT"/>
     </x:gump>
   </target>

Modified: avalon/trunk/tools/index.xml
==============================================================================
--- avalon/trunk/tools/index.xml	(original)
+++ avalon/trunk/tools/index.xml	Mon Jul  5 07:07:08 2004
@@ -22,7 +22,8 @@
       <type>jar</type>
     </info>
     <gump>
-      <ignore/>
+      <!--<ignore/>-->
+      <classpath/>
       <alias>ant</alias>
       <id>nodeps</id>
     </gump>
@@ -36,7 +37,8 @@
       <type>jar</type>
     </info>
     <gump>
-      <ignore/>
+      <!--<ignore/>-->
+      <classpath/>
       <alias>ant</alias>
       <id>junit</id>
     </gump>

Modified: avalon/trunk/tools/magic/README.TXT
==============================================================================
--- avalon/trunk/tools/magic/README.TXT	(original)
+++ avalon/trunk/tools/magic/README.TXT	Mon Jul  5 07:07:08 2004
@@ -12,4 +12,8 @@
 
   $ ant clean install
 
+To simulate a gump build of magic by magic
+
+ $ ant -Dmagic.home=target/123 -Dgump.signature=123 -Dgump.resource.ant=lib/ant.jar -Dgump.resource.junit=lib/junit.jar -Dgump.resource.ant-junit=lib/ant-junit.jar -Dgump.resource.ant-nodeps=lib/ant-nodeps.jar
+
 

Modified: avalon/trunk/tools/magic/bootstrap.xml
==============================================================================
--- avalon/trunk/tools/magic/bootstrap.xml	(original)
+++ avalon/trunk/tools/magic/bootstrap.xml	Mon Jul  5 07:07:08 2004
@@ -83,4 +83,29 @@
     <delete dir="${target}"/> 
   </target>
 
+  <target name="signature-check" unless="gump.signature.declared">
+    <fail maessage="Required property 'gump.signature' is undefined."/>
+  </target>
+
+  <!--
+  Setup magic's home directory.  This task will be invoked by gump
+  following the bootstrap phase. The location of magic.home will be 
+  establised as target/target/${gump.signature}.
+  -->
+  <target name="home" depends="signature-check">
+    <property name="home" location="${basedir}/target/${gump.signature}"/>
+    <echo>Creating 'magic.home' in ${home}</echo>
+    <mkdir dir="${home}"/>
+    <mkdir dir="${home}/docs"/>
+    <mkdir dir="${home}/cache"/>
+    <mkdir dir="${home}/templates"/>
+    <mkdir dir="${home}/themes"/>
+    <copy todir="${home}/templates">
+      <fileset dir="target/deliverables/templates"/>
+    </copy>
+    <copy todir="${home}/themes">
+      <fileset dir="target/deliverables/themes"/>
+    </copy>
+  </target>
+
 </project>

Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Gump.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Gump.java	(original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Gump.java	Mon Jul  5 07:07:08 2004
@@ -27,15 +27,19 @@
  */
 public class Gump 
 {
-    public static final Gump NULL_GUMP = new Gump( null, null );
+    public static final Gump NULL_GUMP = new Gump( null, null, false, false );
 
     private String m_alias;
     private String m_id;
+    private boolean m_ignore;
+    private boolean m_classpath;
 
-    public Gump( final String alias, final String id )
+    public Gump( final String alias, final String id, boolean classpath, boolean ignore )
     {
         m_alias = alias;
         m_id = id;
+        m_ignore = ignore;
+        m_classpath = classpath;
     }
 
    /**
@@ -52,5 +56,23 @@
     public String getId()
     {
         return m_id;
+    }
+
+   /**
+    * Return true if this defintion can be ignored when 
+    * building a gump project dependency.
+    */
+    public boolean isIgnorable()
+    {
+        return m_ignore;
+    }
+
+   /**
+    * Return true if this defintion is required as part of the 
+    * classpath established by gump.
+    */
+    public boolean isClasspathEntry()
+    {
+        return m_classpath;
     }
 }

Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Home.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Home.java	(original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Home.java	Mon Jul  5 07:07:08 2004
@@ -247,9 +247,31 @@
         try
         {
             final Element root = ElementHelper.getRootElement( source );
-            final Element[] elements = ElementHelper.getChildren( root );
-            final File anchor = source.getParentFile();
-            buildLocalList( anchor, elements );
+            final String rootElementName = root.getTagName();
+            if( "index".equals( rootElementName ) )
+            {
+                //
+                // its a native magic index
+                //
+
+                final Element[] elements = ElementHelper.getChildren( root );
+                final File anchor = source.getParentFile();
+                buildLocalList( anchor, elements );
+            }
+            else if( "project".equals( rootElementName ) )
+            {
+                //
+                // its probably a maven project definition
+                //
+
+                buildFromMavenProject( source, root );
+            }
+            else
+            {
+                final String error = 
+                  "Unrecognized rooot element [" + rootElementName + "].";
+                throw new BuildException( error );
+            }
         }
         catch( Throwable e )
         {
@@ -451,6 +473,23 @@
           "resource".equals( tag ) 
           || "project".equals( tag )
           || "plugin".equals( tag ) );
+    }
+
+   /**
+    * Create a magic index from a maven project file.
+    * @param root the root DOM element of the maven project file
+    */
+    private void buildFromMavenProject( File file, Element root )
+    {
+        //
+        // maven uses the notion of project inheritance which is 
+        // functionally equivalent to magic's index inclusion
+        // .. so the first step is to resolve the any project
+        // that the target project extends
+        //
+        
+        throw new UnsupportedOperationException();
+
     }
 
     /*

Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Info.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Info.java	(original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Info.java	Mon Jul  5 07:07:08 2004
@@ -60,15 +60,15 @@
       final Home home, final String group, final String name, final String version, 
       final String type, boolean snapshot )
     {
-        //if( home.isGump() ) 
-        //{
-        //    final String sig = home.getGumpSignature();
-        //    return new Info( group, name, sig, type, snapshot );
-        //}
-        //else
-        //{
+        if( home.isGump() )
+        {
+            final String signature = home.getGumpSignature();
+            return new Info( group, name, signature, type, false );
+        }
+        else
+        {
             return new Info( group, name, version, type, snapshot );
-        //}
+        }
     }
 
     private String m_name;

Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Magic.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Magic.java	(original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/Magic.java	Mon Jul  5 07:07:08 2004
@@ -117,14 +117,10 @@
         setProject( project );
 
         m_signature = project.getProperty( GUMP_SIGNATURE_KEY );
-
         m_system = getSystemDirectory( project );
-
         project.setProperty( KEY, Context.getCanonicalPath( m_system ) );
-
         File user = new File( m_system, "user.properties" );
         loadProperties( project, user );
-
         File properties = new File( m_system, "magic.properties" );
         loadProperties( project, properties );
 
@@ -316,6 +312,13 @@
 
     private File getSystemDirectory( final Project project )
     {
+        final String path = project.getProperty( "magic.home" );
+        if( null != path )
+        {
+            File system = new File( path );
+            return Context.getCanonicalFile( system );
+        }
+
         final Property property = (Property) project.createTask( "property" );
         property.setEnvironment( "env" );
         property.init();

Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/XMLDefinitionBuilder.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/XMLDefinitionBuilder.java	(original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/model/XMLDefinitionBuilder.java	Mon Jul  5 07:07:08 2004
@@ -173,12 +173,12 @@
         final String name =
           ElementHelper.getValue( 
             ElementHelper.getChild( info, "name" ) );
-        final String version =
-          ElementHelper.getValue( 
-            ElementHelper.getChild( info, "version" ) );
         final String type =
           ElementHelper.getValue( 
             ElementHelper.getChild( info, "type" ) );
+        final String version =
+          ElementHelper.getValue( 
+            ElementHelper.getChild( info, "version" ) );
         final boolean status = createSnapshotPolicy( info );
         return Info.create( home, group, name, version, type, status );
     }
@@ -199,7 +199,9 @@
         final String id =
           ElementHelper.getValue( 
             ElementHelper.getChild( info, "id" ) );
-        return new Gump( alias, id );
+        final boolean classpath = (null != ElementHelper.getChild( info, "classpath" ));
+        final boolean ignore = (null != ElementHelper.getChild( info, "ignore" ));
+        return new Gump( alias, id, classpath, ignore );
     }
 
     private static ResourceRef[] createResourceRefs( final Element element )

Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/GumpTask.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/GumpTask.java	(original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/GumpTask.java	Mon Jul  5 07:07:08 2004
@@ -102,11 +102,44 @@
     {
     }
 
-    public static class Cvs extends Href
+    public static class Repository extends Href
+    {
+        private String m_repository;
+        private String m_dir;
+
+        public void setRepository( String repository )
+        {
+            m_repository = repository;
+        }
+
+        public void setDir( String dir )
+        {
+            if( dir.endsWith( "/" ) )
+            {
+                m_dir = dir;
+            }
+            else
+            {
+                m_dir = dir + "/";
+            }
+        }
+
+        public String getRepository()
+        {
+            return m_repository;
+        }
+
+        public String getDir()
+        {
+            return m_dir;
+        }
+    }
+
+    public static class Cvs extends Repository
     {
     }
 
-    public static class Svn extends Href
+    public static class Svn extends Repository
     {
     }
 
@@ -286,11 +319,27 @@
 
         if( null != m_svn )
         {
-            writer.write( "\n  <svn href=\"" + m_svn.getHref() + "\"/>" );
+            if( null != m_svn.getHref() )
+            {
+                writer.write( "\n  <svn href=\"" + m_svn.getHref() + "\"/>" );
+            }
+            else
+            {
+                writer.write( "\n  <svn repository=\"" + m_svn.getRepository() 
+                  + "\" dir=\"" + m_svn.getDir() + "\"/>" );
+            }
         }
-        else if( null != m_svn )
+        else if( null != m_cvs )
         {
-            writer.write( "\n  <cvs href=\"" + m_cvs.getHref() + "\"/>" );
+            if( null != m_cvs.getHref() )
+            {
+                writer.write( "\n  <cvs href=\"" + m_cvs.getHref() + "\"/>" );
+            }
+            else
+            {
+                writer.write( "\n  <cvs repository=\"" + m_cvs.getRepository() 
+                  + "\" dir=\"" + m_cvs.getDir() + "\"/>" );
+            }
         }
 
         Definition[] definitions = home.getDefinitions();
@@ -399,13 +448,18 @@
         writer.write( 
            "\n      <!-- for magic -->" );
         writer.write( 
+           "\n      <depend name=\"magic.home\" resource=\"home\"" );
+        writer.write( 
+           "\n          project=\"avalon-tools-magic-home\" inherit=\"runtime\" />" );
+        writer.write( 
            "\n      <property name=\"gump.signature\" value=\"@@DATE@@\"/>" );
 
         boolean flag = false;
         for( int i=0; i<refs.length; i++ )
         {
             Resource resource = getHome().getResource( refs[i] );
-            if( !(resource instanceof Definition) )
+            boolean ignorable = resource.getGump().isIgnorable();
+            if( !(resource instanceof Definition) && !ignorable )
             {
                 if( !flag )
                 {
@@ -423,9 +477,17 @@
                 {
                     writer.write( " id=\"" + id + "\"" );
                 }
-                writer.write( ">" );
-                writer.write( "\n        <noclasspath/>" );
-                writer.write( "\n      </depend>" );
+
+                if( resource.getGump().isClasspathEntry() )
+                {
+                    writer.write( "/>" );
+                }
+                else
+                {
+                    writer.write( ">" );
+                    writer.write( "\n        <noclasspath/>" );
+                    writer.write( "\n      </depend>" );
+                }
             }
         }
 
@@ -433,14 +495,6 @@
         writer.write( "\n    </ant>" );       
 
         //
-        // add the magic bootstrap dependency
-        //
-
-        writer.write( "\n    <!-- magic -->" );
-        writer.write( 
-          "\n    <depend project=\"avalon-tools-magic-bootstrap\" inherit=\"true\" runtime=\"true\"/>" );
-
-        //
         // add dependencies for gump to do its sequencing correctly
         //
 
@@ -448,7 +502,8 @@
         for( int i=0; i<refs.length; i++ )
         {
             Resource resource = getHome().getResource( refs[i] );
-            if( resource instanceof Definition )
+            boolean ignorable = resource.getGump().isIgnorable();
+            if( ( resource instanceof Definition ) && !ignorable )
             {
                 if( !flag )
                 {
@@ -456,8 +511,20 @@
                     writer.write( "\n    <!-- for gump -->" );
                 }
                 String key = resource.getKey();
+
                 writer.write( 
-                  "\n    <depend project=\"" + key + "\"><noclasspath/></depend>" );
+                  "\n    <depend project=\"" + key + "\"" );
+
+                if( resource.getGump().isClasspathEntry() )
+                {
+                    writer.write( "/>" );
+                }
+                else
+                {
+                    writer.write( ">" );
+                    writer.write( "\n      <noclasspath/>" );
+                    writer.write( "\n    </depend>" );
+                }
             }
         }
 
@@ -478,18 +545,18 @@
         {
             writer.write( 
               "\n    <jar name=\"" + type + "s/" 
-              + filename + "\"/>" );
+              + name + "-@@DATE@@." + type  + "\"/>" );
         }
         if( "plugin".equals( type ) )
         {
             writer.write( 
               "\n    <jar name=\"jars/" 
-              + filename + "\"/>" );
+              + name + "-@@DATE@@." + type  + "\"/>" );
         }
         else if( "doc".equals( type ) )
         {
             writer.write( 
-              "\n    <!-- doc output is relative to the module root -->" );
+              "\n    <!-- doc output is relative merlin home docs cache -->" );
         }
 
         writer.write( "\n    <nag to=\"dev@avalon.apache.org\"" ); 

Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/PluginTask.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/PluginTask.java	(original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/PluginTask.java	Mon Jul  5 07:07:08 2004
@@ -74,7 +74,6 @@
             // get the xml definition of the plugin
             //
 
-
             final String id = getArtifactSpec();
             final Info info = Info.create( getHome(), id );
 

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