From d563f2255d58b6df66ee84d000c9fceb2133f5dc Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Tue, 19 Sep 2017 14:58:40 +0300 Subject: [PATCH] EA-103170 - NPE: XmlResourceResolver.getBaseFile --- .../actions/validate/ValidateXmlAction.java | 19 ++++++++++--------- .../xml/impl/ExternalDocumentValidator.java | 4 ++-- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/xml/impl/src/com/intellij/xml/actions/validate/ValidateXmlAction.java b/xml/impl/src/com/intellij/xml/actions/validate/ValidateXmlAction.java index fc87b1679532..161de41413d7 100644 --- a/xml/impl/src/com/intellij/xml/actions/validate/ValidateXmlAction.java +++ b/xml/impl/src/com/intellij/xml/actions/validate/ValidateXmlAction.java @@ -48,7 +48,7 @@ public class ValidateXmlAction extends AnAction { @Override public void actionPerformed(AnActionEvent e) { final PsiFile psiFile = CommonDataKeys.PSI_FILE.getData(e.getDataContext()); - if (psiFile != null) { + if (psiFile != null && psiFile.getVirtualFile() != null) { doRunAction(psiFile); } } @@ -86,26 +86,27 @@ public class ValidateXmlAction extends AnAction { Presentation presentation = event.getPresentation(); PsiElement psiElement = CommonDataKeys.PSI_FILE.getData(event.getDataContext()); - boolean flag = psiElement instanceof XmlFile; - presentation.setVisible(flag); - boolean value = psiElement instanceof XmlFile; + boolean visible = psiElement instanceof XmlFile; + presentation.setVisible(visible); + boolean enabled = psiElement instanceof XmlFile; - if (value) { + if (enabled) { final PsiFile containingFile = psiElement.getContainingFile(); if (containingFile!=null && + containingFile.getVirtualFile() != null && (containingFile.getFileType() == StdFileTypes.XML || containingFile.getFileType() == StdFileTypes.XHTML )) { - value = containingFile.getUserData(runningValidationKey) == null; + enabled = containingFile.getUserData(runningValidationKey) == null; } else { - value = false; + enabled = false; } } - presentation.setEnabled(value); + presentation.setEnabled(enabled); if (ActionPlaces.isPopupPlace(event.getPlace())) { - presentation.setVisible(value); + presentation.setVisible(enabled); } } } diff --git a/xml/xml-psi-impl/src/com/intellij/xml/impl/ExternalDocumentValidator.java b/xml/xml-psi-impl/src/com/intellij/xml/impl/ExternalDocumentValidator.java index c57400b6623d..7137d769d208 100644 --- a/xml/xml-psi-impl/src/com/intellij/xml/impl/ExternalDocumentValidator.java +++ b/xml/xml-psi-impl/src/com/intellij/xml/impl/ExternalDocumentValidator.java @@ -99,9 +99,9 @@ public class ExternalDocumentValidator { private void runJaxpValidation(final XmlElement element, Validator.ValidationHost host) { final PsiFile file = element.getContainingFile(); + if (file == null || file.getVirtualFile() == null) return; if (myFile == file && - file != null && myModificationStamp == file.getModificationStamp() && !ValidateXmlActionHandler.isValidationDependentFilesOutOfDate((XmlFile)file) && SoftReference.dereference(myInfos)!=null // we have validated before @@ -266,7 +266,7 @@ public class ExternalDocumentValidator { }); - myHandler.doValidate((XmlFile)element.getContainingFile()); + myHandler.doValidate((XmlFile)file); myFile = file; myModificationStamp = myFile.getModificationStamp();