diff options
Diffstat (limited to 'sonar-plugin-api-impl/src/main/java/org')
-rw-r--r-- | sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/DefaultIndexedFile.java | 4 | ||||
-rw-r--r-- | sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/AbsolutePathPredicate.java | 21 | ||||
-rw-r--r-- | sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/ChangedFilePredicate.java | 8 | ||||
-rw-r--r-- | sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/FileExtensionPredicate.java | 5 | ||||
-rw-r--r-- | sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/FilenamePredicate.java | 4 | ||||
-rw-r--r-- | sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/NonHiddenFilesPredicate.java (renamed from sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/HiddenFilesPredicate.java) | 11 |
6 files changed, 31 insertions, 22 deletions
diff --git a/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/DefaultIndexedFile.java b/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/DefaultIndexedFile.java index 040ea6dac68..686d37d8b5d 100644 --- a/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/DefaultIndexedFile.java +++ b/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/DefaultIndexedFile.java @@ -51,6 +51,7 @@ public class DefaultIndexedFile extends DefaultInputComponent implements Indexed private final SensorStrategy sensorStrategy; private final String oldRelativeFilePath; private final boolean hidden; + private final URI uri; /** * Testing purposes only! @@ -75,6 +76,7 @@ public class DefaultIndexedFile extends DefaultInputComponent implements Indexed this.language = language; this.sensorStrategy = sensorStrategy; this.absolutePath = absolutePath; + this.uri = absolutePath.toUri(); this.oldRelativeFilePath = oldRelativeFilePath; this.hidden = hidden; validateKeyLength(); @@ -193,6 +195,6 @@ public class DefaultIndexedFile extends DefaultInputComponent implements Indexed @Override public URI uri() { - return path().toUri(); + return uri; } } diff --git a/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/AbsolutePathPredicate.java b/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/AbsolutePathPredicate.java index ffa4aa448a7..a0cdddf697a 100644 --- a/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/AbsolutePathPredicate.java +++ b/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/AbsolutePathPredicate.java @@ -21,8 +21,10 @@ package org.sonar.api.batch.fs.internal.predicates; import java.io.File; import java.nio.file.Path; -import java.util.Arrays; import java.util.Collections; +import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.fs.FileSystem.Index; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.scan.filesystem.PathResolver; @@ -33,27 +35,36 @@ import org.sonar.api.utils.PathUtils; */ class AbsolutePathPredicate extends AbstractFilePredicate { + private static final Logger LOG = LoggerFactory.getLogger(AbsolutePathPredicate.class); + private final String path; private final Path baseDir; + private final String sanitizedPath; AbsolutePathPredicate(String path, Path baseDir) { this.baseDir = baseDir; - this.path = PathUtils.sanitize(path); + this.path = path; + this.sanitizedPath = PathUtils.sanitize(path); } @Override public boolean apply(InputFile f) { - return path.equals(f.absolutePath()); + return sanitizedPath.equals(f.absolutePath()); } @Override public Iterable<InputFile> get(Index index) { - String relative = PathUtils.sanitize(new PathResolver().relativePath(baseDir.toFile(), new File(path))); + if (sanitizedPath == null) { + LOG.debug("Cannot resolve absolute path '{}' as it is not a valid path", path); + return Collections.emptyList(); + } + + String relative = PathUtils.sanitize(new PathResolver().relativePath(baseDir.toFile(), new File(sanitizedPath))); if (relative == null) { return Collections.emptyList(); } InputFile f = index.inputFile(relative); - return f != null ? Arrays.asList(f) : Collections.emptyList(); + return f != null ? List.of(f) : Collections.emptyList(); } @Override diff --git a/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/ChangedFilePredicate.java b/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/ChangedFilePredicate.java index 7e981e82f77..c3c38969ce4 100644 --- a/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/ChangedFilePredicate.java +++ b/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/ChangedFilePredicate.java @@ -24,15 +24,9 @@ import org.sonar.api.batch.fs.InputFile; public class ChangedFilePredicate implements FilePredicate { - private final FilePredicate originalPredicate; - - public ChangedFilePredicate(FilePredicate originalPredicate) { - this.originalPredicate = originalPredicate; - } - @Override public boolean apply(InputFile inputFile) { - return originalPredicate.apply(inputFile) && InputFile.Status.SAME != inputFile.status(); + return InputFile.Status.SAME != inputFile.status(); } } diff --git a/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/FileExtensionPredicate.java b/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/FileExtensionPredicate.java index 29e387b97b2..91ca9258621 100644 --- a/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/FileExtensionPredicate.java +++ b/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/FileExtensionPredicate.java @@ -59,4 +59,9 @@ public class FileExtensionPredicate extends AbstractFilePredicate { private static String lowercase(String extension) { return extension.toLowerCase(Locale.ENGLISH); } + + @Override + public int priority() { + return USE_INDEX; + } } diff --git a/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/FilenamePredicate.java b/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/FilenamePredicate.java index 39856a3583e..a32f3c88cb9 100644 --- a/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/FilenamePredicate.java +++ b/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/FilenamePredicate.java @@ -42,4 +42,8 @@ public class FilenamePredicate extends AbstractFilePredicate { return index.getFilesByName(filename); } + @Override + public int priority() { + return USE_INDEX; + } } diff --git a/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/HiddenFilesPredicate.java b/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/NonHiddenFilesPredicate.java index ab166cd0bbd..4b467e6dba5 100644 --- a/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/HiddenFilesPredicate.java +++ b/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/NonHiddenFilesPredicate.java @@ -22,18 +22,11 @@ package org.sonar.api.batch.fs.internal.predicates; import org.sonar.api.batch.fs.FilePredicate; import org.sonar.api.batch.fs.InputFile; -public class HiddenFilesPredicate implements FilePredicate { - - private final FilePredicate originalPredicate; - - public HiddenFilesPredicate(FilePredicate originalPredicate) { - this.originalPredicate = originalPredicate; - } +public class NonHiddenFilesPredicate implements FilePredicate { @Override public boolean apply(InputFile inputFile) { - // isHidden() will be known during scanning, evaluation should be done before other predicates - return !inputFile.isHidden() && originalPredicate.apply(inputFile); + return !inputFile.isHidden(); } } |