diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java b/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java index 5d2b45d9ee4e..a63dedae1c7c 100644 --- a/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java +++ b/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java @@ -86,7 +86,7 @@ public class Mappings { } private void createImplementation(final File rootDir, final boolean isTransient) throws IOException { - if (! isTransient) { + if (!isTransient) { myContext = new DependencyContext(rootDir); } @@ -578,11 +578,13 @@ public class Mappings { void affectAll(final DependencyContext.S className, final Collection affectedFiles) { final Set dependants = (Set)myClassToClassDependency.get(className); + final DependencyContext.S sourceFile = myClassToSourceFile.get(className); if (dependants != null) { for (DependencyContext.S depClass : dependants) { final DependencyContext.S depFile = myClassToSourceFile.get(depClass); - if (depFile != null) { + + if (depFile != null && sourceFile != null && !depFile.equals(sourceFile)) { affectedFiles.add(new File(myContext.getValue(depFile))); } } @@ -1299,9 +1301,9 @@ public class Mappings { } //final Set cl = (Set) delta.mySourceFileToClasses.get(new DependencyContext.S(352)); - + //System.out.println("There: " + (cl == null ? "wow..." : cl.size())); - + myClassToSubclasses.putAll(delta.myClassToSubclasses); mySourceFileToClasses.putAll(delta.mySourceFileToClasses); mySourceFileToUsages.putAll(delta.mySourceFileToUsages); @@ -1374,18 +1376,30 @@ public class Mappings { if (repr != null) { final DependencyContext.S className = repr.name; - for (UsageRepr.Usage u : localUsages.getUsages()) { - myClassToClassDependency.put(u.getOwner(), className); - } - } - - if (repr != null) { myClassToSourceFile.put(repr.name, sourceFileNameS); mySourceFileToClasses.put(sourceFileNameS, repr); for (DependencyContext.S s : repr.getSupers()) { myClassToSubclasses.put(s, repr.name); } + + for (UsageRepr.Usage u : localUsages.getUsages()) { + final DependencyContext.S owner = u.getOwner(); + + if (!owner.equals(className)) { + final DependencyContext.S sourceFile = repr.getSourceFileName(); + final DependencyContext.S ownerSourceFile = myClassToSourceFile.get(owner); + + if (ownerSourceFile != null) { + if (!ownerSourceFile.equals(sourceFile)) { + myClassToClassDependency.put(owner, className); + } + } + else { + myClassToClassDependency.put(owner, className); + } + } + } } if (!localUsages.isEmpty()) { @@ -1416,7 +1430,7 @@ public class Mappings { // only close if you own the context //final Set classes = (Set)mySourceFileToClasses.get(new DependencyContext.S(352)); //System.out.println("Here: " + (classes == null ? "wow..." : classes.size())); - + myContext.close(); } else {