/**
   * Helper method extracting the StashRef for the stash commit rev
   *
   * @param git Git handler object
   * @param stashRev Git commit name
   * @return StashRef wrapper object or <code>null</code> if the given commit is not present in the
   *     stash
   * @throws InvalidRefNameException
   * @throws GitAPIException
   */
  protected StashRef getStashRef(Git git, String stashRev)
      throws InvalidRefNameException, GitAPIException {

    if (stashRev == null) return null;

    StashListCommand stashList = git.stashList();
    Collection<RevCommit> stashedRefsCollection = stashList.call();

    int k = 0;
    for (RevCommit rev : stashedRefsCollection)
      if (stashRev.equals(rev.getName())) return new StashRef(k);
      else ++k;

    return null;
  }
  @Override
  protected boolean handleGet(RequestInfo requestInfo) throws ServletException {

    HttpServletRequest request = requestInfo.request;
    HttpServletResponse response = requestInfo.response;
    Repository db = requestInfo.db;

    int page =
        request.getParameter("page") != null
            ? new Integer(request.getParameter("page")).intValue()
            : 1; //$NON-NLS-1$ //$NON-NLS-2$
    int pageSize =
        request.getParameter("pageSize") != null
            ? new Integer(request.getParameter("pageSize")).intValue()
            : PAGE_SIZE; //$NON-NLS-1$ //$NON-NLS-2$
    String messageFilter = request.getParameter("filter"); // $NON-NLS-1$
    try {

      URI baseLocation = getURI(request);
      URI cloneLocation =
          BaseToCloneConverter.getCloneLocation(baseLocation, BaseToCloneConverter.COMMIT);

      Git git = new Git(db);
      StashListCommand stashList = git.stashList();
      Collection<RevCommit> stashedRefsCollection = stashList.call();

      StashPage stashPage =
          new StashPage(cloneLocation, db, stashedRefsCollection, page, pageSize, messageFilter);
      OrionServlet.writeJSONResponse(request, response, stashPage.toJSON());
      return true;

    } catch (Exception ex) {
      String msg = "An error occured for stash command.";
      return statusHandler.handleRequest(
          request,
          response,
          new ServerStatus(IStatus.ERROR, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, msg, ex));
    }
  }
 /**
  * Helper method returning whether the stash is empty or not
  *
  * @param git Git handler object
  * @return <code>true</code> iff the git stash is empty
  * @throws InvalidRefNameException
  * @throws GitAPIException
  */
 protected boolean isStashEmpty(Git git) throws InvalidRefNameException, GitAPIException {
   StashListCommand stashList = git.stashList();
   Collection<RevCommit> stashedRefsCollection = stashList.call();
   return stashedRefsCollection.isEmpty();
 }