# HG changeset patch # User Jaroslav Tulach # Date 1372320300 -7200 # Node ID 36614e9273e957719edbe9bff7282bdbaaa4dad3 # Parent 697da4d02f930a1ae13fb9af63496d079b0bb6b8 Old handlers are sometimes used even after remoteHttpHandler is called. Invalidate old handlers by forcing them to delegate to the latest one. diff -r 697da4d02f93 -r 36614e9273e9 launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/BaseHTTPLauncher.java --- a/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/BaseHTTPLauncher.java Thu Jun 27 06:59:33 2013 +0200 +++ b/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/BaseHTTPLauncher.java Thu Jun 27 10:05:00 2013 +0200 @@ -17,7 +17,6 @@ */ package org.apidesign.bck2brwsr.launcher; -import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.Closeable; import java.io.File; @@ -46,7 +45,6 @@ import java.util.logging.Logger; import org.apidesign.bck2brwsr.launcher.InvocationContext.Resource; import org.glassfish.grizzly.PortRange; -import org.glassfish.grizzly.http.Method; import org.glassfish.grizzly.http.server.HttpHandler; import org.glassfish.grizzly.http.server.HttpServer; import org.glassfish.grizzly.http.server.NetworkListener; @@ -183,6 +181,7 @@ class DynamicResourceHandler extends HttpHandler { private final InvocationContext ic; private int resourcesCount; + DynamicResourceHandler delegate; public DynamicResourceHandler(InvocationContext ic) { this.ic = ic; for (Resource r : ic.resources) { @@ -190,12 +189,18 @@ } } - public void close() { + public void close(DynamicResourceHandler del) { conf.removeHttpHandler(this); + delegate = del; } @Override public void service(Request request, Response response) throws Exception { + if (delegate != null) { + delegate.service(request, response); + return; + } + if ("/dynamic".equals(request.getRequestURI())) { String mimeType = request.getParameter("mimeType"); List params = new ArrayList(); @@ -297,11 +302,6 @@ } } - if (prev != null) { - prev.close(); - prev = null; - } - if (mi == null) { mi = methods.take(); caseNmbr = cnt++; @@ -313,8 +313,11 @@ LOG.log(Level.INFO, "End of data reached. Exiting."); return; } - - prev = new DynamicResourceHandler(mi); + final DynamicResourceHandler newRH = new DynamicResourceHandler(mi); + if (prev != null) { + prev.close(newRH); + } + prev = newRH; conf.addHttpHandler(prev, "/dynamic"); cases.add(mi);