--- jsr166/src/test/tck/JSR166TestCase.java 2009/07/31 23:02:49 1.32 +++ jsr166/src/test/tck/JSR166TestCase.java 2009/08/03 19:07:51 1.35 @@ -286,15 +286,15 @@ public class JSR166TestCase extends Test /** * threadFail with message "should throw exception" - */ + */ public void threadShouldThrow() { - try { - threadFailed = true; - fail("should throw exception"); - } catch (AssertionFailedError e) { - e.printStackTrace(); - throw e; - } + try { + threadFailed = true; + fail("should throw exception"); + } catch (AssertionFailedError e) { + e.printStackTrace(); + throw e; + } } /** @@ -321,9 +321,9 @@ public class JSR166TestCase extends Test try { exec.shutdown(); assertTrue(exec.awaitTermination(LONG_DELAY_MS, TimeUnit.MILLISECONDS)); - } catch(SecurityException ok) { + } catch (SecurityException ok) { // Allowed in case test doesn't have privs - } catch(InterruptedException ie) { + } catch (InterruptedException ie) { fail("Unexpected exception"); } } @@ -394,6 +394,45 @@ public class JSR166TestCase extends Test // Some convenient Runnable classes + abstract class CheckedRunnable implements Runnable { + abstract void realRun() throws Throwable; + + public final void run() { + try { + realRun(); + } catch (Throwable t) { + threadUnexpectedException(t); + } + } + } + + abstract class CheckedInterruptedRunnable implements Runnable { + abstract void realRun() throws Throwable; + + public final void run() { + try { + realRun(); + threadShouldThrow(); + } catch (InterruptedException success) { + } catch (Throwable t) { + threadUnexpectedException(t); + } + } + } + + abstract class CheckedCallable implements Callable { + abstract T realCall() throws Throwable; + + public final T call() { + try { + return realCall(); + } catch (Throwable t) { + threadUnexpectedException(t); + return null; + } + } + } + static class NoOpRunnable implements Runnable { public void run() {} } @@ -416,111 +455,75 @@ public class JSR166TestCase extends Test public Integer call() { return one; } } - class ShortRunnable implements Runnable { - public void run() { - try { - Thread.sleep(SHORT_DELAY_MS); - } - catch(Exception e) { - threadUnexpectedException(e); - } + class ShortRunnable extends CheckedRunnable { + void realRun() throws Throwable { + Thread.sleep(SHORT_DELAY_MS); } } - class ShortInterruptedRunnable implements Runnable { - public void run() { - try { - Thread.sleep(SHORT_DELAY_MS); - threadShouldThrow(); - } - catch(InterruptedException success) { - } + class ShortInterruptedRunnable extends CheckedInterruptedRunnable { + void realRun() throws InterruptedException { + Thread.sleep(SHORT_DELAY_MS); } } - class SmallRunnable implements Runnable { - public void run() { - try { - Thread.sleep(SMALL_DELAY_MS); - } - catch(Exception e) { - threadUnexpectedException(e); - } + class SmallRunnable extends CheckedRunnable { + void realRun() throws Throwable { + Thread.sleep(SMALL_DELAY_MS); } } - class SmallPossiblyInterruptedRunnable implements Runnable { - public void run() { + class SmallPossiblyInterruptedRunnable extends CheckedRunnable { + void realRun() { try { Thread.sleep(SMALL_DELAY_MS); } - catch(Exception e) { + catch (InterruptedException ok) { } } } - class SmallCallable implements Callable { - public Object call() { - try { - Thread.sleep(SMALL_DELAY_MS); - } - catch(Exception e) { - threadUnexpectedException(e); - } + class SmallCallable extends CheckedCallable { + Object realCall() throws Throwable { + Thread.sleep(SMALL_DELAY_MS); return Boolean.TRUE; } } - class SmallInterruptedRunnable implements Runnable { - public void run() { - try { - Thread.sleep(SMALL_DELAY_MS); - threadShouldThrow(); - } - catch(InterruptedException success) { - } + class SmallInterruptedRunnable extends CheckedInterruptedRunnable { + void realRun() throws InterruptedException { + Thread.sleep(SMALL_DELAY_MS); } } - - class MediumRunnable implements Runnable { - public void run() { - try { - Thread.sleep(MEDIUM_DELAY_MS); - } - catch(Exception e) { - threadUnexpectedException(e); - } + class MediumRunnable extends CheckedRunnable { + void realRun() throws Throwable { + Thread.sleep(MEDIUM_DELAY_MS); } } - class MediumInterruptedRunnable implements Runnable { - public void run() { - try { - Thread.sleep(MEDIUM_DELAY_MS); - threadShouldThrow(); - } - catch(InterruptedException success) { - } + class MediumInterruptedRunnable extends CheckedInterruptedRunnable { + void realRun() throws InterruptedException { + Thread.sleep(MEDIUM_DELAY_MS); } } - class MediumPossiblyInterruptedRunnable implements Runnable { - public void run() { + class MediumPossiblyInterruptedRunnable extends CheckedRunnable { + void realRun() { try { Thread.sleep(MEDIUM_DELAY_MS); } - catch(InterruptedException success) { + catch (InterruptedException ok) { } } } - class LongPossiblyInterruptedRunnable implements Runnable { - public void run() { + class LongPossiblyInterruptedRunnable extends CheckedRunnable { + void realRun() { try { Thread.sleep(LONG_DELAY_MS); } - catch(InterruptedException success) { + catch (InterruptedException ok) { } } } @@ -528,8 +531,8 @@ public class JSR166TestCase extends Test /** * For use as ThreadFactory in constructors */ - static class SimpleThreadFactory implements ThreadFactory{ - public Thread newThread(Runnable r){ + static class SimpleThreadFactory implements ThreadFactory { + public Thread newThread(Runnable r) { return new Thread(r); } } @@ -540,7 +543,7 @@ public class JSR166TestCase extends Test try { Thread.sleep(SMALL_DELAY_MS); done = true; - } catch(Exception e){ + } catch (Exception e) { } } } @@ -551,7 +554,7 @@ public class JSR166TestCase extends Test try { Thread.sleep(MEDIUM_DELAY_MS); done = true; - } catch(Exception e){ + } catch (Exception e) { } } } @@ -562,7 +565,7 @@ public class JSR166TestCase extends Test try { Thread.sleep(LONG_DELAY_MS); done = true; - } catch(Exception e){ + } catch (Exception e) { } } } @@ -580,7 +583,7 @@ public class JSR166TestCase extends Test try { Thread.sleep(SMALL_DELAY_MS); done = true; - } catch(Exception e){ + } catch (Exception e) { } return Boolean.TRUE; } @@ -590,9 +593,9 @@ public class JSR166TestCase extends Test /** * For use as RejectedExecutionHandler in constructors */ - static class NoOpREHandler implements RejectedExecutionHandler{ - public void rejectedExecution(Runnable r, ThreadPoolExecutor executor){} + static class NoOpREHandler implements RejectedExecutionHandler { + public void rejectedExecution(Runnable r, + ThreadPoolExecutor executor) {} } - }