summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Donald <donaldp@apache.org>2002-04-16 10:49:18 +0000
committerPeter Donald <donaldp@apache.org>2002-04-16 10:49:18 +0000
commitd5cdaa9da9f146dd01172096796b8c084be65cc6 (patch)
treec718087e6dab53b8579dbc992712000369eeff08
parent9a82620775359dfad6b8d5665136195944067657 (diff)
downloadant-d5cdaa9da9f146dd01172096796b8c084be65cc6.tar.gz
Zap framework classes
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272456 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/Constants.java23
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractContainerTask.java242
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractFacadeTask.java187
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractFileSet.java42
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractMatchingTask.java71
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractTypeDef.java93
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/ChainFileNameMapper.java85
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/DataType.java20
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/FileNameMapper.java44
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/FileSet.java38
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/JavaVersion.java77
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/LogLevel.java132
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/Pattern.java142
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/PatternSet.java115
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/PatternUtil.java64
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/Resources.properties20
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/TaskList.java32
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/TypeInstanceTask.java91
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/AndCondition.java56
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/Condition.java32
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/IsSetCondition.java66
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/IsTrueCondition.java84
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/NotCondition.java69
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/OrCondition.java56
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/Resources.properties4
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/factories/ExecManagerFactory.java49
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/factories/Resources.properties2
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/factories/VfsManager.java93
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/factories/VfsManagerFactory.java36
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/ArrayFileList.java39
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/FileList.java31
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/FileListToStringConverter.java48
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/FileListUtil.java102
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/ParsedPathElement.java36
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/Path.java178
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/StringToPathConverter.java48
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/filters/LineFilter.java31
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/filters/LineFilterSet.java48
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/filters/TokenLineFilter.java138
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/filters/TokenSet.java32
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/java/ExecuteJava.java382
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/java/JavaRuntimeClassPath.java80
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/java/Resources.properties10
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/Argument.java89
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/ArgumentList.java94
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/Commandline.java61
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/EnvironmentData.java56
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/EnvironmentVariable.java49
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/Execute.java278
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/LoggingExecOutputHandler.java47
-rw-r--r--proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/Resources.properties7
51 files changed, 0 insertions, 3949 deletions
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/Constants.java b/proposal/myrmidon/src/java/org/apache/myrmidon/Constants.java
deleted file mode 100644
index 323b05cbb..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/Constants.java
+++ /dev/null
@@ -1,23 +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.txt file.
- */
-package org.apache.myrmidon;
-
-/**
- * Abstract interface to hold constants.
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision$ $Date$
- */
-public interface Constants
-{
- //Constants to indicate the build of Myrmidon
- String BUILD_DATE = "@@DATE@@";
- String BUILD_VERSION = "@@VERSION@@";
-
- String BUILD_DESCRIPTION = "Myrmidon " + BUILD_VERSION + " compiled on " + BUILD_DATE;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractContainerTask.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractContainerTask.java
deleted file mode 100644
index 042cdf1be..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractContainerTask.java
+++ /dev/null
@@ -1,242 +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.txt file.
- */
-package org.apache.myrmidon.framework;
-
-import org.apache.aut.converter.Converter;
-import org.apache.aut.converter.ConverterException;
-import org.apache.avalon.excalibur.i18n.ResourceManager;
-import org.apache.avalon.excalibur.i18n.Resources;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.myrmidon.api.AbstractTask;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.interfaces.configurer.Configurer;
-import org.apache.myrmidon.interfaces.executor.ExecutionFrame;
-import org.apache.myrmidon.interfaces.executor.Executor;
-import org.apache.myrmidon.interfaces.role.RoleInfo;
-import org.apache.myrmidon.interfaces.role.RoleManager;
-import org.apache.myrmidon.interfaces.type.TypeException;
-import org.apache.myrmidon.interfaces.type.TypeFactory;
-import org.apache.myrmidon.interfaces.type.TypeManager;
-
-/**
- * This is the class that Task writers should extend to provide custom tasks.
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision$ $Date$
- */
-public abstract class AbstractContainerTask
- extends AbstractTask
-{
- private static final Resources REZ =
- ResourceManager.getPackageResources( AbstractContainerTask.class );
-
- ///For converting own attributes
- private Converter m_converter;
-
- ///For configuring own sub-elements
- private Configurer m_configurer;
-
- ///For executing sub-elements as tasks
- private Executor m_executor;
- private ExecutionFrame m_frame;
-
- /**
- * Retrieve context from container.
- *
- * @param context the context
- */
- public void contextualize( TaskContext context )
- throws TaskException
- {
- super.contextualize( context );
- m_configurer = (Configurer)getService( Configurer.class );
- m_converter = (Converter)getService( Converter.class );
- m_executor = (Executor)getService( Executor.class );
- m_frame = (ExecutionFrame)getService( ExecutionFrame.class );
- }
-
- /**
- * Helper method to convert an object to a specific type.
- *
- * @param to type to convert object to
- * @param object the object to convert
- * @return the converted object
- * @exception ConfigurationException if an error occurs
- */
- protected final Object convert( final Class to, final Object object )
- throws ConfigurationException
- {
- try
- {
- return m_converter.convert( to, object, getContext() );
- }
- catch( final ConverterException ce )
- {
- final String message = REZ.getString( "container.bad-config.error" );
- throw new ConfigurationException( message, ce );
- }
- }
-
- /**
- * Configure an object using specific configuration element.
- *
- * @param object the object
- * @param element the configuration element
- * @exception ConfigurationException if an error occurs
- */
- protected final void configureElement( final Object object,
- final Configuration element )
- throws ConfigurationException
- {
- m_configurer.configureElement( object, element, getContext() );
- }
-
- /**
- * Configure an object using specific configuration element.
- *
- * @param object the object
- * @param clazz the class to use when configuring element
- * @param element the configuration element
- * @exception ConfigurationException if an error occurs
- */
- protected final void configureElement( final Object object,
- final Class clazz,
- final Configuration element )
- throws ConfigurationException
- {
- m_configurer.configureElement( object, clazz, element, getContext() );
- }
-
- /**
- * Configure an objects attribute using parameters.
- *
- * @param object the object
- * @param name the attibute name
- * @param value the attibute value
- * @exception ConfigurationException if an error occurs
- */
- protected final void configureAttribute( final Object object, final String name, final String value )
- throws ConfigurationException
- {
- m_configurer.configureAttribute( object, name, value, getContext() );
- }
-
- /**
- * Configure an objects attribute using parameters.
- *
- * @param object the object
- * @param clazz the class to use when configuring element
- * @param name the attibute name
- * @param value the attibute value
- * @exception ConfigurationException if an error occurs
- */
- protected final void configureAttribute( final Object object,
- final Class clazz,
- final String name, final String value )
- throws ConfigurationException
- {
- m_configurer.configureAttribute( object, clazz, name, value, getContext() );
- }
-
- /**
- * Utility method to execute specified tasks in current ExecutionFrame.
- */
- protected final void executeTasks( final Configuration[] tasks )
- throws TaskException
- {
- for( int i = 0; i < tasks.length; i++ )
- {
- final Configuration task = tasks[ i ];
- executeTask( task );
- }
- }
-
- /**
- * Utility method to execute specified task in current ExecutionFrame.
- */
- protected final void executeTask( final Configuration task )
- throws TaskException
- {
- m_executor.execute( task, m_frame );
- }
-
- /**
- * Create an instance of type with specified type and in specified role.
- */
- protected final Object newInstance( final Class roleType, final String typeName )
- throws TaskException
- {
- try
- {
- final RoleInfo role = getRoleByType( roleType );
- final TypeFactory typeFactory = getTypeFactory( role.getName() );
- return typeFactory.create( typeName );
- }
- catch( Exception e )
- {
- final String message =
- REZ.getString( "container.no-create-type-for-type.error", roleType.getName(), typeName );
- throw new TaskException( message, e );
- }
- }
-
- /**
- * Create an instance of type with specified type and in specified role.
- */
- protected final Object newInstance( final String roleName, final String typeName )
- throws TaskException
- {
- try
- {
- final TypeFactory typeFactory = getTypeFactory( roleName );
- return typeFactory.create( typeName );
- }
- catch( final Exception e )
- {
- final String message =
- REZ.getString( "container.no-create-type.error", roleName, typeName );
- throw new TaskException( message, e );
- }
- }
-
- /**
- * Looks up a role using the role type.
- */
- protected final RoleInfo getRoleByType( final Class roleType )
- throws TaskException
- {
- final RoleManager roleManager = (RoleManager)getService( RoleManager.class );
- final RoleInfo role = roleManager.getRoleByType( roleType );
- if( role == null )
- {
- final String message = REZ.getString( "container.unknown-role-type.error", roleType.getName() );
- throw new TaskException( message );
- }
- return role;
- }
-
- /**
- * Locates a type factory.
- */
- protected final TypeFactory getTypeFactory( final String roleName )
- throws TaskException
- {
- try
- {
- final TypeManager typeManager = (TypeManager)getService( TypeManager.class );
- return typeManager.getFactory( roleName );
- }
- catch( final TypeException te )
- {
- final String message = REZ.getString( "container.no-factory.error", roleName );
- throw new TaskException( message, te );
- }
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractFacadeTask.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractFacadeTask.java
deleted file mode 100644
index 1be8b86c9..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractFacadeTask.java
+++ /dev/null
@@ -1,187 +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.txt file.
- */
-package org.apache.myrmidon.framework;
-
-import org.apache.avalon.excalibur.i18n.ResourceManager;
-import org.apache.avalon.excalibur.i18n.Resources;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * Abstract task used to write tasks that delegate to facades
- * such as Javac, Jspc and so forth.
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision$ $Date$
- */
-public abstract class AbstractFacadeTask
- extends AbstractContainerTask
- implements Configurable
-{
- private static final Resources REZ =
- ResourceManager.getPackageResources( AbstractFacadeTask.class );
-
- /**
- * The name of the attribute used to select specific
- * implementation of facade.
- */
- private final String m_selector;
-
- /**
- * The Class type for the facade (also used as the role
- * when looking up TypeManager).
- */
- private final Class m_facadeType;
-
- /**
- * The default name of implementation if none are specified.
- */
- private final String m_defaultName;
-
- /**
- * The configuration used to configure the facade implementation.
- */
- private Configuration m_configuration;
-
- /**
- * Create the facade task that works with specified facade class,
- * using the selector attribute to find implementation or using
- * defaultName if selector attribute not specified.
- */
- protected AbstractFacadeTask( final String selector,
- final Class facadeType,
- final String defaultName )
- {
- m_selector = selector;
- m_facadeType = facadeType;
- m_defaultName = defaultName;
- }
-
- /**
- * Supply the configuration for this task.
- */
- public void configure( final Configuration configuration )
- throws ConfigurationException
- {
- m_configuration = configuration;
- }
-
- /**
- * Utility method to create and configure the facade
- * implementation.
- */
- protected Object prepareFacade()
- throws TaskException
- {
- final Object facade = createFacade();
- configureFacade( facade );
- return facade;
- }
-
- /**
- * Utility method to configure the specified facade.
- * It will be configured according to normal resolution
- * rules using the configuration data supplied to task
- * minus the selector attribute if present.
- */
- protected void configureFacade( final Object facade )
- throws TaskException
- {
- Configuration configuration = m_configuration;
-
- if( null != m_selector &&
- null != m_configuration.getAttribute( m_selector, null ) )
- {
- configuration = rebuildConfiguration( m_configuration, m_selector );
- }
-
- try
- {
- configureElement( facade, m_facadeType, configuration );
- }
- catch( final ConfigurationException ce )
- {
- throw new TaskException( ce.getMessage(), ce );
- }
- }
-
- /**
- * Rebuild the configuration tree with the attribute with specified
- * name removed from top-level element.
- */
- private Configuration rebuildConfiguration( final Configuration configuration,
- final String attribute )
- {
- final DefaultConfiguration newConfiguration =
- new DefaultConfiguration( configuration.getName(),
- configuration.getLocation() );
-
- //Add all the attributes from old configuration except the one
- //that was used to select the particular implementation
- final String[] names = configuration.getAttributeNames();
- for( int i = 0; i < names.length; i++ )
- {
- final String name = names[ i ];
- if( !name.equals( attribute ) )
- {
- final String value = configuration.getAttribute( name, null );
- newConfiguration.setAttribute( name, value );
- }
- }
-
- //Add all elements to new configuration element in the
- //correct order
- final Configuration[] children = configuration.getChildren();
- for( int i = 0; i < children.length; i++ )
- {
- newConfiguration.addChild( children[ i ] );
- }
-
- return newConfiguration;
- }
-
- /**
- * Create the instance of the facade. It looks up the name
- * of the implementation via the <code>getImplementation()</code>
- * method and then creates a new instance from a TypeFactory
- * using that name and the facadeType (specified in the
- * constructor).
- */
- protected Object createFacade()
- throws TaskException
- {
- final String implementation = getImplementation();
- if( null == implementation )
- {
- final String message =
- REZ.getString( "facade.missing-impl.error", getContext().getName() );
- throw new TaskException( message );
- }
- return newInstance( m_facadeType, implementation );
- }
-
- /**
- * Get the shortname of the implementation
- * to use. It assumes that the implementation is registered in
- * the TypeFactory under this shortname.
- */
- protected String getImplementation()
- {
- if( null != m_selector )
- {
- return m_configuration.getAttribute( m_selector, m_defaultName );
- }
- else
- {
- return m_defaultName;
- }
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractFileSet.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractFileSet.java
deleted file mode 100644
index cf99bf0ac..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractFileSet.java
+++ /dev/null
@@ -1,42 +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.txt file.
- */
-package org.apache.myrmidon.framework;
-
-/**
- * An abstract base class for all FileSets.
- * FileSets represent a pattern anchored by a root.
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision$ $Date$
- */
-public class AbstractFileSet
- extends PatternSet
-{
- private boolean m_defaultExcludes = true;
-
- /**
- * Add the default excludes to FileSet.
- */
- public final void setDefaultExcludes( final boolean defaultExcludes )
- {
- m_defaultExcludes = defaultExcludes;
- }
-
- public final boolean includeDefaultExcludes()
- {
- return m_defaultExcludes;
- }
-
- /**
- * Merge specified PatternSet into this patternSet.
- */
- public final void addPatternSet( final PatternSet set )
- {
- append( set );
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractMatchingTask.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractMatchingTask.java
deleted file mode 100644
index 9d70502c5..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractMatchingTask.java
+++ /dev/null
@@ -1,71 +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.txt file.
- */
-package org.apache.myrmidon.framework;
-
-import org.apache.myrmidon.api.AbstractTask;
-
-/**
- * An abstract base class for tasks that wish to operate on
- * a set of files. This class is based on the ant1.x MatchingTask and
- * should fullfill similar requirements.
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision$ $Date$
- */
-public abstract class AbstractMatchingTask
- extends AbstractTask
-{
- private FileSet m_fileset = new FileSet();
-
- /**
- * Retrieve fileset for Matching task.
- */
- protected FileSet getFileSet()
- {
- return m_fileset;
- }
-
- /**
- * The attribute that contains a list of itesm to be included.
- */
- public void setIncludes( final String includes )
- {
- m_fileset.setIncludes( includes );
- }
-
- /**
- * The attribute that contains a list of items to be excluded.
- */
- public void setExcludes( final String excludes )
- {
- m_fileset.setExcludes( excludes );
- }
-
- /**
- * Set this to true to use the defaul exclude patterns.
- */
- public void setDefaultexcludes( final boolean useDefaultExcludes )
- {
- m_fileset.setDefaultExcludes( useDefaultExcludes );
- }
-
- public void addInclude( final Pattern pattern )
- {
- m_fileset.addInclude( pattern );
- }
-
- public void addExclude( final Pattern pattern )
- {
- m_fileset.addExclude( pattern );
- }
-
- public void addPatternSet( final PatternSet set )
- {
- m_fileset.addPatternSet( set );
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractTypeDef.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractTypeDef.java
deleted file mode 100644
index d431160a2..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/AbstractTypeDef.java
+++ /dev/null
@@ -1,93 +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.txt file.
- */
-package org.apache.myrmidon.framework;
-
-import java.io.File;
-import org.apache.avalon.excalibur.i18n.ResourceManager;
-import org.apache.avalon.excalibur.i18n.Resources;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.interfaces.deployer.Deployer;
-import org.apache.myrmidon.interfaces.deployer.DeploymentException;
-import org.apache.myrmidon.interfaces.deployer.TypeDefinition;
-import org.apache.myrmidon.interfaces.deployer.TypeDeployer;
-
-/**
- * Abstract task to extend to define a type.
- *
- * TODO: Make this support classpath sub-element in future
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision$ $Date$
- */
-public abstract class AbstractTypeDef
- extends AbstractContainerTask
-{
- private static final Resources REZ =
- ResourceManager.getPackageResources( AbstractTypeDef.class );
-
- // TODO - replace lib with class-path
- private File m_lib;
- private String m_name;
- private String m_classname;
-
- protected void setName( final String name )
- {
- m_name = name;
- }
-
- public void setClassname( final String classname )
- {
- m_classname = classname;
- }
-
- public void setLib( final File lib )
- {
- m_lib = lib;
- }
-
- protected final String getName()
- {
- return m_name;
- }
-
- protected final String getClassname()
- {
- return m_classname;
- }
-
- /**
- * Executes the task.
- */
- public void execute()
- throws TaskException
- {
- if( null == m_lib )
- {
- final String message = REZ.getString( "typedef.no-lib.error" );
- throw new TaskException( message );
- }
-
- try
- {
- // Locate the deployer, and use it to deploy the type
- final Deployer deployer = (Deployer)getService( Deployer.class );
- final TypeDeployer typeDeployer = deployer.createDeployer( m_lib );
- final TypeDefinition typeDef = createTypeDefinition();
- typeDeployer.deployType( typeDef );
- }
- catch( DeploymentException e )
- {
- throw new TaskException( e.getMessage(), e );
- }
- }
-
- /**
- * Creates the definition for the type to be deployed.
- */
- protected abstract TypeDefinition createTypeDefinition();
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/ChainFileNameMapper.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/ChainFileNameMapper.java
deleted file mode 100644
index 29846a916..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/ChainFileNameMapper.java
+++ /dev/null
@@ -1,85 +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.txt file.
- */
-package org.apache.myrmidon.framework;
-
-import java.util.ArrayList;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * A mapper that applies a chain of mappers.
- *
- * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision$ $Date$
- *
- * @ant.type type="mapper" name="chain"
- */
-public class ChainFileNameMapper
- implements FileNameMapper
-{
- private final ArrayList m_mappers = new ArrayList();
-
- /**
- * Adds a nested mapper.
- */
- public void add( final FileNameMapper mapper )
- {
- m_mappers.add( mapper );
- }
-
- /**
- * Returns an array containing the target filename(s) for the given source
- * file.
- */
- public String[] mapFileName( final String sourceFileName,
- final TaskContext context )
- throws TaskException
- {
- ArrayList names = new ArrayList();
- names.add( sourceFileName );
-
- final int count = m_mappers.size();
- for( int i = 0; i < count; i++ )
- {
- final FileNameMapper mapper = (FileNameMapper)m_mappers.get( i );
- names = mapNames( mapper, names, context );
- }
-
- return (String[])names.toArray( new String[ names.size() ] );
- }
-
- /**
- * Maps a set of names.
- */
- private ArrayList mapNames( final FileNameMapper mapper,
- final ArrayList names,
- final TaskContext context )
- throws TaskException
- {
- final ArrayList retval = new ArrayList();
-
- // Map each of the supplied names
- final int count = names.size();
- for( int i = 0; i < count; i++ )
- {
- final String name = (String)names.get( i );
- final String[] newNames = mapper.mapFileName( name, context );
- if( newNames == null )
- {
- continue;
- }
- for( int j = 0; j < newNames.length; j++ )
- {
- final String newName = newNames[ j ];
- retval.add( newName );
- }
- }
-
- return retval;
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/DataType.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/DataType.java
deleted file mode 100644
index 73fd2a4d3..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/DataType.java
+++ /dev/null
@@ -1,20 +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.txt file.
- */
-package org.apache.myrmidon.framework;
-
-/**
- * Base class for those classes that can appear inside the build file
- * as stand alone data types.
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @ant:role shorthand="data-type"
- */
-public interface DataType
-{
- String ROLE = DataType.class.getName();
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/FileNameMapper.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/FileNameMapper.java
deleted file mode 100644
index 9640171f6..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/FileNameMapper.java
+++ /dev/null
@@ -1,44 +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.txt file.
- */
-package org.apache.myrmidon.framework;
-
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * Interface to be used by SourceFileScanner. <p>
- *
- * Used to find the name of the target file(s) corresponding to a source file.
- * </p> <p>
- *
- * The rule by which the file names are transformed is specified via the setFrom
- * and setTo methods. The exact meaning of these is implementation dependent.
- * </p>
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- *
- * @ant:role shorthand="mapper"
- */
-public interface FileNameMapper
-{
- /**
- * Returns an array containing the target filename(s) for the given source
- * file.
- *
- * <p>if the given rule doesn't apply to the source file, implementation
- * must return null. SourceFileScanner will then omit the source file in
- * question.</p>
- *
- * @param sourceFileName the name of the source file relative to some given
- * basedirectory.
- * @param context the context to perform the mapping in.
- * @return Description of the Returned Value
- */
- String[] mapFileName( String sourceFileName, TaskContext context )
- throws TaskException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/FileSet.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/FileSet.java
deleted file mode 100644
index eb05b909c..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/FileSet.java
+++ /dev/null
@@ -1,38 +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.txt file.
- */
-package org.apache.myrmidon.framework;
-
-import java.io.File;
-
-/**
- * A FileSet represents a set of files selected by patterns with a
- * specified root.
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision$ $Date$
- *
- * @ant.data-type name="fileset"
- */
-public class FileSet
- extends AbstractFileSet
-{
- private File m_dir;
-
- /**
- * Specify the base directory at which the file set is rooted.
- */
- public final void setDir( File dir )
- {
- m_dir = dir;
- }
-
- public final File getDir()
- {
- return m_dir;
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/JavaVersion.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/JavaVersion.java
deleted file mode 100644
index d8309e237..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/JavaVersion.java
+++ /dev/null
@@ -1,77 +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.txt file.
- */
-package org.apache.myrmidon.framework;
-
-import org.apache.avalon.framework.ValuedEnum;
-
-/**
- * Type safe wrapper class for Java Version enums.
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision$ $Date$
- */
-public final class JavaVersion
- extends ValuedEnum
-{
- //standard enums for version of JVM
- public static final JavaVersion JAVA1_0 = new JavaVersion( "Java 1.0", 100 );
- public static final JavaVersion JAVA1_1 = new JavaVersion( "Java 1.1", 110 );
- public static final JavaVersion JAVA1_2 = new JavaVersion( "Java 1.2", 120 );
- public static final JavaVersion JAVA1_3 = new JavaVersion( "Java 1.3", 130 );
- public static final JavaVersion JAVA1_4 = new JavaVersion( "Java 1.4", 140 );
-
- private static final JavaVersion CURRENT = determineCurrentJavaVersion();
-
- /**
- * Method to retrieve the current JVM version.
- *
- * @return the current JVM version
- */
- public static final JavaVersion getCurrentJavaVersion()
- {
- return CURRENT;
- }
-
- /**
- * Private constructor so no instance except here can be defined.
- *
- * @param name the java version name
- * @param value the version * 100
- */
- private JavaVersion( final String name, final int value )
- {
- super( name, value );
- }
-
- /**
- * Helper method to retrieve current JVM version.
- *
- * @return the current JVM version
- */
- private static final JavaVersion determineCurrentJavaVersion()
- {
- JavaVersion version = JavaVersion.JAVA1_0;
-
- try
- {
- Class.forName( "java.lang.Void" );
- version = JAVA1_1;
- Class.forName( "java.lang.ThreadLocal" );
- version = JAVA1_2;
- Class.forName( "java.lang.StrictMath" );
- version = JAVA1_3;
- Class.forName( "java.lang.CharSequence" );
- version = JAVA1_4;
- }
- catch( final ClassNotFoundException cnfe )
- {
- }
-
- return version;
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/LogLevel.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/LogLevel.java
deleted file mode 100644
index 37d7d06d3..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/LogLevel.java
+++ /dev/null
@@ -1,132 +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.txt file.
- */
-package org.apache.myrmidon.framework;
-
-import java.util.HashMap;
-import java.util.Set;
-import org.apache.avalon.framework.Enum;
-import org.apache.myrmidon.api.TaskContext;
-
-/**
- * Type safe Enum for Log Levels and utility method
- * for using enum to write to logger.
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision$ $Date$
- */
-public final class LogLevel
- extends Enum
-{
- //Map for all the levels
- private static final HashMap c_levels = new HashMap();
-
- //standard enums for version of JVM
- public static final LogLevel ERROR = new LogLevel( "error" );
- public static final LogLevel WARN = new LogLevel( "warn" );
- public static final LogLevel INFO = new LogLevel( "info" );
- public static final LogLevel VERBOSE = new LogLevel( "verbose" );
- public static final LogLevel DEBUG = new LogLevel( "debug" );
-
- /**
- * Retrieve the log level for the specified name.
- *
- * @param name the name of the LogLevel object to retrieve
- * @returns The LogLevel for specified name or null
- */
- public static LogLevel getByName( final String name )
- {
- return (LogLevel)c_levels.get( name );
- }
-
- /**
- * Retrieve the names of all the LogLevels.
- *
- * @returns The names of all the LogLevels
- */
- public static String[] getNames()
- {
- final Set keys = c_levels.keySet();
- return (String[])keys.toArray( new String[ keys.size() ] );
- }
-
- /**
- * Log a message.
- *
- * @param level the level to write the log message at.
- * @param message the message to write.
- */
- public static void log( final TaskContext context,
- final LogLevel level,
- final String message )
- {
- if( ERROR == level )
- {
- context.error( message );
- }
- else if( WARN == level )
- {
- context.warn( message );
- }
- else if( INFO == level )
- {
- context.info( message );
- }
- else if( VERBOSE == level )
- {
- context.verbose( message );
- }
- else
- {
- context.debug( message );
- }
- }
-
- /**
- * Log a message.
- *
- * @param level the level to write the log message at.
- * @param message the message to write.
- * @param throwable the throwable.
- */
- public static void log( final TaskContext context,
- final LogLevel level,
- final String message,
- final Throwable throwable )
- {
- if( ERROR == level )
- {
- context.error( message, throwable );
- }
- else if( WARN == level )
- {
- context.warn( message, throwable );
- }
- else if( INFO == level )
- {
- context.info( message, throwable );
- }
- else if( VERBOSE == level )
- {
- context.verbose( message, throwable );
- }
- else
- {
- context.debug( message, throwable );
- }
- }
-
- /**
- * Private constructor so no instance except here can be defined.
- *
- * @param name the name of Log Level
- */
- private LogLevel( final String name )
- {
- super( name, c_levels );
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/Pattern.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/Pattern.java
deleted file mode 100644
index 5fac4e2f4..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/Pattern.java
+++ /dev/null
@@ -1,142 +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.txt file.
- */
-package org.apache.myrmidon.framework;
-
-import org.apache.avalon.excalibur.i18n.ResourceManager;
-import org.apache.avalon.excalibur.i18n.Resources;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.framework.conditions.Condition;
-import org.apache.myrmidon.framework.conditions.IsTrueCondition;
-import org.apache.myrmidon.framework.conditions.NotCondition;
-
-/**
- * Basic data type for holding patterns.
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision$ $Date$
- * @ant.data-type name="pattern"
- */
-public class Pattern
- implements DataType
-{
- private static final Resources REZ =
- ResourceManager.getPackageResources( Pattern.class );
-
- private String m_name;
- private Condition m_condition;
-
- public Pattern()
- {
- }
-
- public Pattern( final String name )
- {
- m_name = name;
- }
-
- /**
- * Retrieve value of pattern.
- *
- * @return the value of pattern
- */
- public String getName()
- {
- return m_name;
- }
-
- /**
- * Get condition associated with pattern if any.
- *
- * @return the Condition
- */
- public Condition getCondition()
- {
- return m_condition;
- }
-
- /**
- * Setter method for name of pattern.
- *
- * @param name the name
- */
- public void setName( final String name )
- {
- m_name = name;
- }
-
- /**
- * Set if clause on pattern.
- *
- * @param condition the condition
- * @exception TaskException if an error occurs
- */
- public void setIf( final String condition )
- throws TaskException
- {
- verifyConditionNull();
- m_condition = new IsTrueCondition( condition );
- }
-
- /**
- * Set unless clause of pattern.
- *
- * @param condition the unless clause
- * @exception TaskException if an error occurs
- */
- public void setUnless( final String condition )
- throws TaskException
- {
- verifyConditionNull();
- m_condition = new NotCondition( new IsTrueCondition( condition ) );
- }
-
- public String evaluateName( final TaskContext context )
- {
- try
- {
- final Condition condition = getCondition();
- final boolean result = ( condition == null || condition.evaluate( context ) );
- if( result )
- {
- return getName();
- }
- }
- catch( final TaskException te )
- {
- //ignore for the moment
- }
- return null;
- }
-
- public String toString()
- {
- String result = "Pattern['" + m_name + "',";
- if( null != m_condition )
- {
- result = result + m_condition;
- }
- return result + "]";
- }
-
- /**
- * Utility method to make sure condition unset.
- * Made so that it is not possible for both if and unless to be set.
- *
- * @exception TaskException if an error occurs
- */
- private void verifyConditionNull()
- throws TaskException
- {
- if( null != m_condition )
- {
- final String message = REZ.getString( "pattern.ifelse-duplicate.error" );
- throw new TaskException( message );
- }
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/PatternSet.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/PatternSet.java
deleted file mode 100644
index 1ad303366..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/PatternSet.java
+++ /dev/null
@@ -1,115 +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.txt file.
- */
-package org.apache.myrmidon.framework;
-
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-
-/**
- * Named collection of include/exclude tags. <p>
- *
- * @author <a href="mailto:ajkuiper@wxs.nl">Arnout J. Kuiper</a>
- * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
- * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
- * @author <a href="mailto:jon@clearink.com">Jon S. Stevens</a>
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision$ $Date$
- */
-public class PatternSet
-{
- private ArrayList m_includes = new ArrayList();
- private ArrayList m_excludes = new ArrayList();
-
- /**
- * Sets the set of exclude patterns. Patterns may be separated by a comma or
- * a space.
- *
- * @param excludes the string containing the exclude patterns
- */
- public void setExcludes( final String excludes )
- {
- final Pattern[] patterns = parsePatterns( excludes );
- for( int i = 0; i < patterns.length; i++ )
- {
- addExclude( patterns[ i ] );
- }
- }
-
- /**
- * Sets the set of include patterns. Patterns may be separated by a comma or
- * a space.
- *
- * @param includes the string containing the include patterns
- */
- public void setIncludes( final String includes )
- {
- final Pattern[] patterns = parsePatterns( includes );
- for( int i = 0; i < patterns.length; i++ )
- {
- addInclude( patterns[ i ] );
- }
- }
-
- /**
- * add a name entry on the exclude list
- */
- public void addExclude( final Pattern pattern )
- {
- m_excludes.add( pattern );
- }
-
- /**
- * add a name entry on the include list
- */
- public void addInclude( final Pattern pattern )
- {
- m_includes.add( pattern );
- }
-
- public final ArrayList getIncludes()
- {
- return m_includes;
- }
-
- public final ArrayList getExcludes()
- {
- return m_excludes;
- }
-
- /**
- * Adds the patterns of the other instance to this set.
- */
- public void append( final PatternSet other )
- {
- m_includes.addAll( other.m_includes );
- m_excludes.addAll( other.m_excludes );
- }
-
- public String toString()
- {
- return "PatternSet [ includes: " + m_includes +
- " excludes: " + m_excludes + " ]";
- }
-
- private Pattern[] parsePatterns( final String patternString )
- {
- final ArrayList patterns = new ArrayList();
- if( patternString != null && patternString.length() > 0 )
- {
- StringTokenizer tok = new StringTokenizer( patternString, ", ", false );
- while( tok.hasMoreTokens() )
- {
- final Pattern pattern = new Pattern( tok.nextToken() );
- patterns.add( pattern );
- }
- }
-
- return (Pattern[])patterns.toArray( new Pattern[ patterns.size() ] );
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/PatternUtil.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/PatternUtil.java
deleted file mode 100644
index b99e96ec8..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/PatternUtil.java
+++ /dev/null
@@ -1,64 +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.txt file.
- */
-package org.apache.myrmidon.framework;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- *
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision$ $Date$
- */
-public class PatternUtil
-{
- /**
- * Returns the filtered include patterns.
- */
- public static String[] getIncludePatterns( final PatternSet set,
- final TaskContext context )
- throws TaskException
- {
- return toArray( set.getIncludes(), context );
- }
-
- public static String[] getExcludePatterns( final PatternSet set,
- final TaskContext context )
- throws TaskException
- {
- return toArray( set.getExcludes(), context );
- }
-
- /**
- * Convert a vector of Pattern elements into an array of Strings.
- */
- private static String[] toArray( final ArrayList list, final TaskContext context )
- {
- if( list.size() == 0 )
- {
- return null;
- }
-
- final ArrayList names = new ArrayList();
- final Iterator patterns = list.iterator();
- while( patterns.hasNext() )
- {
- final Pattern pattern = (Pattern)patterns.next();
- final String result = pattern.evaluateName( context );
- if( null != result && result.length() > 0 )
- {
- names.add( result );
- }
- }
-
- return (String[])names.toArray( new String[ names.size() ] );
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/Resources.properties b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/Resources.properties
deleted file mode 100644
index dbd764ede..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/Resources.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-container.null-value.error=Value ({0}) resolved to null.
-container.bad-resolve.error=Error resolving value ({0}).
-container.bad-config.error=Error converting value.
-container.no-factory.error=Could not locate the type factory for role "{0}".
-container.no-create-type.error=Could not create an instance of role "{0}" with type name "{1}".
-container.no-create-type-for-type.error=Could not create an instance of class "{0}" with type name "{1}".
-container.unknown-role-type.error=Could not determine the role for class "{0}".
-
-typedef.no-lib.error=Must specify the lib parameter.
-
-condition.no-resolve.error=Error resolving {0}.
-
-pattern.ifelse-duplicate.error=Can only set one of if/else for pattern data type.
-
-type.no-create.error=Unable to create datatype.
-type.no-id.error=Id must be specified.
-
-unknown-family=Don't know how to detect os family "{0}"
-
-facade.missing-impl.error=Unable to determine the name of implementation for facade task "{0}".
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/TaskList.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/TaskList.java
deleted file mode 100644
index c569b7342..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/TaskList.java
+++ /dev/null
@@ -1,32 +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.txt file.
- */
-package org.apache.myrmidon.framework;
-
-import java.util.ArrayList;
-import org.apache.avalon.framework.configuration.Configuration;
-
-/**
- * This object contains an ordered list of tasks.
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision$ $Date$
- */
-public class TaskList
-{
- private ArrayList m_tasks = new ArrayList();
-
- public void add( final Configuration task )
- {
- m_tasks.add( task );
- }
-
- public Configuration[] getTasks()
- {
- return (Configuration[])m_tasks.toArray( new Configuration[ m_tasks.size() ] );
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/TypeInstanceTask.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/TypeInstanceTask.java
deleted file mode 100644
index 683769a1f..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/TypeInstanceTask.java
+++ /dev/null
@@ -1,91 +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.txt file.
- */
-package org.apache.myrmidon.framework;
-
-import org.apache.avalon.excalibur.i18n.ResourceManager;
-import org.apache.avalon.excalibur.i18n.Resources;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * This is the property "task" to declare a binding of a datatype to a name.
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision$ $Date$
- */
-public class TypeInstanceTask
- extends AbstractContainerTask
- implements Configurable
-{
- private static final Resources REZ =
- ResourceManager.getPackageResources( TypeInstanceTask.class );
-
- private String m_id;
- private Object m_value;
-
- public void configure( final Configuration configuration )
- throws ConfigurationException
- {
- final DefaultConfiguration newConfiguration =
- new DefaultConfiguration( configuration.getName(), configuration.getLocation() );
-
- final String[] attributes = configuration.getAttributeNames();
- for( int i = 0; i < attributes.length; i++ )
- {
- final String name = attributes[ i ];
- final String value = configuration.getAttribute( name );
-
- if( name.equals( "id" ) || name.equals( "local-scope" ) )
- {
- configureAttribute( this, name, value );
- }
- else
- {
- newConfiguration.setAttribute( name, value );
- }
- }
-
- final Configuration[] children = configuration.getChildren();
- for( int i = 0; i < children.length; i++ )
- {
- newConfiguration.addChild( children[ i ] );
- }
-
- try
- {
- m_value = newInstance( DataType.ROLE, configuration.getName() );
- }
- catch( final Exception e )
- {
- final String message = REZ.getString( "type.no-create.error" );
- throw new ConfigurationException( message, e );
- }
-
- configureElement( m_value, newConfiguration );
- }
-
- public void setId( final String id )
- {
- m_id = id;
- }
-
- public void execute()
- throws TaskException
- {
- if( null == m_id )
- {
- final String message = REZ.getString( "type.no-id.error" );
- throw new TaskException( message );
- }
-
- getContext().setProperty( m_id, m_value );
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/AndCondition.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/AndCondition.java
deleted file mode 100644
index 6fbdf5dc4..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/AndCondition.java
+++ /dev/null
@@ -1,56 +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.txt file.
- */
-package org.apache.myrmidon.framework.conditions;
-
-import java.util.ArrayList;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * &lt;and&gt; condition container. <p>
- *
- * Iterates over all conditions and returns false as soon as one evaluates to
- * false. An empty and condition returns true.</p>
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @version $Revision$
- *
- * @ant.type type="condition" name="and"
- */
-public class AndCondition
- implements Condition
-{
- private final ArrayList m_conditions = new ArrayList();
-
- /**
- * Adds a condition.
- */
- public void add( final Condition condition )
- {
- m_conditions.add( condition );
- }
-
- /**
- * Evaluates the condition.
- *
- */
- public boolean evaluate( final TaskContext context )
- throws TaskException
- {
- final int count = m_conditions.size();
- for( int i = 0; i < count; i++ )
- {
- final Condition condition = (Condition)m_conditions.get( i );
- if( !condition.evaluate( context ) )
- {
- return false;
- }
- }
- return true;
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/Condition.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/Condition.java
deleted file mode 100644
index 0df965116..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/Condition.java
+++ /dev/null
@@ -1,32 +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.txt file.
- */
-package org.apache.myrmidon.framework.conditions;
-
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * Class representing a condition.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision$ $Date$
- *
- * @ant:role shorthand="condition"
- */
-public interface Condition
-{
- /**
- * Evaluates this condition.
- *
- * @param context
- * The context to evaluate the condition in.
- */
- boolean evaluate( final TaskContext context )
- throws TaskException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/IsSetCondition.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/IsSetCondition.java
deleted file mode 100644
index 64da4dff0..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/IsSetCondition.java
+++ /dev/null
@@ -1,66 +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.txt file.
- */
-package org.apache.myrmidon.framework.conditions;
-
-import org.apache.avalon.excalibur.i18n.ResourceManager;
-import org.apache.avalon.excalibur.i18n.Resources;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * A {@link Condition} that is true when a property is set.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision$ $Date$
- *
- * @ant.type type="condition" name="is-set"
- */
-public class IsSetCondition
- implements Condition
-{
- private static final Resources REZ =
- ResourceManager.getPackageResources( IsSetCondition.class );
-
- private String m_property;
-
- public IsSetCondition( final String propName )
- {
- m_property = propName;
- }
-
- public IsSetCondition()
- {
- }
-
- /**
- * Set the property name to test.
- */
- public void setProperty( final String propName )
- {
- m_property = propName;
- }
-
- /**
- * Evaluates the condition.
- */
- public boolean evaluate( final TaskContext context )
- throws TaskException
- {
- if( m_property == null )
- {
- final String message = REZ.getString( "isset.no-property.error" );
- throw new TaskException( message );
- }
-
- // Resolve the condition
- final Object object = context.getProperty( m_property );
- return ( object != null );
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/IsTrueCondition.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/IsTrueCondition.java
deleted file mode 100644
index dcd45653c..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/IsTrueCondition.java
+++ /dev/null
@@ -1,84 +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.txt file.
- */
-package org.apache.myrmidon.framework.conditions;
-
-import org.apache.avalon.excalibur.i18n.ResourceManager;
-import org.apache.avalon.excalibur.i18n.Resources;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.aut.converter.Converter;
-import org.apache.aut.converter.ConverterException;
-
-/**
- * A {@link Condition} that is true when a property is set, but not set to
- * 'false'.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision$ $Date$
- *
- * @ant.type type="condition" name="is-true"
- */
-public class IsTrueCondition
- implements Condition
-{
- private static final Resources REZ =
- ResourceManager.getPackageResources( IsTrueCondition.class );
-
- private String m_property;
-
- public IsTrueCondition( final String propName )
- {
- m_property = propName;
- }
-
- public IsTrueCondition()
- {
- }
-
- /**
- * Set the property name to test.
- */
- public void setProperty( final String propName )
- {
- m_property = propName;
- }
-
- /**
- * Evaluates the condition.
- */
- public boolean evaluate( final TaskContext context )
- throws TaskException
- {
- if( m_property == null )
- {
- final String message = REZ.getString( "isset.no-property.error" );
- throw new TaskException( message );
- }
-
- // Resolve the property name
- final Object object = context.getProperty( m_property );
- if( object == null )
- {
- return false;
- }
-
- // Convert value to boolean
- try
- {
- final Converter converter = (Converter)context.getService( Converter.class );
- final Boolean value = (Boolean)converter.convert( Boolean.class, object, context );
- return value.booleanValue();
- }
- catch( final ConverterException e )
- {
- throw new TaskException( e.getMessage(), e );
- }
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/NotCondition.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/NotCondition.java
deleted file mode 100644
index c96d50cf5..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/NotCondition.java
+++ /dev/null
@@ -1,69 +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.txt file.
- */
-package org.apache.myrmidon.framework.conditions;
-
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.avalon.excalibur.i18n.ResourceManager;
-import org.apache.avalon.excalibur.i18n.Resources;
-
-/**
- * &lt;not&gt; condition. Evaluates to true if the single condition nested into
- * it is false and vice versa.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @version $Revision$
- *
- * @ant.type type="condition" name="not"
- */
-public class NotCondition
- implements Condition
-{
- private static final Resources REZ =
- ResourceManager.getPackageResources( NotCondition.class );
-
- private Condition m_condition;
-
- public NotCondition()
- {
- }
-
- public NotCondition( final Condition condition )
- {
- m_condition = condition;
- }
-
- /**
- * Adds a nested condition.
- */
- public void add( final Condition condition )
- throws TaskException
- {
- if( m_condition != null )
- {
- final String message = REZ.getString( "not.too-many-conditions.error" );
- throw new TaskException( message );
- }
- m_condition = condition;
- }
-
- /**
- * Evaluates the condition.
- */
- public boolean evaluate( final TaskContext context )
- throws TaskException
- {
- if( m_condition == null )
- {
- final String message = REZ.getString( "not.no-condition.error" );
- throw new TaskException( message );
- }
-
- return ! m_condition.evaluate( context );
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/OrCondition.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/OrCondition.java
deleted file mode 100644
index 2e4683ba9..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/OrCondition.java
+++ /dev/null
@@ -1,56 +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.txt file.
- */
-package org.apache.myrmidon.framework.conditions;
-
-import java.util.ArrayList;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * &lt;or&gt; condition container. <p>
- *
- * Iterates over all conditions and returns true as soon as one evaluates to
- * true. An empty container evaluates to true</p>
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @version $Revision$
- *
- * @ant.type type="condition" name="or"
- */
-public class OrCondition
- implements Condition
-{
- private final ArrayList m_conditions = new ArrayList();
-
- /**
- * Adds a condition.
- */
- public void add( final Condition condition )
- {
- m_conditions.add( condition );
- }
-
- /**
- * Evaluates the condition.
- *
- */
- public boolean evaluate( final TaskContext context )
- throws TaskException
- {
- final int count = m_conditions.size();
- for( int i = 0; i < count; i++ )
- {
- final Condition condition = (Condition)m_conditions.get( i );
- if( condition.evaluate( context ) )
- {
- return true;
- }
- }
- return (count == 0);
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/Resources.properties b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/Resources.properties
deleted file mode 100644
index 8a3743cd7..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/conditions/Resources.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-isset.no-property.error=No property specified to test.
-istrue.no-property.error=No property specified to test.
-not.no-condition.error=No condition specified.
-not.too-many-conditions.error=Too many conditions specified. \ No newline at end of file
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/factories/ExecManagerFactory.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/factories/ExecManagerFactory.java
deleted file mode 100644
index 1cefdb8d0..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/factories/ExecManagerFactory.java
+++ /dev/null
@@ -1,49 +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.txt file.
- */
-package org.apache.myrmidon.framework.factories;
-
-import java.io.File;
-import org.apache.aut.nativelib.impl.DefaultExecManager;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.myrmidon.interfaces.service.AntServiceException;
-import org.apache.myrmidon.interfaces.service.ServiceFactory;
-
-/**
- * A Factory responsible for creating the ExecManager service.
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision$ $Date$
- */
-public class ExecManagerFactory
- implements ServiceFactory, Contextualizable
-{
- private File m_homeDir;
-
- public void contextualize( final Context context ) throws ContextException
- {
- m_homeDir = (File)context.get( "myrmidon.home" );
- }
-
- /**
- * Create the ExecManager Service.
- */
- public Object createService()
- throws AntServiceException
- {
- try
- {
- return new DefaultExecManager( m_homeDir );
- }
- catch( final Exception ee )
- {
- throw new AntServiceException( ee.getMessage(), ee );
- }
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/factories/Resources.properties b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/factories/Resources.properties
deleted file mode 100644
index c0a60cd5d..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/factories/Resources.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-missing-home-dir.error=Cannot locate antRun scripts: Property 'myrmidon.home' not specified
-create-provider.error=Could not create file system provider "{0}". \ No newline at end of file
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/factories/VfsManager.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/factories/VfsManager.java
deleted file mode 100644
index f4690d716..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/factories/VfsManager.java
+++ /dev/null
@@ -1,93 +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.txt file.
- */
-package org.apache.myrmidon.framework.factories;
-
-import org.apache.aut.vfs.FileSystemException;
-import org.apache.aut.vfs.impl.DefaultFileSystemManager;
-import org.apache.aut.vfs.provider.FileSystemProvider;
-import org.apache.avalon.excalibur.i18n.ResourceManager;
-import org.apache.avalon.excalibur.i18n.Resources;
-import org.apache.avalon.framework.activity.Initializable;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.myrmidon.interfaces.type.TypeFactory;
-import org.apache.myrmidon.interfaces.type.TypeManager;
-
-/**
- * The myrmidon FileSystemManager implementation.
- *
- * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision$ $Date$
- */
-public class VfsManager
- extends DefaultFileSystemManager
- implements Serviceable, Initializable
-{
- private static final Resources REZ
- = ResourceManager.getPackageResources( VfsManager.class );
-
- private TypeManager m_typeManager;
-
- /**
- * Locate the services used by this service.
- */
- public void service( final ServiceManager serviceManager ) throws ServiceException
- {
- m_typeManager = (TypeManager)serviceManager.lookup( TypeManager.ROLE );
- }
-
- /**
- * Initialises this service.
- */
- public void initialize() throws Exception
- {
- final TypeFactory factory = m_typeManager.getFactory( FileSystemProvider.ROLE );
-
- // TODO - make this list configurable
-
- // Required providers
- addProvider( factory, new String[]{"file"}, "file", false );
- addProvider( factory, new String[]{"zip", "jar"}, "zip", false );
-
- // Optional providers
- addProvider( factory, new String[]{"smb"}, "smb", true );
- addProvider( factory, new String[]{"ftp"}, "ftp", true );
- }
-
- /**
- * Registers a file system provider.
- */
- private void addProvider( final TypeFactory factory,
- final String[] urlSchemes,
- final String providerName,
- final boolean ignoreIfNotPresent )
- throws FileSystemException
- {
- // Create an instance
- if( ignoreIfNotPresent && !factory.canCreate( providerName ) )
- {
- return;
- }
-
- final FileSystemProvider provider;
- try
- {
- provider = (FileSystemProvider)factory.create( providerName );
- }
- catch( Exception e )
- {
- final String message = REZ.getString( "create-provider.error", providerName );
- throw new FileSystemException( message, e );
- }
-
- // Register the provider
- addProvider( urlSchemes, provider );
- }
-
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/factories/VfsManagerFactory.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/factories/VfsManagerFactory.java
deleted file mode 100644
index b40806c21..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/factories/VfsManagerFactory.java
+++ /dev/null
@@ -1,36 +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.txt file.
- */
-package org.apache.myrmidon.framework.factories;
-
-import org.apache.aut.vfs.FileSystemManager;
-import org.apache.avalon.excalibur.i18n.ResourceManager;
-import org.apache.avalon.excalibur.i18n.Resources;
-import org.apache.myrmidon.interfaces.service.AntServiceException;
-import org.apache.myrmidon.interfaces.service.ServiceFactory;
-
-/**
- * A factory that creates the {@link FileSystemManager} service.
- *
- * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision$ $Date$
- */
-public class VfsManagerFactory
- implements ServiceFactory
-{
- private static final Resources REZ
- = ResourceManager.getPackageResources( VfsManagerFactory.class );
-
- /**
- * Create a service that coresponds to this factory.
- */
- public Object createService()
- throws AntServiceException
- {
- return new VfsManager();
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/ArrayFileList.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/ArrayFileList.java
deleted file mode 100644
index 1a2de020b..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/ArrayFileList.java
+++ /dev/null
@@ -1,39 +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.txt file.
- */
-package org.apache.myrmidon.framework.file;
-
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * A PathElement made up of an array of strings.
- *
- * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision$ $Date$
- */
-public class ArrayFileList
- implements FileList
-{
- private final String[] m_parts;
-
- public ArrayFileList( final String part )
- {
- m_parts = new String[] { part } ;
- }
-
- public ArrayFileList( final String[] parts )
- {
- m_parts = parts;
- }
-
- public String[] listFiles( final TaskContext context )
- throws TaskException
- {
- return m_parts;
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/FileList.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/FileList.java
deleted file mode 100644
index e3bb67603..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/FileList.java
+++ /dev/null
@@ -1,31 +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.txt file.
- */
-package org.apache.myrmidon.framework.file;
-
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * A list of files.
- *
- * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision$ $Date$
- *
- * @ant:role shorthand="path"
- */
-public interface FileList
-{
- /**
- * Returns the files in this list.
- *
- * @param context the context to use to evaluate the list.
- * @return The names of the files in this list. All names are absolute paths.
- */
- String[] listFiles( TaskContext context )
- throws TaskException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/FileListToStringConverter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/FileListToStringConverter.java
deleted file mode 100644
index 22d809f34..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/FileListToStringConverter.java
+++ /dev/null
@@ -1,48 +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.txt file.
- */
-package org.apache.myrmidon.framework.file;
-
-import org.apache.aut.converter.AbstractConverter;
-import org.apache.aut.converter.ConverterException;
-import org.apache.aut.nativelib.PathUtil;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.framework.file.FileList;
-
-/**
- * Converters from FileList to String.
- *
- * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision$ $Date$
- *
- * @ant.converter source="org.apache.myrmidon.framework.file.FileList" destination="java.lang.String"
- */
-public class FileListToStringConverter
- extends AbstractConverter
-{
- public FileListToStringConverter()
- {
- super( FileList.class, String.class );
- }
-
- protected Object convert( final Object original, final Object context )
- throws ConverterException
- {
- try
- {
- final TaskContext taskContext = (TaskContext)context;
- final FileList fileList = (FileList)original;
- final String[] files = fileList.listFiles( taskContext );
- return PathUtil.formatPath( files );
- }
- catch( final TaskException e )
- {
- throw new ConverterException( e.getMessage(), e );
- }
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/FileListUtil.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/FileListUtil.java
deleted file mode 100644
index 00ecc4d3d..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/FileListUtil.java
+++ /dev/null
@@ -1,102 +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.txt file.
- */
-package org.apache.myrmidon.framework.file;
-
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.interfaces.classloader.ClassLoaderManager;
-import org.apache.myrmidon.interfaces.classloader.ClassLoaderException;
-import org.apache.aut.nativelib.PathUtil;
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-
-/**
- * Utility methods for dealing with {@link FileList} objects.
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision$ $Date$
- */
-public final class FileListUtil
-{
- private FileListUtil()
- {
- }
-
- /**
- * Formats a path into its native representation.
- */
- public static String formatPath( final FileList path, final TaskContext context )
- throws TaskException
- {
- final String[] list = path.listFiles( context );
- return PathUtil.formatPath( list );
- }
-
- /**
- * Converts a path into an array of Files.
- */
- public static File[] toFiles( final FileList path, final TaskContext context )
- throws TaskException
- {
- final String[] list = path.listFiles( context );
- final File[] result = new File[ list.length ];
- for( int i = 0; i < list.length; i++ )
- {
- result[ i ] = new File( list[ i ] );
- }
- return result;
- }
-
- /**
- * Converts a path into an array of URLs - useful for building a ClassLoader.
- */
- public static URL[] toURLs( final FileList path, final TaskContext context )
- throws TaskException
- {
- try
- {
- final String[] list = path.listFiles( context );
-
- final URL[] result = new URL[ list.length ];
-
- // path containing one or more elements
- for( int i = 0; i < list.length; i++ )
- {
- result[ i ] = new File( list[ i ] ).toURL();
- }
-
- return result;
- }
- catch( final IOException ioe )
- {
- throw new TaskException( "Malformed path entry.", ioe );
- }
- }
-
- /**
- * Creates a ClassLoader from a class-path.
- */
- public static ClassLoader createClassLoader( final FileList classpath,
- final TaskContext context )
- throws TaskException
- {
- final File[] files = toFiles( classpath, context );
- final ClassLoaderManager manager = (ClassLoaderManager)context.getService( ClassLoaderManager.class );
- try
- {
- return manager.createClassLoader( files );
- }
- catch( final ClassLoaderException e )
- {
- throw new TaskException( e.getMessage(), e );
- }
- }
-
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/ParsedPathElement.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/ParsedPathElement.java
deleted file mode 100644
index ebafdb677..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/ParsedPathElement.java
+++ /dev/null
@@ -1,36 +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.txt file.
- */
-package org.apache.myrmidon.framework.file;
-
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.framework.file.FileList;
-import org.apache.tools.todo.util.FileUtils;
-
-/**
- * A PathElement that is parsed from a string.
- *
- * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision$ $Date$
- */
-public class ParsedPathElement
- implements FileList
-{
- private final String m_path;
-
- public ParsedPathElement( final String path )
- {
- m_path = path;
- }
-
- public String[] listFiles( final TaskContext context )
- throws TaskException
- {
- return FileUtils.translatePath( context.getBaseDirectory(), m_path );
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/Path.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/Path.java
deleted file mode 100644
index f9cdf43c7..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/Path.java
+++ /dev/null
@@ -1,178 +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.txt file.
- */
-package org.apache.myrmidon.framework.file;
-
-import java.io.File;
-import java.util.ArrayList;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.framework.DataType;
-import org.apache.myrmidon.framework.FileSet;
-import org.apache.myrmidon.framework.file.ArrayFileList;
-import org.apache.myrmidon.framework.file.FileList;
-import org.apache.tools.todo.util.FileUtils;
-import org.apache.tools.todo.types.DirectoryScanner;
-import org.apache.tools.todo.types.ScannerUtil;
-
-/**
- * This object represents a path as used by CLASSPATH or PATH environment
- * variable. <p>
- *
- * <code>
- * &lt;sometask&gt;<br>
- * &nbsp;&nbsp;&lt;somepath&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;pathelement location="/path/to/file.jar" /&gt;
- * <br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;pathelement
- * path="/path/to/file2.jar:/path/to/class2;/path/to/class3" /&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;pathelement location="/path/to/file3.jar" /&gt;
- * <br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;pathelement location="/path/to/file4.jar" /&gt;
- * <br>
- * &nbsp;&nbsp;&lt;/somepath&gt;<br>
- * &lt;/sometask&gt;<br>
- * </code> <p>
- *
- * The object implemention <code>sometask</code> must provide a method called
- * <code>createSomepath</code> which returns an instance of <code>Path</code>.
- * Nested path definitions are handled by the Path object and must be labeled
- * <code>pathelement</code>.<p>
- *
- * The path element takes a parameter <code>path</code> which will be parsed and
- * split into single elements. It will usually be used to define a path from an
- * environment variable.
- *
- * @author Thomas.Haas@softwired-inc.com
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- *
- * @ant.data-type name="path"
- */
-public class Path
- implements DataType, FileList
-{
- private final ArrayList m_elements = new ArrayList();
-
- public Path( final String path )
- {
- add( path );
- }
-
- public Path()
- {
- }
-
- /**
- * Adds a String to the ArrayList if it isn't already included.
- */
- private void addUnlessPresent( final ArrayList list, final String entry )
- {
- if( !list.contains( entry ) )
- {
- list.add( entry );
- }
- }
-
- /**
- * Adds an element to the path.
- */
- public void setLocation( final File location )
- {
- addLocation( location );
- }
-
- /**
- * Adds a element definition to the path.
- *
- * @param location the location of the element to add (must not be <code>null</code>
- * nor empty.
- */
- public void addLocation( final File location )
- {
- final FileList pathElement = new ArrayFileList( location.getAbsolutePath() );
- m_elements.add( pathElement );
- }
-
- /**
- * Adds a nested <code>&lt;fileset&gt;</code> element.
- */
- public void addFileset( final FileSet fileSet )
- {
- m_elements.add( fileSet );
- }
-
- /**
- * Adds a path.
- */
- public void setPath( final String path )
- {
- add( path );
- }
-
- /**
- * Adds a path.
- */
- public void add( final String path )
- {
- final FileList pathElement = new ParsedPathElement( path );
- m_elements.add( pathElement );
- }
-
- /**
- * Adds a path.
- */
- public void add( final String[] path )
- {
- final FileList pathElement = new ArrayFileList( path );
- m_elements.add( pathElement );
- }
-
- /**
- * Adds a path.
- */
- public void add( final FileList list )
- {
- m_elements.add( list );
- }
-
- /**
- * Returns all path elements defined by this and nested path objects.
- * The paths returned by this method are absolute.
- */
- public String[] listFiles( final TaskContext context )
- throws TaskException
- {
- ArrayList result = new ArrayList( 2 * m_elements.size() );
- for( int i = 0; i < m_elements.size(); i++ )
- {
- Object o = m_elements.get( i );
- if( o instanceof FileList )
- {
- final FileList element = (FileList)o;
- final String[] parts = element.listFiles( context );
- for( int j = 0; j < parts.length; j++ )
- {
- addUnlessPresent( result, parts[ j ] );
- }
- }
- else if( o instanceof FileSet )
- {
- final FileSet fs = (FileSet)o;
- final DirectoryScanner ds = ScannerUtil.getDirectoryScanner( fs );
- final String[] s = ds.getIncludedFiles();
- final File dir = fs.getDir();
- for( int j = 0; j < s.length; j++ )
- {
- File f = new File( dir, s[ j ] );
- String absolutePath = f.getAbsolutePath();
- addUnlessPresent( result, FileUtils.translateFile( absolutePath ) );
- }
- }
- }
- return (String[])result.toArray( new String[ result.size() ] );
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/StringToPathConverter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/StringToPathConverter.java
deleted file mode 100644
index 0d8a7e388..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/file/StringToPathConverter.java
+++ /dev/null
@@ -1,48 +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.txt file.
- */
-package org.apache.myrmidon.framework.file;
-
-import org.apache.aut.converter.AbstractConverter;
-import org.apache.aut.converter.ConverterException;
-import org.apache.myrmidon.framework.file.Path;
-
-/**
- * A converter from String to Path.
- *
- * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision$ $Date$
- *
- * @ant.converter source="java.lang.String" destination="org.apache.myrmidon.framework.file.Path"
- */
-public class StringToPathConverter
- extends AbstractConverter
-{
- /**
- * Constructors a converter.
- */
- public StringToPathConverter()
- {
- super( String.class, Path.class );
- }
-
- /**
- * Converts from String to Path
- *
- * @param original the original Object
- * @param context the context in which to convert
- * @return the converted object
- */
- protected Object convert( final Object original, final Object context )
- throws ConverterException
- {
- String path = (String)original;
- Path retval = new Path( path );
- return retval;
- }
-}
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/filters/LineFilter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/filters/LineFilter.java
deleted file mode 100644
index 2a4b2712d..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/filters/LineFilter.java
+++ /dev/null
@@ -1,31 +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.txt file.
- */
-package org.apache.myrmidon.framework.filters;
-
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * Filters lines of text.
- *
- * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision$ $Date$
- *
- * @ant:role shorthand="line-filter"
- */
-public interface LineFilter
-{
- /**
- * Filters a line of text.
- *
- * @param line the text to filter.
- * @param context the context to use when filtering.
- */
- void filterLine( StringBuffer line, TaskContext context )
- throws TaskException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/filters/LineFilterSet.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/filters/LineFilterSet.java
deleted file mode 100644
index 2de3a2a33..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/filters/LineFilterSet.java
+++ /dev/null
@@ -1,48 +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.txt file.
- */
-package org.apache.myrmidon.framework.filters;
-
-import java.util.ArrayList;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * A collection of line filters.
- *
- * @ant.data-type name="filterset"
- * @ant.type type="line-filter" name="filterset"
- */
-public class LineFilterSet
- implements LineFilter
-{
- private ArrayList m_filterSets = new ArrayList();
-
- public void add( final LineFilter filter )
- {
- m_filterSets.add( filter );
- }
-
- /**
- * Filters a line of text.
- *
- * @param line the text to filter.
- * @param context the context to use when filtering.
- */
- public void filterLine( final StringBuffer line, final TaskContext context )
- throws TaskException
- {
- final int count = m_filterSets.size();
- for( int i = 0; i < count; i++ )
- {
- final LineFilter filter = (LineFilter)m_filterSets.get( i );
- filter.filterLine( line, context );
- }
- }
-}
-
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/filters/TokenLineFilter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/filters/TokenLineFilter.java
deleted file mode 100644
index c98f25d2e..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/filters/TokenLineFilter.java
+++ /dev/null
@@ -1,138 +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.txt file.
- */
-package org.apache.myrmidon.framework.filters;
-
-import java.util.ArrayList;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * A line filter that replaces tokens. May have begintoken and endtokens defined.
- *
- * @author <A href="mailto:gholam@xtra.co.nz"> Michael McCallum </A>
- *
- * @ant.type type="line-filter" name="token-filter"
- */
-public class TokenLineFilter
- implements LineFilter
-{
- /**
- * The default token start string
- */
- private static final char[] DEFAULT_TOKEN_START = {'@'};
-
- /**
- * The default token end string
- */
- private static final char[] DEFAULT_TOKEN_END = {'@'};
-
- /**
- * List of ordered filters and filter files.
- */
- private ArrayList m_tokenSets = new ArrayList();
-
- /**
- * Adds a TokenSet to this filter.
- */
- public void add( final TokenSet tokens )
- {
- m_tokenSets.add( tokens );
- }
-
- /**
- * Filters a line of text.
- *
- * @param line the text to filter.
- * @param context the context to use when filtering.
- */
- public void filterLine( final StringBuffer line, final TaskContext context )
- throws TaskException
- {
- int index = 0;
- while( index < line.length() )
- {
- // Find the start of the next token
- final int startToken = indexOf( line, DEFAULT_TOKEN_START, index );
- if( startToken == -1 )
- {
- break;
- }
- final int startTokenName = startToken + DEFAULT_TOKEN_START.length;
-
- // Find the end of the next token
- int endTokenName = indexOf( line, DEFAULT_TOKEN_END, startTokenName );
- if( endTokenName == -1 )
- {
- break;
- }
- int endToken = endTokenName + DEFAULT_TOKEN_END.length;
- if( endTokenName == startTokenName )
- {
- // Empty token name - skip
- index = endToken;
- continue;
- }
-
- // Extract token name figure out the value
- final String token = line.substring( startTokenName, endTokenName );
- final String value = getTokenValue( token, context );
- if( value == null )
- {
- // Unknown token - skip
- index = endToken;
- continue;
- }
-
- // Replace token with its value
- line.delete( startToken, endToken );
- line.insert( startToken, value );
-
- index = startToken + value.length();
- }
- }
-
- /**
- * Returns the value of a token.
- */
- private String getTokenValue( final String token, final TaskContext context )
- throws TaskException
- {
- String value = null;
- final int count = m_tokenSets.size();
- for( int i = 0; value == null && i < count; i++ )
- {
- final TokenSet tokenSet = (TokenSet)m_tokenSets.get( i );
- value = tokenSet.getValue( token, context );
- }
- return value;
- }
-
- /**
- * Returns the location of a string in a stringbuffer.
- */
- private int indexOf( final StringBuffer buffer,
- final char[] str,
- final int index )
- {
- final int maxIndex = buffer.length() - str.length + 1;
- outer: for( int i = index; i < maxIndex; i++ )
- {
- for( int j = 0; j < str.length; j++ )
- {
- if( buffer.charAt( i + j ) != str[ j ] )
- {
- continue outer;
- }
- }
- return i;
- }
- return -1;
- }
-}
-
-
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/filters/TokenSet.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/filters/TokenSet.java
deleted file mode 100644
index 7d8073302..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/filters/TokenSet.java
+++ /dev/null
@@ -1,32 +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.txt file.
- */
-package org.apache.myrmidon.framework.filters;
-
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-
-/**
- * A set of tokens.
- *
- * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision$ $Date$
- *
- * @ant:role shorthand="token-set"
- */
-public interface TokenSet
-{
- /**
- * Evaluates the value for a token.
- *
- * @param token the token to evaluate.
- * @param context the context to use to evaluate the token.
- * @return the value for the token, or null if the token is unknown.
- */
- String getValue( String token, TaskContext context )
- throws TaskException;
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/java/ExecuteJava.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/java/ExecuteJava.java
deleted file mode 100644
index d9805c975..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/java/ExecuteJava.java
+++ /dev/null
@@ -1,382 +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.txt file.
- */
-package org.apache.myrmidon.framework.java;
-
-import java.io.File;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import org.apache.aut.nativelib.Os;
-import org.apache.aut.nativelib.PathUtil;
-import org.apache.avalon.excalibur.i18n.ResourceManager;
-import org.apache.avalon.excalibur.i18n.Resources;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.framework.nativelib.Execute;
-import org.apache.myrmidon.framework.file.Path;
-import org.apache.myrmidon.framework.file.FileListUtil;
-import org.apache.myrmidon.framework.nativelib.EnvironmentData;
-import org.apache.tools.todo.types.SysProperties;
-import org.apache.myrmidon.framework.nativelib.ArgumentList;
-import org.apache.tools.todo.util.FileUtils;
-
-/**
- * A utility class that takes care of executing a Java application. This
- * class can execute Java apps in the current JVM, or a forked JVM.
- *
- * <p>To execute a Java application, create an instance of this class,
- * configure it, and call one of the following methods:
- * <ul>
- * <li>{@link #execute}
- * <li>{@link #executeForked}
- * <li>{@link #executeNonForked}
- * </ul>
- *
- * @author thomas.haas@softwired-inc.com
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class ExecuteJava
-{
- private static final Resources REZ
- = ResourceManager.getPackageResources( ExecuteJava.class );
-
- private final Path m_classPath = new Path();
- private final EnvironmentData m_sysProperties = new EnvironmentData();
- private final ArgumentList m_args = new ArgumentList();
- private final ArgumentList m_vmArgs = new ArgumentList();
- private boolean m_fork;
- private File m_workingDirectory;
- private File m_jar;
- private String m_jvm;
- private String m_className;
- private String m_maxMemory;
- private boolean m_ignoreReturnCode;
-
- /**
- * Sets the main class of the application.
- */
- public void setClassName( final String className )
- {
- m_className = className;
- }
-
- /**
- * Sets the executable jar file to use to execute the application.
- * Can only be used in forked mode.
- */
- public void setJar( final File jar )
- {
- m_jar = jar;
- }
-
- /**
- * Enables forked mode.
- */
- public void setFork( final boolean fork )
- {
- m_fork = fork;
- }
-
- /**
- * Sets the max memory allocation pool size to use when running the
- * application. Only used in forked mode.
- *
- * @param maxMemory the maximum memory pool size, or null for the default.
- */
- public void setMaxMemory( final String maxMemory )
- {
- m_maxMemory = maxMemory;
- }
-
- /**
- * Sets the working directory for the application. Only used in forked mode.
- */
- public void setWorkingDirectory( final File workingDirectory )
- {
- m_workingDirectory = workingDirectory;
- }
-
- /**
- * Disables checking of the application's return code. Only used in forked
- * mode.
- *
- * @param ignore If true, the return code of the application is ignored.
- * If false, an exception is thrown if the application does
- * no exit with a 0 return code.
- */
- public void setIgnoreReturnCode( boolean ignore )
- {
- m_ignoreReturnCode = ignore;
- }
-
- /**
- * Sets the JVM executable to use to run the application in a forked JVM.
- *
- * @param jvm the path to the JVM executable, or null to use the default
- * JVM executable.
- */
- public void setJvm( final String jvm )
- {
- m_jvm = jvm;
- }
-
- /**
- * Returns the classpath that will be used to execute the application.
- *
- * @return the application's classpath. This path can be modified.
- */
- public Path getClassPath()
- {
- return m_classPath;
- }
-
- /**
- * Returns the system properties that will be used for the application.
- * Only used in forked mode.
- *
- * @return the application's system properties. Can be modified.
- */
- public EnvironmentData getSysProperties()
- {
- return m_sysProperties;
- }
-
- /**
- * Returns the arguments that will be used for the application.
- *
- * @return the application's arguments. Can be modified.
- */
- public ArgumentList getArguments()
- {
- return m_args;
- }
-
- /**
- * Returns the JVM arguments that will be used to execute the application.
- * Only used in forked mode.
- *
- * @return the JVM aguments. Can be modified.
- */
- public ArgumentList getVmArguments()
- {
- return m_vmArgs;
- }
-
- /**
- * Executes the application.
- */
- public void execute( final TaskContext context )
- throws TaskException
- {
- if( m_fork )
- {
- executeForked( context );
- }
- else
- {
- executeNonForked( context );
- }
- }
-
- /**
- * Executes the application in this JVM.
- */
- public void executeNonForked( final TaskContext context )
- throws TaskException
- {
- if( m_className == null )
- {
- final String message = REZ.getString( "executejava.no-classname.error" );
- throw new TaskException( message );
- }
- if( m_jar != null )
- {
- final String message = REZ.getString( "executejava.jar-no-fork.error" );
- throw new TaskException( message );
- }
- if( m_vmArgs.getArguments().length > 0 )
- {
- final String message = REZ.getString( "executejava.ignore-jvm-args.notice" );
- context.warn( message );
- }
- if( m_workingDirectory != null )
- {
- final String message = REZ.getString( "executejava.ignore-dir.notice" );
- context.warn( message );
- }
- if( m_maxMemory != null )
- {
- final String message = REZ.getString( "executejava.ignore-maxmem.notice" );
- context.warn( message );
- }
- if( m_sysProperties.size() > 0 )
- {
- final String message = REZ.getString( "executejava.ignore-sys-props.notice" );
- context.warn( message );
- }
-
- final String[] args = m_args.getArguments();
-
- // Log message
- if( context.isVerboseEnabled() )
- {
- final String debugMessage
- = REZ.getString( "executejava.exec-in-jvm.notice",
- m_className,
- FileUtils.formatCommandLine( args ) );
- context.verbose( debugMessage );
- }
-
- // Locate the class
- Class target;
- try
- {
- final ClassLoader classLoader = FileListUtil.createClassLoader( m_classPath, context );
- target = classLoader.loadClass( m_className );
- }
- catch( final Exception e )
- {
- final String message = REZ.getString( "executejava.find-class.error", m_className );
- throw new TaskException( message, e );
- }
-
- // Call the main method
- try
- {
- final Class[] params = { args.getClass() };
- final Method main = target.getMethod( "main", params );
- main.invoke( null, new Object[] { args } );
- }
- catch( final InvocationTargetException e )
- {
- final Throwable t = e.getTargetException();
- final String message = REZ.getString( "executejava.execute-app.error", m_className );
- throw new TaskException( message, t );
- }
- catch( final Exception e )
- {
- final String message = REZ.getString( "executejava.execute-app.error", m_className );
- throw new TaskException( message, e );
- }
- }
-
- /**
- * Executes the application in a separate JVM.
- */
- public int executeForked( final TaskContext context )
- throws TaskException
- {
- // Validate
- if( m_className != null && m_jar != null )
- {
- final String message = REZ.getString( "executejava.class-and-jar.error" );
- throw new TaskException( message );
- }
- if( m_className == null && m_jar == null )
- {
- final String message = REZ.getString( "executejava.no-classname.error" );
- throw new TaskException( message );
- }
-
- final Execute exe = new Execute();
- exe.setWorkingDirectory( m_workingDirectory );
- exe.setIgnoreReturnCode( m_ignoreReturnCode );
-
- // Setup the command line
-
- // Executable name
- if( m_jvm != null )
- {
- exe.setExecutable( m_jvm );
- }
- else
- {
- exe.setExecutable( getJavaExecutableName() );
- }
-
- // JVM arguments
- exe.addArguments( m_vmArgs );
-
- // Max memory size
- if( m_maxMemory != null )
- {
- exe.addArgument( "-Xmx" + m_maxMemory );
- }
-
- // System properties
- final String[] props = SysProperties.getJavaVariables( m_sysProperties );
- exe.addArguments( props );
-
- // Classpath
- final String[] classpath = m_classPath.listFiles( context );
- if( classpath.length > 0 )
- {
- exe.addArgument( "-classpath" );
- exe.addArgument( PathUtil.formatPath( classpath ) );
- }
-
- // What to execute
- if( m_jar != null )
- {
- exe.addArgument( "-jar" );
- exe.addArgument( m_jar );
- }
- else
- {
- exe.addArgument( m_className );
- }
-
- // Java app arguments
- exe.addArguments( m_args );
-
- // Execute
- return exe.execute( context );
- }
-
- /**
- * Determines the executable name for the java command for this JVM.
- *
- * @todo Move this to somewhere in AUT.
- */
- public static String getJavaExecutableName()
- {
- if( Os.isFamily( Os.OS_FAMILY_NETWARE ) )
- {
- // NetWare may have a "java" in the JRE directory, but 99% of
- // the time, you don't want to execute it -- Jeff Tulley
- // <JTULLEY@novell.com>
- return "java";
- }
-
- // Figure out the basename
- final String baseName;
- if( Os.isFamily( Os.OS_FAMILY_WINDOWS) || Os.isFamily( Os.OS_FAMILY_DOS ) )
- {
- baseName = "java.exe";
- }
- else
- {
- baseName = "java";
- }
-
- // Look for java in the ${java.home{/../bin directory. Unfortunately
- // on Windows java.home doesn't always refer to the correct location,
- // so we need to fall back to assuming java is somewhere on the
- // PATH.
- File javaExe =
- new File( System.getProperty( "java.home" ) + "/../bin/" + baseName );
-
- if( javaExe.exists() )
- {
- return javaExe.getAbsolutePath();
- }
- else
- {
- return "java";
- }
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/java/JavaRuntimeClassPath.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/java/JavaRuntimeClassPath.java
deleted file mode 100644
index 6abd5b553..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/java/JavaRuntimeClassPath.java
+++ /dev/null
@@ -1,80 +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.txt file.
- */
-package org.apache.myrmidon.framework.java;
-
-import org.apache.myrmidon.framework.file.FileList;
-import org.apache.myrmidon.framework.file.Path;
-import org.apache.myrmidon.framework.FileSet;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.aut.nativelib.Os;
-import java.util.Locale;
-import java.io.File;
-
-/**
- * A FileList that evaluates to the runtime class-path for this JVM.
- *
- * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision$ $Date$
- *
- * @ant.type type="path" name="java-runtime"
- */
-public class JavaRuntimeClassPath
- implements FileList
-{
- /**
- * Returns the files in this list.
- *
- * @param context the context to use to evaluate the list.
- * @return The names of the files in this list. All names are absolute paths.
- */
- public String[] listFiles( final TaskContext context )
- throws TaskException
- {
- final Path path = new Path();
-
- if( System.getProperty( "java.vendor" ).toLowerCase( Locale.US ).indexOf( "microsoft" ) >= 0 )
- {
- // Pull in *.zip from packages directory
- FileSet msZipFiles = new FileSet();
- msZipFiles.setDir( new File( System.getProperty( "java.home" ) + File.separator + "Packages" ) );
- msZipFiles.setIncludes( "*.ZIP" );
- path.addFileset( msZipFiles );
- }
- else if( "Kaffe".equals( System.getProperty( "java.vm.name" ) ) )
- {
- FileSet kaffeJarFiles = new FileSet();
- kaffeJarFiles.setDir( new File( System.getProperty( "java.home" )
- + File.separator + "share"
- + File.separator + "kaffe" ) );
-
- kaffeJarFiles.setIncludes( "*.jar" );
- path.addFileset( kaffeJarFiles );
- }
- else if( Os.isFamily( Os.OS_FAMILY_OSX ) )
- {
- // MacOS X
- final String classDir = System.getProperty( "java.home" ) +
- File.separator + ".." + File.separator + "Classes";
- final File classes = new File( classDir, "classes.jar" );
- path.addLocation( classes );
- final File ui = new File( classDir, "ui.jar" );
- path.addLocation( ui );
- }
- else
- {
- // JDK > 1.1 sets java.home to the JRE directory.
- final String rt = System.getProperty( "java.home" ) +
- File.separator + "lib" + File.separator + "rt.jar";
- final File rtJar = new File( rt );
- path.addLocation( rtJar );
- }
-
- return path.listFiles( context );
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/java/Resources.properties b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/java/Resources.properties
deleted file mode 100644
index 1fafa9996..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/java/Resources.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-executejava.exec-in-jvm.notice=Running in same VM: {0} {1}.
-executejava.ignore-jvm-args.notice=JVM args are ignored when using non-forked mode.
-executejava.ignore-dir.notice=Working directory is ignored when using non-forked mode.
-executejava.ignore-maxmem.notice=Maximum memory pool size is ignored when using non-forked mode.
-executejava.ignore-sys-props.notice=System properties are ignored when using non-forked mode.
-executejava.no-classname.error=No class-name specified.
-executejava.jar-no-fork.error=Cannot execute a jar in non-forked mode.
-executejava.find-class.error=Could not find main class "{0}".
-executejava.execute-app.error=Could not execute class "{0}".
-executejava.class-and-jar.error=Cannot specify both a Jar file and a main class.
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/Argument.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/Argument.java
deleted file mode 100644
index c0ca66b21..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/Argument.java
+++ /dev/null
@@ -1,89 +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.txt file.
- */
-package org.apache.myrmidon.framework.nativelib;
-
-import java.io.File;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.framework.file.Path;
-import org.apache.tools.todo.util.FileUtils;
-
-/**
- * Used for nested xml command line definitions.
- */
-public class Argument
-{
- private String[] m_parts;
-
- public Argument()
- {
- }
-
- public Argument( final String value )
- {
- setValue( value );
- }
-
- public Argument( final File file )
- {
- setFile( file );
- }
-
- /**
- * Sets a single commandline argument to the absolute filename of the
- * given file.
- *
- * @param value a single commandline argument.
- */
- public void setFile( final File value )
- {
- m_parts = new String[]{value.getAbsolutePath()};
- }
-
- /**
- * Line to split into several commandline arguments.
- *
- * @param line line to split into several commandline arguments
- */
- public void setLine( final String line )
- throws TaskException
- {
- m_parts = FileUtils.translateCommandline( line );
- }
-
- /**
- * Sets a single commandline argument and treats it like a PATH -
- * ensures the right separator for the local platform is used.
- *
- * @param value a single commandline argument.
- */
- public void setPath( final Path value ) throws TaskException
- {
- throw new TaskException( "Using a path not implemented." );
- //m_parts = new String[]{ PathUtil.formatPath( value ) };
- }
-
- /**
- * Sets a single commandline argument.
- *
- * @param value a single commandline argument.
- */
- public void setValue( final String value )
- {
- m_parts = new String[]{value};
- }
-
- /**
- * Returns the parts this Argument consists of.
- *
- * @return The Parts value
- */
- public String[] getParts()
- {
- return m_parts;
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/ArgumentList.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/ArgumentList.java
deleted file mode 100644
index 9570e6baf..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/ArgumentList.java
+++ /dev/null
@@ -1,94 +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.txt file.
- */
-package org.apache.myrmidon.framework.nativelib;
-
-import java.util.ArrayList;
-import java.io.File;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.tools.todo.util.FileUtils;
-
-/**
- * A utility class to use to assemble a list of command-line arguments.
- *
- * @author thomas.haas@softwired-inc.com
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision$ $Date$
- */
-public class ArgumentList
-{
- protected final ArrayList m_arguments = new ArrayList();
-
- /**
- * Returns all arguments defined by <code>addLine</code>, <code>addValue</code>
- * or the argument object.
- *
- * @return The Arguments value
- */
- public String[] getArguments()
- {
- final int size = m_arguments.size();
- final ArrayList result = new ArrayList( size * 2 );
- for( int i = 0; i < size; i++ )
- {
- final Argument arg = (Argument)m_arguments.get( i );
- final String[] s = arg.getParts();
- for( int j = 0; j < s.length; j++ )
- {
- result.add( s[ j ] );
- }
- }
-
- final String[] res = new String[ result.size() ];
- return (String[])result.toArray( res );
- }
-
- /**
- * Sets the arguments, replacing the current value of this list.
- */
- public void setArguments( final ArgumentList list )
- {
- m_arguments.clear();
- addArguments( list );
- }
-
- public void addArguments( final String[] args )
- {
- for( int i = 0; i < args.length; i++ )
- {
- addArgument( args[ i ] );
- }
- }
-
- public void addArguments( final ArgumentList args )
- {
- addArguments( args.getArguments() );
- }
-
- public void addArgument( final File argument )
- {
- addArgument( new Argument( argument ) );
- }
-
- public void addArgument( final String argument )
- {
- addArgument( new Argument( argument ) );
- }
-
- public void addArgument( final Argument argument )
- {
- m_arguments.add( argument );
- }
-
- public void addLine( final String line )
- throws TaskException
- {
- final String[] parts = FileUtils.translateCommandline( line );
- addArguments( parts );
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/Commandline.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/Commandline.java
deleted file mode 100644
index 245d2392c..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/Commandline.java
+++ /dev/null
@@ -1,61 +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.txt file.
- */
-package org.apache.myrmidon.framework.nativelib;
-
-
-
-/**
- * Commandline objects help handling command lines specifying processes to
- * execute. The class can be used to define a command line as nested elements or
- * as a helper to define a command line by an application. <p>
- *
- * <code>
- * &lt;someelement&gt;<br>
- * &nbsp;&nbsp;&lt;acommandline executable="/executable/to/run"&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;argument value="argument 1" /&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;argument line="argument_1 argument_2 argument_3"
- * /&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;argument value="argument 4" /&gt;<br>
- * &nbsp;&nbsp;&lt;/acommandline&gt;<br>
- * &lt;/someelement&gt;<br>
- * </code> The element <code>someelement</code> must provide a method <code>createAcommandline</code>
- * which returns an instance of this class.
- *
- * @author thomas.haas@softwired-inc.com
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class Commandline
- extends ArgumentList
-{
- private String m_executable;
-
- /**
- * Sets the executable to run.
- */
- public void setExecutable( final String executable )
- {
- m_executable = executable;
- }
-
- /**
- * Returns the executable to run.
- */
- public String getExecutable()
- {
- return m_executable;
- }
-
- /**
- * Sets the commandline, replacing its current value.
- */
- public void setCommandline( final Commandline command )
- {
- m_executable = command.getExecutable();
- setArguments( command );
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/EnvironmentData.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/EnvironmentData.java
deleted file mode 100644
index 112df2835..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/EnvironmentData.java
+++ /dev/null
@@ -1,56 +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.txt file.
- */
-package org.apache.myrmidon.framework.nativelib;
-
-import java.util.ArrayList;
-import java.util.Properties;
-
-/**
- * Wrapper for environment variables.
- *
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- */
-public class EnvironmentData
-{
- protected final ArrayList m_variables = new ArrayList();
-
- public Properties getVariables()
- {
- final Properties environment = new Properties();
- final int size = m_variables.size();
- for( int i = 0; i < size; i++ )
- {
- final EnvironmentVariable variable = (EnvironmentVariable)m_variables.get( i );
- environment.setProperty( variable.getKey(), variable.getValue() );
- }
- return environment;
- }
-
- public void addVariable( EnvironmentVariable var )
- {
- m_variables.add( var );
- }
-
- public void addVariable( String key, String value )
- {
- final EnvironmentVariable var = new EnvironmentVariable();
- var.setKey( key );
- var.setValue( value );
- addVariable( var );
- }
-
- public void addVariables( EnvironmentData properties )
- {
- m_variables.addAll( properties.m_variables );
- }
-
- public int size()
- {
- return m_variables.size();
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/EnvironmentVariable.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/EnvironmentVariable.java
deleted file mode 100644
index bff7982b2..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/EnvironmentVariable.java
+++ /dev/null
@@ -1,49 +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.txt file.
- */
-package org.apache.myrmidon.framework.nativelib;
-
-import java.io.File;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.myrmidon.framework.file.Path;
-
-public class EnvironmentVariable
-{
- private String m_key;
- private String m_value;
-
- public void setFile( final File file )
- {
- m_value = file.getAbsolutePath();
- }
-
- public void setKey( final String key )
- {
- m_key = key;
- }
-
- public void setPath( final Path path ) throws TaskException
- {
- throw new TaskException( "Using a path not implemented." );
- //m_value = PathUtil.formatPath( path );
- }
-
- public void setValue( final String value )
- {
- m_value = value;
- }
-
- public String getKey()
- {
- return m_key;
- }
-
- public String getValue()
- {
- return m_value;
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/Execute.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/Execute.java
deleted file mode 100644
index 5bdc03b98..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/Execute.java
+++ /dev/null
@@ -1,278 +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.txt file.
- */
-package org.apache.myrmidon.framework.nativelib;
-
-import java.io.File;
-import java.util.Properties;
-import org.apache.aut.nativelib.ExecException;
-import org.apache.aut.nativelib.ExecManager;
-import org.apache.aut.nativelib.ExecMetaData;
-import org.apache.aut.nativelib.ExecOutputHandler;
-import org.apache.avalon.excalibur.i18n.ResourceManager;
-import org.apache.avalon.excalibur.i18n.Resources;
-import org.apache.myrmidon.api.TaskContext;
-import org.apache.myrmidon.api.TaskException;
-import org.apache.tools.todo.util.FileUtils;
-
-/**
- * This is a utility class designed to make executing native processes easier
- * in the context of ant.
- *
- * <p>To execute a native process, configure an instance of this class,
- * and then call its {@link #execute} method.
- *
- * @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @author <a href="mailto:thomas.haas@softwired-inc.com">Thomas Haas</a>
- * @version $Revision$ $Date$
- */
-public class Execute
- extends Commandline
-{
- private static final Resources REZ
- = ResourceManager.getPackageResources( Execute.class );
-
- private Properties m_environment = new Properties();
- private File m_workingDirectory;
- private boolean m_newEnvironment;
- private ExecOutputHandler m_handler;
- private long m_timeout;
- private int m_returnCode;
- private boolean m_ignoreReturnCode;
-
- /**
- * Sets the timeout, in milliseconds, for the process. The process is
- * forcibly shutdown after this time. Use 0 to allow the process to
- * run forever. Default is 0.
- *
- * @param timeout the timeout, in milliseconds.
- */
- public void setTimeout( final long timeout )
- {
- m_timeout = timeout;
- }
-
- /**
- * Sets the handler for the process' output and error streams. If not
- * provided, the process' output and error are written to the log using
- * the TaskContext's logging methods.
- *
- * @param handler the handler.
- */
- public void setExecOutputHandler( final ExecOutputHandler handler )
- {
- m_handler = handler;
- }
-
- /**
- * Sets the environment to use for the process.
- *
- * @param environment a map from environment variable name to value.
- */
- public void setEnvironment( final Properties environment )
- {
- if( null == environment )
- {
- throw new NullPointerException( "environment" );
- }
- m_environment = environment;
- }
-
- /**
- * If this variable is false then then the environment specified is
- * added to the environment variables for current process. If this
- * value is true then the specified environment replaces the environment
- * for the command. Default is false.
- */
- public void setNewenvironment( final boolean newEnvironment )
- {
- m_newEnvironment = newEnvironment;
- }
-
- /**
- * Sets the working directory of the process to execute. Default is the
- * project's base directory.
- *
- * @param workingDirectory the working directory of the process. Use
- * null for the project's base directory.
- */
- public void setWorkingDirectory( final File workingDirectory )
- {
- m_workingDirectory = workingDirectory;
- }
-
- /**
- * Sets the expected return code of the process. If the process does not
- * exit with this return code, and exception is thrown by {@link #execute}.
- * Default is 0.
- *
- * @param returnCode the expected return code.
- */
- public void setReturnCode( final int returnCode )
- {
- m_returnCode = returnCode;
- }
-
- /**
- * If set to true, the return code of the process is ignore. If false,
- * it is compared against the expected return code. Default is false.
- */
- public void setIgnoreReturnCode( final boolean ignore )
- {
- m_ignoreReturnCode = ignore;
- }
-
- /**
- * Runs a process defined by the command line and returns its exit status.
- *
- * @return the exit status of the subprocess.
- */
- public int execute( final TaskContext context )
- throws TaskException
- {
- validate();
-
- try
- {
- // Build an output handler
- final ExecOutputHandler handler = buildOutputHandler( context );
-
- // Build the command meta-info
- final ExecManager execManager = (ExecManager)context.getService( ExecManager.class );
- final ExecMetaData metaData = buildExecMetaData( context, execManager );
-
- logExecDetails( metaData, context );
-
- // Execute the process and check return code
- final int returnCode = execManager.execute( metaData, handler, m_timeout );
- checkReturnCode( returnCode );
- return returnCode;
- }
- catch( final Exception e )
- {
- final String message = REZ.getString( "execute.failed.error", getExecutable() );
- throw new TaskException( message, e );
- }
- }
-
- /**
- * Logs the details of the command.
- */
- private void logExecDetails( final ExecMetaData metaData,
- final TaskContext context )
- throws TaskException
- {
- if( context.isVerboseEnabled() )
- {
- final String cmdline = FileUtils.formatCommandLine( metaData.getCommand() );
- final String message = REZ.getString( "execute.command.notice", cmdline );
- context.verbose( message );
- }
- if( context.isDebugEnabled() )
- {
- final String message = REZ.getString( "execute.env-vars.notice", metaData.getEnvironment() );
- context.debug( message );
- }
- }
-
- /**
- * Vaidates the arguments.
- */
- private void validate() throws TaskException
- {
- if( null == getExecutable() )
- {
- final String message = REZ.getString( "execute.no-executable.error" );
- throw new TaskException( message );
- }
- if( m_workingDirectory != null )
- {
- if( !m_workingDirectory.exists() )
- {
- final String message = REZ.getString( "execute.dir-noexist.error", m_workingDirectory );
- throw new TaskException( message );
- }
- else if( !m_workingDirectory.isDirectory() )
- {
- final String message = REZ.getString( "execute.dir-notdir.error", m_workingDirectory );
- throw new TaskException( message );
- }
- }
- }
-
- /**
- * Creates an output handler to use for the process' stdout and stderr.
- */
- private ExecOutputHandler buildOutputHandler( final TaskContext context )
- {
- ExecOutputHandler handler = m_handler;
- if( handler == null )
- {
- handler = new LoggingExecOutputHandler( context );
- }
- return handler;
- }
-
- /**
- * Utility method to verify that specified return code was the
- * return code expected (if any).
- */
- private void checkReturnCode( final int returnCode )
- throws TaskException
- {
- if( ! m_ignoreReturnCode && returnCode != m_returnCode )
- {
- final String message = REZ.getString( "execute.bad-resultcode.error",
- getExecutable(),
- new Integer(returnCode) );
- throw new TaskException( message );
- }
- }
-
- /**
- * Utility method to create an ExecMetaData object
- * to pass to the ExecManager service.
- */
- private ExecMetaData buildExecMetaData( final TaskContext context,
- final ExecManager execManager )
- throws ExecException
- {
- // Build the command line
- final String[] command = getCommandLine();
-
- // Build the environment
- final Properties newEnvironment = new Properties();
- if( !m_newEnvironment )
- {
- newEnvironment.putAll( execManager.getNativeEnvironment() );
- }
- newEnvironment.putAll( m_environment );
-
- // Determine the working directory
- File workingDir = m_workingDirectory;
- if( workingDir == null )
- {
- workingDir = context.getBaseDirectory();
- }
-
- return new ExecMetaData( command,
- newEnvironment,
- workingDir );
- }
-
- /**
- * Builds the command line.
- */
- private String[] getCommandLine()
- {
- final String[] args = getArguments();
- final String[] result = new String[ args.length + 1 ];
- result[ 0 ] = getExecutable().replace( '/', File.separatorChar ).replace( '\\', File.separatorChar );
- System.arraycopy( args, 0, result, 1, args.length );
- return result;
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/LoggingExecOutputHandler.java b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/LoggingExecOutputHandler.java
deleted file mode 100644
index 029ba42d6..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/LoggingExecOutputHandler.java
+++ /dev/null
@@ -1,47 +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.txt file.
- */
-package org.apache.myrmidon.framework.nativelib;
-
-import org.apache.aut.nativelib.ExecOutputHandler;
-import org.apache.myrmidon.api.TaskContext;
-
-/**
- * An {@link org.apache.aut.nativelib.ExecOutputHandler} adaptor, that writes output to the logging
- * methods of a {@link org.apache.myrmidon.api.TaskContext}.
- *
- * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
- * @version $Revision$ $Date$
- */
-public class LoggingExecOutputHandler
- implements ExecOutputHandler
-{
- private final TaskContext m_context;
-
- public LoggingExecOutputHandler( final TaskContext context )
- {
- m_context = context;
- }
-
- /**
- * Receive notification about the process writing
- * to standard output.
- */
- public void stdout( final String line )
- {
- m_context.info( line );
- }
-
- /**
- * Receive notification about the process writing
- * to standard error.
- */
- public void stderr( final String line )
- {
- m_context.error( line );
- }
-}
diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/Resources.properties b/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/Resources.properties
deleted file mode 100644
index e30a04d15..000000000
--- a/proposal/myrmidon/src/java/org/apache/myrmidon/framework/nativelib/Resources.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-execute.no-executable.error=No executable specified.
-execute.dir-noexist.error=The specified working directory "{0}" does not exist.
-execute.dir-notdir.error=The specified working directory "{0}" is not a directory.
-execute.failed.error=Command "{0}" failed.
-execute.bad-resultcode.error=Command "{0}" returned unexpected exit code {1}.
-execute.command.notice=Executing: {0}
-execute.env-vars.notice=Using environment: {0}.