package com.sequenceiq.it; import org.testng.ITestContext; import org.testng.ITestResult; import org.testng.internal.IResultListener2; public class ThreadLocalTestListener implements IResultListener2 { private ThreadLocal<VerboseLogReporter> logReporter = new ThreadLocal<VerboseLogReporter>() { @Override protected VerboseLogReporter initialValue() { return new VerboseLogReporter(); } }; @Override public void beforeConfiguration(ITestResult tr) { getLogReporter().beforeConfiguration(tr); } @Override public void onConfigurationSuccess(ITestResult itr) { getLogReporter().onConfigurationSuccess(itr); } @Override public void onConfigurationFailure(ITestResult itr) { getLogReporter().onConfigurationFailure(itr); } @Override public void onConfigurationSkip(ITestResult itr) { getLogReporter().onConfigurationSkip(itr); } @Override public void onTestStart(ITestResult result) { getLogReporter().onTestStart(result); } @Override public void onTestSuccess(ITestResult result) { getLogReporter().onTestSuccess(result); } @Override public void onTestFailure(ITestResult result) { getLogReporter().onTestFailure(result); } @Override public void onTestSkipped(ITestResult result) { getLogReporter().onTestSkipped(result); } @Override public void onTestFailedButWithinSuccessPercentage(ITestResult result) { getLogReporter().onTestFailedButWithinSuccessPercentage(result); } @Override public void onStart(ITestContext context) { getLogReporter().onStart(context); } @Override public void onFinish(ITestContext context) { getLogReporter().onFinish(context); } private VerboseLogReporter getLogReporter() { return logReporter.get(); } }