Skip to content

Commit

Permalink
Move away from deprecated API and use api.batch.fs.
Browse files Browse the repository at this point in the history
  • Loading branch information
arthepsy committed Oct 20, 2014
1 parent 4240ef7 commit 507b5f0
Show file tree
Hide file tree
Showing 7 changed files with 105 additions and 93 deletions.
14 changes: 7 additions & 7 deletions src/main/java/org/sonar/plugins/scala/language/ScalaFile.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.sonar.api.resources.InputFile;
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.resources.Language;
import org.sonar.api.resources.Qualifiers;
import org.sonar.api.resources.Resource;
Expand Down Expand Up @@ -121,11 +121,11 @@ public static ScalaFile fromInputFile(InputFile inputFile) {
* @return the {@link ScalaFile} created if exists, null otherwise
*/
public static ScalaFile fromInputFile(InputFile inputFile, boolean isUnitTest) {
if (inputFile == null || inputFile.getFile() == null || inputFile.getRelativePath() == null) {
if (inputFile == null || inputFile.file() == null || inputFile.relativePath() == null) {
return null;
}

String packageName = PackageResolver.resolvePackageNameOfFile(inputFile.getFile().getAbsolutePath());
String packageName = PackageResolver.resolvePackageNameOfFile(inputFile.file().getAbsolutePath());
String className = resolveClassName(inputFile);

if (isPackageObjectInFirstLevelPackage(packageName, className)) {
Expand All @@ -141,15 +141,15 @@ private static boolean isPackageObjectInFirstLevelPackage(String packageName, St
}

private static String extractLastFolderName(InputFile inputFile) {
String absolutePath = inputFile.getFile().getAbsolutePath();
String absolutePath = inputFile.file().getAbsolutePath();
int lastPathSeparator = absolutePath.lastIndexOf("/");
return absolutePath.substring(absolutePath.lastIndexOf("/", lastPathSeparator - 1) + 1, lastPathSeparator);
}

private static String resolveClassName(InputFile inputFile) {
String classname = inputFile.getRelativePath();
if (inputFile.getRelativePath().indexOf('/') >= 0) {
classname = StringUtils.substringAfterLast(inputFile.getRelativePath(), "/");
String classname = inputFile.relativePath();
if (inputFile.relativePath().indexOf('/') >= 0) {
classname = StringUtils.substringAfterLast(inputFile.relativePath(), "/");
}
return StringUtils.substringBeforeLast(classname, ".");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.api.batch.SensorContext;
import org.sonar.api.batch.fs.FilePredicates;
import org.sonar.api.batch.fs.FileSystem;
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.measures.CoreMetrics;
import org.sonar.api.resources.InputFile;
import org.sonar.api.resources.Project;
import org.sonar.api.resources.ProjectFileSystem;
import org.sonar.plugins.scala.compiler.Lexer;
import org.sonar.plugins.scala.language.Comment;
import org.sonar.plugins.scala.language.Scala;
Expand Down Expand Up @@ -64,20 +64,20 @@ public BaseMetricsSensor(FileSystem fileSystem, Scala scala) {
}

public void analyse(Project project, SensorContext sensorContext) {
final ProjectFileSystem fileSystem = project.getFileSystem();
final String charset = fileSystem.getSourceCharset().toString();
final String charset = fileSystem.encoding().toString();
final Set<ScalaPackage> packages = new HashSet<ScalaPackage>();

MetricDistribution complexityOfClasses = null;
MetricDistribution complexityOfFunctions = null;

for (InputFile inputFile : fileSystem.mainFiles(getScala().getKey())) {
FilePredicates p = fileSystem.predicates();
for (InputFile inputFile : fileSystem.inputFiles(p.and(p.hasLanguage(Scala.INSTANCE.getKey())))) {
final ScalaFile scalaFile = ScalaFile.fromInputFile(inputFile);
packages.add(scalaFile.getParent());
sensorContext.saveMeasure(scalaFile, CoreMetrics.FILES, 1.0);

try {
final String source = FileUtils.readFileToString(inputFile.getFile(), charset);
final String source = FileUtils.readFileToString(inputFile.file(), charset);
final List<String> lines = StringUtils.convertStringToListOfLines(source);
final List<Comment> comments = new Lexer().getComments(source);

Expand All @@ -96,7 +96,7 @@ public void analyse(Project project, SensorContext sensorContext) {
ComplexityCalculator.measureComplexityOfFunctions(source));

} catch (IOException ioe) {
LOGGER.error("Could not read the file: " + inputFile.getFile().getAbsolutePath(), ioe);
LOGGER.error("Could not read the file: " + inputFile.file().getAbsolutePath(), ioe);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@
import org.sonar.api.batch.Phase;
import org.sonar.api.batch.Phase.Name;
import org.sonar.api.batch.SensorContext;
import org.sonar.api.batch.fs.FilePredicates;
import org.sonar.api.batch.fs.FileSystem;
import org.sonar.api.resources.InputFile;
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.resources.Project;
import org.sonar.api.resources.ProjectFileSystem;
import org.sonar.plugins.scala.language.Scala;
import org.sonar.plugins.scala.language.ScalaFile;

Expand All @@ -50,21 +50,20 @@ public ScalaSourceImporterSensor(FileSystem fileSystem, Scala scala) {
}

public void analyse(Project project, SensorContext sensorContext) {
ProjectFileSystem fileSystem = project.getFileSystem();
String charset = fileSystem.getSourceCharset().toString();

for (InputFile sourceFile : fileSystem.mainFiles(getScala().getKey())) {
String charset = fileSystem.encoding().toString();
FilePredicates p = fileSystem.predicates();
for (InputFile sourceFile : fileSystem.inputFiles(p.and(p.hasLanguage(Scala.INSTANCE.getKey()), p.hasType(InputFile.Type.MAIN)))) {
addFileToSonar(sensorContext, sourceFile, false, charset);
}

for (InputFile testFile : fileSystem.testFiles(getScala().getKey())) {
for (InputFile testFile : fileSystem.inputFiles(p.and(p.hasLanguage(Scala.INSTANCE.getKey()), p.hasType(InputFile.Type.TEST)))) {
addFileToSonar(sensorContext, testFile, true, charset);
}
}

private void addFileToSonar(SensorContext sensorContext, InputFile inputFile, boolean isUnitTest, String charset) {
try {
String source = FileUtils.readFileToString(inputFile.getFile(), charset);
String source = FileUtils.readFileToString(inputFile.file(), charset);
ScalaFile file = ScalaFile.fromInputFile(inputFile, isUnitTest);

sensorContext.index(file);
Expand All @@ -78,7 +77,7 @@ private void addFileToSonar(SensorContext sensorContext, InputFile inputFile, bo
}
}
} catch (IOException ioe) {
LOGGER.error("Could not read the file: " + inputFile.getFile().getAbsolutePath(), ioe);
LOGGER.error("Could not read the file: " + inputFile.file().getAbsolutePath(), ioe);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,10 @@
*/
package org.sonar.plugins.scala.language;

import com.google.common.collect.Iterables;

import org.junit.Test;
import org.sonar.api.resources.InputFile;
import org.sonar.api.resources.InputFileUtils;
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.resources.Qualifiers;
import org.sonar.plugins.scala.util.FileTestUtils;

Expand Down Expand Up @@ -50,7 +51,7 @@ public void shouldHaveTestFileQualifierForTestFile() {

@Test
public void shouldCreateScalaFileWithCorrectAttributes() {
InputFile inputFile = FileTestUtils.getInputFiles("/scalaFile/", "ScalaFile", 1).get(0);
InputFile inputFile = Iterables.get(FileTestUtils.getInputFiles("/scalaFile/", "ScalaFile", 1), 0);
ScalaFile scalaFile = ScalaFile.fromInputFile(inputFile);

assertThat(scalaFile.getLanguage().getKey(), is(Scala.INSTANCE.getKey()));
Expand All @@ -62,7 +63,7 @@ public void shouldCreateScalaFileWithCorrectAttributes() {

@Test
public void shouldCreateScalaTestFileWithCorrectAttributes() {
InputFile inputFile = FileTestUtils.getInputFiles("/scalaFile/", "ScalaTestFile", 1).get(0);
InputFile inputFile = Iterables.get(FileTestUtils.getInputFiles("/scalaFile/", "ScalaTestFile", 1), 0);
ScalaFile scalaFile = ScalaFile.fromInputFile(inputFile, true);

assertThat(scalaFile.getLanguage().getKey(), is(Scala.INSTANCE.getKey()));
Expand All @@ -74,7 +75,7 @@ public void shouldCreateScalaTestFileWithCorrectAttributes() {

@Test
public void shouldHandlePackeObjectsInFirstLevelProperly() {
InputFile inputFile = InputFileUtils.create(new File("src/test/resources/"), "scalaSourceImporter/package.scala");
InputFile inputFile = FileTestUtils.getInputFile(new File("src/test/resources/"), "scalaSourceImporter/package.scala", false);
ScalaFile scalaFile = ScalaFile.fromInputFile(inputFile, false);

assertThat(scalaFile.getName(), is("scalaSourceImporter.package"));
Expand All @@ -90,15 +91,15 @@ public void shouldNotCreateScalaFileIfInputFileIsNull() {
@Test
public void shouldNotCreateScalaFileIfFileIsNull() {
InputFile inputFile = mock(InputFile.class);
when(inputFile.getFile()).thenReturn(null);
when(inputFile.file()).thenReturn(null);
assertNull(ScalaFile.fromInputFile(inputFile));
}

@Test
public void shouldNotCreateScalaFileIfRelativePathIsNull() {
InputFile inputFile = mock(InputFile.class);
when(inputFile.getFile()).thenReturn(new File(""));
when(inputFile.getRelativePath()).thenReturn(null);
when(inputFile.file()).thenReturn(new File(""));
when(inputFile.relativePath()).thenReturn(null);
assertNull(ScalaFile.fromInputFile(inputFile));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,16 @@
import static org.mockito.Mockito.when;

import java.io.IOException;
import java.nio.charset.Charset;

import org.junit.Before;
import org.junit.Test;
import org.sonar.api.batch.SensorContext;
import org.sonar.api.batch.fs.FileSystem;
import org.sonar.api.batch.fs.internal.DefaultFileSystem;
import org.sonar.api.measures.CoreMetrics;
import org.sonar.api.measures.Measure;
import org.sonar.api.measures.Metric;
import org.sonar.api.resources.Project;
import org.sonar.api.resources.ProjectFileSystem;
import org.sonar.plugins.scala.language.Scala;
import org.sonar.plugins.scala.language.ScalaPackage;
import org.sonar.plugins.scala.util.FileTestUtils;
Expand All @@ -49,20 +48,15 @@ public class BaseMetricsSensorTest {

private BaseMetricsSensor baseMetricsSensor;

private ProjectFileSystem fileSystem;
private FileSystem fileSystem;
private Project project;
private SensorContext sensorContext;

@Before
public void setUp() {
baseMetricsSensor = new BaseMetricsSensor(mock(FileSystem.class), Scala.INSTANCE);

fileSystem = mock(ProjectFileSystem.class);
when(fileSystem.getSourceCharset()).thenReturn(Charset.defaultCharset());

fileSystem = new DefaultFileSystem();
baseMetricsSensor = new BaseMetricsSensor(fileSystem, Scala.INSTANCE);
project = mock(Project.class);
when(project.getFileSystem()).thenReturn(fileSystem);

sensorContext = mock(SensorContext.class);
}

Expand Down Expand Up @@ -207,8 +201,7 @@ private void analyseAllScalaFiles() {
}

private void analyseScalaFiles(int numberOfFiles) {
when(fileSystem.mainFiles(baseMetricsSensor.getScala().getKey()))
.thenReturn(FileTestUtils.getInputFiles("/baseMetricsSensor/", "ScalaFile", numberOfFiles));
FileTestUtils.addMainFiles(fileSystem, FileTestUtils.getInputFiles("/baseMetricsSensor/", "ScalaFile", numberOfFiles));
baseMetricsSensor.analyse(project, sensorContext);
}
}
Loading

0 comments on commit 507b5f0

Please sign in to comment.