James Moger
2014-04-15 bd7db1070e07cf1777a0c0ee6e770625f8734fb6
Merge pull request #170 'ticket-fix' from https://github.com/lucidd/gitblit
2 files modified
43 ■■■■■ changed files
src/main/java/com/gitblit/tickets/ITicketService.java 39 ●●●● patch | view | raw | blame | history
src/test/java/com/gitblit/tests/TicketServiceTest.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/tickets/ITicketService.java
@@ -713,27 +713,30 @@
    public final TicketModel getTicket(RepositoryModel repository, long ticketId) {
        TicketKey key = new TicketKey(repository, ticketId);
        TicketModel ticket = ticketsCache.getIfPresent(key);
        // if ticket not cached
        if (ticket == null) {
            // load & cache ticket
            //load ticket
            ticket = getTicketImpl(repository, ticketId);
            if (ticket.hasPatchsets()) {
                Repository r = repositoryManager.getRepository(repository.name);
                try {
                    Patchset patchset = ticket.getCurrentPatchset();
                    DiffStat diffStat = DiffUtils.getDiffStat(r, patchset.base, patchset.tip);
                    // diffstat could be null if we have ticket data without the
                    // commit objects.  e.g. ticket replication without repo
                    // mirroring
                    if (diffStat != null) {
                        ticket.insertions = diffStat.getInsertions();
                        ticket.deletions = diffStat.getDeletions();
                    }
                } finally {
                    r.close();
                }
            }
            // if ticket exists
            if (ticket != null) {
                if (ticket.hasPatchsets()) {
                    Repository r = repositoryManager.getRepository(repository.name);
                    try {
                        Patchset patchset = ticket.getCurrentPatchset();
                        DiffStat diffStat = DiffUtils.getDiffStat(r, patchset.base, patchset.tip);
                        // diffstat could be null if we have ticket data without the
                        // commit objects.  e.g. ticket replication without repo
                        // mirroring
                        if (diffStat != null) {
                            ticket.insertions = diffStat.getInsertions();
                            ticket.deletions = diffStat.getDeletions();
                        }
                    } finally {
                        r.close();
                    }
                }
                //cache ticket
                ticketsCache.put(key, ticket);
            }
        }
src/test/java/com/gitblit/tests/TicketServiceTest.java
@@ -92,6 +92,10 @@
    @Test
    public void testLifecycle() throws Exception {
        // query non-existent ticket
        TicketModel nonExistent = service.getTicket(getRepository(), 0);
        assertNull(nonExistent);
        // create and insert a ticket
        Change c1 = newChange("testCreation() " + Long.toHexString(System.currentTimeMillis()));
        TicketModel ticket = service.createTicket(getRepository(), c1);