blob: 9c9bf1f760a3d29b8bd846c43b3d7983f1419ba8 [file] [log] [blame]
package com.intellij.codeInspection.unnecessaryModuleDependency;
import com.intellij.codeInspection.reference.RefElement;
import com.intellij.codeInspection.reference.RefGraphAnnotator;
import com.intellij.codeInspection.reference.RefManager;
import com.intellij.codeInspection.reference.RefModule;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.openapi.util.Key;
import com.intellij.psi.PsiElement;
import java.util.HashSet;
import java.util.Set;
/**
* User: anna
* Date: 09-Jan-2006
*/
public class UnnecessaryModuleDependencyAnnotator extends RefGraphAnnotator {
public static final Key<Set<Module>> DEPENDENCIES = Key.create("inspection.dependencies");
private final RefManager myManager;
public UnnecessaryModuleDependencyAnnotator(final RefManager manager) {
myManager = manager;
}
@Override
public void onMarkReferenced(RefElement refWhat, RefElement refFrom, boolean referencedFromClassInitializer) {
final PsiElement onElement = refWhat.getElement();
final PsiElement fromElement = refFrom.getElement();
if (onElement != null && fromElement!= null){
final Module onModule = ModuleUtilCore.findModuleForPsiElement(onElement);
final Module fromModule = ModuleUtilCore.findModuleForPsiElement(fromElement);
if (onModule != null && fromModule != null && onModule != fromModule){
final RefModule refModule = myManager.getRefModule(fromModule);
if (refModule != null) {
Set<Module> modules = refModule.getUserData(DEPENDENCIES);
if (modules == null){
modules = new HashSet<Module>();
refModule.putUserData(DEPENDENCIES, modules);
}
modules.add(onModule);
}
}
}
}
}