Skip to content

Instantly share code, notes, and snippets.

@jcheype
Created April 3, 2013 13:04
Show Gist options
  • Select an option

  • Save jcheype/5301037 to your computer and use it in GitHub Desktop.

Select an option

Save jcheype/5301037 to your computer and use it in GitHub Desktop.
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent event) {
HttpRequest httpRequest = (HttpRequest) event.getMessage();
logger.debug("Request: {}", httpRequest);
QueryStringDecoder qs = new QueryStringDecoder(httpRequest.getUri());
final Request request = new Request(ctx, httpRequest, qs);
final Response response = new Response(ctx, httpRequest);
try {
execBeforeFilters(request, response);
execHttpMethod(request, response);
execAfterFilters(request, response);
} catch (HttpException e) {
HttpResponse httpResponse = new DefaultHttpResponse(HttpVersion.HTTP_1_1, e.getStatus());
ctx.getChannel().write(httpResponse).addListener(ChannelFutureListener.CLOSE);
} catch (Exception e) {
HttpResponse httpResponse = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.INTERNAL_SERVER_ERROR);
if (logger.isDebugEnabled()) {
ChannelBuffer channelBuffer = ChannelBuffers.dynamicBuffer();
PrintWriter printWriter = new PrintWriter(new ChannelBufferOutputStream(channelBuffer));
e.printStackTrace(printWriter);
printWriter.close();
httpResponse.setContent(channelBuffer);
}
logger.error("web server error: ", e);
ctx.getChannel().write(httpResponse).addListener(ChannelFutureListener.CLOSE);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment