aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-plugin-api
diff options
context:
space:
mode:
authorDuarte Meneses <duarte.meneses@sonarsource.com>2017-01-27 18:17:20 +0100
committerDuarte Meneses <duarte.meneses@sonarsource.com>2017-01-30 09:13:30 +0100
commit96bfde91a0006ef4577acd0d35f83745ac7699e5 (patch)
tree7b632b3fba49bba129705ef0d04f3e48aed31e0e /sonar-plugin-api
parentf78f06335e9c6def32e7a4e7bdba897d80eb839d (diff)
downloadsonarqube-96bfde91a0006ef4577acd0d35f83745ac7699e5.tar.gz
sonarqube-96bfde91a0006ef4577acd0d35f83745ac7699e5.zip
Improve quality and javadoc
Diffstat (limited to 'sonar-plugin-api')
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/InputFile.java12
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultFileSystem.java9
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultInputFile.java1
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/TestInputFileBuilder.java5
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/internal/SensorContextTester.java5
-rw-r--r--sonar-plugin-api/src/test/java/org/sonar/api/batch/fs/internal/DefaultFileSystemTest.java15
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();