@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
org.jboss.netty.handler.codec.http.HttpRequest nettyRequest = (org.jboss.netty.handler.codec.http.HttpRequest) e.getMessage();
Map<String,List<String>> headers = new HashMap<String,List<String>>();
for (String headerName : nettyRequest.getHeaderNames()) {
headers.put(headerName,nettyRequest.getHeaders(headerName));
}
byte[] content = null;
if(nettyRequest.getContent().hasArray() && nettyRequest.getContent().array().length > 0) {
content = nettyRequest.getContent().array();
} else if(nettyRequest.getContent().readableBytes() > 0) {
content = new byte[nettyRequest.getContent().readableBytes()];
nettyRequest.getContent().readBytes(content);
}
HttpRequest request = new HttpRequest(nettyRequest.getMethod().getName(),new URI(nettyRequest.getUri()).getPath(),headers,content);
ActorRef replyActor = actorSystem.tempActorOf(HttpServiceResponseHandler.class,
new HttpServiceResponseHandler.State(ctx.getChannel()));
ctx.setAttachment(replyActor);
if(!httpService.doDispatch(request,replyActor)) {
ctx.getChannel().write(new DefaultHttpResponse(HttpVersion.HTTP_1_1,HttpResponseStatus.NOT_FOUND)).addListener(ChannelFutureListener.CLOSE);
actorSystem.stop(replyActor);
}
}