diff options
author | Duarte Meneses <duarte.meneses@sonarsource.com> | 2017-01-27 18:17:20 +0100 |
---|---|---|
committer | Duarte Meneses <duarte.meneses@sonarsource.com> | 2017-01-30 09:13:30 +0100 |
commit | 96bfde91a0006ef4577acd0d35f83745ac7699e5 (patch) | |
tree | 7b632b3fba49bba129705ef0d04f3e48aed31e0e /sonar-plugin-api | |
parent | f78f06335e9c6def32e7a4e7bdba897d80eb839d (diff) | |
download | sonarqube-96bfde91a0006ef4577acd0d35f83745ac7699e5.tar.gz sonarqube-96bfde91a0006ef4577acd0d35f83745ac7699e5.zip |
Improve quality and javadoc
Diffstat (limited to 'sonar-plugin-api')
6 files changed, 37 insertions, 10 deletions
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/InputFile.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/InputFile.java index 299fc006406..c14b0467440 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/InputFile.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/InputFile.java @@ -26,22 +26,22 @@ import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import javax.annotation.CheckForNull; -import org.sonar.api.batch.fs.internal.DefaultInputFile; +import org.sonar.api.batch.fs.internal.TestInputFileBuilder; /** * This layer over {@link java.io.File} adds information for code analyzers. - * For unit testing purpose you can create some {@link DefaultInputFile} and initialize - * all fields using + * For unit testing purpose, use {@link TestInputFileBuilder} and initialize + * the needed fields: * * <pre> - * new DefaultInputFile("moduleKey", "relative/path/from/module/baseDir.java") + * new TestInputFileBuilder("moduleKey", "relative/path/from/module/baseDir.java") * .setModuleBaseDir(path) - * .initMetadata(new FileMetadata().readMetadata(someReader)); + * .build(); * </pre> * * @since 4.2 */ -public interface InputFile extends IndexedFile, InputPath { +public interface InputFile extends IndexedFile { enum Type { MAIN, TEST diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultFileSystem.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultFileSystem.java index bdac6453b75..cc1ac7b0591 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultFileSystem.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultFileSystem.java @@ -35,6 +35,7 @@ import java.util.Map; import java.util.SortedSet; import java.util.TreeSet; import java.util.function.Predicate; +import java.util.stream.Collectors; import java.util.stream.StreamSupport; import javax.annotation.Nullable; @@ -163,7 +164,7 @@ public class DefaultFileSystem implements FileSystem { Iterable<InputFile> iterable = OptimizedFilePredicateAdapter.create(predicate).get(cache); if (defaultPredicate != null) { return StreamSupport.stream(iterable.spliterator(), false) - .filter(defaultPredicate::test)::iterator; + .filter(defaultPredicate::test).collect(Collectors.toList()); } return iterable; } @@ -202,7 +203,7 @@ public class DefaultFileSystem implements FileSystem { cache.add(inputDir); return this; } - + /** * Adds a language to the list. To be used only for unit tests that need to use {@link #languages()} without * using {@link #add(InputFile)}. @@ -275,10 +276,12 @@ public class DefaultFileSystem implements FileSystem { return filesByNameCache.get(filename); } - @Override public Iterable<InputFile> getFilesByExtension(String extension) { + @Override + public Iterable<InputFile> getFilesByExtension(String extension) { return filesByExtensionCache.get(extension); } + @Override protected void doAdd(InputFile inputFile) { fileMap.put(inputFile.relativePath(), inputFile); filesByNameCache.put(FilenamePredicate.getFilename(inputFile), inputFile); diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultInputFile.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultInputFile.java index 192ac05be54..f0b65c19541 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultInputFile.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultInputFile.java @@ -33,6 +33,7 @@ import org.sonar.api.batch.fs.TextRange; /** * @since 4.2 + * To create {@link InputFile} in tests, use {@link TestInputFileBuilder}. */ public class DefaultInputFile extends DefaultInputComponent implements InputFile { private final DefaultIndexedFile indexedFile; diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/TestInputFileBuilder.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/TestInputFileBuilder.java index 95890adeab0..92556b024a4 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/TestInputFileBuilder.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/TestInputFileBuilder.java @@ -28,6 +28,11 @@ import javax.annotation.Nullable; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.utils.PathUtils; +/** + * Intended to be used in unit tests that need to create {@link InputFile}s. + * + * @since 6.3 + */ public class TestInputFileBuilder { private static int batchId = 1; diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/internal/SensorContextTester.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/internal/SensorContextTester.java index 67e1f4f5a04..f295b244933 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/internal/SensorContextTester.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/internal/SensorContextTester.java @@ -20,6 +20,7 @@ package org.sonar.api.batch.sensor.internal; import com.google.common.collect.ImmutableMap; + import java.io.File; import java.io.Serializable; import java.nio.file.Path; @@ -39,6 +40,7 @@ import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.InputModule; import org.sonar.api.batch.fs.TextRange; import org.sonar.api.batch.fs.internal.DefaultFileSystem; +import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.DefaultInputModule; import org.sonar.api.batch.fs.internal.DefaultTextPointer; import org.sonar.api.batch.rule.ActiveRules; @@ -340,6 +342,7 @@ public class SensorContextTester implements SensorContext { @Override public void markForPublishing(InputFile inputFile) { - + DefaultInputFile file = (DefaultInputFile) inputFile; + file.setPublish(true); } } diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/DefaultFileSystemTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/DefaultFileSystemTest.java index 5656d232821..b6dc2200a19 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/DefaultFileSystemTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/DefaultFileSystemTest.java @@ -27,6 +27,7 @@ import org.junit.rules.TemporaryFolder; import java.io.File; import java.nio.charset.Charset; +import java.util.Iterator; import static org.assertj.core.api.Assertions.assertThat; @@ -108,6 +109,20 @@ public class DefaultFileSystemTest { } @Test + public void filesWithDefaultPredicate() { + DefaultInputFile file1 = new TestInputFileBuilder("foo", "src/Foo.php").setLanguage("php").build(); + fs.add(file1); + fs.add(new TestInputFileBuilder("foo", "src/Bar.java").setLanguage("java").build()); + fs.add(new TestInputFileBuilder("foo", "src/Baz.java").setLanguage("java").build()); + + fs.setDefaultPredicate(f -> f.relativePath().endsWith("Foo.php")); + Iterator<File> iterator = fs.files(fs.predicates().all()).iterator(); + assertThat(iterator.hasNext()).isTrue(); + assertThat(iterator.next()).isEqualTo(file1.file()); + assertThat(iterator.hasNext()).isFalse(); + } + + @Test public void input_file_returns_null_if_file_not_found() { assertThat(fs.inputFile(fs.predicates().hasRelativePath("src/Bar.java"))).isNull(); assertThat(fs.inputFile(fs.predicates().hasLanguage("cobol"))).isNull(); |