diff -r bafc670aa10d -r 3485327d3080 launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java --- a/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java Sun Dec 23 18:24:18 2012 +0100 +++ b/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java Sun Dec 23 23:30:06 2012 +0100 @@ -54,6 +54,7 @@ */ public class Bck2BrwsrLauncher { private static final Logger LOG = Logger.getLogger(Bck2BrwsrLauncher.class.getName()); + private static final MethodInvocation END = new MethodInvocation(null, null); private Set loaders = new LinkedHashSet<>(); private BlockingQueue methods = new LinkedBlockingQueue<>(); private long timeOut; @@ -153,10 +154,11 @@ } MethodInvocation mi = methods.take(); - if (mi == null) { + if (mi == END) { response.getWriter().write(""); wait.countDown(); cnt = 0; + LOG.log(Level.INFO, "End of data reached. Exiting."); return; } @@ -177,6 +179,7 @@ } public void shutdown() throws InterruptedException, IOException { + methods.offer(END); for (;;) { int prev = methods.size(); if (wait.await(timeOut, TimeUnit.MILLISECONDS)) {