Hybris95
2014-04-22 3f5b8f5d9203aa7ffb7fbe9cdbaf9dba3da6cae6
src/main/java/com/gitblit/tickets/ITicketService.java
@@ -643,7 +643,7 @@
   public synchronized boolean renameMilestone(RepositoryModel repository, String oldName, String newName, String createdBy) {
      return renameMilestone(repository, oldName, newName, createdBy, true);
   }
   /**
    * Renames a milestone.
    *
@@ -651,11 +651,12 @@
    * @param oldName
    * @param newName
    * @param createdBy
    * @param send ticket notifications
    * @param notifyOpenTickets
    * @return true if successful
    * @since 1.6.0
    */
   public synchronized boolean renameMilestone(RepositoryModel repository, String oldName, String newName, String createdBy, boolean notify) {
   public synchronized boolean renameMilestone(RepositoryModel repository, String oldName,
         String newName, String createdBy, boolean notifyOpenTickets) {
      if (StringUtils.isEmpty(newName)) {
         throw new IllegalArgumentException("new milestone can not be empty!");
      }
@@ -680,11 +681,11 @@
            Change change = new Change(createdBy);
            change.setField(Field.milestone, newName);
            TicketModel ticket = updateTicket(repository, qr.number, change);
            if (notify && ticket.isOpen()) {
            if (notifyOpenTickets && ticket.isOpen()) {
               notifier.queueMailing(ticket);
            }
         }
         if (notify) {
         if (notifyOpenTickets) {
            notifier.sendAll();
         }
@@ -709,11 +710,27 @@
    * @since 1.4.0
    */
   public synchronized boolean deleteMilestone(RepositoryModel repository, String milestone, String createdBy) {
      return deleteMilestone(repository, milestone, createdBy, true);
   }
   /**
    * Deletes a milestone.
    *
    * @param repository
    * @param milestone
    * @param createdBy
    * @param notifyOpenTickets
    * @return true if successful
    * @since 1.6.0
    */
   public synchronized boolean deleteMilestone(RepositoryModel repository, String milestone,
         String createdBy, boolean notifyOpenTickets) {
      if (StringUtils.isEmpty(milestone)) {
         throw new IllegalArgumentException("milestone can not be empty!");
      }
      Repository db = null;
      try {
         TicketMilestone tm = getMilestone(repository, milestone);
         db = repositoryManager.getRepository(repository.name);
         StoredConfig config = db.getConfig();
         config.unsetSection(MILESTONE, milestone);
@@ -721,6 +738,18 @@
         milestonesCache.remove(repository.name);
         TicketNotifier notifier = createNotifier();
         for (QueryResult qr : tm.tickets) {
            Change change = new Change(createdBy);
            change.setField(Field.milestone, "");
            TicketModel ticket = updateTicket(repository, qr.number, change);
            if (notifyOpenTickets && ticket.isOpen()) {
               notifier.queueMailing(ticket);
            }
         }
         if (notifyOpenTickets) {
            notifier.sendAll();
         }
         return true;
      } catch (IOException e) {
         log.error("failed to delete milestone " + milestone + " in " + repository, e);
@@ -750,12 +779,21 @@
    * @since 1.4.0
    */
   public abstract boolean hasTicket(RepositoryModel repository, long ticketId);
   /**
    * Returns all tickets.  This is not a Lucene search!
    *
    * @return all tickets
    */
   public List<TicketModel> getTickets() {
      return getTickets(null, null);
   }
   /**
    * Returns all tickets.  This is not a Lucene search!
    *
    * @param repository
    * @return all tickets
    * @return all tickets of a given repository
    * @since 1.4.0
    */
   public List<TicketModel> getTickets(RepositoryModel repository) {