comparison src/luan/lib/webserver/handlers/SafeHandler.java @ 1347:643cf1c37723

move webserver to lib and bug fixes
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 25 Feb 2019 13:02:33 -0700
parents src/luan/webserver/handlers/SafeHandler.java@8b61c8c4e07a
children
comparison
equal deleted inserted replaced
1346:efd1c6380f2c 1347:643cf1c37723
1 package luan.lib.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.lib.logging.Logger;
8 import luan.lib.logging.LoggerFactory;
9 import luan.lib.webserver.Handler;
10 import luan.lib.webserver.Request;
11 import luan.lib.webserver.Response;
12 import luan.lib.webserver.ResponseOutputStream;
13 import luan.lib.webserver.Status;
14
15
16 public final class SafeHandler implements Handler {
17 private static final Logger logger = LoggerFactory.getLogger(SafeHandler.class);
18
19 private final Handler handler;
20
21 public SafeHandler(Handler handler) {
22 this.handler = handler;
23 }
24
25 public Response handle(Request request) {
26 try {
27 Response response = handler.handle(request);
28 if( response != null )
29 return response;
30 } catch(RuntimeException e) {
31 logger.error("",e);
32 Response response = new Response();
33 response.status = Status.INTERNAL_SERVER_ERROR;
34 response.headers.put( "content-type", "text/plain; charset=utf-8" );
35 PrintWriter writer = new PrintWriter( new ResponseOutputStream(response) );
36 writer.write( "Internel Server Error\n\n" );
37 e.printStackTrace(writer);
38 writer.close();
39 return response;
40 }
41 return Response.errorResponse( Status.NOT_FOUND, request.path+" not found\n" );
42 }
43
44 }