diff --git a/proposal/myrmidon/build.xml b/proposal/myrmidon/build.xml index ba3b73486..a0f401824 100644 --- a/proposal/myrmidon/build.xml +++ b/proposal/myrmidon/build.xml @@ -108,7 +108,7 @@ Legal: - + diff --git a/proposal/myrmidon/src/java/org/apache/ant/Main.java b/proposal/myrmidon/src/java/org/apache/ant/Main.java index bd6507e96..6f5ccaa1d 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/Main.java +++ b/proposal/myrmidon/src/java/org/apache/ant/Main.java @@ -30,8 +30,8 @@ import org.apache.ant.project.ProjectEngine; import org.apache.ant.project.ProjectListener; import org.apache.ant.runtime.AntEngine; import org.apache.ant.runtime.DefaultAntEngine; -import org.apache.ant.tasklet.JavaVersion; -import org.apache.ant.tasklet.TaskletContext; +import org.apache.myrmidon.api.JavaVersion; +import org.apache.myrmidon.api.TaskContext; import org.apache.ant.tasklet.engine.TaskletEngine; import org.apache.avalon.excalibur.cli.CLArgsParser; import org.apache.avalon.excalibur.cli.CLOption; @@ -495,7 +495,7 @@ public class Main //defines.put( AntContextResources.TASKLIB_DIR, m_taskLibDir ); //defines.put( TaskletContext.JAVA_VERSION, getJavaVersion() ); - final TaskletContext context = project.getContext(); + final TaskContext context = project.getContext(); addToContext( context, defines ); //Add system properties second so that they overide user-defined properties @@ -508,7 +508,7 @@ public class Main * @param context the context * @param map the map of names->values */ - protected void addToContext( final TaskletContext context, final Map map ) + protected void addToContext( final TaskContext context, final Map map ) { final Iterator keys = map.keySet().iterator(); diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/AntCall.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/AntCall.java index 21bc9f219..c61f9063c 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/AntCall.java +++ b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/AntCall.java @@ -11,9 +11,9 @@ import java.util.ArrayList; import org.apache.ant.AntException; import org.apache.ant.project.Project; import org.apache.ant.project.ProjectEngine; -import org.apache.ant.tasklet.AbstractTasklet; -import org.apache.ant.tasklet.DefaultTaskletContext; -import org.apache.ant.tasklet.TaskletContext; +import org.apache.myrmidon.api.AbstractTask; +import org.apache.myrmidon.api.DefaultTaskContext; +import org.apache.myrmidon.api.TaskContext; import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.ComponentException; import org.apache.avalon.framework.component.Composable; @@ -25,20 +25,20 @@ import org.apache.avalon.framework.context.Context; * @author Peter Donald */ public class AntCall - extends AbstractTasklet + extends AbstractTask implements Composable { protected ProjectEngine m_projectEngine; protected Project m_project; protected String m_target; protected ArrayList m_properties = new ArrayList(); - protected TaskletContext m_childContext; + protected TaskContext m_childContext; protected ComponentManager m_componentManager; public void contextualize( final Context context ) { super.contextualize( context ); - m_childContext = new DefaultTaskletContext( getContext() ); + m_childContext = new DefaultTaskContext( getContext() ); } public void compose( final ComponentManager componentManager ) diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Echo.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Echo.java index a405d0aa1..7721abe42 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Echo.java +++ b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Echo.java @@ -8,7 +8,7 @@ package org.apache.ant.modules.basic; import org.apache.ant.AntException; -import org.apache.ant.tasklet.AbstractTasklet; +import org.apache.myrmidon.api.AbstractTask; /** * This is the echo task to display a message. @@ -16,7 +16,7 @@ import org.apache.ant.tasklet.AbstractTasklet; * @author Peter Donald */ public class Echo - extends AbstractTasklet + extends AbstractTask { protected String m_message; diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Property.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Property.java index d920281c1..a80d51f7e 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Property.java +++ b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/Property.java @@ -13,8 +13,8 @@ import org.apache.ant.configuration.Configurer; import org.apache.ant.convert.Converter; import org.apache.ant.tasklet.DataType; import org.apache.ant.tasklet.engine.DataTypeEngine; -import org.apache.ant.tasklet.AbstractTasklet; -import org.apache.ant.tasklet.TaskletContext; +import org.apache.myrmidon.api.AbstractTask; +import org.apache.myrmidon.api.TaskContext; import org.apache.ant.tasklet.engine.TaskletEngine; import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.ComponentException; @@ -30,7 +30,7 @@ import org.apache.avalon.framework.context.Resolvable; * @author Peter Donald */ public class Property - extends AbstractTasklet + extends AbstractTask implements Configurable, Composable { protected String m_name; @@ -158,7 +158,7 @@ public class Property throw new AntException( "Value must be specified" ); } - final TaskletContext context = getContext(); + final TaskContext context = getContext(); Object value = m_value; @@ -178,7 +178,7 @@ public class Property } else { - context.setProperty( m_name, value, TaskletContext.PARENT ); + context.setProperty( m_name, value, TaskContext.PARENT ); } } } diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToFileConverter.java b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToFileConverter.java index 136399e77..a14fb441e 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToFileConverter.java +++ b/proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToFileConverter.java @@ -9,8 +9,8 @@ package org.apache.ant.modules.basic; import java.io.File; import org.apache.ant.convert.AbstractConverter; -import org.apache.ant.tasklet.TaskletContext; import org.apache.avalon.framework.context.Context; +import org.apache.myrmidon.api.TaskContext; /** * String to file converter @@ -28,8 +28,8 @@ public class StringToFileConverter public Object convert( final Object original, final Context context ) throws Exception { - final TaskletContext taskletContext = (TaskletContext)context; - return taskletContext.resolveFile( (String)original ); + final TaskContext taskContext = (TaskContext)context; + return taskContext.resolveFile( (String)original ); } } diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/core/AbstractResourceRegisterer.java b/proposal/myrmidon/src/java/org/apache/ant/modules/core/AbstractResourceRegisterer.java index 553a2b0ac..be98119d2 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/modules/core/AbstractResourceRegisterer.java +++ b/proposal/myrmidon/src/java/org/apache/ant/modules/core/AbstractResourceRegisterer.java @@ -11,7 +11,7 @@ import java.io.File; import java.net.MalformedURLException; import java.net.URL; import org.apache.ant.AntException; -import org.apache.ant.tasklet.AbstractTasklet; +import org.apache.myrmidon.api.AbstractTask; import org.apache.ant.tasklet.engine.TaskletEngine; import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.ComponentException; @@ -24,7 +24,7 @@ import org.apache.avalon.framework.camelot.RegistryException; * @author Peter Donald */ public abstract class AbstractResourceRegisterer - extends AbstractTasklet + extends AbstractTask implements Composable { protected String m_lib; diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterConverter.java b/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterConverter.java index cf216d9e3..bdae660dc 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterConverter.java +++ b/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterConverter.java @@ -13,7 +13,7 @@ import java.net.URL; import org.apache.ant.AntException; import org.apache.ant.convert.engine.ConverterEngine; import org.apache.ant.convert.engine.DefaultConverterInfo; -import org.apache.ant.tasklet.AbstractTasklet; +import org.apache.myrmidon.api.AbstractTask; import org.apache.ant.tasklet.engine.TaskletEngine; import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.ComponentException; @@ -28,7 +28,7 @@ import org.apache.avalon.framework.camelot.RegistryException; * @author Peter Donald */ public class RegisterConverter - extends AbstractTasklet + extends AbstractTask implements Composable { protected String m_sourceType; diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklib.java b/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklib.java index 652135905..c1cd8088d 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklib.java +++ b/proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklib.java @@ -11,7 +11,7 @@ import java.io.File; import java.net.MalformedURLException; import java.net.URL; import org.apache.ant.AntException; -import org.apache.ant.tasklet.AbstractTasklet; +import org.apache.myrmidon.api.AbstractTask; import org.apache.ant.tasklet.engine.TaskletEngine; import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.ComponentException; @@ -24,7 +24,7 @@ import org.apache.avalon.framework.camelot.DeploymentException; * @author Peter Donald */ public class RegisterTasklib - extends AbstractTasklet + extends AbstractTask implements Composable { protected String m_lib; diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/test/ConfigurationTest.java b/proposal/myrmidon/src/java/org/apache/ant/modules/test/ConfigurationTest.java index dcfdfb418..3e3ffb6c1 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/modules/test/ConfigurationTest.java +++ b/proposal/myrmidon/src/java/org/apache/ant/modules/test/ConfigurationTest.java @@ -8,7 +8,7 @@ package org.apache.ant.modules.test; import org.apache.ant.AntException; -import org.apache.ant.tasklet.AbstractTasklet; +import org.apache.myrmidon.api.AbstractTask; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.Configurable; import org.apache.avalon.framework.configuration.ConfigurationException; @@ -19,7 +19,7 @@ import org.apache.avalon.framework.configuration.ConfigurationException; * @author Peter Donald */ public class ConfigurationTest - extends AbstractTasklet + extends AbstractTask implements Configurable { private String m_message; diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/test/ContentTest.java b/proposal/myrmidon/src/java/org/apache/ant/modules/test/ContentTest.java index cb1a5c177..23778cbe7 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/modules/test/ContentTest.java +++ b/proposal/myrmidon/src/java/org/apache/ant/modules/test/ContentTest.java @@ -8,7 +8,7 @@ package org.apache.ant.modules.test; import org.apache.ant.AntException; -import org.apache.ant.tasklet.AbstractTasklet; +import org.apache.myrmidon.api.AbstractTask; /** * This is to test whether content is added. @@ -16,7 +16,7 @@ import org.apache.ant.tasklet.AbstractTasklet; * @author Peter Donald */ public class ContentTest - extends AbstractTasklet + extends AbstractTask { public void addContent( final Integer value ) { @@ -31,7 +31,7 @@ public class ContentTest */ public void execute() - throws AntException + throws Exception { } } diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/test/PrimitiveTypesTest.java b/proposal/myrmidon/src/java/org/apache/ant/modules/test/PrimitiveTypesTest.java index 598dcc9a8..8baad0d22 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/modules/test/PrimitiveTypesTest.java +++ b/proposal/myrmidon/src/java/org/apache/ant/modules/test/PrimitiveTypesTest.java @@ -9,7 +9,7 @@ package org.apache.ant.modules.test; import org.apache.ant.AntException; -import org.apache.ant.tasklet.AbstractTasklet; +import org.apache.myrmidon.api.AbstractTask; /** * Test conversion of all the primitive types. @@ -17,7 +17,7 @@ import org.apache.ant.tasklet.AbstractTasklet; * @author Peter Donald */ public class PrimitiveTypesTest - extends AbstractTasklet + extends AbstractTask { public void setInteger( final Integer value ) { diff --git a/proposal/myrmidon/src/java/org/apache/ant/modules/test/SubElementTest.java b/proposal/myrmidon/src/java/org/apache/ant/modules/test/SubElementTest.java index dc9c105c8..29f98221a 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/modules/test/SubElementTest.java +++ b/proposal/myrmidon/src/java/org/apache/ant/modules/test/SubElementTest.java @@ -8,7 +8,7 @@ package org.apache.ant.modules.test; import org.apache.ant.AntException; -import org.apache.ant.tasklet.AbstractTasklet; +import org.apache.myrmidon.api.AbstractTask; /** * Test sub-elements addition. @@ -16,7 +16,7 @@ import org.apache.ant.tasklet.AbstractTasklet; * @author Peter Donald */ public class SubElementTest - extends AbstractTasklet + extends AbstractTask { public static final class Beep { diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProject.java b/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProject.java index de15a3af3..8f59780ee 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProject.java +++ b/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProject.java @@ -13,8 +13,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import org.apache.ant.AntException; -import org.apache.ant.tasklet.DefaultTaskletContext; -import org.apache.ant.tasklet.TaskletContext; +import org.apache.myrmidon.api.DefaultTaskContext; +import org.apache.myrmidon.api.TaskContext; /** * Default project implementation. @@ -24,7 +24,7 @@ import org.apache.ant.tasklet.TaskletContext; public class DefaultProject implements Project { - protected final TaskletContext m_baseContext = new DefaultTaskletContext(); + protected final TaskContext m_baseContext = new DefaultTaskContext(); protected final HashMap m_targets = new HashMap(); protected Target m_implicitTarget; protected String m_defaultTarget; @@ -87,7 +87,7 @@ public class DefaultProject * * @return the context */ - public TaskletContext getContext() + public TaskContext getContext() { return m_baseContext; } diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectBuilder.java b/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectBuilder.java index 6d4407d72..e97a35340 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectBuilder.java +++ b/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectBuilder.java @@ -11,7 +11,7 @@ import java.io.File; import java.io.IOException; import java.util.Iterator; import org.apache.ant.AntException; -import org.apache.ant.tasklet.TaskletContext; +import org.apache.myrmidon.api.TaskContext; import org.apache.ant.util.Condition; import org.apache.avalon.framework.ExceptionUtil; import org.apache.avalon.framework.configuration.Configuration; @@ -118,8 +118,8 @@ public class DefaultProjectBuilder project.setDefaultTargetName( defaultTarget ); //setup basic context of project - final TaskletContext context = project.getContext(); - context.setProperty( TaskletContext.BASE_DIRECTORY, baseDirectory ); + final TaskContext context = project.getContext(); + context.setProperty( TaskContext.BASE_DIRECTORY, baseDirectory ); context.setProperty( Project.PROJECT_FILE, file ); context.setProperty( Project.PROJECT, projectName ); diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectEngine.java b/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectEngine.java index 4a2d20bc4..43a027bde 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectEngine.java +++ b/proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectEngine.java @@ -10,8 +10,8 @@ package org.apache.ant.project; import java.util.ArrayList; import java.util.Iterator; import org.apache.ant.AntException; -import org.apache.ant.tasklet.DefaultTaskletContext; -import org.apache.ant.tasklet.TaskletContext; +import org.apache.myrmidon.api.DefaultTaskContext; +import org.apache.myrmidon.api.TaskContext; import org.apache.ant.tasklet.engine.DefaultTaskletEngine; import org.apache.ant.tasklet.engine.TaskletEngine; import org.apache.ant.util.Condition; @@ -87,7 +87,7 @@ public class DefaultProjectEngine //HACK: should do this a better way !!!!!! m_componentManager.put( "org.apache.ant.project.Project", project ); - final TaskletContext context = project.getContext(); + final TaskContext context = project.getContext(); final String projectName = (String)context.getProperty( Project.PROJECT ); @@ -110,7 +110,7 @@ public class DefaultProjectEngine * @param context the context * @exception AntException if an error occurs */ - public void execute( Project project, String target, TaskletContext context ) + public void execute( Project project, String target, TaskContext context ) throws AntException { execute( project, target, context, new ArrayList() ); @@ -127,7 +127,7 @@ public class DefaultProjectEngine */ protected void execute( final Project project, final String targetName, - final TaskletContext context, + final TaskContext context, final ArrayList done ) throws AntException { @@ -165,7 +165,7 @@ public class DefaultProjectEngine */ protected void executeTarget( final String targetName, final Target target, - final TaskletContext context ) + final TaskContext context ) throws AntException { //is this necessary ? I think not but .... @@ -173,7 +173,7 @@ public class DefaultProjectEngine //m_componentManager.put( "org.apache.ant.project.Target", target ); //create project context and set target name - final TaskletContext targetContext = new DefaultTaskletContext( context ); + final TaskContext targetContext = new DefaultTaskContext( context ); targetContext.setProperty( Project.TARGET, targetName ); //notify listeners @@ -196,7 +196,7 @@ public class DefaultProjectEngine */ protected void executeTargetWork( final String name, final Target target, - final TaskletContext context ) + final TaskContext context ) { //check the condition associated with target. //if it is not satisfied then skip target @@ -229,7 +229,7 @@ public class DefaultProjectEngine * @param context the context * @exception AntException if an error occurs */ - protected void executeTask( final Configuration task, final TaskletContext context ) + protected void executeTask( final Configuration task, final TaskContext context ) throws AntException { final String name = task.getName(); @@ -241,7 +241,7 @@ public class DefaultProjectEngine //final TaskletContext targetContext = new DefaultTaskletContext( context ); //is setting name even necessary ??? - context.setProperty( TaskletContext.NAME, name ); + context.setProperty( TaskContext.NAME, name ); //notify listeners m_listenerSupport.taskletStarted( name ); diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/Project.java b/proposal/myrmidon/src/java/org/apache/ant/project/Project.java index 1ccb84604..ff05548dd 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/project/Project.java +++ b/proposal/myrmidon/src/java/org/apache/ant/project/Project.java @@ -9,7 +9,7 @@ package org.apache.ant.project; import java.util.Iterator; import org.apache.ant.AntException; -import org.apache.ant.tasklet.TaskletContext; +import org.apache.myrmidon.api.TaskContext; import org.apache.avalon.framework.component.Component; /** @@ -65,5 +65,5 @@ public interface Project * * @return the context */ - TaskletContext getContext(); + TaskContext getContext(); } diff --git a/proposal/myrmidon/src/java/org/apache/ant/project/ProjectEngine.java b/proposal/myrmidon/src/java/org/apache/ant/project/ProjectEngine.java index 805f490f0..a28732af8 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/project/ProjectEngine.java +++ b/proposal/myrmidon/src/java/org/apache/ant/project/ProjectEngine.java @@ -8,7 +8,7 @@ package org.apache.ant.project; import org.apache.ant.AntException; -import org.apache.ant.tasklet.TaskletContext; +import org.apache.myrmidon.api.TaskContext; import org.apache.ant.tasklet.engine.TaskletEngine; import org.apache.avalon.framework.component.Component; @@ -55,6 +55,6 @@ public interface ProjectEngine * @param context the context * @exception AntException if an error occurs */ - void execute( Project project, String target, TaskletContext context ) + void execute( Project project, String target, TaskContext context ) throws AntException; } diff --git a/proposal/myrmidon/src/java/org/apache/ant/runtime/DefaultAntEngine.java b/proposal/myrmidon/src/java/org/apache/ant/runtime/DefaultAntEngine.java index 678a606f8..8ea85a8b2 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/runtime/DefaultAntEngine.java +++ b/proposal/myrmidon/src/java/org/apache/ant/runtime/DefaultAntEngine.java @@ -14,7 +14,7 @@ import org.apache.ant.configuration.Configurer; import org.apache.ant.convert.engine.ConverterEngine; import org.apache.ant.project.ProjectBuilder; import org.apache.ant.project.ProjectEngine; -import org.apache.ant.tasklet.JavaVersion; +import org.apache.myrmidon.api.JavaVersion; import org.apache.ant.tasklet.engine.DataTypeEngine; import org.apache.ant.tasklet.engine.TaskletEngine; import org.apache.ant.tasklet.engine.TskDeployer; diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/Tasklet.java b/proposal/myrmidon/src/java/org/apache/ant/tasklet/Tasklet.java deleted file mode 100644 index 740e07828..000000000 --- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/Tasklet.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) The Apache Software Foundation. All rights reserved. - * - * This software is published under the terms of the Apache Software License - * version 1.1, a copy of which has been included with this distribution in - * the LICENSE file. - */ -package org.apache.ant.tasklet; - -import org.apache.avalon.framework.component.Component; - -/** - * This represents the individual tasks. - * Particular instances can also implement Initializable - * and/or Disposable, in which case init()/dispose() will - * be called at appropriate time. - * The task can also implement Composable in which case required - * facilities will be passed via a ComponentManager. The actual - * facilties is determined by particular task engine but will usually - * include ProjectEngine and TaskEngine. - * - * @author Peter Donald - */ -public interface Tasklet - extends Component -{ - void execute() - throws Exception; -} diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTaskletEngine.java b/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTaskletEngine.java index 4b8da3c4b..23d4f22b2 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTaskletEngine.java +++ b/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTaskletEngine.java @@ -14,8 +14,8 @@ import org.apache.ant.configuration.DefaultConfigurer; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.Configurable; import org.apache.ant.convert.engine.ConverterEngine; -import org.apache.ant.tasklet.Tasklet; -import org.apache.ant.tasklet.TaskletContext; +import org.apache.myrmidon.api.Task; +import org.apache.myrmidon.api.TaskContext; import org.apache.avalon.framework.logger.AbstractLoggable; import org.apache.avalon.framework.component.Component; import org.apache.avalon.framework.component.ComponentManager; @@ -98,43 +98,44 @@ public class DefaultTaskletEngine lookup( "org.apache.ant.convert.engine.ConverterEngine" ); } - public void execute( final Configuration task, final TaskletContext context ) + public void execute( final Configuration taskData, final TaskContext context ) throws AntException { getLogger().debug( "Creating" ); - final Tasklet tasklet = createTasklet( task.getName() ); - setupLogger( tasklet ); + final Task task = createTask( taskData.getName() ); + setupLogger( task ); getLogger().debug( "Contextualizing" ); - doContextualize( tasklet, task, context ); + doContextualize( task, taskData, context ); getLogger().debug( "Composing" ); - doCompose( tasklet, task ); + doCompose( task, taskData ); getLogger().debug( "Configuring" ); - doConfigure( tasklet, task, context ); + doConfigure( task, taskData, context ); getLogger().debug( "Initializing" ); - doInitialize( tasklet, task ); + doInitialize( task, taskData ); getLogger().debug( "Running" ); - try { tasklet.execute(); } + + try { task.execute(); } catch( final Exception e ) { throw new AntException( "Error executing task", e ); } getLogger().debug( "Disposing" ); - doDispose( tasklet, task ); + doDispose( task, taskData ); } - protected Tasklet createTasklet( final String name ) + protected Task createTask( final String name ) throws AntException { try { final Locator locator = (Locator)m_locatorRegistry.getInfo( name, Locator.class ); - return (Tasklet)m_factory.create( locator, Tasklet.class ); + return (Task)m_factory.create( locator, Task.class ); } catch( final RegistryException re ) { @@ -146,80 +147,80 @@ public class DefaultTaskletEngine } } - protected void doConfigure( final Tasklet tasklet, - final Configuration task, - final TaskletContext context ) + protected void doConfigure( final Task task, + final Configuration taskData, + final TaskContext context ) throws AntException { - try { m_configurer.configure( tasklet, task, context ); } + try { m_configurer.configure( task, taskData, context ); } catch( final Throwable throwable ) { - throw new AntException( "Error configuring task " + task.getName() + " at " + - task.getLocation() + "(Reason: " + + throw new AntException( "Error configuring task " + taskData.getName() + " at " + + taskData.getLocation() + "(Reason: " + throwable.getMessage() + ")", throwable ); } } - protected void doCompose( final Tasklet tasklet, final Configuration task ) + protected void doCompose( final Task task, final Configuration taskData ) throws AntException { - if( tasklet instanceof Composable ) + if( task instanceof Composable ) { - try { ((Composable)tasklet).compose( m_componentManager ); } + try { ((Composable)task).compose( m_componentManager ); } catch( final Throwable throwable ) { - throw new AntException( "Error composing task " + task.getName() + " at " + - task.getLocation() + "(Reason: " + + throw new AntException( "Error composing task " + taskData.getName() + " at " + + taskData.getLocation() + "(Reason: " + throwable.getMessage() + ")", throwable ); } } } - protected void doContextualize( final Tasklet tasklet, - final Configuration task, - final TaskletContext context ) + protected void doContextualize( final Task task, + final Configuration taskData, + final TaskContext context ) throws AntException { try { - if( tasklet instanceof Contextualizable ) + if( task instanceof Contextualizable ) { - ((Contextualizable)tasklet).contextualize( context ); + ((Contextualizable)task).contextualize( context ); } } catch( final Throwable throwable ) { - throw new AntException( "Error contextualizing task " + task.getName() + " at " + - task.getLocation() + "(Reason: " + + throw new AntException( "Error contextualizing task " + taskData.getName() + " at " + + taskData.getLocation() + "(Reason: " + throwable.getMessage() + ")", throwable ); } } - protected void doDispose( final Tasklet tasklet, final Configuration task ) + protected void doDispose( final Task task, final Configuration taskData ) throws AntException { - if( tasklet instanceof Disposable ) + if( task instanceof Disposable ) { - try { ((Disposable)tasklet).dispose(); } + try { ((Disposable)task).dispose(); } catch( final Throwable throwable ) { - throw new AntException( "Error disposing task " + task.getName() + " at " + - task.getLocation() + "(Reason: " + + throw new AntException( "Error disposing task " + taskData.getName() + " at " + + taskData.getLocation() + "(Reason: " + throwable.getMessage() + ")", throwable ); } } } - protected void doInitialize( final Tasklet tasklet, final Configuration task ) + protected void doInitialize( final Task task, final Configuration taskData ) throws AntException { - if( tasklet instanceof Initializable ) + if( task instanceof Initializable ) { - try { ((Initializable)tasklet).initialize(); } + try { ((Initializable)task).initialize(); } catch( final Throwable throwable ) { - throw new AntException( "Error initializing task " + task.getName() + " at " + - task.getLocation() + "(Reason: " + + throw new AntException( "Error initializing task " + taskData.getName() + " at " + + taskData.getLocation() + "(Reason: " + throwable.getMessage() + ")", throwable ); } } diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TaskletEngine.java b/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TaskletEngine.java index f2e6c2275..fb30ea5a6 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TaskletEngine.java +++ b/proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TaskletEngine.java @@ -10,7 +10,7 @@ package org.apache.ant.tasklet.engine; import org.apache.ant.AntException; import org.apache.ant.convert.engine.ConverterEngine; import org.apache.ant.tasklet.engine.DataTypeEngine; -import org.apache.ant.tasklet.TaskletContext; +import org.apache.myrmidon.api.TaskContext; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.component.Component; import org.apache.avalon.framework.component.ComponentManager; @@ -60,6 +60,6 @@ public interface TaskletEngine * @param task the configruation data for task * @exception AntException if an error occurs */ - void execute( Configuration task, TaskletContext context ) + void execute( Configuration task, TaskContext context ) throws AntException; } diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/AbstractTasklet.java b/proposal/myrmidon/src/java/org/apache/myrmidon/api/AbstractTask.java similarity index 81% rename from proposal/myrmidon/src/java/org/apache/ant/tasklet/AbstractTasklet.java rename to proposal/myrmidon/src/java/org/apache/myrmidon/api/AbstractTask.java index 4899f10e5..e25ffc1f0 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/AbstractTasklet.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/api/AbstractTask.java @@ -5,7 +5,7 @@ * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ -package org.apache.ant.tasklet; +package org.apache.myrmidon.api; import org.apache.ant.AntException; import org.apache.avalon.framework.activity.Disposable; @@ -15,16 +15,16 @@ import org.apache.avalon.framework.context.Contextualizable; import org.apache.avalon.framework.logger.AbstractLoggable; /** - * This is abstract base class for tasklets. + * This is the class that Task writers should extend to provide custom tasks. * * @author Peter Donald */ -public abstract class AbstractTasklet +public abstract class AbstractTask extends AbstractLoggable - implements Tasklet, Contextualizable, Initializable, Disposable + implements Task, Contextualizable, Initializable, Disposable { ///Variable to hold context for use by sub-classes - private TaskletContext m_context; + private TaskContext m_context; /** * Retrieve context from container. @@ -33,7 +33,7 @@ public abstract class AbstractTasklet */ public void contextualize( final Context context ) { - m_context = (TaskletContext)context; + m_context = (TaskContext)context; } /** @@ -62,7 +62,7 @@ public abstract class AbstractTasklet * * @return the context */ - protected final TaskletContext getContext() + protected final TaskContext getContext() { return m_context; } diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/DefaultTaskletContext.java b/proposal/myrmidon/src/java/org/apache/myrmidon/api/DefaultTaskContext.java similarity index 87% rename from proposal/myrmidon/src/java/org/apache/ant/tasklet/DefaultTaskletContext.java rename to proposal/myrmidon/src/java/org/apache/myrmidon/api/DefaultTaskContext.java index 343efea62..2cc18522f 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/DefaultTaskletContext.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/api/DefaultTaskContext.java @@ -5,39 +5,38 @@ * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ -package org.apache.ant.tasklet; +package org.apache.myrmidon.api; import java.io.File; import org.apache.ant.AntException; -import org.apache.avalon.framework.context.DefaultContext; -import org.apache.avalon.framework.context.ContextException; -import org.apache.avalon.excalibur.property.PropertyException; -import org.apache.avalon.excalibur.property.PropertyUtil; import org.apache.avalon.excalibur.io.FileUtil; +import org.apache.avalon.excalibur.property.PropertyException; +import org.apache.avalon.excalibur.property.PropertyUtil; +import org.apache.avalon.framework.context.ContextException; +import org.apache.avalon.framework.context.DefaultContext; /** - * Default implementation of TaskletContext. - * It represents the *Context* in which a task can be executed. + * Default implementation of TaskContext. * * @author Peter Donald */ -public class DefaultTaskletContext +public class DefaultTaskContext extends DefaultContext - implements TaskletContext + implements TaskContext { - protected File m_baseDirectory; + private File m_baseDirectory; /** * Constructor for Context with no parent contexts. */ - public DefaultTaskletContext() + public DefaultTaskContext() { this( null ); } /** * Constructor. */ - public DefaultTaskletContext( final TaskletContext parent ) + public DefaultTaskContext( final TaskContext parent ) { super( parent ); @@ -64,7 +63,7 @@ public class DefaultTaskletContext } } - + /** * Retrieve Name of tasklet. * @@ -93,10 +92,10 @@ public class DefaultTaskletContext } /** - * Resolve filename. + * Resolve filename. * This involves resolving it against baseDirectory and - * removing ../ and ./ references. It also means formatting - * it appropriately for the particular OS (ie different OS have + * removing ../ and ./ references. It also means formatting + * it appropriately for the particular OS (ie different OS have * different volumes, file conventions etc) * * @param filename the filename to resolve @@ -110,7 +109,7 @@ public class DefaultTaskletContext } /** - * Resolve property. + * Resolve property. * This evaluates all property substitutions based on current context. * * @param property the property to resolve @@ -151,7 +150,7 @@ public class DefaultTaskletContext { setProperty( name, value, CURRENT ); } - + /** * Set property value. * @@ -164,23 +163,23 @@ public class DefaultTaskletContext if( CURRENT == scope ) put( name, value ); else if( PARENT == scope ) { - if( null == m_parent ) + if( null == m_parent ) { throw new AntException( "Can't set a property with parent scope when context " + - " has no parent" ); + " has no parent" ); } else { - ((DefaultTaskletContext)m_parent).put( name, value ); + ((DefaultTaskContext)m_parent).put( name, value ); } } else if( TOP_LEVEL == scope ) { - DefaultTaskletContext context = this; + DefaultTaskContext context = this; while( null != context.m_parent ) { - context = (DefaultTaskletContext)context.m_parent; + context = (DefaultTaskContext)context.m_parent; } context.put( name, value ); @@ -194,7 +193,7 @@ public class DefaultTaskletContext /** * put a value in context. - * This put method is overidden so new baseDirectory can be saved + * This put method is overidden so new baseDirectory can be saved * in member variable. * * @param key the key @@ -228,19 +227,19 @@ public class DefaultTaskletContext if( BASE_DIRECTORY.equals( name ) && !( value instanceof File ) ) { throw new AntException( "Property " + BASE_DIRECTORY + - " must have a value of type " + + " must have a value of type " + File.class.getName() ); } else if( NAME.equals( name ) && !( value instanceof String ) ) { throw new AntException( "Property " + NAME + - " must have a value of type " + + " must have a value of type " + String.class.getName() ); } else if( JAVA_VERSION.equals( name ) && !( value instanceof JavaVersion ) ) { throw new AntException( "property " + JAVA_VERSION + - " must have a value of type " + + " must have a value of type " + JavaVersion.class.getName() ); } } diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/JavaVersion.java b/proposal/myrmidon/src/java/org/apache/myrmidon/api/JavaVersion.java similarity index 97% rename from proposal/myrmidon/src/java/org/apache/ant/tasklet/JavaVersion.java rename to proposal/myrmidon/src/java/org/apache/myrmidon/api/JavaVersion.java index 21ad3a5f8..df47b185b 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/JavaVersion.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/api/JavaVersion.java @@ -5,7 +5,7 @@ * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ -package org.apache.ant.tasklet; +package org.apache.myrmidon.api; import org.apache.avalon.framework.ValuedEnum; diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/api/Task.java b/proposal/myrmidon/src/java/org/apache/myrmidon/api/Task.java new file mode 100644 index 000000000..5dd3bc8e5 --- /dev/null +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/api/Task.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) The Apache Software Foundation. All rights reserved. + * + * This software is published under the terms of the Apache Software License + * version 1.1, a copy of which has been included with this distribution in + * the LICENSE file. + */ +package org.apache.myrmidon.api; + +/** + * This is the interface that tasks implement to be executed in Myrmidon runtime. + * + * Instances can also implement the Avalon lifecycle methods + * Loggable, Contextualizable, Composable, Initializable and Disposable. + * Each of these lifecycle stages will be executed at appropriate time. + * + * Tasks can also choose to implement Configurable if they wish to directly + * receive the Configuration data representing the task. If this interface is + * not implemented then the engine will be responsbil for mapping configuration + * to task object. + * + * The Components passed in via ComponentManager are determined by container. + * Most containers will include the Engine and Registrys. + * + * @author Peter Donald + */ +public interface Task +{ + /** + * Execute task. + * This method is called to perform actual work associated with task. + * It is called after Task has been Configured and Initialized and before + * beig Disposed (If task implements appropriate interfaces). + * + * @exception Exception if an error occurs + */ + void execute() + throws Exception; +} diff --git a/proposal/myrmidon/src/java/org/apache/ant/tasklet/TaskletContext.java b/proposal/myrmidon/src/java/org/apache/myrmidon/api/TaskContext.java similarity index 84% rename from proposal/myrmidon/src/java/org/apache/ant/tasklet/TaskletContext.java rename to proposal/myrmidon/src/java/org/apache/myrmidon/api/TaskContext.java index c83a7bf67..45cd9dabf 100644 --- a/proposal/myrmidon/src/java/org/apache/ant/tasklet/TaskletContext.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/api/TaskContext.java @@ -5,19 +5,22 @@ * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ -package org.apache.ant.tasklet; +package org.apache.myrmidon.api; import java.io.File; -import org.apache.avalon.framework.context.Context; import org.apache.avalon.framework.Enum; -import org.apache.avalon.framework.ValuedEnum; +import org.apache.avalon.framework.context.Context; /** - * This represents the *Context* in which a task can be executed. + * This interface represents the Context in which Task is executed. + * Like other Component APIs the TaskContext represents the communication + * path between the container and the Task. + * Unlike other APIs the Logging is provided through another interface (Loggable) + * as is access to Peer components (via Composable). * * @author Peter Donald */ -public interface TaskletContext +public interface TaskContext extends Context { //these values are used when setting properties to indicate the scope at @@ -37,14 +40,14 @@ public interface TaskletContext * @return the version of JVM */ JavaVersion getJavaVersion(); - + /** * Retrieve Name of tasklet. * * @return the name */ String getName(); - + /** * Retrieve base directory. * @@ -53,10 +56,10 @@ public interface TaskletContext File getBaseDirectory(); /** - * Resolve filename. + * Resolve filename. * This involves resolving it against baseDirectory and - * removing ../ and ./ references. It also means formatting - * it appropriately for the particular OS (ie different OS have + * removing ../ and ./ references. It also means formatting + * it appropriately for the particular OS (ie different OS have * different volumes, file conventions etc) * * @param filename the filename to resolve @@ -65,7 +68,7 @@ public interface TaskletContext File resolveFile( String filename ); /** - * Resolve property. + * Resolve property. * This evaluates all property substitutions based on current context. * * @param property the property to resolve @@ -88,7 +91,7 @@ public interface TaskletContext * @param value the value of property */ void setProperty( String name, Object value ); - + /** * Set property value. * @@ -96,7 +99,7 @@ public interface TaskletContext * @param value the value of property * @param scope the scope at which to set property */ - void setProperty( String name, Object value, ScopeEnum scope ); + void setProperty( String name, Object value, ScopeEnum scope ); /** * Safe wrapper class for Scope enums.