aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-server-common
diff options
context:
space:
mode:
authorAurelien Poscia <aurelien.poscia@sonarsource.com>2022-07-06 10:39:01 +0200
committersonartech <sonartech@sonarsource.com>2022-07-08 20:02:48 +0000
commit26fde2bdeb8ca2d5b9b76ce1ebc11706c9471cd0 (patch)
treedfe460821b29459e88197b40d5b251eb7927faa6 /server/sonar-server-common
parent685a8905315ce2fb830c91684ea3c9a3b3ad06a8 (diff)
downloadsonarqube-26fde2bdeb8ca2d5b9b76ce1ebc11706c9471cd0.tar.gz
sonarqube-26fde2bdeb8ca2d5b9b76ce1ebc11706c9471cd0.zip
SONAR-16614 Read ruleDescriptionContextKey from scanner reports and persist to DB
Diffstat (limited to 'server/sonar-server-common')
-rw-r--r--server/sonar-server-common/src/main/java/org/sonar/server/issue/IssueFieldsSetter.java12
-rw-r--r--server/sonar-server-common/src/test/java/org/sonar/server/issue/IssueFieldsSetterTest.java37
2 files changed, 48 insertions, 1 deletions
diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/issue/IssueFieldsSetter.java b/server/sonar-server-common/src/main/java/org/sonar/server/issue/IssueFieldsSetter.java
index 2d85d30ab16..bdcc5837f13 100644
--- a/server/sonar-server-common/src/main/java/org/sonar/server/issue/IssueFieldsSetter.java
+++ b/server/sonar-server-common/src/main/java/org/sonar/server/issue/IssueFieldsSetter.java
@@ -160,6 +160,17 @@ public class IssueFieldsSetter {
return false;
}
+ public boolean setRuleDescriptionContextKey(DefaultIssue issue, @Nullable String previousContextKey) {
+ String currentContextKey = issue.getRuleDescriptionContextKey().orElse(null);
+ issue.setRuleDescriptionContextKey(previousContextKey);
+ if (!Objects.equals(currentContextKey, previousContextKey)) {
+ issue.setRuleDescriptionContextKey(currentContextKey);
+ issue.setChanged(true);
+ return true;
+ }
+ return false;
+ }
+
public boolean setLocations(DefaultIssue issue, @Nullable Object locations) {
if (!Objects.equals(locations, issue.getLocations())) {
issue.setLocations(locations);
@@ -173,7 +184,6 @@ public class IssueFieldsSetter {
Object currentLocations = issue.getLocations();
issue.setLocations(previousLocations);
return setLocations(issue, currentLocations);
-
}
public boolean setResolution(DefaultIssue issue, @Nullable String resolution, IssueChangeContext context) {
diff --git a/server/sonar-server-common/src/test/java/org/sonar/server/issue/IssueFieldsSetterTest.java b/server/sonar-server-common/src/test/java/org/sonar/server/issue/IssueFieldsSetterTest.java
index 2ab5b815ed0..b70ea011845 100644
--- a/server/sonar-server-common/src/test/java/org/sonar/server/issue/IssueFieldsSetterTest.java
+++ b/server/sonar-server-common/src/test/java/org/sonar/server/issue/IssueFieldsSetterTest.java
@@ -43,6 +43,7 @@ import static org.sonar.server.issue.IssueFieldsSetter.UNUSED;
public class IssueFieldsSetterTest {
+ private final String DEFAULT_RULE_DESCRIPTION_CONTEXT_KEY = "spring";
private DefaultIssue issue = new DefaultIssue();
private IssueChangeContext context = IssueChangeContext.createUser(new Date(), "user_uuid");
@@ -511,4 +512,40 @@ public class IssueFieldsSetterTest {
assertThat(issue.isChanged()).isTrue();
assertThat(issue.updateDate()).isEqualTo(DateUtils.truncate(context.date(), Calendar.SECOND));
}
+
+ @Test
+ public void setRuleDescriptionContextKey_setContextKeyIfPreviousValueIsNull() {
+ issue.setRuleDescriptionContextKey(DEFAULT_RULE_DESCRIPTION_CONTEXT_KEY);
+ boolean updated = underTest.setRuleDescriptionContextKey(issue, null);
+
+ assertThat(updated).isTrue();
+ assertThat(issue.getRuleDescriptionContextKey()).contains(DEFAULT_RULE_DESCRIPTION_CONTEXT_KEY);
+ }
+
+ @Test
+ public void setRuleDescriptionContextKey_dontSetContextKeyIfPreviousValueIsTheSame() {
+ issue.setRuleDescriptionContextKey(DEFAULT_RULE_DESCRIPTION_CONTEXT_KEY);
+ boolean updated = underTest.setRuleDescriptionContextKey(issue, DEFAULT_RULE_DESCRIPTION_CONTEXT_KEY);
+
+ assertThat(updated).isFalse();
+ assertThat(issue.getRuleDescriptionContextKey()).contains(DEFAULT_RULE_DESCRIPTION_CONTEXT_KEY);
+ }
+
+ @Test
+ public void setRuleDescriptionContextKey_dontSetContextKeyIfBothValuesAreNull() {
+ issue.setRuleDescriptionContextKey(null);
+ boolean updated = underTest.setRuleDescriptionContextKey(issue, null);
+
+ assertThat(updated).isFalse();
+ assertThat(issue.getRuleDescriptionContextKey()).isEmpty();
+ }
+
+ @Test
+ public void setRuleDescriptionContextKey_setContextKeyIfValuesAreDifferent() {
+ issue.setRuleDescriptionContextKey(DEFAULT_RULE_DESCRIPTION_CONTEXT_KEY);
+ boolean updated = underTest.setRuleDescriptionContextKey(issue, "hibernate");
+
+ assertThat(updated).isTrue();
+ assertThat(issue.getRuleDescriptionContextKey()).contains(DEFAULT_RULE_DESCRIPTION_CONTEXT_KEY);
+ }
}