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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@273165 13f79535-47bb-0310-9956-ffa450edef68
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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@273164 13f79535-47bb-0310-9956-ffa450edef68
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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@273141 13f79535-47bb-0310-9956-ffa450edef68
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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@273135 13f79535-47bb-0310-9956-ffa450edef68
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 ).
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@273133 13f79535-47bb-0310-9956-ffa450edef68
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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@273118 13f79535-47bb-0310-9956-ffa450edef68
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 ).
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@273107 13f79535-47bb-0310-9956-ffa450edef68
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 ).
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@273106 13f79535-47bb-0310-9956-ffa450edef68
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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272726 13f79535-47bb-0310-9956-ffa450edef68
The SAX2 helper remains here - I want to do few more improvement and to
keep it in sync with my next proposal ( for TaskFactory )
I'll make a separate proposal for the SAX2 ProjectHelper when it's ready -
it doesn't have to be part of the official ant1.5 ( since we'll need
more discussion/experiments to decide what's the best use of the namespaces )
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271782 13f79535-47bb-0310-9956-ffa450edef68
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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271757 13f79535-47bb-0310-9956-ffa450edef68
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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271756 13f79535-47bb-0310-9956-ffa450edef68
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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271736 13f79535-47bb-0310-9956-ffa450edef68
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.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271735 13f79535-47bb-0310-9956-ffa450edef68