From 4a17b9332b01bfe37e6bceac18738f9e536f7023 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 04 Sep 2014 15:08:12 -0400
Subject: [PATCH] Merged #152 "NPEs when handling tickets with non-existent milestones"
---
src/main/java/com/gitblit/tickets/ITicketService.java | 18 ++++++++++++------
src/main/java/com/gitblit/wicket/pages/TicketPage.java | 15 +++++++++------
2 files changed, 21 insertions(+), 12 deletions(-)
diff --git a/src/main/java/com/gitblit/tickets/ITicketService.java b/src/main/java/com/gitblit/tickets/ITicketService.java
index 668d0bc..4cf099f 100644
--- a/src/main/java/com/gitblit/tickets/ITicketService.java
+++ b/src/main/java/com/gitblit/tickets/ITicketService.java
@@ -670,21 +670,24 @@
Repository db = null;
try {
db = repositoryManager.getRepository(repository.name);
- TicketMilestone milestone = getMilestone(repository, oldName);
+ TicketMilestone tm = getMilestone(repository, oldName);
+ if (tm == null) {
+ return false;
+ }
StoredConfig config = db.getConfig();
config.unsetSection(MILESTONE, oldName);
- config.setString(MILESTONE, newName, STATUS, milestone.status.name());
- config.setString(MILESTONE, newName, COLOR, milestone.color);
- if (milestone.due != null) {
+ config.setString(MILESTONE, newName, STATUS, tm.status.name());
+ config.setString(MILESTONE, newName, COLOR, tm.color);
+ if (tm.due != null) {
config.setString(MILESTONE, newName, DUE,
- new SimpleDateFormat(DUE_DATE_PATTERN).format(milestone.due));
+ new SimpleDateFormat(DUE_DATE_PATTERN).format(tm.due));
}
config.save();
milestonesCache.remove(repository.name);
TicketNotifier notifier = createNotifier();
- for (QueryResult qr : milestone.tickets) {
+ for (QueryResult qr : tm.tickets) {
Change change = new Change(createdBy);
change.setField(Field.milestone, newName);
TicketModel ticket = updateTicket(repository, qr.number, change);
@@ -738,6 +741,9 @@
Repository db = null;
try {
TicketMilestone tm = getMilestone(repository, milestone);
+ if (tm == null) {
+ return false;
+ }
db = repositoryManager.getRepository(repository.name);
StoredConfig config = db.getConfig();
config.unsetSection(MILESTONE, milestone);
diff --git a/src/main/java/com/gitblit/wicket/pages/TicketPage.java b/src/main/java/com/gitblit/wicket/pages/TicketPage.java
index f5f63d2..b1f94a5 100644
--- a/src/main/java/com/gitblit/wicket/pages/TicketPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/TicketPage.java
@@ -249,9 +249,12 @@
add(new Label("milestone"));
} else {
// link to milestone query
- TicketMilestone milestone = app().tickets().getMilestone(repository, ticket.milestone);
+ TicketMilestone tm = app().tickets().getMilestone(repository, ticket.milestone);
+ if (tm == null) {
+ tm = new TicketMilestone(ticket.milestone);
+ }
PageParameters milestoneParameters;
- if (milestone.isOpen()) {
+ if (tm.isOpen()) {
milestoneParameters = WicketUtils.newOpenTicketsParameter(repositoryName);
} else {
milestoneParameters = WicketUtils.newRepositoryParameter(repositoryName);
@@ -260,10 +263,10 @@
int progress = 0;
int open = 0;
int closed = 0;
- if (milestone != null) {
- progress = milestone.getProgress();
- open = milestone.getOpenTickets();
- closed = milestone.getClosedTickets();
+ if (tm != null) {
+ progress = tm.getProgress();
+ open = tm.getOpenTickets();
+ closed = tm.getClosedTickets();
}
Fragment milestoneProgress = new Fragment("milestone", "milestoneProgressFragment", this);
--
Gitblit v1.9.1