aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-plugin-api-impl/src/main/java/org
diff options
context:
space:
mode:
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.java4
-rw-r--r--sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/AbsolutePathPredicate.java21
-rw-r--r--sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/ChangedFilePredicate.java8
-rw-r--r--sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/FileExtensionPredicate.java5
-rw-r--r--sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/fs/internal/predicates/FilenamePredicate.java4
-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();
}
}