Browse Source

Started to update to task engine design I have been talking about.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269048 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 24 years ago
parent
commit
6caf36ea18
27 changed files with 191 additions and 178 deletions
  1. +1
    -1
      proposal/myrmidon/build.xml
  2. +4
    -4
      proposal/myrmidon/src/java/org/apache/ant/Main.java
  3. +6
    -6
      proposal/myrmidon/src/java/org/apache/ant/modules/basic/AntCall.java
  4. +2
    -2
      proposal/myrmidon/src/java/org/apache/ant/modules/basic/Echo.java
  5. +5
    -5
      proposal/myrmidon/src/java/org/apache/ant/modules/basic/Property.java
  6. +3
    -3
      proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToFileConverter.java
  7. +2
    -2
      proposal/myrmidon/src/java/org/apache/ant/modules/core/AbstractResourceRegisterer.java
  8. +2
    -2
      proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterConverter.java
  9. +2
    -2
      proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklib.java
  10. +2
    -2
      proposal/myrmidon/src/java/org/apache/ant/modules/test/ConfigurationTest.java
  11. +3
    -3
      proposal/myrmidon/src/java/org/apache/ant/modules/test/ContentTest.java
  12. +2
    -2
      proposal/myrmidon/src/java/org/apache/ant/modules/test/PrimitiveTypesTest.java
  13. +2
    -2
      proposal/myrmidon/src/java/org/apache/ant/modules/test/SubElementTest.java
  14. +4
    -4
      proposal/myrmidon/src/java/org/apache/ant/project/DefaultProject.java
  15. +3
    -3
      proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectBuilder.java
  16. +10
    -10
      proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectEngine.java
  17. +2
    -2
      proposal/myrmidon/src/java/org/apache/ant/project/Project.java
  18. +2
    -2
      proposal/myrmidon/src/java/org/apache/ant/project/ProjectEngine.java
  19. +1
    -1
      proposal/myrmidon/src/java/org/apache/ant/runtime/DefaultAntEngine.java
  20. +0
    -29
      proposal/myrmidon/src/java/org/apache/ant/tasklet/Tasklet.java
  21. +42
    -41
      proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTaskletEngine.java
  22. +2
    -2
      proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TaskletEngine.java
  23. +7
    -7
      proposal/myrmidon/src/java/org/apache/myrmidon/api/AbstractTask.java
  24. +26
    -27
      proposal/myrmidon/src/java/org/apache/myrmidon/api/DefaultTaskContext.java
  25. +1
    -1
      proposal/myrmidon/src/java/org/apache/myrmidon/api/JavaVersion.java
  26. +39
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/api/Task.java
  27. +16
    -13
      proposal/myrmidon/src/java/org/apache/myrmidon/api/TaskContext.java

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

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


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

@@ -30,8 +30,8 @@ import org.apache.ant.project.ProjectEngine;
import org.apache.ant.project.ProjectListener; import org.apache.ant.project.ProjectListener;
import org.apache.ant.runtime.AntEngine; import org.apache.ant.runtime.AntEngine;
import org.apache.ant.runtime.DefaultAntEngine; 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.ant.tasklet.engine.TaskletEngine;
import org.apache.avalon.excalibur.cli.CLArgsParser; import org.apache.avalon.excalibur.cli.CLArgsParser;
import org.apache.avalon.excalibur.cli.CLOption; import org.apache.avalon.excalibur.cli.CLOption;
@@ -495,7 +495,7 @@ 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 TaskletContext context = project.getContext();
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
@@ -508,7 +508,7 @@ public class Main
* @param context the context * @param context the context
* @param map the map of names->values * @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(); final Iterator keys = map.keySet().iterator();




+ 6
- 6
proposal/myrmidon/src/java/org/apache/ant/modules/basic/AntCall.java View File

@@ -11,9 +11,9 @@ import java.util.ArrayList;
import org.apache.ant.AntException; import org.apache.ant.AntException;
import org.apache.ant.project.Project; import org.apache.ant.project.Project;
import org.apache.ant.project.ProjectEngine; 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.ComponentManager;
import org.apache.avalon.framework.component.ComponentException; import org.apache.avalon.framework.component.ComponentException;
import org.apache.avalon.framework.component.Composable; import org.apache.avalon.framework.component.Composable;
@@ -25,20 +25,20 @@ import org.apache.avalon.framework.context.Context;
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/ */
public class AntCall public class AntCall
extends AbstractTasklet
extends AbstractTask
implements Composable implements Composable
{ {
protected ProjectEngine m_projectEngine; protected ProjectEngine m_projectEngine;
protected Project m_project; protected Project m_project;
protected String m_target; protected String m_target;
protected ArrayList m_properties = new ArrayList(); protected ArrayList m_properties = new ArrayList();
protected TaskletContext m_childContext;
protected TaskContext m_childContext;
protected ComponentManager m_componentManager; protected ComponentManager m_componentManager;


public void contextualize( final Context context ) public void contextualize( final Context context )
{ {
super.contextualize( context ); super.contextualize( context );
m_childContext = new DefaultTaskletContext( getContext() );
m_childContext = new DefaultTaskContext( getContext() );
} }


public void compose( final ComponentManager componentManager ) public void compose( final ComponentManager componentManager )


+ 2
- 2
proposal/myrmidon/src/java/org/apache/ant/modules/basic/Echo.java View File

@@ -8,7 +8,7 @@
package org.apache.ant.modules.basic; package org.apache.ant.modules.basic;


import org.apache.ant.AntException; 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. * This is the echo task to display a message.
@@ -16,7 +16,7 @@ import org.apache.ant.tasklet.AbstractTasklet;
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/ */
public class Echo public class Echo
extends AbstractTasklet
extends AbstractTask
{ {
protected String m_message; protected String m_message;




+ 5
- 5
proposal/myrmidon/src/java/org/apache/ant/modules/basic/Property.java View File

@@ -13,8 +13,8 @@ import org.apache.ant.configuration.Configurer;
import org.apache.ant.convert.Converter; import org.apache.ant.convert.Converter;
import org.apache.ant.tasklet.DataType; import org.apache.ant.tasklet.DataType;
import org.apache.ant.tasklet.engine.DataTypeEngine; 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.ant.tasklet.engine.TaskletEngine;
import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.ComponentException; import org.apache.avalon.framework.component.ComponentException;
@@ -30,7 +30,7 @@ import org.apache.avalon.framework.context.Resolvable;
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/ */
public class Property public class Property
extends AbstractTasklet
extends AbstractTask
implements Configurable, Composable implements Configurable, Composable
{ {
protected String m_name; protected String m_name;
@@ -158,7 +158,7 @@ public class Property
throw new AntException( "Value must be specified" ); throw new AntException( "Value must be specified" );
} }


final TaskletContext context = getContext();
final TaskContext context = getContext();


Object value = m_value; Object value = m_value;


@@ -178,7 +178,7 @@ public class Property
} }
else else
{ {
context.setProperty( m_name, value, TaskletContext.PARENT );
context.setProperty( m_name, value, TaskContext.PARENT );
} }
} }
} }

+ 3
- 3
proposal/myrmidon/src/java/org/apache/ant/modules/basic/StringToFileConverter.java View File

@@ -9,8 +9,8 @@ package org.apache.ant.modules.basic;


import java.io.File; import java.io.File;
import org.apache.ant.convert.AbstractConverter; import org.apache.ant.convert.AbstractConverter;
import org.apache.ant.tasklet.TaskletContext;
import org.apache.avalon.framework.context.Context; import org.apache.avalon.framework.context.Context;
import org.apache.myrmidon.api.TaskContext;


/** /**
* String to file converter * String to file converter
@@ -28,8 +28,8 @@ public class StringToFileConverter
public Object convert( final Object original, final Context context ) public Object convert( final Object original, final Context context )
throws Exception throws Exception
{ {
final TaskletContext taskletContext = (TaskletContext)context;
return taskletContext.resolveFile( (String)original );
final TaskContext taskContext = (TaskContext)context;
return taskContext.resolveFile( (String)original );
} }
} }



+ 2
- 2
proposal/myrmidon/src/java/org/apache/ant/modules/core/AbstractResourceRegisterer.java View File

@@ -11,7 +11,7 @@ import java.io.File;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import org.apache.ant.AntException; 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.ant.tasklet.engine.TaskletEngine;
import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.ComponentException; import org.apache.avalon.framework.component.ComponentException;
@@ -24,7 +24,7 @@ import org.apache.avalon.framework.camelot.RegistryException;
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/ */
public abstract class AbstractResourceRegisterer public abstract class AbstractResourceRegisterer
extends AbstractTasklet
extends AbstractTask
implements Composable implements Composable
{ {
protected String m_lib; protected String m_lib;


+ 2
- 2
proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterConverter.java View File

@@ -13,7 +13,7 @@ import java.net.URL;
import org.apache.ant.AntException; import org.apache.ant.AntException;
import org.apache.ant.convert.engine.ConverterEngine; import org.apache.ant.convert.engine.ConverterEngine;
import org.apache.ant.convert.engine.DefaultConverterInfo; 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.ant.tasklet.engine.TaskletEngine;
import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.ComponentException; import org.apache.avalon.framework.component.ComponentException;
@@ -28,7 +28,7 @@ import org.apache.avalon.framework.camelot.RegistryException;
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/ */
public class RegisterConverter public class RegisterConverter
extends AbstractTasklet
extends AbstractTask
implements Composable implements Composable
{ {
protected String m_sourceType; protected String m_sourceType;


+ 2
- 2
proposal/myrmidon/src/java/org/apache/ant/modules/core/RegisterTasklib.java View File

@@ -11,7 +11,7 @@ import java.io.File;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import org.apache.ant.AntException; 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.ant.tasklet.engine.TaskletEngine;
import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.ComponentException; import org.apache.avalon.framework.component.ComponentException;
@@ -24,7 +24,7 @@ import org.apache.avalon.framework.camelot.DeploymentException;
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/ */
public class RegisterTasklib public class RegisterTasklib
extends AbstractTasklet
extends AbstractTask
implements Composable implements Composable
{ {
protected String m_lib; protected String m_lib;


+ 2
- 2
proposal/myrmidon/src/java/org/apache/ant/modules/test/ConfigurationTest.java View File

@@ -8,7 +8,7 @@
package org.apache.ant.modules.test; package org.apache.ant.modules.test;


import org.apache.ant.AntException; 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.Configuration;
import org.apache.avalon.framework.configuration.Configurable; import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.ConfigurationException; import org.apache.avalon.framework.configuration.ConfigurationException;
@@ -19,7 +19,7 @@ import org.apache.avalon.framework.configuration.ConfigurationException;
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/ */
public class ConfigurationTest public class ConfigurationTest
extends AbstractTasklet
extends AbstractTask
implements Configurable implements Configurable
{ {
private String m_message; private String m_message;


+ 3
- 3
proposal/myrmidon/src/java/org/apache/ant/modules/test/ContentTest.java View File

@@ -8,7 +8,7 @@
package org.apache.ant.modules.test; package org.apache.ant.modules.test;


import org.apache.ant.AntException; 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. * This is to test whether content is added.
@@ -16,7 +16,7 @@ import org.apache.ant.tasklet.AbstractTasklet;
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/ */
public class ContentTest public class ContentTest
extends AbstractTasklet
extends AbstractTask
{ {
public void addContent( final Integer value ) public void addContent( final Integer value )
{ {
@@ -31,7 +31,7 @@ public class ContentTest
*/ */


public void execute() public void execute()
throws AntException
throws Exception
{ {
} }
} }

+ 2
- 2
proposal/myrmidon/src/java/org/apache/ant/modules/test/PrimitiveTypesTest.java View File

@@ -9,7 +9,7 @@
package org.apache.ant.modules.test; package org.apache.ant.modules.test;


import org.apache.ant.AntException; import org.apache.ant.AntException;
import org.apache.ant.tasklet.AbstractTasklet;
import org.apache.myrmidon.api.AbstractTask;


/** /**
* Test conversion of all the primitive types. * Test conversion of all the primitive types.
@@ -17,7 +17,7 @@ import org.apache.ant.tasklet.AbstractTasklet;
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/ */
public class PrimitiveTypesTest public class PrimitiveTypesTest
extends AbstractTasklet
extends AbstractTask
{ {
public void setInteger( final Integer value ) public void setInteger( final Integer value )
{ {


+ 2
- 2
proposal/myrmidon/src/java/org/apache/ant/modules/test/SubElementTest.java View File

@@ -8,7 +8,7 @@
package org.apache.ant.modules.test; package org.apache.ant.modules.test;


import org.apache.ant.AntException; import org.apache.ant.AntException;
import org.apache.ant.tasklet.AbstractTasklet;
import org.apache.myrmidon.api.AbstractTask;


/** /**
* Test sub-elements addition. * Test sub-elements addition.
@@ -16,7 +16,7 @@ import org.apache.ant.tasklet.AbstractTasklet;
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/ */
public class SubElementTest public class SubElementTest
extends AbstractTasklet
extends AbstractTask
{ {
public static final class Beep public static final class Beep
{ {


+ 4
- 4
proposal/myrmidon/src/java/org/apache/ant/project/DefaultProject.java View File

@@ -13,8 +13,8 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import org.apache.ant.AntException; 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. * Default project implementation.
@@ -24,7 +24,7 @@ import org.apache.ant.tasklet.TaskletContext;
public class DefaultProject public class DefaultProject
implements Project implements Project
{ {
protected final TaskletContext m_baseContext = new DefaultTaskletContext();
protected final TaskContext m_baseContext = new DefaultTaskContext();
protected final HashMap m_targets = new HashMap(); protected final HashMap m_targets = new HashMap();
protected Target m_implicitTarget; protected Target m_implicitTarget;
protected String m_defaultTarget; protected String m_defaultTarget;
@@ -87,7 +87,7 @@ public class DefaultProject
* *
* @return the context * @return the context
*/ */
public TaskletContext getContext()
public TaskContext getContext()
{ {
return m_baseContext; return m_baseContext;
} }


+ 3
- 3
proposal/myrmidon/src/java/org/apache/ant/project/DefaultProjectBuilder.java View File

@@ -11,7 +11,7 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.Iterator; import java.util.Iterator;
import org.apache.ant.AntException; 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.ant.util.Condition;
import org.apache.avalon.framework.ExceptionUtil; import org.apache.avalon.framework.ExceptionUtil;
import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.Configuration;
@@ -118,8 +118,8 @@ public class DefaultProjectBuilder
project.setDefaultTargetName( defaultTarget ); project.setDefaultTargetName( defaultTarget );


//setup basic context of project //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_FILE, file );
context.setProperty( Project.PROJECT, projectName ); context.setProperty( Project.PROJECT, projectName );




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

@@ -10,8 +10,8 @@ package org.apache.ant.project;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import org.apache.ant.AntException; 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.DefaultTaskletEngine;
import org.apache.ant.tasklet.engine.TaskletEngine; import org.apache.ant.tasklet.engine.TaskletEngine;
import org.apache.ant.util.Condition; import org.apache.ant.util.Condition;
@@ -87,7 +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 TaskletContext context = project.getContext();
final TaskContext context = project.getContext();


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


@@ -110,7 +110,7 @@ public class DefaultProjectEngine
* @param context the context * @param context the context
* @exception AntException if an error occurs * @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 throws AntException
{ {
execute( project, target, context, new ArrayList() ); execute( project, target, context, new ArrayList() );
@@ -127,7 +127,7 @@ public class DefaultProjectEngine
*/ */
protected void execute( final Project project, protected void execute( final Project project,
final String targetName, final String targetName,
final TaskletContext context,
final TaskContext context,
final ArrayList done ) final ArrayList done )
throws AntException throws AntException
{ {
@@ -165,7 +165,7 @@ public class DefaultProjectEngine
*/ */
protected void executeTarget( final String targetName, protected void executeTarget( final String targetName,
final Target target, final Target target,
final TaskletContext context )
final TaskContext context )
throws AntException throws AntException
{ {
//is this necessary ? I think not but .... //is this necessary ? I think not but ....
@@ -173,7 +173,7 @@ public class DefaultProjectEngine
//m_componentManager.put( "org.apache.ant.project.Target", target ); //m_componentManager.put( "org.apache.ant.project.Target", target );


//create project context and set target name //create project context and set target name
final TaskletContext targetContext = new DefaultTaskletContext( context );
final TaskContext targetContext = new DefaultTaskContext( context );
targetContext.setProperty( Project.TARGET, targetName ); targetContext.setProperty( Project.TARGET, targetName );


//notify listeners //notify listeners
@@ -196,7 +196,7 @@ public class DefaultProjectEngine
*/ */
protected void executeTargetWork( final String name, protected void executeTargetWork( final String name,
final Target target, final Target target,
final TaskletContext context )
final TaskContext context )
{ {
//check the condition associated with target. //check the condition associated with target.
//if it is not satisfied then skip target //if it is not satisfied then skip target
@@ -229,7 +229,7 @@ public class DefaultProjectEngine
* @param context the context * @param context the context
* @exception AntException if an error occurs * @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 throws AntException
{ {
final String name = task.getName(); final String name = task.getName();
@@ -241,7 +241,7 @@ public class DefaultProjectEngine
//final TaskletContext targetContext = new DefaultTaskletContext( context ); //final TaskletContext targetContext = new DefaultTaskletContext( context );


//is setting name even necessary ??? //is setting name even necessary ???
context.setProperty( TaskletContext.NAME, name );
context.setProperty( TaskContext.NAME, name );


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


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

@@ -9,7 +9,7 @@ package org.apache.ant.project;


import java.util.Iterator; import java.util.Iterator;
import org.apache.ant.AntException; import org.apache.ant.AntException;
import org.apache.ant.tasklet.TaskletContext;
import org.apache.myrmidon.api.TaskContext;
import org.apache.avalon.framework.component.Component; import org.apache.avalon.framework.component.Component;


/** /**
@@ -65,5 +65,5 @@ public interface Project
* *
* @return the context * @return the context
*/ */
TaskletContext getContext();
TaskContext getContext();
} }

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

@@ -8,7 +8,7 @@
package org.apache.ant.project; package org.apache.ant.project;


import org.apache.ant.AntException; 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.ant.tasklet.engine.TaskletEngine;
import org.apache.avalon.framework.component.Component; import org.apache.avalon.framework.component.Component;


@@ -55,6 +55,6 @@ public interface ProjectEngine
* @param context the context * @param context the context
* @exception AntException if an error occurs * @exception AntException if an error occurs
*/ */
void execute( Project project, String target, TaskletContext context )
void execute( Project project, String target, TaskContext context )
throws AntException; throws AntException;
} }

+ 1
- 1
proposal/myrmidon/src/java/org/apache/ant/runtime/DefaultAntEngine.java View File

@@ -14,7 +14,7 @@ import org.apache.ant.configuration.Configurer;
import org.apache.ant.convert.engine.ConverterEngine; import org.apache.ant.convert.engine.ConverterEngine;
import org.apache.ant.project.ProjectBuilder; import org.apache.ant.project.ProjectBuilder;
import org.apache.ant.project.ProjectEngine; 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.DataTypeEngine;
import org.apache.ant.tasklet.engine.TaskletEngine; import org.apache.ant.tasklet.engine.TaskletEngine;
import org.apache.ant.tasklet.engine.TskDeployer; import org.apache.ant.tasklet.engine.TskDeployer;


+ 0
- 29
proposal/myrmidon/src/java/org/apache/ant/tasklet/Tasklet.java View File

@@ -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 <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public interface Tasklet
extends Component
{
void execute()
throws Exception;
}

+ 42
- 41
proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/DefaultTaskletEngine.java View File

@@ -14,8 +14,8 @@ import org.apache.ant.configuration.DefaultConfigurer;
import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.Configurable; import org.apache.avalon.framework.configuration.Configurable;
import org.apache.ant.convert.engine.ConverterEngine; 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.logger.AbstractLoggable;
import org.apache.avalon.framework.component.Component; import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.ComponentManager;
@@ -98,43 +98,44 @@ public class DefaultTaskletEngine
lookup( "org.apache.ant.convert.engine.ConverterEngine" ); 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 throws AntException
{ {
getLogger().debug( "Creating" ); getLogger().debug( "Creating" );
final Tasklet tasklet = createTasklet( task.getName() );
setupLogger( tasklet );
final Task task = createTask( taskData.getName() );
setupLogger( task );


getLogger().debug( "Contextualizing" ); getLogger().debug( "Contextualizing" );
doContextualize( tasklet, task, context );
doContextualize( task, taskData, context );


getLogger().debug( "Composing" ); getLogger().debug( "Composing" );
doCompose( tasklet, task );
doCompose( task, taskData );


getLogger().debug( "Configuring" ); getLogger().debug( "Configuring" );
doConfigure( tasklet, task, context );
doConfigure( task, taskData, context );


getLogger().debug( "Initializing" ); getLogger().debug( "Initializing" );
doInitialize( tasklet, task );
doInitialize( task, taskData );


getLogger().debug( "Running" ); getLogger().debug( "Running" );
try { tasklet.execute(); }

try { task.execute(); }
catch( final Exception e ) catch( final Exception e )
{ {
throw new AntException( "Error executing task", e ); throw new AntException( "Error executing task", e );
} }


getLogger().debug( "Disposing" ); getLogger().debug( "Disposing" );
doDispose( tasklet, task );
doDispose( task, taskData );
} }
protected Tasklet createTasklet( final String name )
protected Task createTask( final String name )
throws AntException throws AntException
{ {
try try
{ {
final Locator locator = (Locator)m_locatorRegistry.getInfo( name, Locator.class ); 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 ) 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 throws AntException
{ {
try { m_configurer.configure( tasklet, task, context ); }
try { m_configurer.configure( task, taskData, context ); }
catch( final Throwable throwable ) 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 ); throwable.getMessage() + ")", throwable );
} }
} }
protected void doCompose( final Tasklet tasklet, final Configuration task )
protected void doCompose( final Task task, final Configuration taskData )
throws AntException 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 ) 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 ); 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 throws AntException
{ {
try try
{ {
if( tasklet instanceof Contextualizable )
if( task instanceof Contextualizable )
{ {
((Contextualizable)tasklet).contextualize( context );
((Contextualizable)task).contextualize( context );
} }
} }
catch( final Throwable throwable ) 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 ); throwable.getMessage() + ")", throwable );
} }
} }


protected void doDispose( final Tasklet tasklet, final Configuration task )
protected void doDispose( final Task task, final Configuration taskData )
throws AntException throws AntException
{ {
if( tasklet instanceof Disposable )
if( task instanceof Disposable )
{ {
try { ((Disposable)tasklet).dispose(); }
try { ((Disposable)task).dispose(); }
catch( final Throwable throwable ) 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 ); throwable.getMessage() + ")", throwable );
} }
} }
} }


protected void doInitialize( final Tasklet tasklet, final Configuration task )
protected void doInitialize( final Task task, final Configuration taskData )
throws AntException throws AntException
{ {
if( tasklet instanceof Initializable )
if( task instanceof Initializable )
{ {
try { ((Initializable)tasklet).initialize(); }
try { ((Initializable)task).initialize(); }
catch( final Throwable throwable ) 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 ); throwable.getMessage() + ")", throwable );
} }
} }


+ 2
- 2
proposal/myrmidon/src/java/org/apache/ant/tasklet/engine/TaskletEngine.java View File

@@ -10,7 +10,7 @@ package org.apache.ant.tasklet.engine;
import org.apache.ant.AntException; import org.apache.ant.AntException;
import org.apache.ant.convert.engine.ConverterEngine; import org.apache.ant.convert.engine.ConverterEngine;
import org.apache.ant.tasklet.engine.DataTypeEngine; 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.configuration.Configuration;
import org.apache.avalon.framework.component.Component; import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.ComponentManager;
@@ -60,6 +60,6 @@ public interface TaskletEngine
* @param task the configruation data for task * @param task the configruation data for task
* @exception AntException if an error occurs * @exception AntException if an error occurs
*/ */
void execute( Configuration task, TaskletContext context )
void execute( Configuration task, TaskContext context )
throws AntException; throws AntException;
} }

proposal/myrmidon/src/java/org/apache/ant/tasklet/AbstractTasklet.java → proposal/myrmidon/src/java/org/apache/myrmidon/api/AbstractTask.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.tasklet;
package org.apache.myrmidon.api;


import org.apache.ant.AntException; import org.apache.ant.AntException;
import org.apache.avalon.framework.activity.Disposable; 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; 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 <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/ */
public abstract class AbstractTasklet
public abstract class AbstractTask
extends AbstractLoggable extends AbstractLoggable
implements Tasklet, Contextualizable, Initializable, Disposable
implements Task, Contextualizable, Initializable, Disposable
{ {
///Variable to hold context for use by sub-classes ///Variable to hold context for use by sub-classes
private TaskletContext m_context;
private TaskContext m_context;


/** /**
* Retrieve context from container. * Retrieve context from container.
@@ -33,7 +33,7 @@ public abstract class AbstractTasklet
*/ */
public void contextualize( final Context context ) 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 * @return the context
*/ */
protected final TaskletContext getContext()
protected final TaskContext getContext()
{ {
return m_context; return m_context;
} }

proposal/myrmidon/src/java/org/apache/ant/tasklet/DefaultTaskletContext.java → proposal/myrmidon/src/java/org/apache/myrmidon/api/DefaultTaskContext.java View File

@@ -5,39 +5,38 @@
* 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.tasklet;
package org.apache.myrmidon.api;


import java.io.File; import java.io.File;
import org.apache.ant.AntException; 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.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 <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/ */
public class DefaultTaskletContext
public class DefaultTaskContext
extends DefaultContext extends DefaultContext
implements TaskletContext
implements TaskContext
{ {
protected File m_baseDirectory;
private File m_baseDirectory;


/** /**
* Constructor for Context with no parent contexts. * Constructor for Context with no parent contexts.
*/ */
public DefaultTaskletContext()
public DefaultTaskContext()
{ {
this( null ); this( null );
} }
/** /**
* Constructor. * Constructor.
*/ */
public DefaultTaskletContext( final TaskletContext parent )
public DefaultTaskContext( final TaskContext parent )
{ {
super( parent ); super( parent );


@@ -64,7 +63,7 @@ public class DefaultTaskletContext
} }
} }


/** /**
* Retrieve Name of tasklet. * Retrieve Name of tasklet.
* *
@@ -93,10 +92,10 @@ public class DefaultTaskletContext
} }


/** /**
* Resolve filename.
* Resolve filename.
* This involves resolving it against baseDirectory and * 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) * different volumes, file conventions etc)
* *
* @param filename the filename to resolve * @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. * This evaluates all property substitutions based on current context.
* *
* @param property the property to resolve * @param property the property to resolve
@@ -151,7 +150,7 @@ public class DefaultTaskletContext
{ {
setProperty( name, value, CURRENT ); setProperty( name, value, CURRENT );
} }
/** /**
* Set property value. * Set property value.
* *
@@ -164,23 +163,23 @@ public class DefaultTaskletContext
if( CURRENT == scope ) put( name, value ); if( CURRENT == scope ) put( name, value );
else if( PARENT == scope ) 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 " + throw new AntException( "Can't set a property with parent scope when context " +
" has no parent" );
" has no parent" );
} }
else else
{ {
((DefaultTaskletContext)m_parent).put( name, value );
((DefaultTaskContext)m_parent).put( name, value );
} }
} }
else if( TOP_LEVEL == scope ) else if( TOP_LEVEL == scope )
{ {
DefaultTaskletContext context = this;
DefaultTaskContext context = this;


while( null != context.m_parent ) while( null != context.m_parent )
{ {
context = (DefaultTaskletContext)context.m_parent;
context = (DefaultTaskContext)context.m_parent;
} }


context.put( name, value ); context.put( name, value );
@@ -194,7 +193,7 @@ public class DefaultTaskletContext


/** /**
* put a value in context. * 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. * in member variable.
* *
* @param key the key * @param key the key
@@ -228,19 +227,19 @@ public class DefaultTaskletContext
if( BASE_DIRECTORY.equals( name ) && !( value instanceof File ) ) if( BASE_DIRECTORY.equals( name ) && !( value instanceof File ) )
{ {
throw new AntException( "Property " + BASE_DIRECTORY + throw new AntException( "Property " + BASE_DIRECTORY +
" must have a value of type " +
" must have a value of type " +
File.class.getName() ); File.class.getName() );
} }
else if( NAME.equals( name ) && !( value instanceof String ) ) else if( NAME.equals( name ) && !( value instanceof String ) )
{ {
throw new AntException( "Property " + NAME + throw new AntException( "Property " + NAME +
" must have a value of type " +
" must have a value of type " +
String.class.getName() ); String.class.getName() );
} }
else if( JAVA_VERSION.equals( name ) && !( value instanceof JavaVersion ) ) else if( JAVA_VERSION.equals( name ) && !( value instanceof JavaVersion ) )
{ {
throw new AntException( "property " + JAVA_VERSION + throw new AntException( "property " + JAVA_VERSION +
" must have a value of type " +
" must have a value of type " +
JavaVersion.class.getName() ); JavaVersion.class.getName() );
} }
} }

proposal/myrmidon/src/java/org/apache/ant/tasklet/JavaVersion.java → proposal/myrmidon/src/java/org/apache/myrmidon/api/JavaVersion.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.tasklet;
package org.apache.myrmidon.api;


import org.apache.avalon.framework.ValuedEnum; import org.apache.avalon.framework.ValuedEnum;



+ 39
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/api/Task.java View File

@@ -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 <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
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;
}

proposal/myrmidon/src/java/org/apache/ant/tasklet/TaskletContext.java → proposal/myrmidon/src/java/org/apache/myrmidon/api/TaskContext.java View File

@@ -5,19 +5,22 @@
* 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.tasklet;
package org.apache.myrmidon.api;


import java.io.File; import java.io.File;
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.Enum; 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 <em>Context</em> 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 <a href="mailto:donaldp@apache.org">Peter Donald</a> * @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/ */
public interface TaskletContext
public interface TaskContext
extends Context extends Context
{ {
//these values are used when setting properties to indicate the scope at //these values are used when setting properties to indicate the scope at
@@ -37,14 +40,14 @@ public interface TaskletContext
* @return the version of JVM * @return the version of JVM
*/ */
JavaVersion getJavaVersion(); JavaVersion getJavaVersion();
/** /**
* Retrieve Name of tasklet. * Retrieve Name of tasklet.
* *
* @return the name * @return the name
*/ */
String getName(); String getName();
/** /**
* Retrieve base directory. * Retrieve base directory.
* *
@@ -53,10 +56,10 @@ public interface TaskletContext
File getBaseDirectory(); File getBaseDirectory();


/** /**
* Resolve filename.
* Resolve filename.
* This involves resolving it against baseDirectory and * 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) * different volumes, file conventions etc)
* *
* @param filename the filename to resolve * @param filename the filename to resolve
@@ -65,7 +68,7 @@ public interface TaskletContext
File resolveFile( String filename ); File resolveFile( String filename );


/** /**
* Resolve property.
* Resolve property.
* This evaluates all property substitutions based on current context. * This evaluates all property substitutions based on current context.
* *
* @param property the property to resolve * @param property the property to resolve
@@ -88,7 +91,7 @@ public interface TaskletContext
* @param value the value of property * @param value the value of property
*/ */
void setProperty( String name, Object value ); void setProperty( String name, Object value );
/** /**
* Set property value. * Set property value.
* *
@@ -96,7 +99,7 @@ public interface TaskletContext
* @param value the value of property * @param value the value of property
* @param scope the scope at which to set 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. * Safe wrapper class for Scope enums.

Loading…
Cancel
Save