package org.jacorb.test.bugs.bugjac200; import javax.net.ssl.SSLException; import org.jacorb.orb.listener.AcceptorExceptionEvent; /** * @author Nicolas Noffke */ public class TestAcceptorExceptionListener implements org.jacorb.orb.listener.AcceptorExceptionListener { public static volatile boolean hasBeenCreated; public static volatile boolean doShutdown; private static boolean hasBeenCalled; private static final Object lock = new Object(); public TestAcceptorExceptionListener() { hasBeenCreated = true; } /** * Throwable <code>th</code> has been caught by the acceptor thread. */ public void exceptionCaught(AcceptorExceptionEvent exception) { if ((exception.getException() instanceof Error) || (exception.getException() instanceof SSLException)) { if (doShutdown) { exception.getORB().shutdown(true); } } synchronized (lock) { hasBeenCalled = true; lock.notifyAll(); } try { Thread.sleep(1000); } catch (InterruptedException e) { } } public static boolean getHasBeenCalled(long timeout, boolean expected) { final long waitUntil = System.currentTimeMillis() + timeout; synchronized (lock) { while(expected != hasBeenCalled && System.currentTimeMillis() < waitUntil) { try { lock.wait(1000); } catch (InterruptedException e) { } } } return hasBeenCalled; } public static void reset() { hasBeenCreated = false; hasBeenCalled = false; doShutdown = false; } }