Browse Source

fmt/refac

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@556987 13f79535-47bb-0310-9956-ffa450edef68
master
Matthew Jason Benson 18 years ago
parent
commit
9d227828e9
3 changed files with 23 additions and 18 deletions
  1. +2
    -0
      WHATSNEW
  2. +18
    -15
      src/main/org/apache/tools/ant/taskdefs/Retry.java
  3. +3
    -3
      src/tests/antunit/taskdefs/retry-test.xml

+ 2
- 0
WHATSNEW View File

@@ -186,6 +186,8 @@ Other changes:

* "rawblobs" attribute added to SQL task.

* Add new retry task container.


Changes from Ant 1.6.5 to Ant 1.7.0
===================================


+ 18
- 15
src/main/org/apache/tools/ant/taskdefs/Retry.java View File

@@ -24,6 +24,7 @@ import org.apache.tools.ant.TaskContainer;
/**
* Retries the nested task a set number of times
* @since Ant 1.7.1
*/
public class Retry extends Task implements TaskContainer {
@@ -31,19 +32,23 @@ public class Retry extends Task implements TaskContainer {
* task to execute n times
*/
private Task nestedTask;
/**
* set retryCount to 1 by default
*/
private int retryCount = 1;
/**
* set the task
*/
public void addTask(Task t) {
public synchronized void addTask(Task t) {
if (nestedTask != null) {
throw new BuildException("The retry task container accepts a single nested task"
+ " (which may be a sequential task container)");
}
nestedTask = t;
}
/**
* set the number of times to retry the task
* @param n
@@ -51,32 +56,30 @@ public class Retry extends Task implements TaskContainer {
public void setRetryCount(int n) {
retryCount = n;
}
/**
* perform the work
*/
public void execute() throws BuildException {
StringBuffer errorMessages = new StringBuffer();
for(int i=0; i<=retryCount; i++) {
String br = getProject().getProperty("line.separator");
for (int i = 0; i <= retryCount; i++) {
try {
nestedTask.perform();
break;
} catch (Exception e) {
if (i<retryCount) {
log("Attempt ["+i+"] error occured, retrying...", e, Project.MSG_INFO);
errorMessages.append(e.getMessage());
errorMessages.append(getProject().getProperty("line.separator"));
} else {
errorMessages.append(e.getMessage());
errorMessages.append(e.getMessage());
if (i >= retryCount) {
StringBuffer exceptionMessage = new StringBuffer();
exceptionMessage.append("Task [").append(nestedTask.getTaskName());
exceptionMessage.append("] failed after [").append(retryCount);
exceptionMessage.append("] attempts, giving up.");
exceptionMessage.append(getProject().getProperty("line.separator"));
exceptionMessage.append("Error messages:").append(getProject().getProperty("line.separator"));
exceptionMessage.append("] attempts; giving up.").append(br);
exceptionMessage.append("Error messages:").append(br);
exceptionMessage.append(errorMessages);
throw new BuildException(exceptionMessage.toString(), getLocation());
}
log("Attempt [" + i + "]: error occurred; retrying...", e, Project.MSG_INFO);
errorMessages.append(br);
}
}
}

+ 3
- 3
src/tests/antunit/taskdefs/retry-test.xml View File

@@ -7,12 +7,12 @@
<property name="dest" value="${java.io.tmpdir}/dest"/>
<!-- just in case this ever becomes a legit url... -->
<property name="src" value="http://iojasodjojaosdj"/>
<au:expectfailure expectedmessage="Task [get] failed after [${i}] attempts, giving up">
<au:expectfailure expectedmessage="Task [get] failed after [${i}] attempts; giving up">
<retry retrycount="${i}">
<get src="${src}" dest="${dest}"/>
</retry>
</au:expectfailure>
<au:assertLogContains text="Attempt [1] error occured, retrying..."/>
<au:assertLogContains text="Attempt [1]: error occurred; retrying..."/>
</target>
<target name="test-success">
@@ -21,7 +21,7 @@
<retry retrycount="${i}">
<touch file="${dest}"/>
</retry>
<au:assertLogDoesntContain text="Attempt [1] error occured, retrying..."/>
<au:assertLogDoesntContain text="Attempt [1]: error occurred; retrying..."/>
</target>
</project>

Loading…
Cancel
Save