From e51f4336b8c3c079e24d720251a7a7126b0f9bf2 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 11 Apr 2016 10:15:00 +0200 Subject: [PATCH] assert that document saving and commit happen with write actions allowed --- .../com/intellij/psi/impl/PsiDocumentManagerBase.java | 10 ++++++++++ .../fileEditor/impl/FileDocumentManagerImpl.java | 11 +++++++++++ 2 files changed, 21 insertions(+) diff --git a/platform/core-impl/src/com/intellij/psi/impl/PsiDocumentManagerBase.java b/platform/core-impl/src/com/intellij/psi/impl/PsiDocumentManagerBase.java index e5ec17819792..3e1b9486e717 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/PsiDocumentManagerBase.java +++ b/platform/core-impl/src/com/intellij/psi/impl/PsiDocumentManagerBase.java @@ -214,6 +214,11 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen @Override public void commitAllDocuments() { ApplicationManager.getApplication().assertIsDispatchThread(); + if (!((TransactionGuardImpl)TransactionGuard.getInstance()).isWriteActionAllowed()) { + // please assign exceptions here to Peter + LOG.error("Write access is not allowed in this context, see TransactionGuard documentation for details"); + } + if (myUncommittedDocuments.isEmpty()) return; final Document[] documents = getUncommittedDocuments(); @@ -286,6 +291,11 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen @Override public void commitDocument(@NotNull final Document doc) { + if (!((TransactionGuardImpl)TransactionGuard.getInstance()).isWriteActionAllowed()) { + // please assign exceptions here to Peter + LOG.error("Write access is not allowed in this context, see TransactionGuard documentation for details"); + } + final Document document = doc instanceof DocumentWindow ? ((DocumentWindow)doc).getDelegate() : doc; if (!isCommitted(document)) { doCommit(document); diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java index 7de2dbf34d60..ec7ee0e5cbbb 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java @@ -28,6 +28,8 @@ import com.intellij.diff.util.DiffUserDataKeys; import com.intellij.openapi.Disposable; import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.TransactionGuard; +import com.intellij.openapi.application.TransactionGuardImpl; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.command.UndoConfirmationPolicy; import com.intellij.openapi.diagnostic.Logger; @@ -298,6 +300,10 @@ public class FileDocumentManagerImpl extends FileDocumentManager implements Virt */ public void saveAllDocuments(boolean isExplicit) { ApplicationManager.getApplication().assertIsDispatchThread(); + if (!((TransactionGuardImpl)TransactionGuard.getInstance()).isWriteActionAllowed()) { + // please assign exceptions here to Peter + LOG.error("Write access is not allowed in this context, see TransactionGuard documentation for details"); + } myMultiCaster.beforeAllDocumentsSaving(); if (myUnsavedDocuments.isEmpty()) return; @@ -338,6 +344,11 @@ public class FileDocumentManagerImpl extends FileDocumentManager implements Virt public void saveDocument(@NotNull final Document document, final boolean explicit) { ApplicationManager.getApplication().assertIsDispatchThread(); + if (!((TransactionGuardImpl)TransactionGuard.getInstance()).isWriteActionAllowed()) { + // please assign exceptions here to Peter + LOG.error("Write access is not allowed in this context, see TransactionGuard documentation for details"); + } + if (!myUnsavedDocuments.contains(document)) return; try {