1.1 --- a/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java Sat Dec 15 22:10:19 2012 +0100
1.2 +++ b/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java Sat Dec 15 22:15:53 2012 +0100
1.3 @@ -42,68 +42,9 @@
1.4 final ClassLoader loader = Bck2BrwsrLauncher.class.getClassLoader();
1.5
1.6 final ServerConfiguration conf = server.getServerConfiguration();
1.7 - conf.addHttpHandler(new HttpHandler() {
1.8 - @Override
1.9 - public void service(Request request, Response response) throws Exception {
1.10 - response.setContentType("text/html");
1.11 - OutputStream os = response.getOutputStream();
1.12 - InputStream is = Bck2BrwsrLauncher.class.getResourceAsStream("console.xhtml");
1.13 - for (;;) {
1.14 - int ch = is.read();
1.15 - if (ch == -1) {
1.16 - break;
1.17 - }
1.18 - os.write(ch);
1.19 - }
1.20 - }
1.21 - }, "/console");
1.22 - conf.addHttpHandler(new HttpHandler() {
1.23 - @Override
1.24 - public void service(Request request, Response response) throws Exception {
1.25 - response.setCharacterEncoding("UTF-8");
1.26 - response.setContentType("text/javascript");
1.27 - Bck2Brwsr.generate(response.getWriter(), loader);
1.28 - }
1.29 - }, "/bck2brwsr.js");
1.30 - conf.addHttpHandler(new HttpHandler() {
1.31 - @Override
1.32 - public void service(Request request, Response response) throws Exception {
1.33 - String res = request.getHttpHandlerPath();
1.34 - if (res.startsWith("/")) {
1.35 - res = res.substring(1);
1.36 - }
1.37 - Enumeration<URL> en = loader.getResources(res);
1.38 - URL u = null;
1.39 - while (en.hasMoreElements()) {
1.40 - u = en.nextElement();
1.41 - }
1.42 - if (u == null) {
1.43 - response.setError();
1.44 - response.setDetailMessage("Can't find resource " + res);
1.45 - }
1.46 - response.setContentType("text/javascript");
1.47 - InputStream is = u.openStream();
1.48 - Writer w = response.getWriter();
1.49 - w.append("[");
1.50 - for (int i = 0;; i++) {
1.51 - int b = is.read();
1.52 - if (b == -1) {
1.53 - break;
1.54 - }
1.55 - if (i > 0) {
1.56 - w.append(", ");
1.57 - }
1.58 - if (i % 20 == 0) {
1.59 - w.write("\n");
1.60 - }
1.61 - if (b > 127) {
1.62 - b = b - 256;
1.63 - }
1.64 - w.append(Integer.toString(b));
1.65 - }
1.66 - w.append("\n]");
1.67 - }
1.68 - }, "/classes/");
1.69 + conf.addHttpHandler(new Console(), "/console");
1.70 + conf.addHttpHandler(new VM(loader), "/bck2brwsr.js");
1.71 + conf.addHttpHandler(new Classes(loader), "/classes/");
1.72
1.73 server.start();
1.74 NetworkListener listener = server.getListeners().iterator().next();
1.75 @@ -121,4 +62,84 @@
1.76
1.77 System.in.read();
1.78 }
1.79 +
1.80 + private static class Console extends HttpHandler {
1.81 + public Console() {
1.82 + }
1.83 +
1.84 + @Override
1.85 + public void service(Request request, Response response) throws Exception {
1.86 + response.setContentType("text/html");
1.87 + OutputStream os = response.getOutputStream();
1.88 + InputStream is = Bck2BrwsrLauncher.class.getResourceAsStream("console.xhtml");
1.89 + for (;;) {
1.90 + int ch = is.read();
1.91 + if (ch == -1) {
1.92 + break;
1.93 + }
1.94 + os.write(ch);
1.95 + }
1.96 + }
1.97 + }
1.98 +
1.99 + private static class VM extends HttpHandler {
1.100 + private final ClassLoader loader;
1.101 +
1.102 + public VM(ClassLoader loader) {
1.103 + this.loader = loader;
1.104 + }
1.105 +
1.106 + @Override
1.107 + public void service(Request request, Response response) throws Exception {
1.108 + response.setCharacterEncoding("UTF-8");
1.109 + response.setContentType("text/javascript");
1.110 + Bck2Brwsr.generate(response.getWriter(), loader);
1.111 + }
1.112 + }
1.113 +
1.114 + private static class Classes extends HttpHandler {
1.115 + private final ClassLoader loader;
1.116 +
1.117 + public Classes(ClassLoader loader) {
1.118 + this.loader = loader;
1.119 + }
1.120 +
1.121 + @Override
1.122 + public void service(Request request, Response response) throws Exception {
1.123 + String res = request.getHttpHandlerPath();
1.124 + if (res.startsWith("/")) {
1.125 + res = res.substring(1);
1.126 + }
1.127 + Enumeration<URL> en = loader.getResources(res);
1.128 + URL u = null;
1.129 + while (en.hasMoreElements()) {
1.130 + u = en.nextElement();
1.131 + }
1.132 + if (u == null) {
1.133 + response.setError();
1.134 + response.setDetailMessage("Can't find resource " + res);
1.135 + }
1.136 + response.setContentType("text/javascript");
1.137 + InputStream is = u.openStream();
1.138 + Writer w = response.getWriter();
1.139 + w.append("[");
1.140 + for (int i = 0;; i++) {
1.141 + int b = is.read();
1.142 + if (b == -1) {
1.143 + break;
1.144 + }
1.145 + if (i > 0) {
1.146 + w.append(", ");
1.147 + }
1.148 + if (i % 20 == 0) {
1.149 + w.write("\n");
1.150 + }
1.151 + if (b > 127) {
1.152 + b = b - 256;
1.153 + }
1.154 + w.append(Integer.toString(b));
1.155 + }
1.156 + w.append("\n]");
1.157 + }
1.158 + }
1.159 }