[root]/proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor
Author | Changes | Lines of Code | Lines per Change |
---|---|---|---|
Totals | 80 (100.0%) | 989 (100.0%) | 12.3 |
donaldp | 59 (73.8%) | 668 (67.5%) | 11.3 |
adammurdoch | 19 (23.8%) | 309 (31.2%) | 16.2 |
darrell | 1 (1.3%) | 8 (0.8%) | 8.0 |
sbailliez | 1 (1.3%) | 4 (0.4%) | 4.0 |
zappity zap
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
antlibs.
* Replaced --task-lib-dir with --antlib-path, which appends directories to
'myrmidon.antlib.path'
* 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.
32 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
other services).
54 lines of code changed in:
* Moved PropertyStore to interfaces.property. 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.
4 lines of code changed in:
Was not cleaning-up the services.
1 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
components.
2 lines of code changed in:
* Fixed a bunch of checkstyle violations (mostly
javadoc)
* Added basic javadoc target to build.
8 lines of code changed in:
final static --> static final to follow JLS recomendations
1 lines of code changed in:
Made embeddor not implement the framework lifecycle stages
4 lines of code changed in:
* Use the shared classloader as the parent of antlib classloaders, rather
than using the container classloader.
* DefaultWorkspace and ExecManagerFactory figure out myrmidon.home using
their parameters, rather than using system properties.
* Split embeddor/workspace/project handling code out of CLIMain into a new
EmbeddedAnt helper class. CLIMain is now responsible for setting up the
logger, and command-line option handling. EmbeddedAnt is responsible for
starting the embeddor, building the project, and executing targets (and
cleaning-up). Should make it considerably simpler to embed myrmidon.
6 lines of code changed in:
Add embeddor to serviceManager.
Man is this an ugly hack ;)
2 lines of code changed in:
Merge DefaultConverterRegistry into DefaultMasterConverter
7 lines of code changed in:
TypeManager changes:
* Reverted TypeManager to reference roles by name, rather than type.
* DefaultTypeManager now uses the RoleManager to determine a role's type, to
use for doing instanceof checks.
* DefaultMasterConverter, InstantiatingServiceManager, and VfsManager no
longer look up a TypeFactory in their service() method.
* Added ROLE field to several interfaces.
3 lines of code changed in:
Move PropertyResolver and friends into own package hierarchy
2 lines of code changed in:
Move ClassLoaderManager and DefaultClassLoaderManager into their own packages.
19 lines of code changed in:
* Added PropertyResolver service interface, together with 2 implementations.
(One implementation mimics Ant1 behaviour). These are added in the
"workspace" packages, since that's where PropertyUtil was. Not sure if this
is the right place.
* DefaultTaskContext now implements Context interface, used by
PropertyResolver. This avoids having the PropertyResolver dependent on
TaskContext, avoiding a potential circularity problem. (since TaskContext has
a "resolve" method of it's own).
* Removed PropertyUtil.
* Tests for PropertyResolver implementations.
Submitted by Darrell DeBoer [darrell@apache.org]
2 lines of code changed in:
Replaced usage of Avalon Context with Myrmidon specific Context:
* Moved read-only property and resolve methods from TaskContext to new Context
interface. TaskContext now extends the new Context interface.
* Changed the Configurer methods to use the new Context. Both implementations
use the supplied Context to do property resolution.
* Renamed TaskContext.getPropertys() -> getProperties().
* Moved PropertyUtil from configurer to workspace package, as that is now
the only place it is used.
* Changed PropertyUtil to work with the new Context.
RoleManager:
* A default implementation for a role can now be specified. Currently
can only do this programatically.
DefaultMasterConverter:
* Removed MasterConverter interface. It is now identified by the Converter
role.
* Now caches the converter instances.
* Changed the converter search algorithm to traverse the *source* class
hierarchy, including all interfaces. Chooses the most specialised
conversion, and fails if there is more than one such choice.
DefaultConfigurer:
* Attempts to convert references, if the type does not match the expected type.
* Changed handling of nested elements, for named adders/setters:
* If the method type can be mapped to a role, and that role has a default
implementation, then use that default implementation.
* Otherwise, if the method type is an interface, fail.
* Otherwise, create an instance using no-args constructor.
* Changed handling of nested elements, for typed adders/setters:
* If the method type can be mapped to a role, and the element name is
a type of that role, then use that role to create the instance.
* Otherwise, use the type factory for the generic data-type role.
* Attempt to convert the instance if it is not of the expected type.
* Added a bunch of test cases for new functionality.
* Renamed all the ConfigTest classes to have descriptive names.
Misc:
* Renamed package framework.factorys -> framework.factories.
* Made tests work when fork = false.
2 lines of code changed in:
Removed AntServiceManager:
* Renamed DefaultAntServiceManager to InstantiatingServiceManager. This
implementation now sets-up the service factories and service instances
(log enable, service, parameterise, initialise).
* Rearranged the service heirarchy, so that services deployed from a
service descriptor are visible in the root context (passed to workspaces
and project builders).
* Service factories are registered using the role name, not the role class name.
* Added unit tests for InstantiatingServiceManager.
Changes to DefaultConfigurer error messages:
* All exceptions thrown by DefaultConfigurer indicate which configuration
element the error happened in.
* Updated DefaultConfigurer test cases, to check nested error messages
where appropriate.
45 lines of code changed in:
Rename myrmidons ServiceManager stuff to AntServiceManager
Refactored the codebase to use Avalons ServiceManager rather than ComponentManager. The reason for this is that the ComponentManager required that contained objects implement the Component interface while the ServiceManager constructs do not have this requirement.
This makes it much easier to extract parts of Myrmidon without any dependency on Ant/Avalon
19 lines of code changed in:
* Added test cases for DefaultEmbeddor.
* Target start and finish events are now fired for a project's implicit target.
* Unit tests now run against a dummy myrmidon install.
* Tidy-up some error messages.
8 lines of code changed in:
(45 more)