phrebejk@460: /* phrebejk@460: * To change this template, choose Tools | Templates phrebejk@460: * and open the template in the editor. phrebejk@460: */ phrebejk@460: package org.apidesign.bck2brwsr.dew; phrebejk@460: phrebejk@461: import java.io.ByteArrayInputStream; phrebejk@461: import java.io.ByteArrayOutputStream; phrebejk@460: import java.io.IOException; phrebejk@460: import java.io.InputStream; phrebejk@461: import java.io.InputStreamReader; phrebejk@460: import java.io.OutputStream; phrebejk@461: import java.util.logging.Logger; phrebejk@461: import org.glassfish.grizzly.http.Method; phrebejk@460: import org.glassfish.grizzly.http.server.HttpHandler; phrebejk@460: import org.glassfish.grizzly.http.server.Request; phrebejk@460: import org.glassfish.grizzly.http.server.Response; phrebejk@461: import org.glassfish.grizzly.http.util.HttpStatus; phrebejk@461: import org.json.JSONObject; phrebejk@461: import org.json.JSONTokener; phrebejk@460: phrebejk@460: /** phrebejk@460: * phrebejk@460: * @author phrebejk phrebejk@460: */ phrebejk@460: public class Dew extends HttpHandler { jaroslav@462: private String html = "Nazdar!"; jaroslav@462: private String java = "class C {\n}\n"; phrebejk@460: phrebejk@460: @Override phrebejk@460: public void service(Request request, Response response) throws Exception { phrebejk@461: phrebejk@461: if ( request.getMethod() == Method.POST ) { phrebejk@461: InputStream is = request.getInputStream(); phrebejk@461: JSONTokener tok = new JSONTokener(new InputStreamReader(is)); phrebejk@461: JSONObject obj = new JSONObject(tok); phrebejk@461: html = obj.getString("html"); jaroslav@462: java = obj.getString("java"); phrebejk@461: LOG.info(html); jaroslav@462: LOG.info(java); phrebejk@461: phrebejk@461: response.getOutputStream().write("[]".getBytes()); phrebejk@461: response.setStatus(HttpStatus.OK_200); phrebejk@461: phrebejk@461: return; phrebejk@461: } phrebejk@461: phrebejk@460: String r = request.getHttpHandlerPath(); phrebejk@460: if (r == null || r.equals("/")) { phrebejk@460: r = "index.html"; phrebejk@460: } phrebejk@461: if (r.equals("/result.html")) { phrebejk@461: response.setContentType("text/html"); phrebejk@461: response.getOutputBuffer().write(html); phrebejk@461: response.setStatus(HttpStatus.OK_200); phrebejk@461: return; phrebejk@461: } phrebejk@461: phrebejk@460: if (r.startsWith("/")) { phrebejk@460: r = r.substring(1); phrebejk@460: } phrebejk@460: if (r.endsWith(".html") || r.endsWith(".xhtml")) { phrebejk@460: response.setContentType("text/html"); phrebejk@460: } phrebejk@460: OutputStream os = response.getOutputStream(); phrebejk@460: try (InputStream is = Dew.class.getResourceAsStream(r) ) { phrebejk@460: copyStream(is, os, request.getRequestURL().toString() ); phrebejk@460: } catch (IOException ex) { phrebejk@460: response.setDetailMessage(ex.getLocalizedMessage()); phrebejk@460: response.setError(); phrebejk@460: response.setStatus(404); phrebejk@460: } phrebejk@460: } phrebejk@461: private static final Logger LOG = Logger.getLogger(Dew.class.getName()); phrebejk@460: phrebejk@460: static void copyStream(InputStream is, OutputStream os, String baseURL) throws IOException { phrebejk@460: for (;;) { phrebejk@460: int ch = is.read(); phrebejk@460: if (ch == -1) { phrebejk@460: break; phrebejk@460: } phrebejk@460: os.write(ch); phrebejk@460: } phrebejk@460: } phrebejk@460: phrebejk@460: }