aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-plugin-api-impl/src
diff options
context:
space:
mode:
Diffstat (limited to 'sonar-plugin-api-impl/src')
-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/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
-rw-r--r--sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/DefaultIndexedFileTest.java10
-rw-r--r--sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/ChangedFilePredicateTest.java34
-rw-r--r--sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/FileExtensionPredicateTest.java14
-rw-r--r--sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/FilenamePredicateTest.java8
-rw-r--r--sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/NonHiddenFilesPredicateTest.java (renamed from sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/HiddenFilesPredicateTest.java)36
10 files changed, 53 insertions, 81 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/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();
}
}
diff --git a/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/DefaultIndexedFileTest.java b/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/DefaultIndexedFileTest.java
index 1c52a520e54..ecc98c43d9c 100644
--- a/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/DefaultIndexedFileTest.java
+++ b/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/DefaultIndexedFileTest.java
@@ -43,4 +43,14 @@ public class DefaultIndexedFileTest {
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining(invalidPath);
}
+
+ @Test
+ public void uri_should_be_cached() {
+ String projectKey = "12345";
+ Path baseDir = Paths.get("");
+ String path = "foo/bar";
+
+ DefaultIndexedFile file = new DefaultIndexedFile(projectKey, baseDir, path, null);
+ Assertions.assertThat(file.uri()).isSameAs(file.uri());
+ }
}
diff --git a/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/ChangedFilePredicateTest.java b/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/ChangedFilePredicateTest.java
index 50b9972848b..33f085344d2 100644
--- a/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/ChangedFilePredicateTest.java
+++ b/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/ChangedFilePredicateTest.java
@@ -21,62 +21,42 @@ package org.sonar.api.batch.fs.internal.predicates;
import org.assertj.core.api.Assertions;
import org.junit.Test;
-import org.sonar.api.batch.fs.FilePredicate;
import org.sonar.api.batch.fs.InputFile;
-import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class ChangedFilePredicateTest {
- private final FilePredicate predicate = mock(FilePredicate.class);
private final InputFile inputFile = mock(InputFile.class);
- private final ChangedFilePredicate underTest = new ChangedFilePredicate(predicate);
+ private final ChangedFilePredicate underTest = new ChangedFilePredicate();
@Test
- public void apply_when_file_is_changed_and_predicate_is_true() {
+ public void apply_when_file_is_changed() {
when(inputFile.status()).thenReturn(InputFile.Status.CHANGED);
- when(predicate.apply(inputFile)).thenReturn(true);
Assertions.assertThat(underTest.apply(inputFile)).isTrue();
- verify(predicate, times(1)).apply(any());
- verify(inputFile, times(1)).status();
+ verify(inputFile).status();
}
@Test
- public void apply_when_file_is_added_and_predicate_is_true() {
+ public void apply_when_file_is_added() {
when(inputFile.status()).thenReturn(InputFile.Status.ADDED);
- when(predicate.apply(inputFile)).thenReturn(true);
Assertions.assertThat(underTest.apply(inputFile)).isTrue();
- verify(predicate, times(1)).apply(any());
- verify(inputFile, times(1)).status();
+ verify(inputFile).status();
}
@Test
- public void do_not_apply_when_file_is_same_and_predicate_is_true() {
+ public void do_not_apply_when_file_is_same() {
when(inputFile.status()).thenReturn(InputFile.Status.SAME);
- when(predicate.apply(inputFile)).thenReturn(true);
Assertions.assertThat(underTest.apply(inputFile)).isFalse();
- verify(predicate, times(1)).apply(any());
- verify(inputFile, times(1)).status();
- }
-
- @Test
- public void predicate_is_evaluated_before_file_status() {
- when(predicate.apply(inputFile)).thenReturn(false);
-
- Assertions.assertThat(underTest.apply(inputFile)).isFalse();
-
- verify(inputFile, never()).status();
+ verify(inputFile).status();
}
}
diff --git a/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/FileExtensionPredicateTest.java b/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/FileExtensionPredicateTest.java
index 83ccb9da164..392d823e541 100644
--- a/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/FileExtensionPredicateTest.java
+++ b/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/FileExtensionPredicateTest.java
@@ -19,7 +19,6 @@
*/
package org.sonar.api.batch.fs.internal.predicates;
-import java.io.IOException;
import org.junit.Test;
import org.sonar.api.batch.fs.InputFile;
@@ -31,14 +30,14 @@ import static org.sonar.api.batch.fs.internal.predicates.FileExtensionPredicate.
public class FileExtensionPredicateTest {
@Test
- public void should_match_correct_extension() throws IOException {
+ public void should_match_correct_extension() {
FileExtensionPredicate predicate = new FileExtensionPredicate("bat");
assertThat(predicate.apply(mockWithName("prog.bat"))).isTrue();
assertThat(predicate.apply(mockWithName("prog.bat.bat"))).isTrue();
}
@Test
- public void should_not_match_incorrect_extension() throws IOException {
+ public void should_not_match_incorrect_extension() {
FileExtensionPredicate predicate = new FileExtensionPredicate("bat");
assertThat(predicate.apply(mockWithName("prog.batt"))).isFalse();
assertThat(predicate.apply(mockWithName("prog.abat"))).isFalse();
@@ -49,7 +48,7 @@ public class FileExtensionPredicateTest {
}
@Test
- public void should_match_correct_extension_case_insensitively() throws IOException {
+ public void should_match_correct_extension_case_insensitively() {
FileExtensionPredicate predicate = new FileExtensionPredicate("jAVa");
assertThat(predicate.apply(mockWithName("Program.java"))).isTrue();
assertThat(predicate.apply(mockWithName("Program.JAVA"))).isTrue();
@@ -64,7 +63,12 @@ public class FileExtensionPredicateTest {
assertThat(getExtension(".")).isEmpty();
}
- private InputFile mockWithName(String filename) throws IOException {
+ @Test
+ public void should_have_use_index_priority() {
+ assertThat(new FileExtensionPredicate("bat").priority()).isEqualTo(AbstractFilePredicate.USE_INDEX);
+ }
+
+ private InputFile mockWithName(String filename) {
InputFile inputFile = mock(InputFile.class);
when(inputFile.filename()).thenReturn(filename);
return inputFile;
diff --git a/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/FilenamePredicateTest.java b/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/FilenamePredicateTest.java
index 2393d9cfa9e..30bc1e5f61e 100644
--- a/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/FilenamePredicateTest.java
+++ b/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/FilenamePredicateTest.java
@@ -59,4 +59,12 @@ public class FilenamePredicateTest {
assertThat(new FilenamePredicate(filename).get(index)).containsOnly(inputFile);
}
+ @Test
+ public void should_have_use_index_priority() {
+ String filename = "some name";
+ InputFile inputFile = mock(InputFile.class);
+ when(inputFile.filename()).thenReturn(filename);
+
+ assertThat(new FilenamePredicate(filename).priority()).isEqualTo(AbstractFilePredicate.USE_INDEX);
+ }
}
diff --git a/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/HiddenFilesPredicateTest.java b/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/NonHiddenFilesPredicateTest.java
index b14a995515a..a5a09a97567 100644
--- a/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/HiddenFilesPredicateTest.java
+++ b/sonar-plugin-api-impl/src/test/java/org/sonar/api/batch/fs/internal/predicates/NonHiddenFilesPredicateTest.java
@@ -21,61 +21,33 @@ package org.sonar.api.batch.fs.internal.predicates;
import org.assertj.core.api.Assertions;
import org.junit.Test;
-import org.sonar.api.batch.fs.FilePredicate;
import org.sonar.api.batch.fs.InputFile;
-import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-public class HiddenFilesPredicateTest {
+public class NonHiddenFilesPredicateTest {
- private final FilePredicate predicate = mock(FilePredicate.class);
private final InputFile inputFile = mock(InputFile.class);
- private final HiddenFilesPredicate underTest = new HiddenFilesPredicate(predicate);
+ private final NonHiddenFilesPredicate underTest = new NonHiddenFilesPredicate();
@Test
- public void apply_when_file_is_not_hidden_and_predicate_is_true() {
+ public void apply_when_file_is_not_hidden() {
when(inputFile.isHidden()).thenReturn(false);
- when(predicate.apply(inputFile)).thenReturn(true);
Assertions.assertThat(underTest.apply(inputFile)).isTrue();
- verify(predicate).apply(any());
verify(inputFile).isHidden();
}
@Test
- public void do_not_apply_when_file_is_not_hidden_and_predicate_is_false() {
- when(inputFile.isHidden()).thenReturn(false);
- when(predicate.apply(inputFile)).thenReturn(false);
-
- Assertions.assertThat(underTest.apply(inputFile)).isFalse();
-
- verify(predicate).apply(any());
- verify(inputFile).isHidden();
- }
-
- @Test
- public void do_not_apply_when_file_is_hidden_and_predicate_is_true() {
+ public void do_not_apply_when_file_is_hidden() {
when(inputFile.isHidden()).thenReturn(true);
- when(predicate.apply(inputFile)).thenReturn(true);
Assertions.assertThat(underTest.apply(inputFile)).isFalse();
verify(inputFile).isHidden();
- verify(predicate, never()).apply(any());
- }
-
- @Test
- public void predicate_is_evaluated_after_file_visibility() {
- when(inputFile.isHidden()).thenReturn(true);
-
- Assertions.assertThat(underTest.apply(inputFile)).isFalse();
-
- verify(predicate, never()).apply(any());
}
}