You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by wolfgang haefelinger <wh...@gmail.com> on 2010/11/10 14:23:12 UTC

API question on properties

Hello Ant Developers,

I believe the API regarding properties is incomplete (at least from a
performance point of view).

A bit of background information:
I make use of the new property API (1.8.1) which allows me to evaluate
${..} in a different way. In my case, the body ${..} will be a Java
Unified Expression (EL), see [1].

Now, EL comes with it's own object storgage and with the help of
additional tasks,  a user can create "EL properties". Assume this task
would be "<elproperty /> similar to Ant's property task. Then there
could be something like

<elproperty name="p" value=".." />
<property name="p" value=".." />

At this point there is a property named "p" in EL's storage and a
property named "p" in Ant's default storage.

Then, assume that  there is this <echo /> task and that "handling of
EL" has been enabled.

<echo>
   ${p}
   ${property.p}
</echo>

The first embedded ${p} resolves to the object in EL's storage, cause
PropertyEvaluators are added in LIFO order. In my case, that is
exactly what I want (in general, I believe it is better to let the
user determine the order).

However, I also want to give my users the chance to explicitly
reference the object in Ant's storage, i.e. the Ant "string" property.
That's what the second embedded reference, ${property.p} is all about.

My question is how to access to Ant property 'p' in a given project?

Obviously (?) I can't make use of Project.getUserProperty(String
propertyName) cause this would invoke my own EL property evaluator.

All I found is

 Project p = ...
 String name = 'p';
 p.getProperties().get(name);

However, a closer look to getProperties() reveals that this method is
essentially implemented as

public Hashtable getProperties() {
        //avoid concurrent modification:
        synchronized (properties) {
            return new Hashtable(properties);
        }
        // There is a better way to save the context. This shouldn't
        // delegate to next, it's for backward compatibility only.
    }

========================================================
So my question is essentially how to retrieve an Ant property in Ant's storage?
========================================================

Greetz,
Wolfgang.


[1] http://en.wikipedia.org/wiki/Unified_Expression_Language







-- 
Wolfgang Häfelinger
häfelinger IT - Applied Software Architecture
http://www.haefelinger.it
+31 648 27 61 59

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