package betsy.bpel.soapui;
import java.awt.Frame;
import java.awt.Window;
import java.util.concurrent.TimeUnit;
import javax.swing.JFrame;
import com.eviware.soapui.SoapUI;
import com.eviware.soapui.impl.wsdl.support.http.SoapUIMultiThreadedHttpConnectionManager;
public class SoapUIShutdownHelper {
public static void shutdownSoapUIForReal() {
SoapUI.shutdown();
SoapUI.getSoapUITimer().cancel();
JFrame frame = SoapUI.getFrame();
if (frame != null) {
frame.dispose();
}
SoapUI.getThreadPool().shutdownNow();
try {
SoapUI.getThreadPool().awaitTermination(5l, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
SoapUI.shutdown();
for (Window w : Frame.getWindows()) {
w.dispose();
}
for (Frame w : Frame.getFrames()) {
w.dispose();
}
// Now to shutdown the monitor thread setup by SoapUI
Thread[] tarray = new Thread[Thread.activeCount()];
Thread.enumerate(tarray);
for (Thread t : tarray) {
if (t instanceof SoapUIMultiThreadedHttpConnectionManager.IdleConnectionMonitorThread) {
((SoapUIMultiThreadedHttpConnectionManager.IdleConnectionMonitorThread) t)
.shutdown();
}
}
}
}