carbidecpp22devenv/plugins/org.eclipse.test.source_3.5.0.r20080925/src/org.junit4_4.5.0.v20090423/junitsrc/org/junit/internal/runners/statements/RunAfters.java
changeset 636 3ef299ba838f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/carbidecpp22devenv/plugins/org.eclipse.test.source_3.5.0.r20080925/src/org.junit4_4.5.0.v20090423/junitsrc/org/junit/internal/runners/statements/RunAfters.java	Fri Dec 04 11:49:54 2009 -0600
@@ -0,0 +1,48 @@
+/**
+ * 
+ */
+package org.junit.internal.runners.statements;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.internal.runners.model.MultipleFailureException;
+import org.junit.runners.model.FrameworkMethod;
+import org.junit.runners.model.Statement;
+
+public class RunAfters extends Statement {
+	private final Statement fNext;
+
+	private final Object fTarget;
+
+	private final List<FrameworkMethod> fAfters;
+	
+	public RunAfters(Statement next, List<FrameworkMethod> afters, Object target) {
+		fNext= next;
+		fAfters= afters;
+		fTarget= target;
+	}
+
+	@Override
+	public void evaluate() throws Throwable {
+		List<Throwable> fErrors = new ArrayList<Throwable>();
+		fErrors.clear();
+		try {
+			fNext.evaluate();
+		} catch (Throwable e) {
+			fErrors.add(e);
+		} finally {
+			for (FrameworkMethod each : fAfters)
+				try {
+					each.invokeExplosively(fTarget);
+				} catch (Throwable e) {
+					fErrors.add(e);
+				}
+		}
+		if (fErrors.isEmpty())
+			return;
+		if (fErrors.size() == 1)
+			throw fErrors.get(0);
+		throw new MultipleFailureException(fErrors);
+	}
+}
\ No newline at end of file