@Test public void testInvoke() throws Exception { final CountDownLatch entry = new CountDownLatch(1); final AbstractController controller = new AbstractController() { @Override public void invoke(final MainAction runnable, final boolean wait) { assertFalse(wait); entry.countDown(); } }; new Thread(() -> controller.invoke(new DefaultMainAction() { @Override public void run() { } })).start(); entry.await(1, TimeUnit.SECONDS); }
@Override public void invoke(final MainAction runnable) { this.invoke(runnable, false); }
AbstractController implements Controller { @Override public void invoke(final MainAction runnable) { this.invoke(runnable, false); } }
AbstractController implements Controller { @Override public void invoke(final MainAction runnable) { this.invoke(runnable, false); }  }
AbstractController implements Controller { @Override public void invoke(final MainAction runnable) { this.invoke(runnable, false); }  @Override void invoke(final MainAction runnable); @Override BackgroundActionRegistry getRegistry(); @Override Future<T> background(final BackgroundAction<T> action); @Override void start(final BackgroundAction action); @Override void cancel(final BackgroundAction action); @Override void stop(final BackgroundAction action); @Override void message(final String message); @Override void log(final Type request, final String message); }
AbstractController implements Controller { @Override public void invoke(final MainAction runnable) { this.invoke(runnable, false); }  @Override void invoke(final MainAction runnable); @Override BackgroundActionRegistry getRegistry(); @Override Future<T> background(final BackgroundAction<T> action); @Override void start(final BackgroundAction action); @Override void cancel(final BackgroundAction action); @Override void stop(final BackgroundAction action); @Override void message(final String message); @Override void log(final Type request, final String message);  }