/**
   * Passes the given request to a proper controller.
   *
   * @param request
   * @return
   * @throws Exception
   */
  public MockHttpServletResponse handle(HttpServletRequest request) throws Exception {
    MockHttpServletResponse response = new MockHttpServletResponse();

    HandlerExecutionChain handlerExecutionChain = null;
    for (DefaultAnnotationHandlerMapping handlerMapping : handlerMappings) {
      handlerExecutionChain = handlerMapping.getHandler(request);
      if (handlerExecutionChain != null) {
        break;
      }
    }
    Assert.assertNotNull("The request URI does not exist", handlerExecutionChain);

    handlerAdapter.handle(request, response, handlerExecutionChain.getHandler());

    return response;
  }