diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2013-11-04 08:29:41 +0100 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2013-11-04 08:29:41 +0100 |
commit | d2b96c467a958aba9187738074b8a227701ada2d (patch) | |
tree | 8d4f913164dda059d61b143de8ad980fa4fd21f8 /sonar-core | |
parent | 4d5a0b1c1cd8e787cedffe2cc8d1f4772b74c2b0 (diff) | |
download | sonarqube-d2b96c467a958aba9187738074b8a227701ada2d.tar.gz sonarqube-d2b96c467a958aba9187738074b8a227701ada2d.zip |
Fix NPE when previous technical debt was null
Diffstat (limited to 'sonar-core')
-rw-r--r-- | sonar-core/src/main/java/org/sonar/core/issue/IssueUpdater.java | 2 | ||||
-rw-r--r-- | sonar-core/src/test/java/org/sonar/core/issue/IssueUpdaterTest.java | 27 |
2 files changed, 28 insertions, 1 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/IssueUpdater.java b/sonar-core/src/main/java/org/sonar/core/issue/IssueUpdater.java index 33ffb6a94d0..6e7d8fccb84 100644 --- a/sonar-core/src/main/java/org/sonar/core/issue/IssueUpdater.java +++ b/sonar-core/src/main/java/org/sonar/core/issue/IssueUpdater.java @@ -204,7 +204,7 @@ public class IssueUpdater implements BatchComponent, ServerComponent { TechnicalDebt oldValue = issue.technicalDebt(); if (!Objects.equal(value, oldValue)) { issue.setTechnicalDebt(value); - issue.setFieldChange(context, TECHNICAL_DEBT, oldValue.toLong(), value.toLong()); + issue.setFieldChange(context, TECHNICAL_DEBT, oldValue != null ? oldValue.toLong() : oldValue, value != null ? value.toLong() : null); issue.setUpdateDate(context.date()); issue.setChanged(true); return true; diff --git a/sonar-core/src/test/java/org/sonar/core/issue/IssueUpdaterTest.java b/sonar-core/src/test/java/org/sonar/core/issue/IssueUpdaterTest.java index 1a04d60d4dc..94ccc307c4f 100644 --- a/sonar-core/src/test/java/org/sonar/core/issue/IssueUpdaterTest.java +++ b/sonar-core/src/test/java/org/sonar/core/issue/IssueUpdaterTest.java @@ -379,6 +379,33 @@ public class IssueUpdaterTest { } @Test + public void set_past_technical_debt_without_previous_value() throws Exception { + issue.setTechnicalDebt(TechnicalDebt.of(15, 0, 0)); + boolean updated = updater.setPastTechnicalDebt(issue, null, context); + assertThat(updated).isTrue(); + assertThat(issue.technicalDebt()).isEqualTo(TechnicalDebt.of(15, 0, 0)); + assertThat(issue.mustSendNotifications()).isFalse(); + + FieldDiffs.Diff diff = issue.currentChange().get(TECHNICAL_DEBT); + assertThat(diff.oldValue()).isNull(); + assertThat(diff.newValue()).isEqualTo(TechnicalDebt.of(15, 0, 0).toLong()); + } + + @Test + public void set_past_technical_debt_with_null_new_value() throws Exception { + issue.setTechnicalDebt(null); + TechnicalDebt previousDebt = TechnicalDebt.of(10, 0, 0); + boolean updated = updater.setPastTechnicalDebt(issue, previousDebt, context); + assertThat(updated).isTrue(); + assertThat(issue.technicalDebt()).isNull(); + assertThat(issue.mustSendNotifications()).isFalse(); + + FieldDiffs.Diff diff = issue.currentChange().get(TECHNICAL_DEBT); + assertThat(diff.oldValue()).isEqualTo(TechnicalDebt.of(10, 0, 0).toLong()); + assertThat(diff.newValue()).isNull(); + } + + @Test public void set_message() throws Exception { boolean updated = updater.setMessage(issue, "the message", context); assertThat(updated).isTrue(); |