For example, HeadFilter can be added to filterset as this:
<filterreaderset>
<filterreader classname="org.apache.tools.ant.HeadFilter">
<param name="lines" value="3"/>
</filterreader>
</filterreaderset>
or this:
<filterreaderset>
<headfilter lines="3"/>
</filterreaderset>
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271580 13f79535-47bb-0310-9956-ffa450edef68
* Added FileSelector interface.
* <v-fileset> now takes file selectors, instead of include and exclude patterns.
* Added a bunch of file selector implementations:
* <and>, <or>, <not> for combining selectors.
* <name>, <basename>, <url> for testing bits of the file name against
an Ant 1 style pattern, or a regular expression.
* <is-file>, <is-folder>, <exists> for testing file type.
* Added <flat-fileset>, which combines nested file sets and paths into a
single directory. This allows explicit path -> fileset conversion.
* Added <filtered-path>, which applies selectors to nested file sets and paths.
* Added <list-fileset> debug task.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271577 13f79535-47bb-0310-9956-ffa450edef68
This is not organized as a 'project' - the files here needs to replace
the ones in the main tree. I'll probably import the rest of the core
and make it a standalone replacement, so it's easy to review.
The goals are to:
- make ant more 'embeddable'
- integrate it better in other tools
- support SAX2 and namespaces
- support pluggable behavior for the XML reader
- support pluggable task factories - the factory will have full control
over the class loader
- better support and integration with existing java beans.
All that while maintaining full compatibility with ant1.4 - all
the code here is just an additional set of hooks, with the previous
behavior preserved and remaining as default.
Eventually this can be refactored into a standalone component
that will implement a task engine for ant1.x.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271572 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
Minor optimization of PropertyFileInputHandler.
Use magic property name ant.input.properties instead of
input.properties to conform with our unofficial magic property naming
convention.
Use valid choices in prompt (DefaultInputHandler only) if we have a
MultipleChoiceInputRequest.
Port old <input> testcase over to this proposal.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271557 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
2. Javadoc changes to use < and > instead of < and > characters
3. Removal of debug statement from ChainReaderHelper
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271526 13f79535-47bb-0310-9956-ffa450edef68
Most of the functionality in Main is moved into AntBean ( all public/protected
methods are now wrappers around AntBean's functionality, for backward compat).
Same in ProjectHelper - again, for backward compat the public/protected functions
are unchanged, old code can still call the old methods and get similar behavior.
In TaskAdapter - few improvements ( still more to go ) to allow a program
to control tasks that are in a child loader. That's extremely important to
get ant embeded and controlled in a programatic way ( Project may create
tasks in a child class loader, so casting will fail - the only way
to use them is by using introspection ). I've also added the ability
to 'adapt' beans that have multiple methods, not only execute()
Please review, try, let me know when I can commit it.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271514 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