Remove the old embed proposal.
0 lines of code changed in:
Added a bit more info :-)
The next major step for this will be a set of hooks to allow ant to
be more JMX friendly - one very straightforward way to embed ant
is by using MBeans to represent the components.
In addition ant should be able to use MBeans as tasks and in
the build process.
27 lines of code changed in:
Finally, make all AntHandlers 'stateless' and make sure all the state is in
AntContext.
Started the cleanup process.
The reason for 'stateless' model is not performance, but having a cleaner
model. It is very hard to track things on the stack or in different
handlers.
The next major step will be to try to reorganize the DataType/Task/UnknownTask
creation.
So far all features ( sax2, import, dynamic prop, classloader ) seem to work
fine with 1.5 - at least on all projects I'm working on.
157 lines of code changed in:
A bit of cleanup, remove duplicated code.
Implement the 'projectName.target' instead of super. I'm still trying
to find a way to allow Import task to hook in and support whatever
policy it wants.
141 lines of code changed in:
Improve debugging ( to find the super. problems with import ).
Smaller fixes.
29 lines of code changed in:
Implement the change in handling the top-level target before
executing other targets ( which is closer to the original
behavior ).
Import started to work a bit - but it complain about
circular dep on super.mb2, still investigating.
3 lines of code changed in:
Import task, first version.
5 lines of code changed in:
Added import-related info to AntXmlContext.
Made few fields public - the whole thing will be refactored with
proper getter/setters after things are stable.
Added import processing ( the patch was modified a bit ).
193 lines of code changed in:
Merged all the changes from ProjectHelper.
The only thing not merged is 'description' - I would rather add a
'description' task, it's cleaner.
45 lines of code changed in:
First version of the <systemPath>.
You need to include ant-sax2.jar in ant/lib, define a <path id='foo'> that includes
all the jars that you need ( junit.jar, etc ) and then use
<systemPath pathRef='foo' /> to create the loader and reload all optional tasks.
After this step all optional tasks will work in the same way as if you have
included the jars from the <path> definition in ant/lib.
I did some basic tests and seems to work fine - note that <taskdef> will
work as before, i.e. if you explicitely define tasks that need optional
jars ( or redefine optional task ), you'll have the old behavior ( i.e.
require things in CLASSPATH ).
I'll try to find what changes are need for <import> and re-do the build
for ant-sax2, then do more testings.
14 lines of code changed in:
A small refactoring, getting to a more 'real' interface for the dynamic
properties.
This is not final, of course.
PropertyHelper will implement all property manipulation. Eventually in
ant1.6 the static methods in various places should just wrap and
call this. In 1.6 the property storage can also be migrated to this
class.
It should be possible by a task or embedding application to replace
the whole mechanism - no need for discovery on this one, it can be
done by a task.
The PropertyInterceptor will be used to plug different sources
for the property. I'm thinking to just have tasks/types implementing
this interface automatically get registered - it's the simpler
solution for tasks developers ( I think ).
16 lines of code changed in:
Initial attempt to fix the optional.jar ( for 1.5+ ). The ProjectHelper
will replace all optional tasks, using an AntClassLoader to load
( delegation disabled for the optional package ).
Next step is to add a task that adds jars to the loader for optional.
( like junit.jar, etc ).
42 lines of code changed in:
Fixes, build file, get it to work.
25 lines of code changed in:
Small update to the SAX2 reader - use a class that extends RuntimeConfigurable
and supports SAX2 attributes.
In addition, the property substitution has few enhancements: if the
property name is not found and it has a special syntax we'll use the
references to compute a value.
This is work in progress, but the intention is to support dom: syntax
for selecting nodes ( similar with XmlProperties, but using 'life'
DOM tree ) and bean: to use getters on the tasks/objects in the reference
table.
147 lines of code changed in:
First draft for the 'TaskFactory' hook.
The goal is to make Task/DataType ( or any other ProjectComponent ) creation more modular
and flexible.
0 lines of code changed in:
Another version of the SAX2-based project helper ( I can revert back
to the first one, and redo the fixes ).
I fixed the inner class problems, fixed the Attributes->AttributeList conversion.
I also turned the processing from 'implicit' recursive to an explicit
stack. The model is identical with the one used by Axis, and it's much
cleaner and easier to maintain/extend/etc.
Again, I can move back to the first one if anyone has a problem with this
change. I think it's a very good one, but may be too much.
317 lines of code changed in:
Jikes ( and gcj ) have some problems dealing with internal non-static classes.
The compiler is required to 'rewrite' the code, removing 'private' and
adding an extra parameter ( try to decompile ProjectHelper and look
at method signatures ). While standard javac seem to work fine, I had
problems with many other compilers ( usually gcj, but now jikes is
complaining as well ).
I manually did what the compiler would do - now it should work
with any compiler.
( the runtime exception was a "Verifier error, expecting object/array on stack" )
I'll do the same thing for the SAX2 helper.
107 lines of code changed in:
Quick change to ProjectHelperImpl to use SAX2.
Note that it already had dependencies on SAX2 interfaces, but the original
helper worked with SAX1 parsers too. This one will only work with SAX2.
IMHO SAX2 should be the default, and the old one should be kept
around for backward compat or special cases.
The parser is not using the namespace in any way - it'll use the
RoleFactory plugin to allow use of the namespace in task creation.
331 lines of code changed in:
Updated ProjectHelper.
I used the current sources ( with the new comments), and reimplemented
all changes.
The current version doesn't have anything related with the other proposals,
and is functionally equivalent with the old ProjectHelper - except it's
cleaner ( all private and SAX code moved to the helper imple ).
I created a new package, o.a.t.ant.helper to keep the core cleaner -
other helpers may be commited.
The SAX2 based helper is easy to write, but depends on few improvements
on RoleFactory ( createTask with namespace support, etc ).
I'm working on a new implementation of the task factory, with support
for data types and other roles - but that's another story.
731 lines of code changed in:
Added the TaskFactory and modified Project.
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.
26 lines of code changed in:
(1 more)