fix dependencies direction in the assertion

This commit is contained in:
Eugene Zhuravlev
2012-03-18 22:54:26 +01:00
parent 6c904ae63c
commit 2ca3b519d5
2 changed files with 24 additions and 5 deletions
@@ -151,21 +151,40 @@ public abstract class ModuleLevelBuilder extends Builder {
if (affected.isEmpty()) {
return Collections.emptyList();
}
final Set<Module> allowedModules = ProjectPaths.getModulesWithDependentsRecursively(currentChunk, true);
final Set<Module> chunkModules = currentChunk.getModules();
final Map<Module, Set<Module>> cache = new HashMap<Module, Set<Module>>();
final List<Pair<File, Module>> result = new ArrayList<Pair<File, Module>>();
for (File file : affected) {
final RootDescriptor moduleAndRoot = context.getModuleAndRoot(file);
if (moduleAndRoot == null) {
continue;
}
final Module moduleOfFile = moduleAndRoot.module;
if (!allowedModules.contains(moduleOfFile)) {
result.add(Pair.create(file, moduleOfFile));
if (chunkModules.contains(moduleOfFile)) {
continue;
}
Set<Module> moduleOfFileWithDependencies = cache.get(moduleOfFile);
if (moduleOfFileWithDependencies == null) {
moduleOfFileWithDependencies = ProjectPaths.getModulesWithDependentsRecursively(moduleOfFile, true);
cache.put(moduleOfFile, moduleOfFileWithDependencies);
}
if (intersects(moduleOfFileWithDependencies, chunkModules)) {
continue;
}
result.add(Pair.create(file, moduleOfFile));
}
return result;
}
private static boolean intersects(Set<Module> set1, Set<Module> set2) {
if (set1.size() < set2.size()) {
return new HashSet<Module>(set1).removeAll(set2);
}
return new HashSet<Module>(set2).removeAll(set1);
}
private static boolean chunkContainsAffectedFiles(CompileContext context, ModuleChunk chunk, final Set<File> affected) throws IOException {
final Set<Module> chunkModules = new HashSet<Module>(chunk.getModules());
if (!chunkModules.isEmpty()) {
@@ -181,9 +181,9 @@ public class ProjectPaths {
return sourcePaths;
}
public static Set<Module> getModulesWithDependentsRecursively(final ModuleChunk chunk, final boolean includeTests) {
public static Set<Module> getModulesWithDependentsRecursively(final Module module, final boolean includeTests) {
final Set<Module> result = new HashSet<Module>();
collectPathsRecursively(chunk, ClasspathKind.compile(includeTests), new PathsGetter() {
collectPathsRecursively(module, ClasspathKind.compile(includeTests), new HashSet<Module>(), new PathsGetter() {
public void apply(Module module, ClasspathKind kind) {
result.add(module);
}