blob: b3f2ffd8b064646792a1686d1e63d60a86fd143e [file] [log] [blame]
package test.verify;
import org.testng.IMethodInstance;
import org.testng.IMethodInterceptor;
import org.testng.ITestContext;
import org.testng.collections.Lists;
import java.util.List;
public class VerifyMethodInterceptor implements IMethodInterceptor {
public List<IMethodInstance> intercept(List<IMethodInstance> methods,
ITestContext context) {
List<IMethodInstance> result = Lists.newArrayList();
IMethodInstance verifier = null;
// Doing a na�ve approach here: we run through the list of methods
// twice, once to find the verifier and once more to actually create
// the result. Obviously, this can be done with just one loop
for (IMethodInstance m : methods) {
if (m.getMethod().getMethod().getAnnotation(Verifier.class) != null) {
verifier = m;
break;
}
}
// Create the result with each @Verify method followed by a call
// to the @Verifier method
for (IMethodInstance m : methods) {
if (m != verifier) {
result.add(m);
}
if (m.getMethod().getMethod().getAnnotation(Verify.class) != null) {
result.add(verifier);
}
}
return result;
}
}