Refactoring anonymous handlers to named inner classes launcher
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sat, 15 Dec 2012 22:15:53 +0100
branchlauncher
changeset 330ee4e8ba0a847
parent 329 a1c84cc2ed14
child 331 7328b7ba2fa4
Refactoring anonymous handlers to named inner classes
launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java
     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  }