package net.sf.jabref.gui;

import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

import javax.swing.SwingUtilities;

/**
 * Can catch any exceptions occurring on the EDT thread for assertion.
 */
public class AWTExceptionHandler {

    private final List<Throwable> list = new CopyOnWriteArrayList<>();

    public void installExceptionDetectionInEDT() {
        SwingUtilities.invokeLater(() -> Thread.currentThread().setUncaughtExceptionHandler((t, e) -> list.add(e)));
    }

    public void assertNoExceptions() {
        if (!list.isEmpty()) {
            throw new AssertionError("Uncaught exception in EDT", list.get(0));
        }
    }

}
