Browse Source

Update Launcher package and update ProjectListener* to reflect

* No project name
* tasklet->task


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269051 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 24 years ago
parent
commit
451ca455d5
11 changed files with 59 additions and 66 deletions
  1. +1
    -1
      proposal/myrmidon/build.xml
  2. +4
    -5
      proposal/myrmidon/src/java/org/apache/ant/Main.java
  3. +6
    -13
      proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectEngine.java
  4. +20
    -13
      proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectListener.java
  5. +1
    -1
      proposal/myrmidon/src/java/org/apache/ant/project/LogTargetToListenerAdapter.java
  6. +0
    -2
      proposal/myrmidon/src/java/org/apache/ant/project/ProjectBuilder.java
  7. +6
    -8
      proposal/myrmidon/src/java/org/apache/ant/project/ProjectListener.java
  8. +8
    -10
      proposal/myrmidon/src/java/org/apache/ant/project/ProjectListenerSupport.java
  9. +9
    -6
      proposal/myrmidon/src/java/org/apache/myrmidon/launcher/LauncherClassLoader.java
  10. +3
    -6
      proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java
  11. +1
    -1
      proposal/myrmidon/src/manifest/ant-manifest.mf

+ 1
- 1
proposal/myrmidon/build.xml View File

@@ -102,7 +102,7 @@ Legal:
<jar jarfile="${build.lib}/ant.jar" <jar jarfile="${build.lib}/ant.jar"
basedir="${build.classes}" basedir="${build.classes}"
manifest="${manifest.dir}/ant-manifest.mf"> manifest="${manifest.dir}/ant-manifest.mf">
<include name="org/apache/ant/launcher/*" />
<include name="org/apache/myrmidon/launcher/*" />
</jar> </jar>


<jar jarfile="${build.lib}/myrmidon.jar" <jar jarfile="${build.lib}/myrmidon.jar"


+ 4
- 5
proposal/myrmidon/src/java/org/apache/ant/Main.java View File

@@ -21,8 +21,7 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import org.apache.ant.launcher.AntClassLoader;
import org.apache.ant.launcher.AntLoader;
import org.apache.myrmidon.launcher.LauncherClassLoader;
import org.apache.ant.project.LogTargetToListenerAdapter; import org.apache.ant.project.LogTargetToListenerAdapter;
import org.apache.ant.project.Project; import org.apache.ant.project.Project;
import org.apache.ant.project.ProjectBuilder; import org.apache.ant.project.ProjectBuilder;
@@ -297,6 +296,7 @@ public class Main


//setup classloader so that it will correctly load //setup classloader so that it will correctly load
//the Project/ProjectBuilder/ProjectEngine and all dependencies //the Project/ProjectBuilder/ProjectEngine and all dependencies
//FIXEME: Use separate classloader instead of injecting
final ClassLoader classLoader = createClassLoader( libDir ); final ClassLoader classLoader = createClassLoader( libDir );
Thread.currentThread().setContextClassLoader( classLoader ); Thread.currentThread().setContextClassLoader( classLoader );


@@ -451,14 +451,14 @@ public class Main
{ {
final ClassLoader candidate = getClass().getClassLoader(); final ClassLoader candidate = getClass().getClassLoader();


if( !(candidate instanceof AntClassLoader) )
if( !(candidate instanceof LauncherClassLoader) )
{ {
getLogger().warn( "Warning: Unable to add entries from " + getLogger().warn( "Warning: Unable to add entries from " +
"lib-path to classloader" ); "lib-path to classloader" );
return candidate; return candidate;
} }


final AntClassLoader classLoader = (AntClassLoader)candidate;
final LauncherClassLoader classLoader = (LauncherClassLoader)candidate;


final ExtensionFileFilter filter = final ExtensionFileFilter filter =
new ExtensionFileFilter( new String[] { ".jar", ".zip" } ); new ExtensionFileFilter( new String[] { ".jar", ".zip" } );
@@ -502,7 +502,6 @@ public class Main
//defines.put( AntContextResources.TASKLIB_DIR, m_taskLibDir ); //defines.put( AntContextResources.TASKLIB_DIR, m_taskLibDir );
//defines.put( TaskletContext.JAVA_VERSION, getJavaVersion() ); //defines.put( TaskletContext.JAVA_VERSION, getJavaVersion() );


//final TaskContext context = project.getContext();
addToContext( context, defines ); addToContext( context, defines );


//Add system properties second so that they overide user-defined properties //Add system properties second so that they overide user-defined properties


+ 6
- 13
proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectEngine.java View File

@@ -35,7 +35,7 @@ public class DefaultProjectEngine
extends AbstractLoggable extends AbstractLoggable
implements ProjectEngine, Composable implements ProjectEngine, Composable
{ {
protected TaskletEngine m_taskletEngine;
protected TaskletEngine m_taskEngine;
protected ProjectListenerSupport m_listenerSupport = new ProjectListenerSupport(); protected ProjectListenerSupport m_listenerSupport = new ProjectListenerSupport();
protected DefaultComponentManager m_componentManager; protected DefaultComponentManager m_componentManager;


@@ -69,7 +69,7 @@ public class DefaultProjectEngine
throws ComponentException throws ComponentException
{ {
m_componentManager = (DefaultComponentManager)componentManager; m_componentManager = (DefaultComponentManager)componentManager;
m_taskletEngine = (TaskletEngine)componentManager.
m_taskEngine = (TaskletEngine)componentManager.
lookup( "org.apache.ant.tasklet.engine.TaskletEngine" ); lookup( "org.apache.ant.tasklet.engine.TaskletEngine" );
} }


@@ -87,13 +87,7 @@ public class DefaultProjectEngine
//HACK: should do this a better way !!!!!! //HACK: should do this a better way !!!!!!
m_componentManager.put( "org.apache.ant.project.Project", project ); m_componentManager.put( "org.apache.ant.project.Project", project );


//final TaskContext context = project.getContext();

final String projectName = (String)context.getProperty( Project.PROJECT );

m_listenerSupport.projectStarted( projectName );

//context = new DefaultTaskletContext( context );
m_listenerSupport.projectStarted();


executeTargetWork( "<init>", project.getImplicitTarget(), context ); executeTargetWork( "<init>", project.getImplicitTarget(), context );


@@ -236,7 +230,6 @@ public class DefaultProjectEngine
getLogger().debug( "Executing task " + name ); getLogger().debug( "Executing task " + name );


//Set up context for task... //Set up context for task...

//is Only necessary if we are multi-threaded //is Only necessary if we are multi-threaded
//final TaskletContext targetContext = new DefaultTaskletContext( context ); //final TaskletContext targetContext = new DefaultTaskletContext( context );


@@ -244,12 +237,12 @@ public class DefaultProjectEngine
context.setProperty( TaskContext.NAME, name ); context.setProperty( TaskContext.NAME, name );


//notify listeners //notify listeners
m_listenerSupport.taskletStarted( name );
m_listenerSupport.taskStarted( name );


//run task //run task
m_taskletEngine.execute( task, context );
m_taskEngine.execute( task, context );


//notify listeners task has ended //notify listeners task has ended
m_listenerSupport.taskletFinished();
m_listenerSupport.taskFinished();
} }
} }

+ 20
- 13
proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectListener.java View File

@@ -17,16 +17,13 @@ import org.apache.avalon.framework.ExceptionUtil;
public class DefaultProjectListener public class DefaultProjectListener
implements ProjectListener implements ProjectListener
{ {
protected String m_prefix;
private String m_prefix;


/** /**
* Notify listener of projectStarted event. * Notify listener of projectStarted event.
*
* @param projectName the projectName
*/ */
public void projectStarted( final String projectName )
public void projectStarted()
{ {
output( "Starting project " + projectName + "\n" );
} }
/** /**
@@ -54,21 +51,21 @@ public class DefaultProjectListener
} }
/** /**
* Notify listener of taskletStarted event.
* Notify listener of taskStarted event.
* *
* @param taskletName the name of tasklet
* @param taskName the name of task
*/ */
public void taskletStarted( final String taskletName )
public void taskStarted( final String taskName )
{ {
m_prefix = taskletName;
setPrefix( taskName );
} }
/** /**
* Notify listener of taskletFinished event.
* Notify listener of taskFinished event.
*/ */
public void taskletFinished()
public void taskFinished()
{ {
m_prefix = null;
setPrefix( null );
} }
/** /**
@@ -100,7 +97,17 @@ public class DefaultProjectListener
*/ */
protected void output( final String data ) protected void output( final String data )
{ {
if( null != m_prefix ) System.out.println( "\t[" + m_prefix + "] " + data );
if( null != getPrefix() ) System.out.println( "\t[" + getPrefix() + "] " + data );
else System.out.println( data ); else System.out.println( data );
} }

protected final String getPrefix()
{
return m_prefix;
}

protected final void setPrefix( final String prefix )
{
m_prefix = prefix;
}
} }

+ 1
- 1
proposal/myrmidon/src/java/org/apache/ant/project/LogTargetToListenerAdapter.java View File

@@ -18,7 +18,7 @@ import org.apache.log.LogTarget;
public class LogTargetToListenerAdapter public class LogTargetToListenerAdapter
implements LogTarget implements LogTarget
{ {
protected final ProjectListener m_listener;
private final ProjectListener m_listener;


/** /**
* Constructor taking listener to convert to. * Constructor taking listener to convert to.


+ 0
- 2
proposal/myrmidon/src/java/org/apache/ant/project/ProjectBuilder.java View File

@@ -31,5 +31,3 @@ public interface ProjectBuilder
Project build( File source ) Project build( File source )
throws IOException, AntException; throws IOException, AntException;
} }



+ 6
- 8
proposal/myrmidon/src/java/org/apache/ant/project/ProjectListener.java View File

@@ -17,10 +17,8 @@ public interface ProjectListener
{ {
/** /**
* Notify listener of projectStarted event. * Notify listener of projectStarted event.
*
* @param projectName the projectName
*/ */
void projectStarted( String projectName );
void projectStarted();


/** /**
* Notify listener of projectFinished event. * Notify listener of projectFinished event.
@@ -40,16 +38,16 @@ public interface ProjectListener
void targetFinished(); void targetFinished();


/** /**
* Notify listener of taskletStarted event.
* Notify listener of taskStarted event.
* *
* @param taskletName the name of tasklet
* @param taskName the name of task
*/ */
void taskletStarted( String taskletName );
void taskStarted( String taskName );


/** /**
* Notify listener of taskletFinished event.
* Notify listener of taskFinished event.
*/ */
void taskletFinished();
void taskFinished();


/** /**
* Notify listener of log message event. * Notify listener of log message event.


+ 8
- 10
proposal/myrmidon/src/java/org/apache/ant/project/ProjectListenerSupport.java View File

@@ -15,7 +15,7 @@ package org.apache.ant.project;
public class ProjectListenerSupport public class ProjectListenerSupport
implements ProjectListener implements ProjectListener
{ {
protected ProjectListener[] m_listeners = new ProjectListener[ 0 ];
private ProjectListener[] m_listeners = new ProjectListener[ 0 ];


/** /**
* Add an extra project listener that wants to receive notification of listener events. * Add an extra project listener that wants to receive notification of listener events.
@@ -61,14 +61,12 @@ public class ProjectListenerSupport


/** /**
* Fire a projectStarted event. * Fire a projectStarted event.
*
* @param projectName the projectName
*/ */
public void projectStarted( final String projectName )
public void projectStarted()
{ {
for( int i = 0; i < m_listeners.length; i++ ) for( int i = 0; i < m_listeners.length; i++ )
{ {
m_listeners[ i ].projectStarted( projectName );
m_listeners[ i ].projectStarted();
} }
} }


@@ -112,22 +110,22 @@ public class ProjectListenerSupport
* *
* @param targetName the name of target * @param targetName the name of target
*/ */
public void taskletStarted( String taskletName )
public void taskStarted( String taskName )
{ {
for( int i = 0; i < m_listeners.length; i++ ) for( int i = 0; i < m_listeners.length; i++ )
{ {
m_listeners[ i ].taskletStarted( taskletName );
m_listeners[ i ].taskStarted( taskName );
} }
} }


/** /**
* Fire a taskletFinished event.
* Fire a taskFinished event.
*/ */
public void taskletFinished()
public void taskFinished()
{ {
for( int i = 0; i < m_listeners.length; i++ ) for( int i = 0; i < m_listeners.length; i++ )
{ {
m_listeners[ i ].taskletFinished();
m_listeners[ i ].taskFinished();
} }
} }




proposal/myrmidon/src/java/org/apache/ant/launcher/AntClassLoader.java → proposal/myrmidon/src/java/org/apache/myrmidon/launcher/LauncherClassLoader.java View File

@@ -5,7 +5,7 @@
* version 1.1, a copy of which has been included with this distribution in * version 1.1, a copy of which has been included with this distribution in
* the LICENSE file. * the LICENSE file.
*/ */
package org.apache.ant.launcher;
package org.apache.myrmidon.launcher;


import java.io.File; import java.io.File;
import java.lang.reflect.Method; import java.lang.reflect.Method;
@@ -14,11 +14,12 @@ import java.net.URLClassLoader;
import java.util.StringTokenizer; import java.util.StringTokenizer;


/** /**
* Basic classloader that allows modification at runtime.
* Basic classloader that allows addition of URLs at runtime.
* Used from Main.class to inject Classes into ClassLoader.
* *
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/ */
public final class AntClassLoader
public final class LauncherClassLoader
extends URLClassLoader extends URLClassLoader
{ {
/** /**
@@ -26,7 +27,7 @@ public final class AntClassLoader
* *
* @param urls the Starting URLS * @param urls the Starting URLS
*/ */
public AntClassLoader( final URL[] urls )
public LauncherClassLoader( final URL[] urls )
{ {
super( urls ); super( urls );
} }
@@ -40,17 +41,19 @@ public final class AntClassLoader
{ {
super.addURL( url ); super.addURL( url );
} }
/** /**
* Add an array of URLs to classloader * Add an array of URLs to classloader
* *
* @param url the url * @param url the url
*/ */
public void addURLs( final URL[] urls )
/*
void addURLs( final URL[] urls )
{ {
for( int i = 0; i < urls.length; i++ ) for( int i = 0; i < urls.length; i++ )
{ {
addURL( urls[ i ] ); addURL( urls[ i ] );
} }
} }
*/
} }

proposal/myrmidon/src/java/org/apache/ant/launcher/AntLoader.java → proposal/myrmidon/src/java/org/apache/myrmidon/launcher/Main.java View File

@@ -5,24 +5,21 @@
* version 1.1, a copy of which has been included with this distribution in * version 1.1, a copy of which has been included with this distribution in
* the LICENSE file. * the LICENSE file.
*/ */
package org.apache.ant.launcher;
package org.apache.myrmidon.launcher;


import java.io.File; import java.io.File;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.net.URL; import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.StringTokenizer; import java.util.StringTokenizer;


/** /**
* Basic Loader that is responsible for all the hackery to get classloader to work. * Basic Loader that is responsible for all the hackery to get classloader to work.
* Other classes can call AntLoader.getLoader() and add to their own classloader.
* *
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
* @author <a href="mailto:mpfoemme@thoughtworks.com">Matthew Foemmel</a>
*/ */
public final class AntLoader
public final class Main
{ {
/** /**
* Magic entry point. * Magic entry point.
@@ -44,7 +41,7 @@ public final class AntLoader
final File libDir = new File( installDirectory, "lib" ); final File libDir = new File( installDirectory, "lib" );
final URL[] urls = buildURLList( libDir ); final URL[] urls = buildURLList( libDir );


final AntClassLoader classLoader = new AntClassLoader( urls );
final LauncherClassLoader classLoader = new LauncherClassLoader( urls );


//load class and retrieve appropriate main method. //load class and retrieve appropriate main method.
final Class clazz = classLoader.loadClass( "org.apache.ant.Main" ); final Class clazz = classLoader.loadClass( "org.apache.ant.Main" );

+ 1
- 1
proposal/myrmidon/src/manifest/ant-manifest.mf View File

@@ -1,3 +1,3 @@
Manifest-Version: 1.0 Manifest-Version: 1.0
Main-Class: org.apache.ant.launcher.AntLoader
Main-Class: org.apache.myrmidon.launcher.Main
Created-By: Apache Ant Project Created-By: Apache Ant Project

Loading…
Cancel
Save