Hi,

we have a PropertyEvaluator for ${toString:some-id} that looks up an
object with id "some-id" in the current project and expands to either
null (reference doesn't exist) or the result of calling toString() on
the object.

With trunk PropertyEvaluators can return non-Strings as values for
properties and IntrospectionHelper actually uses this.  Say I have

public void setFoo(MyComplexType t)

as attribute and

<someTask foo="${property}"/>

and a PropertyEvaluator returns an instance of MyComplexType for
"property" then IntrospectionHelper will happily pass that instance
along (if the attribute setter didn't match the whole old
set-from-string logic would be applied to the toString() version of my
property).

This is most useful for tasks that want to accept Resource as an
attribute, all it takes is a property evaluator that returns a Resource
instance.  For example
<http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/propertyhelpers.xml?view=log>
and
<http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/taskdefs/replace-test.xml?view=log>.

I suggest to add another core PropertyEvaluator that works like the one
for toString but doesn't invoke toString() on the reference (but leaves
that to IntrospectionHelper if necessary).

As usual, I'm unsure about the name of the prefix

${fromRefId:foo}
${ref:foo}
${refid:foo}
${fromReference:foo}

...

The ${ref:} and ${refid:} ideas look prettier but are more likely to
collide with existing property names.

Stefan


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

Reply via email to