0 lines of code changed in:
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.
4 lines of code changed in:
* 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
2 lines of code changed in:
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
42 lines of code changed in:
* Migrated all tests into packages other than the one they are testing. The reason for this is that all the tests are BlackBox, using public APIs and there is no reason to have the testcases in the same package as the actual code. Thus all test code is in a sub-package from the code it actually tests.
ie Test code for package foo is located in package foo.test
* Migrated all the test data into the same hierarchy so that there is only one place where you have to look for test data.
This required that resource retrieval be hackled a little because no longer in same package as tested code/
0 lines of code changed in: