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.
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/ConditionBase.java ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/antlib.xml Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/ConditionBase.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/ConditionBase.java?rev=439014&r1=439013&r2=439014&view=diff ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/ConditionBase.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/ConditionBase.java Thu Aug 31 12:04:12 2006 @@ -19,6 +19,9 @@ import java.util.Enumeration; import java.util.Vector; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.DynamicElement; +import org.apache.tools.ant.ComponentHelper; import org.apache.tools.ant.ProjectComponent; import org.apache.tools.ant.taskdefs.Available; import org.apache.tools.ant.taskdefs.Checksum; @@ -31,7 +34,11 @@ * * @since Ant 1.4 */ -public abstract class ConditionBase extends ProjectComponent { +public abstract class ConditionBase extends ProjectComponent + implements DynamicElement { + + private static final String CONDITION_ANTLIB + = "antlib:org.apache.tools.ant.taskdefs.condition:"; /** * name of the component @@ -44,17 +51,16 @@ private Vector conditions = new Vector(); /** - * simple constructor. + * Simple constructor. */ protected ConditionBase() { taskName = "component"; } /** - * constructor that takes the name of the task - * in the task name + * Constructor that takes the name of the task in the task name. * @param taskName - * @since Ant1.7 + * @since Ant 1.7 */ protected ConditionBase(String taskName) { this.taskName = taskName; @@ -261,24 +267,6 @@ } /** - * Add an <typefound> condition. - * @param test a TypeFound condition - * @since Ant 1.7 - */ - public void addTypeFound(TypeFound test) { - conditions.addElement(test); - } - - /** - * Add an <isfailure> condition. - * - * @param test the condition - */ - public void addIsFailure(IsFailure test) { - conditions.addElement(test); - } - - /** * Add an <isfileselected> condition. * @param test the condition */ @@ -287,81 +275,30 @@ } /** - * Add an <isreachable> condition. - * - * @param test the condition - * @since Ant 1.7 - */ - public void addIsReachable(IsReachable test) { - conditions.addElement(test); - } - - /** - * Add an <issigned> condition. - * - * @param test the condition - * @since Ant 1.7 - */ - public void addIsSigned(IsSigned test) { - conditions.addElement(test); - } - - /** - * Add an <parsersupports> condition. - * - * @param test the condition - * @since Ant 1.7 - */ - public void addParserSupports(ParserSupports test) { - conditions.addElement(test); - } - - /** - * Add a <ResourcesMatch> condition. - * - * @param test the condition - * @since Ant 1.7 - */ - public void addResourcesMatch(ResourcesMatch test) { - conditions.addElement(test); - } - - /** - * Add an <xor> condition. - * - * @param test the condition - * @since Ant 1.7 - */ - public void addXor(Xor test) { - conditions.addElement(test); - } - - /** - * Add a <hasMethod> condition. - * - * @param test the condition - * @since Ant 1.7 - */ - public void addHasMethod(HasMethod test) { - add(test); - } - - /** - * Add an <antversion> condition. - * - * @param test the condition - * @since Ant 1.7 - */ - public void addAntVersion(AntVersion test) { - conditions.addElement(test); - } - - /** * Add an arbitrary condition - * @param c a condition + * @param c a condition * @since Ant 1.6 */ public void add(Condition c) { conditions.addElement(c); } + + /** + * 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; + } + } Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/antlib.xml URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/antlib.xml?rev=439014&r1=439013&r2=439014&view=diff ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/antlib.xml (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/antlib.xml Thu Aug 31 12:04:12 2006 @@ -1,8 +1,8 @@ <?xml version="1.0"?> <antlib> <!-- - /* - * Copyright 2006 The Apache Software Foundation +/* + * Copyright 2006 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,11 +19,17 @@ */ --> - <!-- ant1.6+ antlib declaration for the conditions - use with the declaration xmlns:cond="antlib:org.apache.tools.ant.condition" to - trigger ant's autoload of this file into a namespace. + <!-- Ant 1.6+ antlib declaration for conditions: + Use with the declaration xmlns:cond="antlib:org.apache.tools.ant.condition" to + trigger Ant's autoload of this file into namespace 'cond' (or whatever name + suits). - Please keep this list in alphabetical order -it is easier to verify that way + Please keep this list in alphabetical order; it is easier to verify that way. + + Additionally, ConditionBase uses this antlib to discover built-in conditions. + Prior to Ant 1.7, a new built-in condition required an addXXX method to be + added to ConditionBase. Conditions added in or after version 1.7 need only + to be added to this antlib. --> <typedef name="and" classname="org.apache.tools.ant.taskdefs.condition.And"/> @@ -31,7 +37,7 @@ classname="org.apache.tools.ant.taskdefs.condition.AntVersion"/> <typedef name="contains" classname="org.apache.tools.ant.taskdefs.condition.Contains"/> <typedef name="equals" classname="org.apache.tools.ant.taskdefs.condition.Equals"/> - <typedef name="filesmatch" classname="org.apache.tools.ant.taskdefs.condition.Filesmatch"/> + <typedef name="filesmatch" classname="org.apache.tools.ant.taskdefs.condition.FilesMatch"/> <typedef name="http" classname="org.apache.tools.ant.taskdefs.condition.Http"/> <typedef name="isfailure" classname="org.apache.tools.ant.taskdefs.condition.IsFailure"/> <typedef name="isfalse" classname="org.apache.tools.ant.taskdefs.condition.IsFalse"/> @@ -50,4 +56,4 @@ <typedef name="socket" classname="org.apache.tools.ant.taskdefs.condition.Socket"/> <typedef name="typefound" classname="org.apache.tools.ant.taskdefs.condition.TypeFound"/> <typedef name="xor" classname="org.apache.tools.ant.taskdefs.condition.Xor"/> -</antlib> \ No newline at end of file +</antlib> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]