adammurdoch in ant

Changed container config from Parameters to Context, to allow Objects to

be used in the config:

* All services that used to implement Parameterizable now implement Contextualizable.

* Changed 'myrmidon.home' to a File, and the paths to File[].

* DefaultEmbeddor now deploys Antlibs from all directories in 'myrmidon.lib.path',

rather than just a single dir. Can't specify alternative service

implementations (temporarily broken).

* Added 'myrmidon.antlib.path', which DefaultWorkspace uses to search for <import>-ed


* Replaced --task-lib-dir with --antlib-path, which appends directories to


* Added --ext-path, which appends directories to 'myrmidon.ext.path'.

* DefaultClassLoaderManager now uses the container config to locate the shared

classloader, rather than using the context classloader.

* Rolled back change to PropertyResolver.resolveProperties(), so that it

uses a TaskContext again. Added some regression tests.

* Changed Embeddor.createWorkspace() to use a Map, rather than a Parameters,

to supply initial workspace properties. Initial properties can be Objects,

rather than only Strings. Got rid of the Object -> String convertion from

<ant> and <antcall>.

* Generalised ExecutionFrame, so that it can represent any execution scope

(root, workspace, project, task, inherited, etc), rather than just task scope:

- Replaced getTaskContext() with getPropertyStore().

- Replaced getTypeManager() with getServiceManager().

* Executor is now responsible for creating TaskContext.

* Changed DefaultExecutor to use the configurer provided by the execution frame.

* Added ExecutionContainer, a lifecycle interface which is used to supply the

root execution frame to a service which executes tasks (directly or indirectly).

* Changed interaction between DefaultEmbeddor and workspaces. Embeddor is now

responsible for creating the base property store for workspaces. ExecutionContainer

is used to pass this to workspaces. Parameterizable is now used to pass

container params to workspaces (which matches how it is used with all the

other services).

  1. … 10 more files in changeset.
* Moved PropertyStore to Left DefaultPropertyStore

where it was.

* Changed PropertyResolver.resolveProperties() to use a PropertyStore,

rather than a TaskContext.

* Changed PropertyStore methods to throw a TaskException.

* Changed contract of PropertyStore.getProperty() to throw exception if the

requested property is not set.

Forgot to move the messages across.

Moved a bunch of classes to framework.nativelib:

- Argument

- ArgumentList

- Commandline

- EnvironmentData

- EnvironmentVariable

- Execute

- LoggingExecOutputHandler

  1. … 44 more files in changeset.
Renamed DependencyMetricsTest -> DependencyMetricsTestCase, so that it gets run.

Axed a bucketload of classes.

* Extracted ArgumentList superclass out of Commandline. Changed most usages

of Commandline to use ArgumentList instead.

* Execute now extends Commandline.

- Removed Execute.getCommandline().

- Moved Commandline.getCommandline() down to Execute, and made private.

  1. … 30 more files in changeset.
Axed todo.types.FileSet.

  1. … 16 more files in changeset.
* Split up todo.types.PathUtil.

- Moved generic formatting to aut.nativelib.PathUtil.

- Moved FileList util methods to framework.file.FileListUtil.

- Moved addExtDirs() to DefaultCompilerAdaptor.

- myrmidon.components.* no longer depend on todo.*

* Removed all usages of Commandline.toString(), size() and getCommandline(),

excluding Execute.

  1. … 23 more files in changeset.
* Moved a bunch of Jars around in CVS.

* Moved a bunch of Jars around in dist image:

excalibur-cli-*.jar -> dist/bin/lib

excalibur-bzip2-*.jar -> dist/ext

excalibur-tar-*.jar -> dist/ext

excalibur-zip-*.jar -> dist/ext

* Added dependency on 'excalibur-bzip2' to archive 'antlib'.

  1. /core/trunk/proposal/myrmidon/lib/bin/lib
  2. … 3 more files in changeset.
* Added --type command-line option, which specifies which ProjectBuilder to use.

* Use ConvertingProjectBuilder for .ant files as well as .xml files.

Fix compile problem.

VFS Additions:

* Added FileSelector, which allows files to be chosen when doing recursive

operations. Added a couple of implementations. Added a selector parameter

to FileObject.delete() and copy().

* Added FileObject.replicateFile(), which converts a FileObject into a local File.

* Moved replication code out of the Zip provider, into a shared FileReplicator

component. The implemenation is pretty brain-dead, but at very least should

properly clean up temporary files in ant_vfs_cache. Also, local files will

no longer be replicated, but used directly.

* Added FileName.getRelativeName(), and NameScope.DESCENDENT_OR_SELF.

* Now handles providers which are LogEnabled and Disposable.

* Made the local file provider pluggable.

* Providers are now responsible for thier own caching.

* FTP and Zip providers clean up properly. Fixed FTP directory delete.

  1. … 44 more files in changeset.
Add EOL between error message and stack trace.

Was not cleaning-up the services.

Make compile.

Doc tidy-up:

* Fixed some spelling, added a tiny bit more content.

* Added an 'anchor' attribute for <section> and <subsection> elements.

  1. … 10 more files in changeset.
ClassLoader hierarchy changes:

* Use multi-parent ClassLoaders for antlibs and extensions, so that each

extension jar is loaded by a single ClassLoader in the hierarchy. Allows

classes from extensions to be shared across dependent antlibs and extensions.

* Changed contract of ClassLoaderManager.createClassLoader( File[] ), so that

it creates a new ClassLoader each time it is called.

* Changed ExtensionManager, so that it no longer extends PackageRepository.

* Added a few test cases for DefaultClassLoaderManager.

* Moved responsibility for checking myrmidon.home and building the various paths,

from DefaultEmbeddor and DefaultExtensionManager to EmbeddedAnt. Use the

platform path separator for the paths, rather than the | char.

* Use EmbeddedAnt in AbstractProjectTest, rather than using an Embeddor directly.

* AbstractComponentTest was not parameterising or initialising the test


  1. … 21 more files in changeset.
Forgot to remove these when they were moved to antlib.

Condition changes:

* Split <is-set> into <is-set> and <is-true> conditions. <is-true> uses the

converter to determine whether something is 'true', so is a little fussy.

* Moved <uptodate> and <equals> into antlib, and made <uptodate> a condition.

* Added <type-available> condition, which checks whether a particular

type is defined.

* Fixed <not> to actually work.

* Added test cases for some of the conditions.

  1. … 12 more files in changeset.
Switch on the 'build' antlib.

Moved PathUtil.addJavaRuntime() into a new <java-runtime> FileList implementation.

Moved across converter messages that were left behind.

* Added ClassLoaderManager.createClassLoader( File[] ), to create a

ClassLoader from a class-path.

* Moved responsibility for creation of ClassLoaders out of the tasks, and into

the ClassLoaderManager, which caches them, and resolves extension dependencies.

* Added PathUtil.createClassLoader() convenience method to create a ClassLoader

from a Path.

* Changed the PathUtil methods to use the more general FileList, rather than Path.

* Added 'classpath' attribute to the <*-available> conditions.

Extracted out a superclass from the exceptions in myrmidon.interfaces.*, to

make it a little easier to add new exceptions to the interfaces packages.

Include more of the stack trace on error.

* Updated todo list.

* Removed the 'differences to ant1' blurbage from index.xml.

* Regenerated HTML.

    • ?
Started moving across the <javac> task to the java antlib:

* Added <javac> task, which extends AbstractFacadeTask.

* Added JavaCompilerAdaptor and ExternalCompilerAdaptor abstract adaptors.

Currently only handle classpath, debug and deprecation args.

* Added basic jikes and javac (modern) compilers.

Changed the build to pick up manifest files for antlibs out of src/manifest.