Author: mcconnell
Date: Sun Jun 27 18:28:59 2004
New Revision: 22206

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/Magic.java
   avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/HomeTask.java
Log:
Tweaking of the href based remote index loading functionality including addition of a 
trap to ensure we don't get into a recursive import.

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   Sun 
Jun 27 18:28:59 2004
@@ -19,6 +19,7 @@
 

 import org.apache.tools.ant.BuildException;

 import org.apache.tools.ant.BuildListener;

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

 import org.apache.tools.ant.Project;

 import org.apache.tools.ant.taskdefs.Get;

 import org.apache.tools.ant.taskdefs.Property;

@@ -30,6 +31,7 @@
 import java.net.URL;

 import java.util.ArrayList;

 import java.util.Hashtable;

+import java.util.Date;

 

 /**

  *

@@ -42,6 +44,9 @@
     // static

     //-------------------------------------------------------------

 

+    public static final String BANNER = 

+      "------------------------------------------------------------------------";

+

     public static final String KEY = "project.home";

     public static final String HOME_KEY = "project.home";

     public static final String INDEX_KEY = "project.index";

@@ -53,17 +58,19 @@
 

     private final File m_index;

     private final Hashtable m_resources = new Hashtable();

+    private final ArrayList m_includes = new ArrayList();

     private final Magic m_system;

 

     //-------------------------------------------------------------

     // constructor

     //-------------------------------------------------------------

 

-    protected Home( final Project project, Magic system, File index )

+    protected Home( Project project, Magic system, File index )

     {

+        setProject( project );

+        project.log( "index: " + index );

         m_index = index;

         m_system = system;

-        setProject( project );

         buildList( index, false );

     }

 

@@ -218,17 +225,33 @@
                 final String path = element.getAttribute( "href" );

                 if(( null != path ) && ( !"".equals( path ) ))

                 {

-                    File index = createTempFile();

-                    index.deleteOnExit(); // safety harness in case we abort

-                    final URL url = createURL( path );

-                    final Get get = (Get) project.createTask( "get" );

-                    get.setSrc( url );

-                    get.setDest( index );

-                    get.setIgnoreErrors( false );

-                    get.setUseTimestamp( true );

-                    get.setVerbose( false );

-                    get.execute();

-                    buildList( index, true );

+                    if( !m_includes.contains( path ) )

+                    {

+                        File index = createTempFile();

+                        final URL url = createURL( path );

+                        final Get get = (Get) project.createTask( "get" );

+                        get.setSrc( url );

+                        get.setDest( index );

+                        get.setIgnoreErrors( false );

+                        get.setUseTimestamp( false );

+                        get.setVerbose( false );

+                        get.execute();

+

+                        m_includes.add( path );

+

+                        try

+                        {

+                            buildList( index, true );

+                        }

+                        catch( BuildException be )

+                        {

+                            final String error = 

+                              "Model error occured while processing import."

+                              + "\n" + path;

+                            getProject().log( error );

+                            throw be;

+                        }

+                    }

                 }

                 else

                 {

@@ -236,7 +259,11 @@
                     if(( null != filename ) && ( !"".equals( filename ) ))

                     {

                         final File index = Context.getFile( system, path );

-                        buildList( index, true );

+                        if( !m_includes.contains( index.toString() ) )

+                        {

+                            m_includes.add( index );

+                            buildList( index, true );

+                        }

                     }

                     else

                     {


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  Sun 
Jun 27 18:28:59 2004
@@ -19,6 +19,7 @@
 

 import org.apache.tools.ant.BuildException;

 import org.apache.tools.ant.BuildListener;

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

 import org.apache.tools.ant.Project;

 import org.apache.tools.ant.taskdefs.Property;

 import org.apache.tools.ant.taskdefs.optional.net.SetProxy;

@@ -142,11 +143,9 @@
             project.log( "  host: " + hosts[i], Project.MSG_VERBOSE ); 

         }

         project.log( 

-          "main cache: " + m_main.getCacheDirectory(), 

-          Project.MSG_VERBOSE );

+          "cache: " + m_main.getCacheDirectory(), Project.MSG_VERBOSE );

         project.log( 

-          "docs cache: " + m_docs.getCacheDirectory(), 

-          Project.MSG_VERBOSE );

+          "docs: " + m_docs.getCacheDirectory(), Project.MSG_VERBOSE );

     }

 

     //-------------------------------------------------------------


Modified: avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/HomeTask.java
==============================================================================
--- avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/HomeTask.java      
 (original)
+++ avalon/trunk/tools/magic/src/main/org/apache/avalon/tools/tasks/HomeTask.java      
 Sun Jun 27 18:28:59 2004
@@ -51,7 +51,7 @@
 

         if( null != getProject().getReference( Home.KEY ) ) return;

 

-        Magic system = Magic.getSystem( project );

+        Magic system = Magic.getSystem( project );        

         Home home = system.getHome( project, m_path );

         File root = getHomeDirectory( home );

 


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

Reply via email to