@Override public void close() throws IOException { closer.close(); } }
@Override public void close() throws IOException { closer.close(); } }
@Override public void close() throws IOException { closer.close(); } }
@Override public void close() throws IOException { closer.close(); } }
@Override public void close() throws IOException { closer.close(); }
@Override public void run() { try { closer.close(); } catch (IOException e) { throw Throwables.propagate(e); } } };
@Override public void run() { try { closer.close(); } catch (IOException e) { throw Throwables.propagate(e); } } });
@AfterClass private void close() throws IOException { ListeningScheduledExecutorService sched = injector.getInstance(Key.get(ListeningScheduledExecutorService.class, named(PROPERTY_SCHEDULER_THREADS))); injector.getInstance(Closer.class).close(); assertTrue(sched.isShutdown()); }
@AfterClass private void close() throws IOException { ListeningScheduledExecutorService sched = injector.getInstance(Key.get(ListeningScheduledExecutorService.class, named(PROPERTY_SCHEDULER_THREADS))); injector.getInstance(Closer.class).close(); assertTrue(sched.isShutdown()); }
@AfterClass private void close() throws IOException { ListeningExecutorService user = injector.getInstance(Key.get(ListeningExecutorService.class, named(PROPERTY_USER_THREADS))); injector.getInstance(Closer.class).close(); assertTrue(user.isShutdown()); }
@AfterClass private void close() throws IOException { ListeningExecutorService user = injector.getInstance(Key.get(ListeningExecutorService.class, named(PROPERTY_USER_THREADS))); ListeningExecutorService io = injector.getInstance(Key.get(ListeningExecutorService.class, named(PROPERTY_IO_WORKER_THREADS))); injector.getInstance(Closer.class).close(); assertTrue(user.isShutdown()); assertTrue(io.isShutdown()); }
@Test public void testShutdownOnClose() throws IOException { Injector i = Guice.createInjector(); Closer closer = i.getInstance(Closer.class); ListeningScheduledExecutorService executor = createMock(ListeningScheduledExecutorService.class); ExecutorServiceModule.shutdownOnClose(executor, closer); expect(executor.shutdownNow()).andReturn(ImmutableList.<Runnable> of()).atLeastOnce(); replay(executor); closer.close(); verify(executor); }
@Test public void testShutdownOnClose() throws IOException { Injector i = Guice.createInjector(); Closer closer = i.getInstance(Closer.class); ListeningExecutorService executor = createMock(ListeningExecutorService.class); ExecutorServiceModule.shutdownOnClose(executor, closer); expect(executor.shutdownNow()).andReturn(ImmutableList.<Runnable> of()).atLeastOnce(); replay(executor); closer.close(); verify(executor); }
protected Object handle(Invocation invocation) { Invokable<?, ?> invokable = invocation.getInvokable(); if (CLOSE.equals(invokable)) { try { injector.getInstance(Closer.class).close(); return null; } catch (Throwable e) { throw propagate(e); } } else if (invokable.isAnnotationPresent(Provides.class)) { return lookupValueFromGuice(invokable); } else if (invokable.isAnnotationPresent(Delegate.class)) { return propagateContextToDelegate(invocation); } else { return methodInvoker.apply(invocation); } }
@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); closer.close(); assert executor.isShutdown(); }
@Test public void testShutdownOnClose() throws IOException { Injector i = Guice.createInjector(); Closer closer = i.getInstance(Closer.class); ListeningExecutorService executor = createMock(ListeningExecutorService.class); ExecutorServiceModule.shutdownOnClose(executor, closer); expect(executor.shutdownNow()).andReturn(ImmutableList.<Runnable> of()).atLeastOnce(); replay(executor); closer.close(); verify(executor); }
@Test public void testShutdownOnClose() throws IOException { Injector i = Guice.createInjector(); Closer closer = i.getInstance(Closer.class); ListeningScheduledExecutorService executor = createMock(ListeningScheduledExecutorService.class); ExecutorServiceModule.shutdownOnClose(executor, closer); expect(executor.shutdownNow()).andReturn(ImmutableList.<Runnable> of()).atLeastOnce(); replay(executor); closer.close(); verify(executor); }
@Test void testCloserPreDestroyOrder() throws IOException { Injector i = createInjector(); ListeningExecutorService userExecutor = i.getInstance(Key.get(ListeningExecutorService.class, named(PROPERTY_USER_THREADS))); assert !userExecutor.isShutdown(); ListeningExecutorService ioExecutor = i.getInstance(Key.get(ListeningExecutorService.class, named(PROPERTY_IO_WORKER_THREADS))); assert !ioExecutor.isShutdown(); Closer closer = i.getInstance(Closer.class); closer.close(); assert userExecutor.isShutdown(); assert ioExecutor.isShutdown(); }
@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; }
@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; }