comparison src/luan/webserver/handlers/SafeHandler.java @ 1138:4189027691b7

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