package com.nabalive.framework.web; import com.nabalive.framework.web.exception.HttpException; import org.jboss.netty.handler.codec.http.HttpMethod; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * Created by IntelliJ IDEA. * User: Julien Cheype * Date: 10/20/11 */ public class SimpleRestHandler implements RestHandler { private static final Logger logger = LoggerFactory.getLogger(SimpleRestHandler.class); private final ConcurrentHashMap<HttpMethod, List<Route>> routeMap = new ConcurrentHashMap<HttpMethod, List<Route>>(); public SimpleRestHandler staticServe(String filter, final HttpStaticFileServerHandler httpStaticFileServerHandler) { return get(new Route(filter) { @Override public void handle(Request request, Response response, Map<String, String> map) throws HttpException { try { httpStaticFileServerHandler.messageReceived(request.ctx, request.request); } catch (Exception e) { logger.error("static file: ", e); } } }); } public SimpleRestHandler before(Route route) { getRouteList(beforeFilter).add(route); return this; } public SimpleRestHandler after(Route route) { getRouteList(afterFilter).add(route); return this; } public SimpleRestHandler get(Route route) { getRouteList(HttpMethod.GET).add(route); return this; } public SimpleRestHandler post(Route route) { getRouteList(HttpMethod.POST).add(route); return this; } public SimpleRestHandler delete(Route route) { getRouteList(HttpMethod.DELETE).add(route); return this; } public SimpleRestHandler put(Route route) { getRouteList(HttpMethod.PUT).add(route); return this; } @Override public List<Route> getRouteList(HttpMethod method) { List<Route> routeList = routeMap.get(method); if (routeList == null) { routeMap.putIfAbsent(method, new ArrayList<Route>()); routeList = routeMap.get(method); } return routeList; } }