1682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beustpackage org.testng;
2682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beust
340be3857088566120685adb7d52a5e61f9a0601fCédric Beustimport org.testng.internal.MethodInstance;
440be3857088566120685adb7d52a5e61f9a0601fCédric Beust
5682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beustimport java.util.Collections;
6682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beustimport java.util.List;
7682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beust
8682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beust/**
9682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beust * A method interceptor that preserves the order in which test classes were found in
10682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beust * the <test> tag.
110f7e671c94aeedee2fbc796b3318d44b0297b6cdnullin *
12682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beust * @author cbeust
13682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beust *
14682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beust */
157d239aabc611adf9baa78d919b6ce9f7a14c680cnullinclass PreserveOrderMethodInterceptor implements IMethodInterceptor {
16682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beust
179a4f87bb0fd693131a41cc2b2503f3417ee0ab6dCédric Beust  private void p(List<IMethodInstance> methods, String s) {
189a4f87bb0fd693131a41cc2b2503f3417ee0ab6dCédric Beust    System.out.println("[PreserveOrderMethodInterceptor] " + s);
199a4f87bb0fd693131a41cc2b2503f3417ee0ab6dCédric Beust    for (IMethodInstance mi : methods) {
209a4f87bb0fd693131a41cc2b2503f3417ee0ab6dCédric Beust      System.out.println("  " + mi.getMethod().getMethodName()
219a4f87bb0fd693131a41cc2b2503f3417ee0ab6dCédric Beust          + " index:" + mi.getMethod().getTestClass().getXmlClass().getIndex());
229a4f87bb0fd693131a41cc2b2503f3417ee0ab6dCédric Beust    }
239a4f87bb0fd693131a41cc2b2503f3417ee0ab6dCédric Beust  }
249a4f87bb0fd693131a41cc2b2503f3417ee0ab6dCédric Beust
25682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beust  @Override
26682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beust  public List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context) {
279a4f87bb0fd693131a41cc2b2503f3417ee0ab6dCédric Beust//    p(methods, "Before");
28682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beust    Collections.sort(methods, MethodInstance.SORT_BY_INDEX);
299a4f87bb0fd693131a41cc2b2503f3417ee0ab6dCédric Beust//    p(methods, "After");
30682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beust    return methods;
31682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beust  }
32682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beust
33682629c7059fca8adc2cc2eacdb2d372d7a28c3dCédric Beust}
34