# HG changeset patch # User Jaroslav Tulach # Date 1358336694 -3600 # Node ID 3f71a33643670ce92a88c8d6e4bfb89072329554 # Parent c1dc0512c39d6690841d5a92a6451b6eb88a41b7 Need to serve also classes from classpath diff -r c1dc0512c39d -r 3f71a3364367 launcher/src/main/java/org/apidesign/bck2brwsr/dew/Dew.java --- a/launcher/src/main/java/org/apidesign/bck2brwsr/dew/Dew.java Wed Jan 16 12:44:17 2013 +0100 +++ b/launcher/src/main/java/org/apidesign/bck2brwsr/dew/Dew.java Wed Jan 16 12:44:54 2013 +0100 @@ -17,6 +17,7 @@ */ package org.apidesign.bck2brwsr.dew; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -26,6 +27,7 @@ import java.util.logging.Logger; import javax.tools.Diagnostic; import javax.tools.JavaFileObject; +import org.apidesign.vm4brwsr.Bck2Brwsr; import org.glassfish.grizzly.http.Method; import org.glassfish.grizzly.http.server.HttpHandler; import org.glassfish.grizzly.http.server.Request; @@ -38,7 +40,7 @@ * * @author phrebejk */ -public class Dew extends HttpHandler { +public class Dew extends HttpHandler implements Bck2Brwsr.Resources { private String html = ""; private Compile data; @@ -81,37 +83,6 @@ if (r.startsWith("/")) { r = r.substring(1); } - if (r.startsWith("classes/")) { - 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; - } - 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]"); - } - return; - } if (r.endsWith(".html") || r.endsWith(".xhtml")) { response.setContentType("text/html"); @@ -125,7 +96,6 @@ response.setStatus(404); } } - private static final Logger LOG = Logger.getLogger(Dew.class.getName()); static void copyStream(InputStream is, OutputStream os, String baseURL) throws IOException { for (;;) { @@ -136,5 +106,10 @@ os.write(ch); } } - + + @Override + public InputStream get(String r) throws IOException { + byte[] arr = data == null ? null : data.get(r); + return arr == null ? null : new ByteArrayInputStream(arr); + } } diff -r c1dc0512c39d -r 3f71a3364367 launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java --- a/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java Wed Jan 16 12:44:17 2013 +0100 +++ b/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java Wed Jan 16 12:44:54 2013 +0100 @@ -58,6 +58,7 @@ private static final Logger LOG = Logger.getLogger(Bck2BrwsrLauncher.class.getName()); private static final MethodInvocation END = new MethodInvocation(null, null); private Set loaders = new LinkedHashSet<>(); + private Set xRes = new LinkedHashSet<>(); private BlockingQueue methods = new LinkedBlockingQueue<>(); private long timeOut; private final Res resources = new Res(); @@ -108,7 +109,9 @@ Bck2BrwsrLauncher l = new Bck2BrwsrLauncher(null); l.addClassLoader(Bck2BrwsrLauncher.class.getClassLoader()); HttpServer s = l.initServer(); - s.getServerConfiguration().addHttpHandler(new Dew(), "/dew/"); + final Dew dew = new Dew(); + s.getServerConfiguration().addHttpHandler(dew, "/dew/"); + l.xRes.add(dew); l.launchServerAndBrwsr(s, "/dew/"); System.in.read(); } @@ -345,6 +348,12 @@ return u.openStream(); } } + for (Bck2Brwsr.Resources r : xRes) { + InputStream is = r.get(resource); + if (is != null) { + return is; + } + } throw new IOException("Can't find " + resource); } }