launcher/src/main/java/org/apidesign/bck2brwsr/dew/Dew.java
author phrebejk
Tue, 15 Jan 2013 16:56:18 +0100
branchdew
changeset 461 ccc3fd318cb1
parent 460 c0f1788183dd
child 462 aa69b1387624
permissions -rw-r--r--
Web development server initial prototype.
phrebejk@460
     1
/*
phrebejk@460
     2
 * To change this template, choose Tools | Templates
phrebejk@460
     3
 * and open the template in the editor.
phrebejk@460
     4
 */
phrebejk@460
     5
package org.apidesign.bck2brwsr.dew;
phrebejk@460
     6
phrebejk@461
     7
import java.io.ByteArrayInputStream;
phrebejk@461
     8
import java.io.ByteArrayOutputStream;
phrebejk@460
     9
import java.io.IOException;
phrebejk@460
    10
import java.io.InputStream;
phrebejk@461
    11
import java.io.InputStreamReader;
phrebejk@460
    12
import java.io.OutputStream;
phrebejk@461
    13
import java.util.logging.Logger;
phrebejk@461
    14
import org.glassfish.grizzly.http.Method;
phrebejk@460
    15
import org.glassfish.grizzly.http.server.HttpHandler;
phrebejk@460
    16
import org.glassfish.grizzly.http.server.Request;
phrebejk@460
    17
import org.glassfish.grizzly.http.server.Response;
phrebejk@461
    18
import org.glassfish.grizzly.http.util.HttpStatus;
phrebejk@461
    19
import org.json.JSONObject;
phrebejk@461
    20
import org.json.JSONTokener;
phrebejk@460
    21
phrebejk@460
    22
/**
phrebejk@460
    23
 *
phrebejk@460
    24
 * @author phrebejk
phrebejk@460
    25
 */
phrebejk@460
    26
public class Dew extends HttpHandler {
phrebejk@461
    27
    private static String html = "Nazdar!";
phrebejk@460
    28
phrebejk@460
    29
    @Override
phrebejk@460
    30
    public void service(Request request, Response response) throws Exception {
phrebejk@461
    31
        
phrebejk@461
    32
        if ( request.getMethod() == Method.POST ) {
phrebejk@461
    33
            InputStream is = request.getInputStream();
phrebejk@461
    34
            JSONTokener tok = new JSONTokener(new InputStreamReader(is));
phrebejk@461
    35
            JSONObject obj = new JSONObject(tok);
phrebejk@461
    36
            html = obj.getString("html");
phrebejk@461
    37
            LOG.info(html);
phrebejk@461
    38
            
phrebejk@461
    39
            response.getOutputStream().write("[]".getBytes());
phrebejk@461
    40
            response.setStatus(HttpStatus.OK_200);
phrebejk@461
    41
            
phrebejk@461
    42
            return;
phrebejk@461
    43
        }
phrebejk@461
    44
        
phrebejk@460
    45
        String r = request.getHttpHandlerPath();
phrebejk@460
    46
        if (r == null || r.equals("/")) {
phrebejk@460
    47
            r = "index.html";
phrebejk@460
    48
        }
phrebejk@461
    49
        if (r.equals("/result.html")) {
phrebejk@461
    50
            response.setContentType("text/html");
phrebejk@461
    51
            response.getOutputBuffer().write(html);
phrebejk@461
    52
            response.setStatus(HttpStatus.OK_200);
phrebejk@461
    53
            return;
phrebejk@461
    54
        }
phrebejk@461
    55
        
phrebejk@460
    56
        if (r.startsWith("/")) {
phrebejk@460
    57
            r = r.substring(1);
phrebejk@460
    58
        }
phrebejk@460
    59
        if (r.endsWith(".html") || r.endsWith(".xhtml")) {
phrebejk@460
    60
            response.setContentType("text/html");
phrebejk@460
    61
        }
phrebejk@460
    62
        OutputStream os = response.getOutputStream();
phrebejk@460
    63
        try (InputStream is = Dew.class.getResourceAsStream(r) ) {
phrebejk@460
    64
            copyStream(is, os, request.getRequestURL().toString() );
phrebejk@460
    65
        } catch (IOException ex) {
phrebejk@460
    66
            response.setDetailMessage(ex.getLocalizedMessage());
phrebejk@460
    67
            response.setError();
phrebejk@460
    68
            response.setStatus(404);
phrebejk@460
    69
        }
phrebejk@460
    70
    }
phrebejk@461
    71
    private static final Logger LOG = Logger.getLogger(Dew.class.getName());
phrebejk@460
    72
    
phrebejk@460
    73
    static void copyStream(InputStream is, OutputStream os, String baseURL) throws IOException {
phrebejk@460
    74
        for (;;) {
phrebejk@460
    75
            int ch = is.read();
phrebejk@460
    76
            if (ch == -1) {
phrebejk@460
    77
                break;
phrebejk@460
    78
            }
phrebejk@460
    79
            os.write(ch);            
phrebejk@460
    80
        }
phrebejk@460
    81
    }
phrebejk@460
    82
    
phrebejk@460
    83
}