@Override public boolean isOpen() { return closer.getState() == AVAILABLE; }
@Override public boolean isOpen() { return closer.getState() == AVAILABLE; }
@Override public boolean isOpen() { return closer.getState() == AVAILABLE; }
@Override public boolean isOpen() { return closer.getState() == AVAILABLE; }
@Override public void close() throws IOException { try { closeStart.countDown(); assert closer.getState() == Closer.State.PROCESSING; closeDone.await(); } catch (InterruptedException e) { throw Throwables.propagate(e); } } });
@Test void testBindsCloser() { Injector i = createInjector(); assert i.getInstance(Closer.class) != null; assert i.getInstance(Closer.class).getState() == Closer.State.AVAILABLE; }
@Test void testCloserPreDestroyOrder() throws IOException { Injector i = createInjector(); ListeningExecutorService userExecutor = i.getInstance(Key.get(ListeningExecutorService.class, named(PROPERTY_USER_THREADS))); assert !userExecutor.isShutdown(); Closer closer = i.getInstance(Closer.class); assert closer.getState() == Closer.State.AVAILABLE; closer.close(); assert userExecutor.isShutdown(); assert closer.getState() == Closer.State.DONE; }
@Test void testCloserClosesExecutor() throws IOException { Injector i = createInjector(); ListeningExecutorService executor = i.getInstance(Key.get(ListeningExecutorService.class, named(PROPERTY_USER_THREADS))); assert !executor.isShutdown(); Closer closer = i.getInstance(Closer.class); assert closer.getState() == Closer.State.AVAILABLE; closer.close(); assert executor.isShutdown(); assert closer.getState() == Closer.State.DONE; }
assert closer.getState() == Closer.State.DONE;