示例#1
0
  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();
 }