ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jonathan gold <...@samizdatdigital.org>
Subject Re: programmatically creating and marshalling antfiles
Date Wed, 10 Aug 2005 04:15:15 GMT
Jack Woehr wrote:
> Steve Loughran wrote:
> 
>> Even if you could retro-fit every task out there with getters,
>>   -what about overloaded set operatons? which one should the get return?
>>   -what about property assignments. Tasks get their setters with 
>> properties expanded.
> 
> 
> Hmm. Ah, well. Writing out the project seems to be a fairly obvious 
> functionality in comparison
> to some of the exotic functionality of Ant. I guess it's just one of 
> those things which in hindsight
> the design should have accomodated, but which are difficult to retrofit 
> given that the design
> did not so accomodate.
> 

thanks everyone for the discussion. it does seem like it'd be more 
difficult to add than i had understood, and probably there are not a 
littany of use cases, and mine is pretty easily addressed by direct DOM 
  generation and serialization (thanks DOMElementWriter writer!) or, if 
i'm enterprising enough, a simple schema + jaxb for the ant subset i 
care about.

that being said, if it comes up again, here's an idea. define something 
like the following interface:

     public
     interface
     MarshallableProjectElement
     {
         public
         void
         marshalIntoNode(
             Node target,
             Document project
         ) throws BuildException;
     }

the 'project' parameter allows the implementor to do things like 
project.createElement().

in addition, there would be a helper class:

     public
     class
     ReflectiveMarshaller { ... }

which takes a project, creates a document element, and starts calling 
(recursively and with reflection) all getters which return a 
MarshallableProjectElement (or a collection thereof) and passing the 
results in to the given object's marshalIntoNode() method, and then 
serialize it somewhere.

this would seem to be retrofittable, and allow for gradual 
implementation where it makes sense.


fun, fun, fun...


jon

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org


Mime
View raw message