Mercurial Hosting > luan
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" ); |