aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@gmail.com>2013-04-24 15:48:23 +0200
committerJulien Lancelot <julien.lancelot@gmail.com>2013-04-24 15:48:23 +0200
commit69bab4f4d7b9344ed379c6553ad39c09688c434b (patch)
tree18358ea4fc9b4d23d95e8a2650bbf94085ba0170
parent23cbff2d62cbe9326176209587daba1f0229a769 (diff)
downloadsonarqube-69bab4f4d7b9344ed379c6553ad39c09688c434b.tar.gz
sonarqube-69bab4f4d7b9344ed379c6553ad39c09688c434b.zip
SONAR-3755 Add parameter to IssueFinder to know if there were security exclusions
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/issue/IssueFinder.java2
-rw-r--r--sonar-server/src/main/java/org/sonar/server/issue/ServerIssueFinder.java10
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/controllers/api/issues_controller.rb1
-rw-r--r--sonar-server/src/test/java/org/sonar/server/issue/ServerIssueFinderTest.java4
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/issue/IssueParser.java3
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/issue/Issues.java12
-rw-r--r--sonar-ws-client/src/test/java/org/sonar/wsclient/issue/IssueParserTest.java10
-rw-r--r--sonar-ws-client/src/test/resources/org/sonar/wsclient/issue/IssueParserTest/search.json11
8 files changed, 44 insertions, 9 deletions
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/issue/IssueFinder.java b/sonar-plugin-api/src/main/java/org/sonar/api/issue/IssueFinder.java
index 59257860eaf..d82d43c0011 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/issue/IssueFinder.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/issue/IssueFinder.java
@@ -49,6 +49,8 @@ public interface IssueFinder extends ServerComponent {
Collection<Component> components();
Paging paging();
+
+ boolean securityExclusions();
}
Results find(IssueQuery query, @Nullable Integer currentUserId, String role);
diff --git a/sonar-server/src/main/java/org/sonar/server/issue/ServerIssueFinder.java b/sonar-server/src/main/java/org/sonar/server/issue/ServerIssueFinder.java
index c57ce7ffb97..e0fbe4b0362 100644
--- a/sonar-server/src/main/java/org/sonar/server/issue/ServerIssueFinder.java
+++ b/sonar-server/src/main/java/org/sonar/server/issue/ServerIssueFinder.java
@@ -89,7 +89,7 @@ public class ServerIssueFinder implements IssueFinder {
}
}
- return new DefaultResults(issues, getRulesByIssue(issues, ruleIds), getComponentsByIssue(issues, componentIds), paging);
+ return new DefaultResults(issues, getRulesByIssue(issues, ruleIds), getComponentsByIssue(issues, componentIds), paging, authorizedIssues.size() != allIssuesDto.size());
} finally {
MyBatis.closeQuietly(sqlSession);
}
@@ -172,12 +172,14 @@ public class ServerIssueFinder implements IssueFinder {
private final Paging paging;
private final Map<Issue, Rule> rulesByIssue;
private final Map<Issue, Component> componentsByIssue;
+ private final boolean securityExclusions;
- DefaultResults(List<Issue> issues, Map<Issue, Rule> rulesByIssue, Map<Issue, Component> componentsByIssue, Paging paging) {
+ DefaultResults(List<Issue> issues, Map<Issue, Rule> rulesByIssue, Map<Issue, Component> componentsByIssue, Paging paging, boolean securityExclusions) {
this.issues = issues;
this.rulesByIssue = rulesByIssue;
this.componentsByIssue = componentsByIssue;
this.paging = paging;
+ this.securityExclusions = securityExclusions;
}
@Override
@@ -201,6 +203,10 @@ public class ServerIssueFinder implements IssueFinder {
return componentsByIssue.values();
}
+ public boolean securityExclusions() {
+ return securityExclusions;
+ }
+
public Paging paging() {
return paging;
}
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/api/issues_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/api/issues_controller.rb
index 010ce384b92..d5350a804f1 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/api/issues_controller.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/api/issues_controller.rb
@@ -51,6 +51,7 @@ class Api::IssuesController < Api::ApiController
json = {}
json[:issues] = results.issues.map { |issue| issue_to_json(issue) }
json[:paging] = pagination_to_json(results.paging)
+ json[:securityExclusions] = results.securityExclusions
json
end
diff --git a/sonar-server/src/test/java/org/sonar/server/issue/ServerIssueFinderTest.java b/sonar-server/src/test/java/org/sonar/server/issue/ServerIssueFinderTest.java
index b82e21562ac..03524777c6a 100644
--- a/sonar-server/src/test/java/org/sonar/server/issue/ServerIssueFinderTest.java
+++ b/sonar-server/src/test/java/org/sonar/server/issue/ServerIssueFinderTest.java
@@ -92,6 +92,7 @@ public class ServerIssueFinderTest {
Issue issue = results.issues().iterator().next();
assertThat(issue.componentKey()).isEqualTo("Action.java");
assertThat(issue.ruleKey().toString()).isEqualTo("squid:AvoidCycle");
+ assertThat(results.securityExclusions()).isFalse();
}
@Test
@@ -110,9 +111,10 @@ public class ServerIssueFinderTest {
when(authorizationDao.keepAuthorizedComponentIds(anySet(), anyInt(), anyString(), any(SqlSession.class))).thenReturn(newHashSet(123));
when(issueDao.selectByIds(anyCollection(), any(SqlSession.class))).thenReturn(newArrayList(issue1));
- finder.find(issueQuery, null, UserRole.USER);
+ IssueFinder.Results results = finder.find(issueQuery, null, UserRole.USER);
verify(issueDao).selectByIds(eq(newHashSet(1L)), any(SqlSession.class));
+ assertThat(results.securityExclusions()).isTrue();
}
@Test
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/IssueParser.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/IssueParser.java
index af538b4b277..ef76e3630a6 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/IssueParser.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/IssueParser.java
@@ -20,6 +20,7 @@
package org.sonar.wsclient.issue;
import org.json.simple.JSONValue;
+import org.sonar.wsclient.unmarshallers.JsonUtils;
import java.util.List;
import java.util.Map;
@@ -34,6 +35,8 @@ class IssueParser {
}
Map paging = (Map) jRoot.get("paging");
result.setPaging(new Paging(paging));
+
+ result.setSecurityExclusions(JsonUtils.getBoolean(jRoot, "securityExclusions"));
return result;
}
}
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/Issues.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/Issues.java
index e4663e8ea24..7f9c655aa6b 100644
--- a/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/Issues.java
+++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/issue/Issues.java
@@ -29,6 +29,7 @@ public class Issues {
private final List<Issue> list = new ArrayList<Issue>();
private Paging paging;
+ private Boolean securityExclusions;
Issues add(Issue issue) {
list.add(issue);
@@ -38,12 +39,21 @@ public class Issues {
return list;
}
- void setPaging(Paging paging) {
+ Issues setPaging(Paging paging) {
this.paging = paging;
+ return this;
}
public Paging paging(){
return paging;
}
+ public Boolean securityExclusions() {
+ return securityExclusions;
+ }
+
+ Issues setSecurityExclusions(Boolean securityExclusions) {
+ this.securityExclusions = securityExclusions;
+ return this;
+ }
}
diff --git a/sonar-ws-client/src/test/java/org/sonar/wsclient/issue/IssueParserTest.java b/sonar-ws-client/src/test/java/org/sonar/wsclient/issue/IssueParserTest.java
index 003bd527a60..363e08ec08f 100644
--- a/sonar-ws-client/src/test/java/org/sonar/wsclient/issue/IssueParserTest.java
+++ b/sonar-ws-client/src/test/java/org/sonar/wsclient/issue/IssueParserTest.java
@@ -60,5 +60,15 @@ public class IssueParserTest {
assertThat(second.description()).isNull();
assertThat(second.attribute("JIRA")).isNull();
assertThat(second.attributes()).isEmpty();
+
+ assertThat(issues.paging()).isNotNull();
+ Paging paging = issues.paging();
+ assertThat(paging.pageIndex()).isEqualTo(1);
+ assertThat(paging.pageSize()).isEqualTo(100);
+ assertThat(paging.pages()).isEqualTo(1);
+ assertThat(paging.total()).isEqualTo(2);
+
+ assertThat(issues.securityExclusions()).isTrue();
}
+
}
diff --git a/sonar-ws-client/src/test/resources/org/sonar/wsclient/issue/IssueParserTest/search.json b/sonar-ws-client/src/test/resources/org/sonar/wsclient/issue/IssueParserTest/search.json
index d253a8642ef..14b1a6a402d 100644
--- a/sonar-ws-client/src/test/resources/org/sonar/wsclient/issue/IssueParserTest/search.json
+++ b/sonar-ws-client/src/test/resources/org/sonar/wsclient/issue/IssueParserTest/search.json
@@ -29,11 +29,12 @@
"status": "OPEN"
}
],
- "pagination":
+ "paging":
{
- "page": 1,
- "limit": 100,
- "size": 2,
+ "pageIndex": 1,
+ "pageSize": 100,
+ "total": 2,
"pages": 1
- }
+ },
+ "securityExclusions": true
} \ No newline at end of file