jps model: added methods to get lists of files and directories excluded from compilation

This is needed to generate build.gradle files from IDEA project for example.
This commit is contained in:
nik
2017-03-29 10:56:30 +03:00
parent f7e4fc808d
commit ec6efc8112
3 changed files with 44 additions and 8 deletions
@@ -16,6 +16,7 @@
package org.jetbrains.jps.model.java.compiler;
import java.io.File;
import java.util.Set;
/**
* @author nik
@@ -25,5 +26,17 @@ public interface JpsCompilerExcludes {
void addExcludedDirectory(String url, boolean recursively);
/**
* @return {@code true} if {@code file} is explicitly excluded or located under excluded directory
*/
boolean isExcluded(File file);
/**
* @return set of explicitly excluded files
*/
Set<File> getExcludedFiles();
Set<File> getExcludedDirectories();
Set<File> getRecursivelyExcludedDirectories();
}
@@ -16,20 +16,20 @@
package org.jetbrains.jps.model.java.impl.compiler;
import com.intellij.openapi.util.io.FileUtilRt;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.model.java.compiler.JpsCompilerExcludes;
import org.jetbrains.jps.util.JpsPathUtil;
import java.io.File;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
/**
* @author nik
*/
public class JpsCompilerExcludesImpl implements JpsCompilerExcludes {
private final Set<File> myFiles = new HashSet<>();
private final Set<File> myDirectories = new HashSet<>();
private final Set<File> myRecursivelyExcludedDirectories = new HashSet<>();
private final Set<File> myFiles = new LinkedHashSet<>();
private final Set<File> myDirectories = new LinkedHashSet<>();
private final Set<File> myRecursivelyExcludedDirectories = new LinkedHashSet<>();
@Override
public void addExcludedFile(String url) {
@@ -50,7 +50,7 @@ public class JpsCompilerExcludesImpl implements JpsCompilerExcludes {
}
@Override
public boolean isExcluded(File file) {
public boolean isExcluded(File file) {
if (myFiles.contains(file)) {
return true;
}
@@ -70,4 +70,19 @@ public class JpsCompilerExcludesImpl implements JpsCompilerExcludes {
}
return false;
}
@Override
public Set<File> getExcludedFiles() {
return myFiles;
}
@Override
public Set<File> getExcludedDirectories() {
return myDirectories;
}
@Override
public Set<File> getRecursivelyExcludedDirectories() {
return myRecursivelyExcludedDirectories;
}
}
@@ -23,6 +23,8 @@ import org.jetbrains.jps.model.java.compiler.JpsJavaCompilerOptions;
import org.jetbrains.jps.model.java.compiler.ProcessorConfigProfile;
import org.jetbrains.jps.util.JpsPathUtil;
import java.io.File;
public class JpsCompilerConfigurationTest extends JpsSerializationTestCase {
public void testLoadFromIpr() {
doTest("jps/model-serialization/testData/compilerConfiguration/compilerConfiguration.ipr");
@@ -41,18 +43,24 @@ public class JpsCompilerConfigurationTest extends JpsSerializationTestCase {
ProcessorConfigProfile defaultProfile = configuration.getDefaultAnnotationProcessingProfile();
assertTrue(defaultProfile.isEnabled());
assertFalse(defaultProfile.isObtainProcessorsFromClasspath());
assertEquals(FileUtil.toSystemDependentName(JpsPathUtil.urlToPath(getUrl("src"))), defaultProfile.getProcessorPath());
String srcDir = JpsPathUtil.urlToPath(getUrl("src"));
assertEquals(FileUtil.toSystemDependentName(srcDir), defaultProfile.getProcessorPath());
assertEquals("b", defaultProfile.getProcessorOptions().get("a"));
assertEquals("d", defaultProfile.getProcessorOptions().get("c"));
assertEquals("gen", defaultProfile.getGeneratedSourcesDirectoryName(false));
JpsCompilerExcludes excludes = configuration.getCompilerExcludes();
assertSameElements(excludes.getExcludedFiles(), new File(srcDir, "A.java"));
assertSameElements(excludes.getExcludedDirectories(), new File(srcDir, "nonrec"));
assertSameElements(excludes.getRecursivelyExcludedDirectories(), new File(srcDir, "rec"));
assertFalse(isExcluded(excludes, "src/nonrec/x/Y.java"));
assertTrue(isExcluded(excludes, "src/nonrec/Y.java"));
assertTrue(isExcluded(excludes, "src/rec/x/Y.java"));
assertTrue(isExcluded(excludes, "src/rec/Y.java"));
assertTrue(isExcluded(excludes, "src/A.java"));
assertFalse(isExcluded(excludes, "src/B.java"));
JpsJavaCompilerOptions options = configuration.getCurrentCompilerOptions();
assertNotNull(options);
assertEquals(512, options.MAXIMUM_HEAP_SIZE);