1.1 --- a/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/BaseHTTPLauncher.java Sun May 05 18:16:43 2013 +0200
1.2 +++ b/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/BaseHTTPLauncher.java Thu May 09 21:51:56 2013 +0200
1.3 @@ -23,6 +23,7 @@
1.4 import java.io.InputStream;
1.5 import java.io.InterruptedIOException;
1.6 import java.io.OutputStream;
1.7 +import java.io.Reader;
1.8 import java.io.UnsupportedEncodingException;
1.9 import java.io.Writer;
1.10 import java.net.URI;
1.11 @@ -57,7 +58,7 @@
1.12 * execution engine.
1.13 */
1.14 abstract class BaseHTTPLauncher extends Launcher implements Closeable, Callable<HttpServer> {
1.15 - private static final Logger LOG = Logger.getLogger(BaseHTTPLauncher.class.getName());
1.16 + static final Logger LOG = Logger.getLogger(BaseHTTPLauncher.class.getName());
1.17 private static final InvocationContext END = new InvocationContext(null, null, null);
1.18 private final Set<ClassLoader> loaders = new LinkedHashSet<>();
1.19 private final BlockingQueue<InvocationContext> methods = new LinkedBlockingQueue<>();
1.20 @@ -190,6 +191,25 @@
1.21 params = new String[r.parameters.length];
1.22 for (int i = 0; i < r.parameters.length; i++) {
1.23 params[i] = request.getParameter(r.parameters[i]);
1.24 + if (params[i] == null) {
1.25 + if ("http.method".equals(r.parameters[i])) {
1.26 + params[i] = request.getMethod().toString();
1.27 + } else if ("http.requestBody".equals(r.parameters[i])) {
1.28 + Reader rdr = request.getReader();
1.29 + StringBuilder sb = new StringBuilder();
1.30 + for (;;) {
1.31 + int ch = rdr.read();
1.32 + if (ch == -1) {
1.33 + break;
1.34 + }
1.35 + sb.append((char)ch);
1.36 + }
1.37 + params[i] = sb.toString();
1.38 + }
1.39 + }
1.40 + if (params[i] == null) {
1.41 + params[i] = "null";
1.42 + }
1.43 }
1.44 }
1.45
1.46 @@ -199,9 +219,7 @@
1.47 }
1.48 }
1.49
1.50 - conf.addHttpHandler(new Page(resources,
1.51 - "org/apidesign/bck2brwsr/launcher/fximpl/harness.xhtml"
1.52 - ), "/execute");
1.53 + conf.addHttpHandler(new Page(resources, harnessResource()), "/execute");
1.54
1.55 conf.addHttpHandler(new HttpHandler() {
1.56 int cnt;
1.57 @@ -461,9 +479,10 @@
1.58 }
1.59 }
1.60
1.61 - abstract void generateBck2BrwsrJS(StringBuilder sb, Object loader) throws IOException;
1.62 + abstract void generateBck2BrwsrJS(StringBuilder sb, Res loader) throws IOException;
1.63 + abstract String harnessResource();
1.64
1.65 - private class Res {
1.66 + class Res {
1.67 public InputStream get(String resource) throws IOException {
1.68 for (ClassLoader l : loaders) {
1.69 URL u = null;