diff --git a/src/etc/testcases/taskdefs/replace.xml b/src/etc/testcases/taskdefs/replace.xml
index c20dbb42e..e7cf195b8 100644
--- a/src/etc/testcases/taskdefs/replace.xml
+++ b/src/etc/testcases/taskdefs/replace.xml
@@ -23,4 +23,22 @@
token="dont_want_to_really_replace_something"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/org/apache/tools/ant/taskdefs/Replace.java b/src/main/org/apache/tools/ant/taskdefs/Replace.java
index 9bab5f53d..559e15678 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Replace.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Replace.java
@@ -107,6 +107,11 @@ public class Replace extends MatchingTask {
throw new BuildException(message);
}
+ if ("".equals(token)) {
+ String message ="The token attribute must not be an empty string.";
+ throw new BuildException(message);
+ }
+
//value and property are mutually exclusive attributes
if ((value != null) && (property != null)) {
String message = "Either value or property " + "can be specified, but a replacefilter " + "element cannot have both.";
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/ReplaceTest.java b/src/testcases/org/apache/tools/ant/taskdefs/ReplaceTest.java
index 0d2630b08..50d9ab67b 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/ReplaceTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/ReplaceTest.java
@@ -87,4 +87,12 @@ public class ReplaceTest extends TaskdefsTest {
executeTarget("test5");
}
+ public void test6() {
+ expectBuildException("test6", "required argument not specified");
+ }
+
+ public void test7() {
+ expectBuildException("test7", "empty token not allowed");
+ }
+
}