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 );
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.