@NotNull
 private static Map<PsiElement, FoldingDescriptor> buildRanges(
     @NotNull Editor editor, @NotNull PsiFile psiFile) {
   final FoldingBuilder foldingBuilder =
       LanguageFolding.INSTANCE.forLanguage(psiFile.getLanguage());
   final ASTNode node = psiFile.getNode();
   if (node == null) return Collections.emptyMap();
   final FoldingDescriptor[] descriptors =
       LanguageFolding.buildFoldingDescriptors(
           foldingBuilder, psiFile, editor.getDocument(), true);
   Map<PsiElement, FoldingDescriptor> ranges = new HashMap<PsiElement, FoldingDescriptor>();
   for (FoldingDescriptor descriptor : descriptors) {
     final ASTNode ast = descriptor.getElement();
     final PsiElement psi = ast.getPsi();
     if (psi != null) {
       ranges.put(psi, descriptor);
     }
   }
   return ranges;
 }
Exemplo n.º 2
0
  @NotNull
  private Map<String, CachedValue<XmlNSDescriptor>> computeNsDescriptorMap() {
    Map<String, CachedValue<XmlNSDescriptor>> map = null;
    // XSD aware attributes processing

    final String noNamespaceDeclaration =
        getAttributeValue("noNamespaceSchemaLocation", XmlUtil.XML_SCHEMA_INSTANCE_URI);
    final String schemaLocationDeclaration =
        getAttributeValue("schemaLocation", XmlUtil.XML_SCHEMA_INSTANCE_URI);

    if (noNamespaceDeclaration != null) {
      map = initializeSchema(XmlUtil.EMPTY_URI, null, noNamespaceDeclaration, map);
    }
    if (schemaLocationDeclaration != null) {
      final StringTokenizer tokenizer = new StringTokenizer(schemaLocationDeclaration);
      while (tokenizer.hasMoreTokens()) {
        final String uri = tokenizer.nextToken();
        if (tokenizer.hasMoreTokens()) {
          map = initializeSchema(uri, null, tokenizer.nextToken(), map);
        }
      }
    }
    // namespace attributes processing (XSD declaration via ExternalResourceManager)

    if (hasNamespaceDeclarations()) {
      for (final XmlAttribute attribute : getAttributes()) {
        if (attribute.isNamespaceDeclaration()) {
          String ns = attribute.getValue();
          if (ns == null) ns = XmlUtil.EMPTY_URI;
          ns = getRealNs(ns);

          if (map == null || !map.containsKey(ns)) {
            map = initializeSchema(ns, getNSVersion(ns, this), getNsLocation(ns), map);
          }
        }
      }
    }
    return map == null ? Collections.<String, CachedValue<XmlNSDescriptor>>emptyMap() : map;
  }