From a44377e8f398c0d471c5d11210b6da208504143b Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Mon, 16 Jul 2012 13:11:13 +0400 Subject: [PATCH] IDEA-64075 Automatic XML Schema discovery: adding DTDs to index --- xml/impl/src/com/intellij/xml/index/XmlIndex.java | 2 +- .../src/com/intellij/xml/index/XmlNamespaceIndex.java | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/xml/impl/src/com/intellij/xml/index/XmlIndex.java b/xml/impl/src/com/intellij/xml/index/XmlIndex.java index 9c86b4179cf3..2c375b280775 100644 --- a/xml/impl/src/com/intellij/xml/index/XmlIndex.java +++ b/xml/impl/src/com/intellij/xml/index/XmlIndex.java @@ -42,7 +42,7 @@ public abstract class XmlIndex extends FileBasedIndexExtension { private static final FileBasedIndex.InputFilter INPUT_FILTER = new FileBasedIndex.InputFilter() { public boolean acceptInput(final VirtualFile file) { @NonNls final String extension = file.getExtension(); - return extension != null && extension.equals("xsd"); + return "xsd".equals(extension) || "dtd".equals(extension); } }; diff --git a/xml/impl/src/com/intellij/xml/index/XmlNamespaceIndex.java b/xml/impl/src/com/intellij/xml/index/XmlNamespaceIndex.java index 1127a1101883..196b1cf94059 100644 --- a/xml/impl/src/com/intellij/xml/index/XmlNamespaceIndex.java +++ b/xml/impl/src/com/intellij/xml/index/XmlNamespaceIndex.java @@ -75,13 +75,19 @@ public class XmlNamespaceIndex extends XmlIndex { @Override @NotNull public Map map(final FileContent inputData) { - final XsdNamespaceBuilder + final XsdNamespaceBuilder builder; + if ("dtd".equals(inputData.getFile().getExtension())) { + builder = new XsdNamespaceBuilder(inputData.getFileName(), "", Collections.emptyList()); + } + else { builder = XsdNamespaceBuilder.computeNamespace(CharArrayUtil.readerFromCharSequence(inputData.getContentAsText())); + } final HashMap map = new HashMap(2); String namespace = builder.getNamespace(); if (namespace != null) { map.put(namespace, builder); } + // so that we could get ns by file url (see getNamespace method above) map.put(inputData.getFile().getUrl(), builder); return map; }