From 6b18b0761b726fd9aef1ebcc21b760378f7d4b5c Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 16 Jun 2014 17:36:12 -0400 Subject: [PATCH] Merge release 1.6.0 --- src/main/java/com/gitblit/tickets/BranchTicketService.java | 67 ++++++++++++++++++++++++++++----- 1 files changed, 57 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/gitblit/tickets/BranchTicketService.java b/src/main/java/com/gitblit/tickets/BranchTicketService.java index 284b1be..8c00055 100644 --- a/src/main/java/com/gitblit/tickets/BranchTicketService.java +++ b/src/main/java/com/gitblit/tickets/BranchTicketService.java @@ -378,6 +378,37 @@ } /** + * Returns the assigned ticket ids. + * + * @return the assigned ticket ids + */ + @Override + public synchronized Set<Long> getIds(RepositoryModel repository) { + Repository db = repositoryManager.getRepository(repository.name); + try { + if (getTicketsBranch(db) == null) { + return Collections.emptySet(); + } + Set<Long> ids = new TreeSet<Long>(); + List<PathModel> paths = JGitUtils.getDocuments(db, Arrays.asList("json"), BRANCH); + for (PathModel path : paths) { + String name = path.name.substring(path.name.lastIndexOf('/') + 1); + if (!JOURNAL.equals(name)) { + continue; + } + String tid = path.path.split("/")[2]; + long ticketId = Long.parseLong(tid); + ids.add(ticketId); + } + return ids; + } finally { + if (db != null) { + db.close(); + } + } + } + + /** * Assigns a new ticket id. * * @param repository @@ -398,16 +429,10 @@ } AtomicLong lastId = lastAssignedId.get(repository.name); if (lastId.get() <= 0) { - List<PathModel> paths = JGitUtils.getDocuments(db, Arrays.asList("json"), BRANCH); - for (PathModel path : paths) { - String name = path.name.substring(path.name.lastIndexOf('/') + 1); - if (!JOURNAL.equals(name)) { - continue; - } - String tid = path.path.split("/")[2]; - long ticketId = Long.parseLong(tid); - if (ticketId > lastId.get()) { - lastId.set(ticketId); + Set<Long> ids = getIds(repository); + for (long id : ids) { + if (id > lastId.get()) { + lastId.set(id); } } } @@ -526,6 +551,28 @@ } /** + * Retrieves the journal for the ticket. + * + * @param repository + * @param ticketId + * @return a journal, if it exists, otherwise null + */ + @Override + protected List<Change> getJournalImpl(RepositoryModel repository, long ticketId) { + Repository db = repositoryManager.getRepository(repository.name); + try { + List<Change> changes = getJournal(db, ticketId); + if (ArrayUtils.isEmpty(changes)) { + log.warn("Empty journal for {}:{}", repository, ticketId); + return null; + } + return changes; + } finally { + db.close(); + } + } + + /** * Returns the journal for the specified ticket. * * @param db -- Gitblit v1.9.1