public static List<DomElement> getDefinedChildren( @NotNull final DomElement parent, final boolean tags, final boolean attributes) { if (parent instanceof MergedObject) { final SmartList<DomElement> result = new SmartList<>(); parent.acceptChildren( new DomElementVisitor() { @Override public void visitDomElement(final DomElement element) { if (hasXml(element)) { result.add(element); } } }); return result; } ProgressManager.checkCanceled(); if (parent instanceof GenericAttributeValue) return Collections.emptyList(); if (parent instanceof DomFileElement) { final DomFileElement element = (DomFileElement) parent; return tags ? Arrays.asList(element.getRootElement()) : Collections.<DomElement>emptyList(); } final XmlElement xmlElement = parent.getXmlElement(); if (xmlElement instanceof XmlTag) { XmlTag tag = (XmlTag) xmlElement; final DomManager domManager = parent.getManager(); final SmartList<DomElement> result = new SmartList<>(); if (attributes) { for (final XmlAttribute attribute : tag.getAttributes()) { if (!attribute.isValid()) { LOG.error("Invalid attr: parent.valid=" + tag.isValid()); continue; } GenericAttributeValue element = domManager.getDomElement(attribute); if (checkHasXml(attribute, element)) { ContainerUtil.addIfNotNull(result, element); } } } if (tags) { for (final XmlTag subTag : tag.getSubTags()) { if (!subTag.isValid()) { LOG.error("Invalid subtag: parent.valid=" + tag.isValid()); continue; } DomElement element = domManager.getDomElement(subTag); if (checkHasXml(subTag, element)) { ContainerUtil.addIfNotNull(result, element); } } } return result; } return Collections.emptyList(); }
@Override public Module getModule() { final DomFileElement<DomElement> fileElement = DomUtil.getFileElement(getInvocationElement()); if (fileElement == null) { final XmlElement xmlElement = getInvocationElement().getXmlElement(); return xmlElement == null ? null : ModuleUtilCore.findModuleForPsiElement(xmlElement); } return fileElement.isValid() ? fileElement.getRootElement().getModule() : null; }
@NotNull @Override public Collection<PsiFile> getVariants(ConvertContext context) { List<PsiFile> result = new ArrayList<PsiFile>(); PsiFile currentFile = context.getFile().getOriginalFile(); for (DomFileElement<MavenDomProjectModel> each : MavenDomUtil.collectProjectModels(context.getFile().getProject())) { PsiFile file = each.getOriginalFile(); if (file == currentFile) continue; result.add(file); } return result; }
@Nullable public static <T extends MavenDomElement> T getMavenDomModel( @NotNull PsiFile file, @NotNull Class<T> clazz) { DomFileElement<T> fileElement = getMavenDomFile(file, clazz); return fileElement == null ? null : fileElement.getRootElement(); }