diff -r 443eb0f21a0a -r d6b1f996c0d8 launcher/src/main/java/org/apidesign/bck2brwsr/dew/Dew.java --- a/launcher/src/main/java/org/apidesign/bck2brwsr/dew/Dew.java Wed Jan 16 11:36:19 2013 +0100 +++ b/launcher/src/main/java/org/apidesign/bck2brwsr/dew/Dew.java Wed Jan 16 12:25:50 2013 +0100 @@ -5,10 +5,13 @@ package org.apidesign.bck2brwsr.dew; import java.io.ByteArrayInputStream; +import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Writer; import java.util.List; import java.util.logging.Logger; import javax.tools.Diagnostic; @@ -26,33 +29,7 @@ * @author phrebejk */ public class Dew extends HttpHandler { - private String html = "\n" - + " \n" - + "
\n" - + "\n" - + "\n" - + "\n" - + " \n" - + " \n" - + "\n"; - private String java = "package bck2brwsr.demo;\n" - + "import org.apidesign.bck2brwsr.htmlpage.api.*;\n" - + "@Page(xhtml=\"index.html\", className=\"Index\")\n" - + "class X {\n" - + " @OnClick(id=\"btn\") static void clcs() {\n" - + " Index.BTN.setDisabled(true);\n" - + " }\n" - + "}\n"; + private String html = ""; private Compile data; @Override @@ -62,13 +39,14 @@ InputStream is = request.getInputStream(); JSONTokener tok = new JSONTokener(new InputStreamReader(is)); JSONObject obj = new JSONObject(tok); - html = obj.getString("html"); - java = obj.getString("java"); + String tmpHtml = obj.getString("html"); + String tmpJava = obj.getString("java"); - Compile res = Compile.create(html, java); + Compile res = Compile.create(tmpHtml, tmpJava); List> err = res.getErrors(); if (err.isEmpty()) { data = res; + html = tmpHtml; response.getOutputStream().write("[]".getBytes()); response.setStatus(HttpStatus.OK_200); } else { @@ -94,16 +72,34 @@ r = r.substring(1); } if (r.startsWith("classes/")) { - if (data == null) { - //data = Compile.create(html, java); + r = r.substring(8); + byte[] arr = data == null ? null : data.get(r); + if (arr == null) { + response.setError(); + response.setDetailMessage("No data for " + r + " yet!"); + return; } - r = r.substring(8); - byte[] is = data == null ? null : data.get(r); - if (is == null) { - is = new byte[0]; + try (Writer w = response.getWriter()) { + response.setContentType("text/javascript"); + w.append("["); + for (int i = 0; i < arr.length; i++) { + int b = arr[i]; + if (b == -1) { + break; + } + if (i > 0) { + w.append(", "); + } + if (i % 20 == 0) { + w.write("\n"); + } + if (b > 127) { + b = b - 256; + } + w.append(Integer.toString(b)); + } + w.append("\n]"); } - OutputStream os = response.getOutputStream(); - copyStream(new ByteArrayInputStream(is), os, request.getRequestURL().toString() ); return; }