/** * */ package com.trendrr.strest.server.v2; import static org.jboss.netty.handler.codec.http.HttpHeaders.is100ContinueExpected; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelUpstreamHandler; import org.jboss.netty.handler.codec.http.HttpRequest; import com.trendrr.oss.DynMap; import com.trendrr.strest.server.StrestRouter; import com.trendrr.strest.server.connections.StrestNettyConnectionChannel; import com.trendrr.strest.server.v2.models.http.StrestHttpRequest; import com.trendrr.strest.server.v2.models.json.StrestJsonRequest; /** * @author Dustin Norlander * @created May 4, 2012 * */ public class StrestJsonRequestHandler extends SimpleChannelUpstreamHandler { protected static Log log = LogFactory .getLog(StrestJsonRequestHandler.class); StrestRouter router; public StrestJsonRequestHandler(StrestRouter router) { this.router = router; } @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { DynMap request = (DynMap) e.getMessage(); StrestJsonRequest req = new StrestJsonRequest(request); req.setConnectionChannel(StrestNettyConnectionChannel.get(e.getChannel())); router.incoming(req); } @Override public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) { // log.info("Disconnect! " + ctx); StrestNettyConnectionChannel.remove(e.getChannel()); } @Override public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception { log.warn("Caught", e.getCause()); e.getChannel().close(); StrestNettyConnectionChannel.remove(e.getChannel()); } }