diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2018-08-30 11:07:00 +0200 |
---|---|---|
committer | SonarTech <sonartech@sonarsource.com> | 2018-09-07 20:20:56 +0200 |
commit | 469af3846a5ca3f78b2b190ec4a2b27e3c7fd11f (patch) | |
tree | 02d491f891943febf90f0baec493b953bad7703d /sonar-plugin-api/src/main/java/org | |
parent | 8fc5a9f6296fef6d63b746ab7dae0a1080ab1272 (diff) | |
download | sonarqube-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.java | 28 |
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)); + } + } |