Browse Source

remove the <define> nested element of <macrodef>

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@486347 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Reilly 18 years ago
parent
commit
7181543803
2 changed files with 1 additions and 90 deletions
  1. +1
    -87
      src/main/org/apache/tools/ant/taskdefs/MacroDef.java
  2. +0
    -3
      src/main/org/apache/tools/ant/taskdefs/MacroInstance.java

+ 1
- 87
src/main/org/apache/tools/ant/taskdefs/MacroDef.java View File

@@ -265,41 +265,12 @@ public class MacroDef extends AntlibDefinition {
throw new BuildException(
"the name \"" + attribute.getName()
+ "\" has already been used in "
+ (att instanceof DefineAttribute ? "a define element"
: "another attribute element"));
+ "another attribute element");
}
}
attributes.add(attribute);
}

/**
* Add a define element.
*
* @param def a define nested element.
*/
public void addConfiguredDefine(DefineAttribute def) {
if (def.getName() == null) {
throw new BuildException(
"the define nested element needed a \"name\" attribute");
}
if (def.getName().equals(textName)) {
throw new BuildException(
"the name \"" + def.getName()
+ "\" has already been used by the text element");
}
for (int i = 0; i < attributes.size(); ++i) {
Attribute att = (Attribute) attributes.get(i);
if (att.getName().equals(def.getName())) {
throw new BuildException(
"the name \"" + def.getName()
+ "\" has already been used in "
+ (att instanceof DefineAttribute ? "another define element"
: "an attribute element"));
}
}
attributes.add(def);
}

/**
* Add an element element.
*
@@ -541,63 +512,6 @@ public class MacroDef extends AntlibDefinition {
}
}

/**
* A nested define element for the MacroDef task.
*
* It provides an attribute with a guaranteed unique value
* on every instantiation of the macro. This allows to use
* this uniquely named attribute in property names used
* internally by the macro, thus creating unique property
* names and side-stepping Ant's property immutability rules.
* <p>
* Of course, this work around as the side effect of littering
* the global Ant property namespace, so is far for ideal, but
* will have to make do awaiting a better fix...
*
* @since ant 1.7
*/
public static class DefineAttribute extends Attribute {

private static long count = 0;
private String prefix = "";

/**
* Sets a prefix for the generated name.
*
* @param prefixValue the prefix to use.
*/
public void setPrefix(String prefixValue) {
prefix = prefixValue;
}

/**
* Sets the default value.
*
* This is not allowed for the define nested element.
*
* @param defaultValue not used
* @throws BuildException always
*/
public void setDefault(String defaultValue) {
throw new BuildException(
"Illegal attribute \"default\" for define element");
}

/**
* Gets the default value for this attibute.
*
* @return the generated <em>unique</em> name, of the form
* "prefix#this classname#&lt;aCounter&gt;".
*/
public String getDefault() {
synchronized (DefineAttribute.class) {
// Make sure counter is managed globally
return prefix + "#" + getClass().getName() + "#" + (++count);
}
}

}

/**
* A nested text element for the MacroDef task.
* @since ant 1.6.1


+ 0
- 3
src/main/org/apache/tools/ant/taskdefs/MacroInstance.java View File

@@ -348,9 +348,6 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
if (value == null) {
value = attribute.getDefault();
value = macroSubs(value, localAttributes);
} else if (attribute instanceof MacroDef.DefineAttribute) {
// Do not process given value, will fail as unknown attribute
continue;
}
if (value == null) {
throw new BuildException(


Loading…
Cancel
Save