aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-core
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2013-11-04 08:29:41 +0100
committerJulien Lancelot <julien.lancelot@sonarsource.com>2013-11-04 08:29:41 +0100
commitd2b96c467a958aba9187738074b8a227701ada2d (patch)
tree8d4f913164dda059d61b143de8ad980fa4fd21f8 /sonar-core
parent4d5a0b1c1cd8e787cedffe2cc8d1f4772b74c2b0 (diff)
downloadsonarqube-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.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/issue/IssueUpdaterTest.java27
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();