From 7d19224c99f118351ad15a77942762e74940536f Mon Sep 17 00:00:00 2001 From: Hybris95 <hybris_95@hotmail.com> Date: Thu, 01 May 2014 16:14:14 -0400 Subject: [PATCH] Implementation of the getTickets capability of recovering all tickets from a nullable RepositoryModel --- src/main/java/com/gitblit/tickets/RedisTicketService.java | 85 ++++++++++++++++++++++++++---------------- 1 files changed, 52 insertions(+), 33 deletions(-) diff --git a/src/main/java/com/gitblit/tickets/RedisTicketService.java b/src/main/java/com/gitblit/tickets/RedisTicketService.java index 2c5b181..48256b2 100644 --- a/src/main/java/com/gitblit/tickets/RedisTicketService.java +++ b/src/main/java/com/gitblit/tickets/RedisTicketService.java @@ -22,6 +22,7 @@ import java.util.Set; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; +import org.eclipse.jgit.lib.Repository; import redis.clients.jedis.Client; import redis.clients.jedis.Jedis; @@ -228,47 +229,65 @@ public List<TicketModel> getTickets(RepositoryModel repository, TicketFilter filter) { Jedis jedis = pool.getResource(); List<TicketModel> list = new ArrayList<TicketModel>(); + List<RepositoryModel> models = new ArrayList<RepositoryModel>(); + + if(repository == null) + { + List<String> allRepo = repositoryManager.getRepositoryList(); + for(int i = 0; i < allRepo.size(); i++) + { + models.add(repositoryManager.getRepositoryModel(allRepo.get(i))); + } + } + else + { + models.add(repository); + } + if (jedis == null) { return list; } - try { - // Deserialize each journal, build the ticket, and optionally filter - Set<String> keys = jedis.keys(key(repository, KeyType.journal, "*")); - for (String key : keys) { - // {repo}:journal:{id} - String id = key.split(":")[2]; - long ticketId = Long.parseLong(id); - List<Change> changes = getJournal(jedis, repository, ticketId); - if (ArrayUtils.isEmpty(changes)) { - log.warn("Empty journal for {}:{}", repository, ticketId); - continue; - } - TicketModel ticket = TicketModel.buildTicket(changes); - ticket.project = repository.projectPath; - ticket.repository = repository.name; - ticket.number = ticketId; - - // add the ticket, conditionally, to the list - if (filter == null) { - list.add(ticket); - } else { - if (filter.accept(ticket)) { + for(int i = 0; i < models.size(); i++) + { + RepositoryModel model = models.get(i); + try { + // Deserialize each journal, build the ticket, and optionally filter + Set<String> keys = jedis.keys(key(model, KeyType.journal, "*")); + for (String key : keys) { + // {repo}:journal:{id} + String id = key.split(":")[2]; + long ticketId = Long.parseLong(id); + List<Change> changes = getJournal(jedis, model, ticketId); + if (ArrayUtils.isEmpty(changes)) { + log.warn("Empty journal for {}:{}", model, ticketId); + continue; + } + TicketModel ticket = TicketModel.buildTicket(changes); + ticket.project = model.projectPath; + ticket.repository = model.name; + ticket.number = ticketId; + + // add the ticket, conditionally, to the list + if (filter == null) { list.add(ticket); + } else { + if (filter.accept(ticket)) { + list.add(ticket); + } } } - } - - // sort the tickets by creation - Collections.sort(list); - } catch (JedisException e) { - log.error("failed to retrieve tickets from Redis @ " + getUrl(), e); - pool.returnBrokenResource(jedis); - jedis = null; - } finally { - if (jedis != null) { - pool.returnResource(jedis); + } catch (JedisException e) { + log.error("failed to retrieve tickets from Redis @ " + getUrl(), e); + pool.returnBrokenResource(jedis); + jedis = null; + } finally { + if (jedis != null) { + pool.returnResource(jedis); + } } } + // sort the tickets by creation + Collections.sort(list); return list; } -- Gitblit v1.9.1