mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEADEV-40953 XML validation fails with IAE from ValidateXmlActionHandler.invoke()
This commit is contained in:
@@ -15,28 +15,27 @@
|
||||
*/
|
||||
package com.intellij.xml.actions;
|
||||
|
||||
import com.intellij.codeInsight.CodeInsightActionHandler;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.fileTypes.StdFileTypes;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.xml.XmlFile;
|
||||
import com.intellij.util.Function;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author mike
|
||||
*/
|
||||
public class ValidateXmlAction extends AnAction /*extends BaseCodeInsightAction*/ {
|
||||
public class ValidateXmlAction extends AnAction {
|
||||
private static final Key<String> runningValidationKey = Key.create("xml.running.validation.indicator");
|
||||
|
||||
public ValidateXmlAction() {
|
||||
}
|
||||
|
||||
private CodeInsightActionHandler getHandler(final @NotNull PsiFile file) {
|
||||
private Function<PsiFile, Void> getHandler(final @NotNull PsiFile file) {
|
||||
ValidateXmlActionHandler handler = new ValidateXmlActionHandler(true);
|
||||
handler.setErrorReporter(
|
||||
handler.new StdErrorReporter(
|
||||
@@ -52,22 +51,18 @@ public class ValidateXmlAction extends AnAction /*extends BaseCodeInsightAction*
|
||||
}
|
||||
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
final PsiFile psiFile = LangDataKeys.PSI_FILE.getData(e.getDataContext());
|
||||
if (psiFile == null) return;
|
||||
doRunAction(psiFile);
|
||||
doRunAction(LangDataKeys.PSI_FILE.getData(e.getDataContext()));
|
||||
}
|
||||
|
||||
private void doRunAction(final @NotNull PsiFile psiFile) {
|
||||
final Project project = psiFile.getProject();
|
||||
|
||||
CommandProcessor.getInstance().executeCommand(
|
||||
project, new Runnable(){
|
||||
CommandProcessor.getInstance().executeCommand(psiFile.getProject(), new Runnable(){
|
||||
public void run(){
|
||||
final Runnable action = new Runnable() {
|
||||
public void run() {
|
||||
try {
|
||||
psiFile.putUserData(runningValidationKey, "");
|
||||
getHandler(psiFile).invoke(project, null, psiFile);
|
||||
getHandler(psiFile).fun(psiFile);
|
||||
}
|
||||
finally {
|
||||
psiFile.putUserData(runningValidationKey, null);
|
||||
|
||||
@@ -15,13 +15,11 @@
|
||||
*/
|
||||
package com.intellij.xml.actions;
|
||||
|
||||
import com.intellij.codeInsight.CodeInsightActionHandler;
|
||||
import com.intellij.ide.errorTreeView.NewErrorTreeViewPanel;
|
||||
import com.intellij.javaee.UriUtil;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
@@ -35,6 +33,7 @@ import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.xml.*;
|
||||
import com.intellij.ui.content.*;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.ui.ErrorTreeView;
|
||||
import com.intellij.util.ui.MessageCategory;
|
||||
import com.intellij.xml.XmlBundle;
|
||||
@@ -44,7 +43,6 @@ import org.apache.xerces.jaxp.JAXPConstants;
|
||||
import org.apache.xerces.jaxp.SAXParserFactoryImpl;
|
||||
import org.apache.xerces.util.XMLGrammarPoolImpl;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.SAXNotRecognizedException;
|
||||
@@ -66,7 +64,7 @@ import java.util.concurrent.Future;
|
||||
/**
|
||||
* @author Mike
|
||||
*/
|
||||
public class ValidateXmlActionHandler implements CodeInsightActionHandler {
|
||||
public class ValidateXmlActionHandler implements Function<PsiFile, Void> {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.xml.actions.ValidateXmlAction");
|
||||
private static final Key<NewErrorTreeViewPanel> KEY = Key.create("ValidateXmlAction.KEY");
|
||||
@NonNls private static final String SCHEMA_FULL_CHECKING_FEATURE_ID = "http://apache.org/xml/features/validation/schema-full-checking";
|
||||
@@ -83,8 +81,6 @@ public class ValidateXmlActionHandler implements CodeInsightActionHandler {
|
||||
private final boolean myForceChecking;
|
||||
@NonNls
|
||||
private static final String ENTITY_RESOLVER_PROPERTY_NAME = "http://apache.org/xml/properties/internal/entity-resolver";
|
||||
@NonNls
|
||||
public static final String XMLNS_PREFIX = "xmlns";
|
||||
|
||||
public ValidateXmlActionHandler(boolean _forceChecking) {
|
||||
myForceChecking = _forceChecking;
|
||||
@@ -349,10 +345,12 @@ public class ValidateXmlActionHandler implements CodeInsightActionHandler {
|
||||
}
|
||||
}
|
||||
|
||||
public void invoke(@NotNull Project project, @NotNull Editor editor, @NotNull PsiFile file) {
|
||||
public Void fun(PsiFile file) {
|
||||
Project project = file.getProject();
|
||||
PsiDocumentManager.getInstance(project).commitAllDocuments();
|
||||
|
||||
doValidate(project,file);
|
||||
return null;
|
||||
}
|
||||
|
||||
public void doValidate(Project project, PsiFile file) {
|
||||
|
||||
Reference in New Issue
Block a user