ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Benson <>
Subject Re: PropertyHelper thoughts
Date Thu, 14 Jun 2007 21:12:02 GMT

--- Dominique Devienne <> wrote:

> On 6/14/07, Matt Benson <>
> wrote:
> > --- Dominique Devienne <>
> wrote:
> > > I don't understand the SetPropertyResolver
> aspect.
> >
> > On further reflection, the Set* interface does
> make
> > sense, but only as an extension to the Get*
> interface.
> >  This would be the correct way to set anything
> that
> > couldn't be stuffed into the basic
> String-to-Object
> > property map (whatever that might be) and would
> imply
> > that the entity in question could get anything it
> > could set.  This also implies that the existing
> > namespace concept that exists but is unused in
> > PropertyHelper needs to go away.  The
> > setter-that-can-get would parse its own
> > pseudo-namespace if applicable.  Since this would
> > extend the Get version, I would think it could
> wait
> > until the main two interfaces were handled.
> Sorry to be a bit thick, but I still don't
> understand. I don't want
> properties to be anything but Strings. We use
> references to refer to
> something else that Strings. I'm still not buying
> the SetPR given what
> I've read so far ;-) --DD

Okay, I'll give you points for seeing the forest in
this case.  Here's Costin's commit message from the
initial add of PropertyHelper:

"Dynamic properties" and a bit more.

This is "slightly" different from embed - if dynamic
properties will be
accepted in 1.6, it is better to do it right. Embed
uses few hacks to
trick the ProjectHelper.

PropertyHelper includes all the code related with
property manipulation
from Project (cut&paste). I added a very simple hook
mechanism ( Filter/Valve
like ) for the most common operations.

The API is obviously far from final - someone who
really understand "user"
and "inherited" properties should review it and make
few changes.

In Project, all properties fields are private - so all
can be removed.
The methods related with properties will just delegate
to PropertyHelper.
>From a user point of view - no visible change (
hopefully :-). Even grant
will continue to work ( but won't be able to use the
new features ).

- cleanup of Project. Less code and better organised.
- Property handling will hopefully be cleaner too
- we get to add APIs for namespace support, and maybe
support non-string
properties ( JSP-EL like - that needs to be disussed,
but IMO it would
be very helpfull ). While refs are Objects, the main
distinction is imutability.

- apps embeding or extending ant can fully customize
_all_ aspects of
property processing, including ${} replacement and
even the syntax.
- it should be very easy to hook a different storage
mechanism ( i.e.
integrated with the embeding app, without requiring
copy of properties ).
- it should be possible to avoid copy when creating
execution frames
( by using a chain that keeps changes and delegates
getters ).
- dynamic properties support ( my original itch :-)

Whether object properties are desirable can be up for
debate.  We are planning here to massacre the existing
API, but for inertia's sake I would leave some things
intact, like the use of Hashtable as opposed to
Properties; that being the case it may be easier to
continue to support Object properties than to withdraw
that support.

Finally, take the toString: extension.  This is a
perfect example of a PropertyEvaluator implementation.
 What does it do?  It renders a ref as a String.  So
it may be that a StoringPropertyEvaluator would set an
Object reference on the Project created from a String
representation, no?  Again, this is something we could
keep in mind but leave unimplemented for the time
being.  :)

Finally, if any of the old-timers has any more
information on Costin's mention of "dynamic
properties" without my having to search the archives
(lazy), feel free.  :)


> To unsubscribe, e-mail:
> For additional commands, e-mail:

TV dinner still cooling? 
Check out "Tonight's Picks" on Yahoo! TV.

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message