diff options
author | James Moger <james.moger@gitblit.com> | 2014-09-04 13:08:12 -0600 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2014-09-04 13:08:12 -0600 |
commit | 4a17b9332b01bfe37e6bceac18738f9e536f7023 (patch) | |
tree | fdcf985b8d276c88786db5513b95b58a7c71bfbd | |
parent | 624a7215a635630508d12b80508e0df708632066 (diff) | |
parent | 270e9e762820833d6815e362034dc3f4809b6470 (diff) | |
download | gitblit-4a17b9332b01bfe37e6bceac18738f9e536f7023.tar.gz gitblit-4a17b9332b01bfe37e6bceac18738f9e536f7023.zip |
Merged #152 "NPEs when handling tickets with non-existent milestones"
-rw-r--r-- | src/main/java/com/gitblit/tickets/ITicketService.java | 18 | ||||
-rw-r--r-- | 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 668d0bcc..4cf099ff 100644 --- a/src/main/java/com/gitblit/tickets/ITicketService.java +++ b/src/main/java/com/gitblit/tickets/ITicketService.java @@ -670,21 +670,24 @@ public abstract class ITicketService { 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 @@ public abstract class ITicketService { 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 f5f63d23..b1f94a5b 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 @@ public class TicketPage extends RepositoryPage { 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 @@ public class TicketPage extends RepositoryPage { 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);
|