1.1 --- a/launcher/src/main/java/org/apidesign/bck2brwsr/dew/Dew.java Tue Jan 15 22:48:17 2013 +0100
1.2 +++ b/launcher/src/main/java/org/apidesign/bck2brwsr/dew/Dew.java Wed Jan 16 11:36:19 2013 +0100
1.3 @@ -5,12 +5,14 @@
1.4 package org.apidesign.bck2brwsr.dew;
1.5
1.6 import java.io.ByteArrayInputStream;
1.7 -import java.io.ByteArrayOutputStream;
1.8 import java.io.IOException;
1.9 import java.io.InputStream;
1.10 import java.io.InputStreamReader;
1.11 import java.io.OutputStream;
1.12 +import java.util.List;
1.13 import java.util.logging.Logger;
1.14 +import javax.tools.Diagnostic;
1.15 +import javax.tools.JavaFileObject;
1.16 import org.glassfish.grizzly.http.Method;
1.17 import org.glassfish.grizzly.http.server.HttpHandler;
1.18 import org.glassfish.grizzly.http.server.Request;
1.19 @@ -24,8 +26,34 @@
1.20 * @author phrebejk
1.21 */
1.22 public class Dew extends HttpHandler {
1.23 - private String html = "Nazdar!";
1.24 - private String java = "class C {\n}\n";
1.25 + private String html = "<html><body>\n"
1.26 + + " <button id='btn'>Hello!</button>\n"
1.27 + + " <hr/>\n"
1.28 + + "\n"
1.29 + + "\n"
1.30 + + "\n"
1.31 + + " <script src=\"/bck2brwsr.js\"></script>\n"
1.32 + + " <script type=\"text/javascript\">\n"
1.33 + + " function ldCls(res) {\n"
1.34 + + " var request = new XMLHttpRequest();\n"
1.35 + + " request.open('GET', '/dew/classes/' + res, false);\n"
1.36 + + " request.send();\n"
1.37 + + " var arr = eval('(' + request.responseText + ')');\n"
1.38 + + " return arr;\n"
1.39 + + " }\n"
1.40 + + " // var vm = new bck2brwsr(ldCls);\n"
1.41 + + " // vm.loadClass('bck2brwsr.demo.Index');\n"
1.42 + + " </script>\n"
1.43 + + "</body></html>\n";
1.44 + private String java = "package bck2brwsr.demo;\n"
1.45 + + "import org.apidesign.bck2brwsr.htmlpage.api.*;\n"
1.46 + + "@Page(xhtml=\"index.html\", className=\"Index\")\n"
1.47 + + "class X {\n"
1.48 + + " @OnClick(id=\"btn\") static void clcs() {\n"
1.49 + + " Index.BTN.setDisabled(true);\n"
1.50 + + " }\n"
1.51 + + "}\n";
1.52 + private Compile data;
1.53
1.54 @Override
1.55 public void service(Request request, Response response) throws Exception {
1.56 @@ -36,11 +64,17 @@
1.57 JSONObject obj = new JSONObject(tok);
1.58 html = obj.getString("html");
1.59 java = obj.getString("java");
1.60 - LOG.info(html);
1.61 - LOG.info(java);
1.62
1.63 - response.getOutputStream().write("[]".getBytes());
1.64 - response.setStatus(HttpStatus.OK_200);
1.65 + Compile res = Compile.create(html, java);
1.66 + List<Diagnostic<? extends JavaFileObject>> err = res.getErrors();
1.67 + if (err.isEmpty()) {
1.68 + data = res;
1.69 + response.getOutputStream().write("[]".getBytes());
1.70 + response.setStatus(HttpStatus.OK_200);
1.71 + } else {
1.72 + response.getOutputStream().write(("[errors:'" + err + "']").getBytes());
1.73 + response.setStatus(HttpStatus.PRECONDITION_FAILED_412);
1.74 + }
1.75
1.76 return;
1.77 }
1.78 @@ -59,6 +93,20 @@
1.79 if (r.startsWith("/")) {
1.80 r = r.substring(1);
1.81 }
1.82 + if (r.startsWith("classes/")) {
1.83 + if (data == null) {
1.84 + //data = Compile.create(html, java);
1.85 + }
1.86 + r = r.substring(8);
1.87 + byte[] is = data == null ? null : data.get(r);
1.88 + if (is == null) {
1.89 + is = new byte[0];
1.90 + }
1.91 + OutputStream os = response.getOutputStream();
1.92 + copyStream(new ByteArrayInputStream(is), os, request.getRequestURL().toString() );
1.93 + return;
1.94 + }
1.95 +
1.96 if (r.endsWith(".html") || r.endsWith(".xhtml")) {
1.97 response.setContentType("text/html");
1.98 }