comparison src/luan/webserver/handlers/SafeHandler.java @ 1137:c123ee15f99b

add webserver
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 29 Jan 2018 18:49:59 -0700
parents
children 4189027691b7
comparison
equal deleted inserted replaced
1136:d30d400fd43d 1137:c123ee15f99b
1 package luan.webserver.handlers;
2
3 import java.io.Writer;
4 import java.io.OutputStreamWriter;
5 import java.io.PrintWriter;
6 import java.io.IOException;
7 import luan.webserver.Handler;
8 import luan.webserver.Request;
9 import luan.webserver.Response;
10 import luan.webserver.ResponseOutputStream;
11 import luan.webserver.Status;
12
13
14 public final class SafeHandler implements Handler {
15 private final Handler handler;
16
17 public SafeHandler(Handler handler) {
18 this.handler = handler;
19 }
20
21 public Response handle(Request request) {
22 try {
23
24 Response response = handler.handle(request);
25 if( response != null )
26 return response;
27
28 } catch(RuntimeException e) {
29
30 Response response = new Response();
31 response.status = Status.INTERNAL_SERVER_ERROR;
32 response.headers.put( "Content-Type", "text/plain; charset=UTF-8" );
33 PrintWriter writer = new PrintWriter( new ResponseOutputStream(response) );
34 writer.write( "Internel Server Error\n\n" );
35 e.printStackTrace(writer);
36 writer.close();
37 return response;
38
39 }
40
41 Response response = new Response();
42 response.status = Status.NOT_FOUND;
43 response.headers.put( "Content-Type", "text/plain; charset=UTF-8" );
44 try {
45 Writer writer = new OutputStreamWriter( new ResponseOutputStream(response) );
46 writer.write( request.path+" not found\n" );
47 writer.close();
48 } catch(IOException e) {
49 throw new RuntimeException(e);
50 }
51 return response;
52 }
53
54 }