* Completed property hooks, so that the underlying Ant1 project
is not used for setting, getting or resolving properties.
* Made PropertyResolver.resolveProperties()take a TaskContext,
instead of Avalon Context. (We can always split out a generic
interface later, if need be.) Ant1 compatibility layer user
ClassicPropertyResolver, which needs a better name.
* Added modified BuildException, which incudes a Myrmidon-friendly
getCause() method, to allow Ant1 exceptions to be properly cascaded.
* DefaultTaskContext:
- Allow "+" in property names.
- Implemented DefaultTaskContext.getProperties()
- No longer implements avalon Context (not needed)
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271924 13f79535-47bb-0310-9956-ffa450edef68
* Handle the case where a class has both a setFoo() and addFoo() method.
* Ignore addContent( String ) if there is a non-String addContent() method.
* Ignore add( String ) if there is a non-String add() method.
* Added test cases for these.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271898 13f79535-47bb-0310-9956-ffa450edef68
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/
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271870 13f79535-47bb-0310-9956-ffa450edef68
* 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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271849 13f79535-47bb-0310-9956-ffa450edef68
* Removed "if" and "unless" conditions from targets.
* Moved parsing of "project->target" dependencies out of DefaultWorkspace,
into DefaultProjectBuilder.
* DefaultWorkspace now detects cycles in the target dependency graph.
* DefaultWorkspace now executes the implicit target for referenced projects.
* Changes to DefaultProjectBuilder error reporting.
* Added a few more test cases for DefaultProjectBuilder.
Unit Tests:
* Moved AbstractComponentTest.getLogger() up to AbstractMyrmidonTest.
* Removed AbstractComponentTest.setup(). Components are now created on demand.
* Use BasicLogger in unit tests.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271835 13f79535-47bb-0310-9956-ffa450edef68
specifying/testing name validity.
* NameValidator is used by DefaultProjectBuilder for project and target
names, and by DefaultTaskContext for Property names.
* Added ProjectException, thrown by ProjectBuilder.build().
* Tidy-up error messages for project building errors.
* Added a bunch of tests
Submitted by Darrell DeBoer [darrell@apache.org]
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271810 13f79535-47bb-0310-9956-ffa450edef68
* Added FileObject.copy().
* Renamed <v-copy> task attributes file -> srcfile, tofile -> destfile, todir -> destdir.
* Moved provider instantiation out of DefaultFileSystemManager, and into
myrmidon-aware VfsManager. Providers are instantiated using the TypeManager.
The list of providers isn't configurable yet.
* Some support for %nn encoded URI (not quite complete).
* Zip file system now handles zip files from any file system, not just local
files. Still read-only at this stage. Uses a truely dodgy and very temporary
replication mechanism.
* Zip file system now handles relative paths in URI (e.g. zip:relpath.zip), that are
resolved against the base dir.
* Fixed bug in resolving names against the root file of a file system.
* Changed behaviour of FileName.resolveName( ".." ) for the root file of
a file system.
* Added more test cases.
* A bucketload of other minor changes.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271803 13f79535-47bb-0310-9956-ffa450edef68
* Was not exiting with non-zero exit code when the build failed.
* Fix the error reporting so that the entire exception chain is reported.
* Only print out stack traces when in verbose or debug mode.
* Wrap all exceptions thrown during task initialisation and execution with
a general 'task failed' exception.
* Another <property> testcase.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271802 13f79535-47bb-0310-9956-ffa450edef68
(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]
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271801 13f79535-47bb-0310-9956-ffa450edef68
* Changed semantics of FileName.resolveName() with 'child' scope.
* Fixed a couple of problems in UriParser.normalise().
* Split up LocalFileNameParser into a Windows specifc parser and a generic
parser.
* More test cases.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271668 13f79535-47bb-0310-9956-ffa450edef68
* No longer implements Configurable, uses a set() method instead.
* The property value can be included as the text content of
the <property> element.
* Added test-cases.
* Added some alternative executeTarget() methods to
AbstractProjectTest, to expect a particular set of log messages,
or a particular failure.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271567 13f79535-47bb-0310-9956-ffa450edef68
* 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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271539 13f79535-47bb-0310-9956-ffa450edef68
* 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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271529 13f79535-47bb-0310-9956-ffa450edef68
* A class may now be explicitly associated with a role, rather than being
implicit in the role name.
* Added RoleInfo to bundle up role meta-info.
* Reworked the methods of RoleManager.
* Added test-cases for DefaultRoleManager.
* Make tests compile again.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271498 13f79535-47bb-0310-9956-ffa450edef68
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
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271495 13f79535-47bb-0310-9956-ffa450edef68
* 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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271443 13f79535-47bb-0310-9956-ffa450edef68
a ComponentManager. Currently all components are also exposed as services.
* Some tidy up to DefaultExecutionFrame and DefaultWorkspace.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271313 13f79535-47bb-0310-9956-ffa450edef68
* Got rid of <converters> element from antlib descriptor. Converters are
now defined in the <types> element.
* Moved (most of) the role-specific knowledge from Deployment back to DefaultDeployer.
* Split out ClassLoader management into DefaultClassLoaderManager. This is
living in the deployer package for now.
* Tidied-up the component set-up and clean-up in DefaultEmbeddor. Added
the ClassLoaderManager component.
* Added test for TypeDeployer.deployAll().
Changes to unit tests:
* Added AbstractMyrmidonTest, which takes care of locating test resources.
* Changed the VFS, type factory, and deployer tests to use AbstractMyrmidonTest.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271271 13f79535-47bb-0310-9956-ffa450edef68
* Uses the DataType role when creating instances for interface properties,
rather than using the interface itself as the role.
* Added ObjectConfigurer.getTypedProperty(). This replaces the implicit
behaviour in DefaultObjectConfigurer.getProperty() where the typed
property was returned for an unknown property name.
* Typed properties are set using attributes and references, with the
property's interface role shorthand name. Previously, the DefaultConfigurer
would attempt to set the typed property for any unknown attribute or
reference name.
* Can have a set() method for a typed property, rather than an add() method.
Same semantics as setX() and addX() methods.
* Added a several more test cases.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271227 13f79535-47bb-0310-9956-ffa450edef68
explicitly deploy a type. These replace the multi-arg deployX() methods.
* ConverterDef now sub-classes AbstractTypeDef.
* Changed AbstractTypeDef to use TypeDefinition objects, and to configure
them using the configurer. Removed all setX() methods from AbstractTypeDef
and sub-classes.
* Added some units tests for DefaultDeployer.
* Moved component set-up from DefaultConfigurerTest -> super class.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271072 13f79535-47bb-0310-9956-ffa450edef68