--- Steve Loughran <[EMAIL PROTECTED]> wrote:
> [EMAIL PROTECTED] wrote:
> > Author: mbenson
> > Date: Thu Aug 31 12:04:12 2006
> > New Revision: 439014
> >
> > URL:
> http://svn.apache.org/viewvc?rev=439014&view=rev
> > Log:
> > Auto-discover built-in conditions added >= 1.7
> from the accompanying antlib so we can stop adding
> junk setters to ConditionBase.
> >
>
> > +
> > + /**
> > + * Create a dynamically discovered condition.
> Built-in conditions can
> > + * be discovered from the
> org.apache.tools.ant.taskdefs.condition
> > + * antlib.
> > + * @param name the condition to create.
> > + */
> > + public Object createDynamicElement(String
> name) {
> > + Object cond =
> ComponentHelper.getComponentHelper(getProject())
> > + .createComponent(CONDITION_ANTLIB +
> name);
> > + if (!(cond instanceof Condition)) {
> > + return null;
> > + }
> > + log("Dynamically discovered '" + name +
> "' " + cond,
> > + Project.MSG_DEBUG);
> > + add((Condition) cond);
> > + return cond;
> > + }
> > +
> > }
> >
>
> hmm. What happens to third party tasks that extend
> this and already have
> dynamic binding stuff built in. I dont know of any,
> though I've done two
> extensions myself, <failingwaitfor> and some little
> toy one to count
> conditions for the book
>
My expectation is that Dynamic(Element|Attribute)(NS)?
have not been publicized to the point that any
ConditionBase extension implementing DynamicElement is
likely to exist in the wild. Anyone who has bred such
a beast is with around 99% certainty subscribed to
this list, and if so, he hasn't spoken up yet. Still,
if this change stands, it could technically be
categorized as a possible breaker in WHATSNEW. Again,
while this is theoretically possible, I would not just
be surprised--I would be shocked--if anyone not
subscribed to [EMAIL PROTECTED] were bitten by this.
>
> package org.antbook.conditions;
>
> import
>
org.apache.tools.ant.taskdefs.condition.ConditionBase;
> import
> org.apache.tools.ant.taskdefs.condition.Condition;
> import java.util.Enumeration;
>
> public class CountConditions extends ConditionBase {
>
> public void execute() {
> int passes=0;
> int failures=0;
> Enumeration conditions = getConditions();
> while (conditions.hasMoreElements()) {
> Condition c = (Condition)
> conditions.nextElement();
> boolean pass=c.eval();
> if(pass) {
> passes++;
> } else {
> failures++;
> }
> }
> log("Conditions passing: "+passes+"
> failing: "+failures);
> }
> }
>
> Personally, I'd like add(Condition) just to work :)
>
As Peter said, just "def"ing new conditions should be
a viable alternative. The likely sources of
collision--and/or/not/etc--are already accounted for
with setters. Before, I mentioned that some committer
had written in oata.types/defaults.properties:
please add new conditions to
oata.types.conditions/antlib.xml instead of
here, to avoid namespace clash with things like
selectors.
I suspected, but did not bother to check, who that
committer was yesterday. Today I checked and found my
suspicions were correct. It was you, Steve! :) So
do you recall your train of thought when you added
this admonition to the properties file? Do you
retract that opinion; shall we doubly define
non-colliding conditions in the antlib as well as
oata.types/defaults.properties?
-Matt
>
>
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, e-mail:
> [EMAIL PROTECTED]
>
>
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]