in seam/src/main/java/com/intellij/seam/highlighting/jam/SeamDuplicateComponentsInspection.java [51:93]
private static void checkDuplicateNames(final ProblemsHolder holder,
final SeamJamComponent seamComponent,
final String componentName,
final PsiType type,
final PsiElement identifyingPsiElement,
final Set<SeamJamComponent> seamComponents,
final List<SeamComponents> models) {
if (StringUtil.isEmptyOrSpaces(componentName) || identifyingPsiElement == null || type == null) return;
Set<String> duplicatedInFiles = new HashSet<>();
for (SeamJamComponent checkedComponent : seamComponents) {
if (seamComponent.equals(checkedComponent) || isNotInstall(checkedComponent)) continue;
if (isNameDuplicated(componentName, checkedComponent) && SeamCommonUtils.comparelInstalls(seamComponent, checkedComponent)) {
final PsiFile containingFile = checkedComponent.getContainingFile();
if (containingFile != null) {
duplicatedInFiles.add(containingFile.getName());
}
}
}
for (SeamComponents model : models) {
for (SeamDomComponent seamDomComponent : DomUtil.getDefinedChildrenOfType(model, SeamDomComponent.class)) {
final PsiType psiType = seamDomComponent.getComponentType();
if (componentName.equals(seamDomComponent.getComponentName()) && psiType != null && !type.isAssignableFrom(psiType) && SeamCommonUtils.comparelInstalls(seamComponent, seamDomComponent)) {
final XmlElement xmlElement = seamDomComponent.getXmlElement();
final PsiFile containingFile;
if (xmlElement != null) {
containingFile = xmlElement.getContainingFile();
if (containingFile != null) {
duplicatedInFiles.add(containingFile.getName());
break;
}
}
}
}
}
if (duplicatedInFiles.size() > 0) {
holder.registerProblem(identifyingPsiElement, SeamInspectionBundle.message("jam.duplicated.component.annotation", duplicatedInFiles,
duplicatedInFiles.size() > 1 ? "s:" : ""));
}
}