aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-server-common
diff options
context:
space:
mode:
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>2019-11-29 16:16:53 +0100
committerSonarTech <sonartech@sonarsource.com>2020-01-13 20:46:25 +0100
commite13456fdb410c9938402b36a50a5462bc6597a42 (patch)
tree62b726fb7c8d2e0a97e2b26b501b35849c2a625a /server/sonar-server-common
parent611fb9ad6896b19dd6f948f348bb0d2608752d6f (diff)
downloadsonarqube-e13456fdb410c9938402b36a50a5462bc6597a42.tar.gz
sonarqube-e13456fdb410c9938402b36a50a5462bc6597a42.zip
SONAR-12717 add sort and paging to api/hotspots/search
Diffstat (limited to 'server/sonar-server-common')
-rw-r--r--server/sonar-server-common/src/main/java/org/sonar/server/issue/index/IssueDoc.java16
-rw-r--r--server/sonar-server-common/src/main/java/org/sonar/server/issue/index/IssueIndexDefinition.java6
-rw-r--r--server/sonar-server-common/src/main/java/org/sonar/server/issue/index/IssueIteratorForSingleChunk.java4
-rw-r--r--server/sonar-server-common/src/main/java/org/sonar/server/security/SecurityStandards.java26
-rw-r--r--server/sonar-server-common/src/test/java/org/sonar/server/issue/index/IssueIndexerTest.java2
5 files changed, 46 insertions, 8 deletions
diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/issue/index/IssueDoc.java b/server/sonar-server-common/src/main/java/org/sonar/server/issue/index/IssueDoc.java
index 88e8254667a..292139ef1a7 100644
--- a/server/sonar-server-common/src/main/java/org/sonar/server/issue/index/IssueDoc.java
+++ b/server/sonar-server-common/src/main/java/org/sonar/server/issue/index/IssueDoc.java
@@ -33,6 +33,7 @@ import org.sonar.db.rule.RuleDefinitionDto;
import org.sonar.server.es.BaseDoc;
import org.sonar.server.permission.index.AuthorizationDoc;
import org.sonar.server.security.SecurityStandards;
+import org.sonar.server.security.SecurityStandards.VulnerabilityProbability;
import static org.sonar.server.issue.index.IssueIndexDefinition.TYPE_ISSUE;
@@ -330,12 +331,23 @@ public class IssueDoc extends BaseDoc {
@CheckForNull
public SecurityStandards.SQCategory getSonarSourceSecurityCategory() {
- String key = getNullableField(IssueIndexDefinition.FIELD_ISSUE_SONARSOURCE_SECURITY);
+ String key = getNullableField(IssueIndexDefinition.FIELD_ISSUE_SQ_SECURITY_CATEGORY);
return SecurityStandards.SQCategory.fromKey(key).orElse(null);
}
public IssueDoc setSonarSourceSecurityCategory(@Nullable SecurityStandards.SQCategory c) {
- setField(IssueIndexDefinition.FIELD_ISSUE_SONARSOURCE_SECURITY, c == null ? null : c.getKey());
+ setField(IssueIndexDefinition.FIELD_ISSUE_SQ_SECURITY_CATEGORY, c == null ? null : c.getKey());
+ return this;
+ }
+
+ @CheckForNull
+ public VulnerabilityProbability getVulnerabilityProbability() {
+ Integer score = getNullableField(IssueIndexDefinition.FIELD_ISSUE_VULNERABILITY_PROBABILITY);
+ return VulnerabilityProbability.byScore(score).orElse(null);
+ }
+
+ public IssueDoc setVulnerabilityProbability(@Nullable VulnerabilityProbability v) {
+ setField(IssueIndexDefinition.FIELD_ISSUE_VULNERABILITY_PROBABILITY, v == null ? null : v.getScore());
return this;
}
}
diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/issue/index/IssueIndexDefinition.java b/server/sonar-server-common/src/main/java/org/sonar/server/issue/index/IssueIndexDefinition.java
index 3e4114d1af1..f02f7536cfc 100644
--- a/server/sonar-server-common/src/main/java/org/sonar/server/issue/index/IssueIndexDefinition.java
+++ b/server/sonar-server-common/src/main/java/org/sonar/server/issue/index/IssueIndexDefinition.java
@@ -99,7 +99,8 @@ public class IssueIndexDefinition implements IndexDefinition {
public static final String FIELD_ISSUE_OWASP_TOP_10 = "owaspTop10";
public static final String FIELD_ISSUE_SANS_TOP_25 = "sansTop25";
public static final String FIELD_ISSUE_CWE = "cwe";
- public static final String FIELD_ISSUE_SONARSOURCE_SECURITY = "sonarsourceSecurity";
+ public static final String FIELD_ISSUE_SQ_SECURITY_CATEGORY = "sonarsourceSecurity";
+ public static final String FIELD_ISSUE_VULNERABILITY_PROBABILITY = "vulnerabilityProbability";
private final Configuration config;
private final boolean enableSource;
@@ -160,6 +161,7 @@ public class IssueIndexDefinition implements IndexDefinition {
mapping.keywordFieldBuilder(FIELD_ISSUE_OWASP_TOP_10).disableNorms().build();
mapping.keywordFieldBuilder(FIELD_ISSUE_SANS_TOP_25).disableNorms().build();
mapping.keywordFieldBuilder(FIELD_ISSUE_CWE).disableNorms().build();
- mapping.keywordFieldBuilder(FIELD_ISSUE_SONARSOURCE_SECURITY).disableNorms().build();
+ mapping.keywordFieldBuilder(FIELD_ISSUE_SQ_SECURITY_CATEGORY).disableNorms().build();
+ mapping.keywordFieldBuilder(FIELD_ISSUE_VULNERABILITY_PROBABILITY).disableNorms().build();
}
}
diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/issue/index/IssueIteratorForSingleChunk.java b/server/sonar-server-common/src/main/java/org/sonar/server/issue/index/IssueIteratorForSingleChunk.java
index 0095f0c050d..d3ffeb07751 100644
--- a/server/sonar-server-common/src/main/java/org/sonar/server/issue/index/IssueIteratorForSingleChunk.java
+++ b/server/sonar-server-common/src/main/java/org/sonar/server/issue/index/IssueIteratorForSingleChunk.java
@@ -230,10 +230,12 @@ class IssueIteratorForSingleChunk implements IssueIterator {
doc.setType(RuleType.valueOf(rs.getInt(22)));
SecurityStandards securityStandards = fromSecurityStandards(deserializeSecurityStandardsString(rs.getString(23)));
+ SecurityStandards.SQCategory sqCategory = securityStandards.getSqCategory();
doc.setOwaspTop10(securityStandards.getOwaspTop10());
doc.setCwe(securityStandards.getCwe());
doc.setSansTop25(securityStandards.getSansTop25());
- doc.setSonarSourceSecurityCategory(securityStandards.getSqCategory());
+ doc.setSonarSourceSecurityCategory(sqCategory);
+ doc.setVulnerabilityProbability(sqCategory.getVulnerability());
return doc;
}
diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/security/SecurityStandards.java b/server/sonar-server-common/src/main/java/org/sonar/server/security/SecurityStandards.java
index b954d454339..89bb8ab155b 100644
--- a/server/sonar-server-common/src/main/java/org/sonar/server/security/SecurityStandards.java
+++ b/server/sonar-server-common/src/main/java/org/sonar/server/security/SecurityStandards.java
@@ -22,6 +22,7 @@ package org.sonar.server.security;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Ordering;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
@@ -64,9 +65,28 @@ public final class SecurityStandards {
SANS_TOP_25_POROUS_DEFENSES, POROUS_CWE);
public enum VulnerabilityProbability {
- HIGH,
- MEDIUM,
- LOW
+ HIGH(3),
+ MEDIUM(2),
+ LOW(1);
+
+ private final int score;
+
+ VulnerabilityProbability(int index) {
+ this.score = index;
+ }
+
+ public int getScore() {
+ return score;
+ }
+
+ public static Optional<VulnerabilityProbability> byScore(@Nullable Integer score) {
+ if (score == null) {
+ return Optional.empty();
+ }
+ return Arrays.stream(values())
+ .filter(t -> t.score == score)
+ .findFirst();
+ }
}
public enum SQCategory {
diff --git a/server/sonar-server-common/src/test/java/org/sonar/server/issue/index/IssueIndexerTest.java b/server/sonar-server-common/src/test/java/org/sonar/server/issue/index/IssueIndexerTest.java
index abaefc7c63a..c33af919d42 100644
--- a/server/sonar-server-common/src/test/java/org/sonar/server/issue/index/IssueIndexerTest.java
+++ b/server/sonar-server-common/src/test/java/org/sonar/server/issue/index/IssueIndexerTest.java
@@ -50,6 +50,7 @@ import org.sonar.server.permission.index.AuthorizationScope;
import org.sonar.server.permission.index.IndexPermissions;
import org.sonar.server.security.SecurityStandards;
import org.sonar.server.security.SecurityStandards.SQCategory;
+import org.sonar.server.security.SecurityStandards.VulnerabilityProbability;
import static java.util.Arrays.asList;
import static java.util.Collections.emptyList;
@@ -140,6 +141,7 @@ public class IssueIndexerTest {
assertThat(doc.getOwaspTop10()).isEmpty();
assertThat(doc.getSansTop25()).isEmpty();
assertThat(doc.getSonarSourceSecurityCategory()).isEqualTo(SQCategory.OTHERS);
+ assertThat(doc.getVulnerabilityProbability()).isEqualTo(VulnerabilityProbability.LOW);
}
@Test