diff --git a/xml/dom-impl/src/com/intellij/util/xml/impl/DomServiceImpl.java b/xml/dom-impl/src/com/intellij/util/xml/impl/DomServiceImpl.java index 9039c97979e8..c066f0dca244 100644 --- a/xml/dom-impl/src/com/intellij/util/xml/impl/DomServiceImpl.java +++ b/xml/dom-impl/src/com/intellij/util/xml/impl/DomServiceImpl.java @@ -40,7 +40,6 @@ import com.intellij.util.indexing.FileBasedIndex; import com.intellij.util.xml.*; import com.intellij.util.xml.structure.DomStructureViewBuilder; import com.intellij.util.xml.stubs.FileStub; -import com.intellij.util.xml.stubs.builder.DomStubBuilder; import com.intellij.xml.util.XmlUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -67,7 +66,7 @@ public class DomServiceImpl extends DomService { @NotNull private static XmlFileHeader calcXmlFileHeader(final XmlFile file) { - if (!DomStubBuilder.isStubBuilding(file) && file.getFileType() == XmlFileType.INSTANCE) { + if (!XmlUtil.isStubBuilding(file) && file.getFileType() == XmlFileType.INSTANCE) { VirtualFile virtualFile = file.getVirtualFile(); if (virtualFile instanceof VirtualFileWithId) { ObjectStubTree tree = StubTreeLoader.getInstance().readFromVFile(file.getProject(), virtualFile); diff --git a/xml/dom-impl/src/com/intellij/util/xml/impl/FileDescriptionCachedValueProvider.java b/xml/dom-impl/src/com/intellij/util/xml/impl/FileDescriptionCachedValueProvider.java index 584ed44c3891..e3bccbd9886e 100644 --- a/xml/dom-impl/src/com/intellij/util/xml/impl/FileDescriptionCachedValueProvider.java +++ b/xml/dom-impl/src/com/intellij/util/xml/impl/FileDescriptionCachedValueProvider.java @@ -30,7 +30,7 @@ import com.intellij.util.containers.HashSet; import com.intellij.util.xml.*; import com.intellij.util.xml.events.DomEvent; import com.intellij.util.xml.stubs.FileStub; -import com.intellij.util.xml.stubs.builder.DomStubBuilder; +import com.intellij.xml.util.XmlUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -116,7 +116,7 @@ class FileDescriptionCachedValueProvider implements SemEle FileStub stub = null; if (description.hasStubs() && file instanceof VirtualFileWithId) { ApplicationManager.getApplication().assertReadAccessAllowed(); - if (!DomStubBuilder.isStubBuilding(myXmlFile)) { + if (!XmlUtil.isStubBuilding(myXmlFile)) { ObjectStubTree stubTree = StubTreeLoader.getInstance().readOrBuild(myXmlFile.getProject(), file, myXmlFile); if (stubTree != null) { stub = (FileStub)stubTree.getRoot(); diff --git a/xml/dom-impl/src/com/intellij/util/xml/stubs/builder/DomStubBuilder.java b/xml/dom-impl/src/com/intellij/util/xml/stubs/builder/DomStubBuilder.java index 48b8c2f9ade6..af0287372142 100644 --- a/xml/dom-impl/src/com/intellij/util/xml/stubs/builder/DomStubBuilder.java +++ b/xml/dom-impl/src/com/intellij/util/xml/stubs/builder/DomStubBuilder.java @@ -19,7 +19,6 @@ import com.intellij.ide.highlighter.XmlFileType; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Key; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; @@ -28,6 +27,7 @@ import com.intellij.psi.stubs.Stub; import com.intellij.psi.xml.XmlFile; import com.intellij.util.xml.*; import com.intellij.util.xml.stubs.FileStub; +import com.intellij.xml.util.XmlUtil; /** * @author Dmitry Avdeev @@ -35,11 +35,6 @@ import com.intellij.util.xml.stubs.FileStub; */ public class DomStubBuilder implements BinaryFileStubBuilder { - public static boolean isStubBuilding(PsiFile file) { - return Boolean.TRUE.equals(file.getUserData(BUILDING_DOM_STUBS)); - } - private final static Key BUILDING_DOM_STUBS = Key.create("building dom stubs..."); - private final static Logger LOG = Logger.getInstance(DomStubBuilder.class); @Override @@ -56,7 +51,7 @@ public class DomStubBuilder implements BinaryFileStubBuilder { XmlFile xmlFile = (XmlFile)psiFile; DomManager manager = DomManager.getDomManager(project); try { - xmlFile.putUserData(BUILDING_DOM_STUBS, Boolean.TRUE); + xmlFile.putUserData(XmlUtil.BUILDING_DOM_STUBS, Boolean.TRUE); DomFileElement fileElement = manager.getFileElement(xmlFile); if (fileElement == null || !fileElement.getFileDescription().hasStubs()) return null; @@ -70,7 +65,7 @@ public class DomStubBuilder implements BinaryFileStubBuilder { return fileStub; } finally { - xmlFile.putUserData(BUILDING_DOM_STUBS, null); + xmlFile.putUserData(XmlUtil.BUILDING_DOM_STUBS, null); } } diff --git a/xml/impl/src/com/intellij/xml/index/XmlNamespaceIndex.java b/xml/impl/src/com/intellij/xml/index/XmlNamespaceIndex.java index 1ae5f735da1e..f8a3fab3ecc1 100644 --- a/xml/impl/src/com/intellij/xml/index/XmlNamespaceIndex.java +++ b/xml/impl/src/com/intellij/xml/index/XmlNamespaceIndex.java @@ -29,10 +29,14 @@ import com.intellij.util.indexing.FileContent; import com.intellij.util.indexing.ID; import com.intellij.util.io.DataExternalizer; import com.intellij.util.text.CharArrayUtil; +import com.intellij.xml.util.XmlUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.io.*; +import java.io.DataInput; +import java.io.DataOutput; +import java.io.File; +import java.io.IOException; import java.util.*; /** @@ -164,7 +168,7 @@ public class XmlNamespaceIndex extends XmlIndex { @Nullable final String version, @NotNull PsiFile file) { - if (DumbService.isDumb(file.getProject())) return null; + if (DumbService.isDumb(file.getProject()) || XmlUtil.isStubBuilding(file)) return null; IndexedRelevantResource resource = guessSchema(namespace, tagName, version, ModuleUtilCore.findModuleForPsiElement(file)); @@ -176,7 +180,9 @@ public class XmlNamespaceIndex extends XmlIndex { @Nullable public static XmlFile guessDtd(String dtdUri, @NotNull PsiFile baseFile) { - if (!dtdUri.endsWith(".dtd") || DumbService.isDumb(baseFile.getProject())) return null; + if (!dtdUri.endsWith(".dtd") || + DumbService.isDumb(baseFile.getProject()) || + XmlUtil.isStubBuilding(baseFile)) return null; String dtdFileName = new File(dtdUri).getName(); List> diff --git a/xml/impl/src/com/intellij/xml/util/XmlUtil.java b/xml/impl/src/com/intellij/xml/util/XmlUtil.java index e683f22d7a38..fd5256a45aae 100644 --- a/xml/impl/src/com/intellij/xml/util/XmlUtil.java +++ b/xml/impl/src/com/intellij/xml/util/XmlUtil.java @@ -149,6 +149,7 @@ public class XmlUtil { public static final Key ORIGINAL_ELEMENT = Key.create("ORIGINAL_ELEMENT"); public static final String XHTML4_SCHEMA_LOCATION; + public final static Key BUILDING_DOM_STUBS = Key.create("building dom stubs..."); private XmlUtil() { } @@ -604,6 +605,10 @@ public class XmlUtil { return tagName.subSequence(pos + 1, tagName.length()); } + public static boolean isStubBuilding(PsiFile file) { + return Boolean.TRUE.equals(file.getUserData(BUILDING_DOM_STUBS)); + } + private static class XmlElementProcessor { private final PsiElementProcessor processor; private final PsiFile targetFile;