package org.sonar.core.issue;
import com.google.common.base.Splitter;
-import com.google.common.base.Strings;
import com.google.common.collect.Maps;
import java.io.Serializable;
import java.util.Date;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
+import static com.google.common.base.Strings.emptyToNull;
import static com.google.common.base.Strings.isNullOrEmpty;
/**
for (String field : fields) {
String[] keyValues = field.split("=");
if (keyValues.length == 2) {
- String[] values = keyValues[1].split("\\|");
- String oldValue = "";
- String newValue = "";
- if (values.length == 1) {
- newValue = Strings.nullToEmpty(values[0]);
- } else if (values.length == 2) {
- oldValue = Strings.nullToEmpty(values[0]);
- newValue = Strings.nullToEmpty(values[1]);
+ String values = keyValues[1];
+ int split = values.indexOf('|');
+ if (split > -1) {
+ diffs.setDiff(keyValues[0], values.substring(0, split), values.substring(split +1));
+ } else {
+ diffs.setDiff(keyValues[0], "", emptyToNull(values));
}
- diffs.setDiff(keyValues[0], oldValue, newValue);
} else {
diffs.setDiff(keyValues[0], "", "");
}
}
@Test
- public void test_diff() throws Exception {
+ public void test_diff() {
diffs.setDiff("severity", "BLOCKER", "INFO");
diffs.setDiff("resolution", "OPEN", "FIXED");
}
@Test
- public void test_diff_by_key() throws Exception {
+ public void test_diff_by_key() {
diffs.setDiff("severity", "BLOCKER", "INFO");
diffs.setDiff("resolution", "OPEN", "FIXED");
}
@Test
- public void test_toString() throws Exception {
+ public void test_toString() {
diffs.setDiff("severity", "BLOCKER", "INFO");
diffs.setDiff("resolution", "OPEN", "FIXED");
}
@Test
- public void test_toString_with_null_values() throws Exception {
+ public void test_toString_with_null_values() {
diffs.setDiff("severity", null, "INFO");
diffs.setDiff("assignee", "user1", null);
}
@Test
- public void test_parse() throws Exception {
- diffs = FieldDiffs.parse("severity=BLOCKER|INFO,resolution=OPEN|FIXED");
- assertThat(diffs.diffs()).hasSize(2);
+ public void test_parse() {
+ diffs = FieldDiffs.parse("severity=BLOCKER|INFO,resolution=OPEN|FIXED,donut=|new,acme=old|");
+ assertThat(diffs.diffs()).hasSize(4);
FieldDiffs.Diff diff = diffs.diffs().get("severity");
assertThat(diff.oldValue()).isEqualTo("BLOCKER");
diff = diffs.diffs().get("resolution");
assertThat(diff.oldValue()).isEqualTo("OPEN");
assertThat(diff.newValue()).isEqualTo("FIXED");
+
+ diff = diffs.diffs().get("donut");
+ assertThat(diff.oldValue()).isEqualTo("");
+ assertThat(diff.newValue()).isEqualTo("new");
+
+ diff = diffs.diffs().get("acme");
+ assertThat(diff.oldValue()).isEqualTo("old");
+ assertThat(diff.newValue()).isEqualTo("");
}
@Test
- public void test_parse_empty_values() throws Exception {
+ public void test_parse_empty_values() {
diffs = FieldDiffs.parse("severity=INFO,resolution=");
assertThat(diffs.diffs()).hasSize(2);
}
@Test
- public void test_parse_null() throws Exception {
+ public void test_parse_null() {
diffs = FieldDiffs.parse(null);
assertThat(diffs.diffs()).isEmpty();
}
@Test
- public void test_parse_empty() throws Exception {
+ public void test_parse_empty() {
diffs = FieldDiffs.parse("");
assertThat(diffs.diffs()).isEmpty();
}