From d83ff5e2042f848a1640e84ecb30a867311cfae6 Mon Sep 17 00:00:00 2001 From: Teryk Bellahsene Date: Mon, 8 May 2017 19:31:41 +0200 Subject: [PATCH] SONAR-9182 Add visibility to WS api/projects/search --- .../sonar/db/component/ComponentQuery.java | 14 ++++++++ .../sonar/db/component/ComponentMapper.xml | 8 +++++ .../sonar/db/component/ComponentDaoTest.java | 14 ++++++++ .../sonar/server/project/ws/SearchAction.java | 27 ++++++++++++--- .../server/project/ws/SearchActionTest.java | 33 ++++++++++++++++++- .../ws/client/project/SearchWsRequest.java | 13 ++++++++ 6 files changed, 103 insertions(+), 6 deletions(-) diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentQuery.java b/server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentQuery.java index f5e6df3a26a..72ed52dd99c 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentQuery.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentQuery.java @@ -32,6 +32,7 @@ public class ComponentQuery { private final String nameOrKeyQuery; private final String[] qualifiers; private final String language; + private final Boolean isPrivate; private final Set componentIds; /** @@ -46,6 +47,7 @@ public class ComponentQuery { this.qualifiers = Builder.validateQualifiers(qualifiers); this.language = null; this.componentIds = null; + this.isPrivate = null; } private ComponentQuery(Builder builder) { @@ -53,6 +55,7 @@ public class ComponentQuery { this.qualifiers = builder.qualifiers; this.language = builder.language; this.componentIds = builder.componentIds; + this.isPrivate = builder.isPrivate; } public String[] getQualifiers() { @@ -82,6 +85,11 @@ public class ComponentQuery { return componentIds; } + @CheckForNull + public Boolean getPrivate() { + return isPrivate; + } + public static Builder builder() { return new Builder(); } @@ -90,6 +98,7 @@ public class ComponentQuery { private String nameOrKeyQuery; private String[] qualifiers; private String language; + private Boolean isPrivate; private Set componentIds; public Builder setNameOrKeyQuery(@Nullable String nameOrKeyQuery) { @@ -112,6 +121,11 @@ public class ComponentQuery { return this; } + public Builder setPrivate(@Nullable Boolean isPrivate) { + this.isPrivate = isPrivate; + return this; + } + protected static String[] validateQualifiers(@Nullable String... qualifiers) { checkArgument(qualifiers != null && qualifiers.length > 0, "At least one qualifier must be provided"); return qualifiers; diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml index 1c4920b51e3..fa61bb41a3b 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml @@ -298,6 +298,14 @@ upper(p.name) like #{query.nameOrKeyUpperLikeQuery,jdbcType=VARCHAR} escape '/' ) + + + and p.private=${_true} + + + and p.private=${_false} + +