aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-plugin-api/src/main/java/org
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2018-08-30 11:07:00 +0200
committerSonarTech <sonartech@sonarsource.com>2018-09-07 20:20:56 +0200
commit469af3846a5ca3f78b2b190ec4a2b27e3c7fd11f (patch)
tree02d491f891943febf90f0baec493b953bad7703d /sonar-plugin-api/src/main/java/org
parent8fc5a9f6296fef6d63b746ab7dae0a1080ab1272 (diff)
downloadsonarqube-469af3846a5ca3f78b2b190ec4a2b27e3c7fd11f.tar.gz
sonarqube-469af3846a5ca3f78b2b190ec4a2b27e3c7fd11f.zip
SONAR-11185 Allow portfolio to define projects by tags
* SONAR-11199 Allow selection of no project mode * Add tags in views definition * Create api/views/set_tags_mode * Return tags mode in api/views/show * Take into account tags during portfolio computation
Diffstat (limited to 'sonar-plugin-api/src/main/java/org')
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RuleTagFormat.java28
1 files changed, 27 insertions, 1 deletions
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RuleTagFormat.java b/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RuleTagFormat.java
index a7cb441fb50..3ca072a2adb 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RuleTagFormat.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RuleTagFormat.java
@@ -19,8 +19,16 @@
*/
package org.sonar.api.server.rule;
+import java.util.Collection;
+import java.util.Objects;
+import java.util.Set;
import org.apache.commons.lang.StringUtils;
+import static java.lang.String.format;
+import static java.lang.String.join;
+import static java.util.Locale.ENGLISH;
+import static java.util.stream.Collectors.toSet;
+
/**
* The characters allowed in rule tags are the same as those on StackOverflow, basically lower-case
* letters, digits, plus (+), sharp (#), dash (-) and dot (.)
@@ -29,6 +37,8 @@ import org.apache.commons.lang.StringUtils;
*/
public class RuleTagFormat {
+ private static final String ERROR_MESSAGE_SUFFIX = "Rule tags accept only the characters: a-z, 0-9, '+', '-', '#', '.'";
+
private static final String VALID_CHARACTERS_REGEX = "^[a-z0-9\\+#\\-\\.]+$";
private RuleTagFormat() {
@@ -41,8 +51,24 @@ public class RuleTagFormat {
public static String validate(String tag) {
if (!isValid(tag)) {
- throw new IllegalArgumentException(String.format("Tag '%s' is invalid. Rule tags accept only the characters: a-z, 0-9, '+', '-', '#', '.'", tag));
+ throw new IllegalArgumentException(format("Tag '%s' is invalid. %s", tag, ERROR_MESSAGE_SUFFIX));
}
return tag;
}
+
+ public static Set<String> validate(Collection<String> tags) {
+ Set<String> sanitizedTags = tags.stream()
+ .filter(Objects::nonNull)
+ .filter(tag -> !tag.isEmpty())
+ .map(tag -> tag.toLowerCase(ENGLISH))
+ .collect(toSet());
+ Set<String> invalidTags = sanitizedTags.stream()
+ .filter(tag -> !isValid(tag))
+ .collect(toSet());
+ if (invalidTags.isEmpty()) {
+ return sanitizedTags;
+ }
+ throw new IllegalArgumentException(format("Tags '%s' are invalid. %s", join(", ", invalidTags), ERROR_MESSAGE_SUFFIX));
+ }
+
}