diff options
author | Aurelien Poscia <aurelien.poscia@sonarsource.com> | 2022-07-06 10:39:01 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2022-07-08 20:02:48 +0000 |
commit | 26fde2bdeb8ca2d5b9b76ce1ebc11706c9471cd0 (patch) | |
tree | dfe460821b29459e88197b40d5b251eb7927faa6 /server/sonar-server-common | |
parent | 685a8905315ce2fb830c91684ea3c9a3b3ad06a8 (diff) | |
download | sonarqube-26fde2bdeb8ca2d5b9b76ce1ebc11706c9471cd0.tar.gz sonarqube-26fde2bdeb8ca2d5b9b76ce1ebc11706c9471cd0.zip |
SONAR-16614 Read ruleDescriptionContextKey from scanner reports and persist to DB
Diffstat (limited to 'server/sonar-server-common')
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); + } } |