Hybris95
2014-04-16 7d19224c99f118351ad15a77942762e74940536f
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,24 +229,42 @@
   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;
      }
      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(repository, KeyType.journal, "*"));
            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, repository, ticketId);
               List<Change> changes = getJournal(jedis, model, ticketId);
            if (ArrayUtils.isEmpty(changes)) {
               log.warn("Empty journal for {}:{}", repository, ticketId);
                  log.warn("Empty journal for {}:{}", model, ticketId);
               continue;
            }
            TicketModel ticket = TicketModel.buildTicket(changes);
            ticket.project = repository.projectPath;
            ticket.repository = repository.name;
               ticket.project = model.projectPath;
               ticket.repository = model.name;
            ticket.number = ticketId;
            // add the ticket, conditionally, to the list
@@ -257,9 +276,6 @@
               }
            }
         }
         // sort the tickets by creation
         Collections.sort(list);
      } catch (JedisException e) {
         log.error("failed to retrieve tickets from Redis @ " + getUrl(), e);
         pool.returnBrokenResource(jedis);
@@ -269,6 +285,9 @@
            pool.returnResource(jedis);
         }
      }
      }
      // sort the tickets by creation
      Collections.sort(list);
      return list;
   }