diff options
author | Julien HENRY <julien.henry@sonarsource.com> | 2017-08-02 13:51:17 +0200 |
---|---|---|
committer | Julien HENRY <julien.henry@sonarsource.com> | 2017-08-04 14:58:16 +0200 |
commit | 343758acd64fd2318a35c5f55c6511cf8b2f6467 (patch) | |
tree | e43a20a33651b7aa3e9896d0acc8054ebba9d46d /sonar-plugin-api/src/main/java/org/sonar/api/scan | |
parent | bcae3c079bef995afef0ffc4dbe774fbdf0bf9ed (diff) | |
download | sonarqube-343758acd64fd2318a35c5f55c6511cf8b2f6467.tar.gz sonarqube-343758acd64fd2318a35c5f55c6511cf8b2f6467.zip |
Don't change PathResolver methods to static
This is an API breaking change
Diffstat (limited to 'sonar-plugin-api/src/main/java/org/sonar/api/scan')
-rw-r--r-- | sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/PathResolver.java | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/PathResolver.java b/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/PathResolver.java index 692fd5427da..cd90998741a 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/PathResolver.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/PathResolver.java @@ -24,6 +24,7 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Optional; import javax.annotation.CheckForNull; import javax.annotation.concurrent.Immutable; import org.apache.commons.io.FilenameUtils; @@ -39,10 +40,7 @@ import static java.util.stream.Collectors.joining; @Immutable public class PathResolver { - /** - * Static since 6.6 - */ - public static File relativeFile(File dir, String path) { + public File relativeFile(File dir, String path) { return dir.toPath().resolve(path).normalize().toFile(); } @@ -79,11 +77,10 @@ public class PathResolver { * <li>null is returned if file is not a child of dir * <li>the resulting path is converted to use Unix separators * </ul> - * Static since 6.6 * @since 6.0 */ @CheckForNull - public static String relativePath(Path dir, Path file) { + public String relativePath(Path dir, Path file) { Path baseDir = dir.normalize(); Path path = file.normalize(); if (!path.startsWith(baseDir)) { @@ -97,6 +94,28 @@ public class PathResolver { } } + /** + * Similar to {@link Path#relativize(Path)} except that: + * <ul> + * <li>Empty is returned if file is not a child of dir + * <li>the resulting path is converted to use Unix separators + * </ul> + * @since 6.6 + */ + public static Optional<String> relativize(Path dir, Path file) { + Path baseDir = dir.normalize(); + Path path = file.normalize(); + if (!path.startsWith(baseDir)) { + return Optional.empty(); + } + try { + Path relativized = baseDir.relativize(path); + return Optional.of(FilenameUtils.separatorsToUnix(relativized.toString())); + } catch (IllegalArgumentException e) { + return Optional.empty(); + } + } + @CheckForNull public String relativePath(File dir, File file) { return relativePath(dir.toPath(), file.toPath()); |