package ddth.dasp.framework.spring; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.servlet.HandlerMapping; /** * This {@link HandlerMapping} obtains a Map<String, Object> and * simply looks up the handler from the map. * * A handler named '*' is will catch all mappings if the specific handler is not * mapped. * * @author NBThanh <btnguyen2k@gmail.com> */ public class SimpleHandlerMapping extends AbstractHandlerMapping { private Logger LOGGER = LoggerFactory.getLogger(SimpleHandlerMapping.class); private Map<String, ?> handlerMapping; protected Map<String, ?> getHandlerMapping() { return handlerMapping; } public void setHandlerMapping(Map<String, ?> handlerMapping) { this.handlerMapping = handlerMapping; } /** * {@inheritDoc} */ @Override protected Object getHandlerInternal(HttpServletRequest request, String actionName) throws Exception { Map<String, ?> handlerMapping = getHandlerMapping(); if (handlerMapping == null) { return null; } Object controller = handlerMapping.get(actionName); if (controller != null) { if (LOGGER.isDebugEnabled()) { String msg = "Found handler for action [" + actionName + "]."; LOGGER.debug(msg); } return controller; } controller = handlerMapping.get("*"); if (controller != null) { if (LOGGER.isDebugEnabled()) { String msg = "Found universal handler for action [" + actionName + "]."; LOGGER.debug(msg); } return controller; } if (LOGGER.isDebugEnabled()) { String msg = "Found no handler for action [" + actionName + "]."; LOGGER.debug(msg); } return null; } }