diff -r 8d56403172bc -r 3ef299ba838f 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 --- /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 fAfters; + + public RunAfters(Statement next, List afters, Object target) { + fNext= next; + fAfters= afters; + fTarget= target; + } + + @Override + public void evaluate() throws Throwable { + List fErrors = new ArrayList(); + 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