* 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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272180 13f79535-47bb-0310-9956-ffa450edef68
share a common abstract base class.
* Fixed <ant1> test files so that they run under Ant1.4, for checking.
* Fixed build so that ant1_todo.atl only includes the correct files.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272107 13f79535-47bb-0310-9956-ffa450edef68
to be used in <if>. Tests updated for new functionality.
* Ant1 conversion stylesheet uses nested <is-set> condition on <if>,
to replicate Ant1 behaviour of 'if=' and 'unless=' on targets.
* ant1compat antlib generated as part of standard build.
* Minor build cleanup: ${custom-tasks-dir} -> ${build.custom-tasks} for
consistency.
* Ant1CompatProject now uses ProjectHelper for property resolution, rather than
trying to duplicate Ant1 behaviour.
* Added tests for Ant1 Compatibility layer. These have been exclude from regular
build, as they fail when run under Ant1.4.1, because the JUnit task *always*
places ant.jar *first* in the JUnit classpath. Tests work under Ant1.5alpha,
since it adds ant.jar *last* by default. (Tests also function correctly by
invoking JUnit directly - or with Intellij JUnit integration).
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272101 13f79535-47bb-0310-9956-ffa450edef68
* 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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272066 13f79535-47bb-0310-9956-ffa450edef68
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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272047 13f79535-47bb-0310-9956-ffa450edef68
can accept any nested FileList implementation, including <path>.
* Added <list-path> diagnostic task.
* Added test cases for <path>.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271948 13f79535-47bb-0310-9956-ffa450edef68
* Added general purpose Object -> String converter that simply uses Object.toString().
* Reorganised AbstractComponentTestCase, to give sub-classes the opportunity to replace
the default implementation of a component, with a particular implementation.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271942 13f79535-47bb-0310-9956-ffa450edef68
* 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