From 9c49c62530009d8a1844b2204cfe2d973aebe9bf Mon Sep 17 00:00:00 2001 From: peter Date: Sat, 22 Oct 2016 10:24:28 +0200 Subject: [PATCH] replace AccessToken write action API usages with lambda-passing --- .../actions/CreateLibraryFromFilesDialog.java | 11 +--- .../impl/ProjectFromSourcesBuilderImpl.java | 51 +++++----------- .../AbstractAttachSourceProvider.java | 13 +---- .../InternetAttachSourceProvider.java | 14 ++--- .../ChangeLibraryLevelActionBase.java | 10 +--- .../libraryEditor/CreateNewLibraryAction.java | 9 +-- .../com/intellij/jarFinder/FindJarFix.java | 10 +--- .../testFramework/CompilerTester.java | 13 ++--- .../testFramework/ModuleTestCase.java | 37 +++++------- .../src/SchemeManagerImpl.kt | 21 ++----- .../openapi/command/WriteCommandAction.java | 16 ++--- .../diff/impl/dir/DirDiffTableModel.java | 30 +++------- .../codeStyle/CodeStyleSchemeExporterUI.java | 23 ++++---- .../actions/SaveAsTemplateAction.java | 17 ++---- .../console/ConsoleHistoryController.java | 18 ++---- .../commandLine/FileSetFormatter.java | 27 +++------ .../impl/FrameworkDetectionUtil.java | 9 +-- .../ImportModuleFromImlFileAction.java | 10 +--- .../ide/scratch/ScratchFileServiceImpl.java | 13 +---- .../platform/ModuleAttachProcessor.java | 8 +-- .../templates/SystemFileProcessor.java | 5 +- .../templates/TemplateModuleBuilder.java | 8 +-- .../intellij/ui/ColorLineMarkerProvider.java | 11 +--- .../components/impl/stores/StorageUtil.java | 8 +-- .../impl/FileDocumentManagerImpl.java | 13 +---- .../project/impl/ProjectMacrosUtil.java | 8 +-- .../vfs/newvfs/RefreshSessionImpl.java | 16 ++--- .../roots/impl/ModuleRootManagerImpl.java | 12 ++-- .../roots/impl/ProjectRootManagerImpl.java | 11 +--- .../impl/libraries/LibraryTableBase.java | 9 +-- .../intellij/testFramework/PsiTestUtil.java | 8 +-- .../impl/CodeInsightTestFixtureImpl.java | 6 +- .../src/actions/ShuffleNamesAction.java | 9 +-- .../ToggleHighlightingMarkupAction.java | 22 +++---- .../eclipse/config/ClasspathSaveSession.java | 9 +-- .../EclipseClasspathStorageProvider.java | 9 +-- .../EclipseUserLibrariesHelper.java | 9 +-- .../idea/eclipse/EclipseEmlTest.java | 19 +----- .../intentions/CreateClassActionBase.java | 58 +++++++++---------- .../annotator/intentions/CreateClassFix.java | 19 ++---- .../GroovyStaticImportMethodFix.java | 22 +++---- .../groovy/config/GroovyFacetUtil.java | 12 +--- .../groovy/griffon/GriffonFramework.java | 9 +-- ...onvertConcatenationToGstringIntention.java | 16 ++--- ...roovyImportOptimizerRefactoringHelper.java | 12 +--- .../method/GroovyExtractMethodHandler.java | 10 +--- .../constant/GrIntroduceConstantDialog.java | 11 +--- .../parameter/GrIntroduceParameterDialog.java | 11 +--- .../testIntegration/GroovyTestGenerator.java | 9 +-- .../surroundWith/SurrounderOrderTest.groovy | 7 +-- .../field/GrIntroduceFieldTest.groovy | 6 +- .../i18n/JavaCreatePropertyFix.java | 13 ++--- .../maven/importing/MavenFoldersImporter.java | 9 +-- ...ectsProcessorArtifactsDownloadingTask.java | 12 +--- .../library/RepositoryAttachHandler.java | 11 +--- .../maven/utils/library/RepositoryUtils.java | 9 +-- .../maven/compiler/ResourceCopyingTest.java | 8 +-- .../MavenResolveToWorkspaceTest.java | 9 +-- .../importing/DependenciesImportingTest.java | 9 +-- .../field/PyIntroduceFieldHandler.java | 11 +--- .../impl/quickfix/FetchExtResourceAction.java | 11 +--- .../codeInsight/XmlXIncludeTest.groovy | 6 +- 62 files changed, 240 insertions(+), 622 deletions(-) diff --git a/java/idea-ui/src/com/intellij/ide/projectView/actions/CreateLibraryFromFilesDialog.java b/java/idea-ui/src/com/intellij/ide/projectView/actions/CreateLibraryFromFilesDialog.java index 79f150c3ad38..a44353bb0760 100644 --- a/java/idea-ui/src/com/intellij/ide/projectView/actions/CreateLibraryFromFilesDialog.java +++ b/java/idea-ui/src/com/intellij/ide/projectView/actions/CreateLibraryFromFilesDialog.java @@ -15,7 +15,7 @@ */ package com.intellij.ide.projectView.actions; -import com.intellij.openapi.application.AccessToken; +import com.intellij.application.options.ModulesComboBox; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtil; @@ -28,7 +28,6 @@ import com.intellij.openapi.roots.ModuleRootModificationUtil; import com.intellij.openapi.roots.impl.libraries.LibraryTypeServiceImpl; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.ui.OrderRoot; -import com.intellij.application.options.ModulesComboBox; import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryNameAndLevelPanel; import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer; import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainerFactory; @@ -139,8 +138,7 @@ public class CreateLibraryFromFilesDialog extends DialogWrapper { private void addLibrary() { final LibrariesContainer.LibraryLevel level = myNameAndLevelPanel.getLibraryLevel(); - AccessToken token = WriteAction.start(); - try { + WriteAction.run(() -> { final Module module = myModulesComboBox.getSelectedModule(); final String libraryName = myNameAndLevelPanel.getLibraryName(); if (level == LibrariesContainer.LibraryLevel.MODULE) { @@ -154,10 +152,7 @@ public class CreateLibraryFromFilesDialog extends DialogWrapper { ModuleRootModificationUtil.addDependency(module, library); } } - } - finally { - token.finish(); - } + }); } @Override diff --git a/java/idea-ui/src/com/intellij/ide/util/projectWizard/importSources/impl/ProjectFromSourcesBuilderImpl.java b/java/idea-ui/src/com/intellij/ide/util/projectWizard/importSources/impl/ProjectFromSourcesBuilderImpl.java index ea7a1ca4d677..8aff2f08e9ba 100644 --- a/java/idea-ui/src/com/intellij/ide/util/projectWizard/importSources/impl/ProjectFromSourcesBuilderImpl.java +++ b/java/idea-ui/src/com/intellij/ide/util/projectWizard/importSources/impl/ProjectFromSourcesBuilderImpl.java @@ -25,7 +25,6 @@ import com.intellij.ide.util.projectWizard.ExistingModuleLoader; import com.intellij.ide.util.projectWizard.ModuleBuilder; import com.intellij.ide.util.projectWizard.WizardContext; import com.intellij.ide.util.projectWizard.importSources.*; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.Extensions; @@ -179,28 +178,24 @@ public class ProjectFromSourcesBuilderImpl extends ProjectImportBuilder implemen final Map projectLibs = new HashMap<>(); final List result = new ArrayList<>(); try { - AccessToken token = WriteAction.start(); - try { + WriteAction.run(() -> { // create project-level libraries for (ProjectDescriptor projectDescriptor : getSelectedDescriptors()) { for (LibraryDescriptor lib : projectDescriptor.getLibraries()) { - final Collection files = lib.getJars(); - final Library projectLib = projectLibraryTable.createLibrary(lib.getName()); - final Library.ModifiableModel libraryModel = projectLib.getModifiableModel(); - for (File file : files) { - libraryModel.addRoot(VfsUtil.getUrlForLibraryRoot(file), OrderRootType.CLASSES); - } - libraryModel.commit(); - projectLibs.put(lib, projectLib); + final Collection files = lib.getJars(); + final Library projectLib = projectLibraryTable.createLibrary(lib.getName()); + final Library.ModifiableModel libraryModel = projectLib.getModifiableModel(); + for (File file : files) { + libraryModel.addRoot(VfsUtil.getUrlForLibraryRoot(file), OrderRootType.CLASSES); + } + libraryModel.commit(); + projectLibs.put(lib, projectLib); } } if (!fromProjectStructure) { projectLibraryTable.commit(); } - } - finally { - token.finish(); - } + }); } catch (Exception e) { LOG.info(e); @@ -210,8 +205,7 @@ public class ProjectFromSourcesBuilderImpl extends ProjectImportBuilder implemen final Map descriptorToModuleMap = new HashMap<>(); try { - AccessToken token = WriteAction.start(); - try { + WriteAction.run(() -> { final ModifiableModuleModel moduleModel = fromProjectStructure ? model : ModuleManager.getInstance(project).getModifiableModel(); for (ProjectDescriptor descriptor : getSelectedDescriptors()) { for (final ModuleDescriptor moduleDescriptor : descriptor.getModules()) { @@ -232,10 +226,7 @@ public class ProjectFromSourcesBuilderImpl extends ProjectImportBuilder implemen if (!fromProjectStructure) { moduleModel.commit(); } - } - finally { - token.finish(); - } + }); } catch (Exception e) { LOG.info(e); @@ -244,8 +235,7 @@ public class ProjectFromSourcesBuilderImpl extends ProjectImportBuilder implemen // setup dependencies between modules try { - AccessToken token = WriteAction.start(); - try { + WriteAction.run(() -> { for (ProjectDescriptor data : getSelectedDescriptors()) { for (final ModuleDescriptor descriptor : data.getModules()) { final Module module = descriptorToModuleMap.get(descriptor); @@ -266,28 +256,19 @@ public class ProjectFromSourcesBuilderImpl extends ProjectImportBuilder implemen rootModel.commit(); } } - } - finally { - token.finish(); - } + }); } catch (Exception e) { LOG.info(e); Messages.showErrorDialog(IdeBundle.message("error.adding.module.to.project", e.getMessage()), IdeBundle.message("title.add.module")); } - AccessToken token = WriteAction.start(); - try { + WriteAction.run(() -> { ModulesProvider updatedModulesProvider = fromProjectStructure ? modulesProvider : new DefaultModulesProvider(project); for (ProjectConfigurationUpdater updater : myUpdaters) { updater.updateProject(project, modelsProvider, updatedModulesProvider); } - } - finally { - token.finish(); - } - - + }); return result; } diff --git a/java/idea-ui/src/com/intellij/jarFinder/AbstractAttachSourceProvider.java b/java/idea-ui/src/com/intellij/jarFinder/AbstractAttachSourceProvider.java index 2c1a09605f2e..0e1624993786 100644 --- a/java/idea-ui/src/com/intellij/jarFinder/AbstractAttachSourceProvider.java +++ b/java/idea-ui/src/com/intellij/jarFinder/AbstractAttachSourceProvider.java @@ -18,7 +18,6 @@ package com.intellij.jarFinder; import com.intellij.codeInsight.AttachSourcesProvider; import com.intellij.notification.Notification; import com.intellij.notification.NotificationType; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.diagnostic.Logger; @@ -120,13 +119,7 @@ public abstract class AbstractAttachSourceProvider implements AttachSourcesProvi if (myLibrary != getLibraryFromOrderEntriesList(orderEntriesContainingFile)) return callback; - AccessToken accessToken = WriteAction.start(); - try { - addSourceFile(mySrcFile, myLibrary); - } - finally { - accessToken.finish(); - } + WriteAction.run(() -> addSourceFile(mySrcFile, myLibrary)); return callback; } @@ -178,12 +171,10 @@ public abstract class AbstractAttachSourceProvider implements AttachSourcesProvi } ApplicationManager.getApplication().invokeLater(() -> { - AccessToken accessToken = WriteAction.start(); try { - storeFile(bytes); + WriteAction.run(() -> storeFile(bytes)); } finally { - accessToken.finish(); callback.setDone(); } }); diff --git a/java/idea-ui/src/com/intellij/jarFinder/InternetAttachSourceProvider.java b/java/idea-ui/src/com/intellij/jarFinder/InternetAttachSourceProvider.java index c447cdb6b0a6..a26a2b14a2c1 100644 --- a/java/idea-ui/src/com/intellij/jarFinder/InternetAttachSourceProvider.java +++ b/java/idea-ui/src/com/intellij/jarFinder/InternetAttachSourceProvider.java @@ -17,7 +17,6 @@ package com.intellij.jarFinder; import com.intellij.notification.Notification; import com.intellij.notification.NotificationType; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProgressIndicator; @@ -28,7 +27,10 @@ import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.ui.configuration.LibrarySourceRootDetectorUtil; import com.intellij.openapi.util.ActionCallback; import com.intellij.openapi.util.io.FileUtil; -import com.intellij.openapi.vfs.*; +import com.intellij.openapi.vfs.JarFileSystem; +import com.intellij.openapi.vfs.LocalFileSystem; +import com.intellij.openapi.vfs.VfsUtilCore; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; import com.intellij.util.SystemProperties; import com.intellij.util.containers.ContainerUtil; @@ -191,8 +193,7 @@ public class InternetAttachSourceProvider extends AbstractAttachSourceProvider { } public static void attachSourceJar(@NotNull File sourceJar, @NotNull Collection libraries) { - AccessToken accessToken = WriteAction.start(); - try { + WriteAction.run(() -> { VirtualFile srcFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(sourceJar); if (srcFile == null) return; @@ -215,10 +216,7 @@ public class InternetAttachSourceProvider extends AbstractAttachSourceProvider { } model.commit(); } - } - finally { - accessToken.finish(); - } + }); } public static File getLibrarySourceDir() { diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ChangeLibraryLevelActionBase.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ChangeLibraryLevelActionBase.java index b9c9f9d62128..f573b5b60942 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ChangeLibraryLevelActionBase.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ChangeLibraryLevelActionBase.java @@ -18,7 +18,6 @@ package com.intellij.openapi.roots.ui.configuration.classpath; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.Presentation; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.Result; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.diagnostic.Logger; @@ -108,14 +107,7 @@ public abstract class ChangeLibraryLevelActionBase extends AnAction { final Library copied = provider.getModifiableModel().createLibrary(StringUtil.nullize(dialog.getLibraryName()), library.getKind()); final LibraryEx.ModifiableModelEx model = (LibraryEx.ModifiableModelEx)copied.getModifiableModel(); LibraryEditingUtil.copyLibrary(library, copiedFiles, model); - - AccessToken token = WriteAction.start(); - try { - model.commit(); - } - finally { - token.finish(); - } + WriteAction.run(() -> model.commit()); return copied; } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryAction.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryAction.java index 93fdce2baa69..7e86b37f774c 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryAction.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryAction.java @@ -18,7 +18,6 @@ package com.intellij.openapi.roots.ui.configuration.libraryEditor; import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; @@ -75,13 +74,7 @@ public class CreateNewLibraryAction extends DumbAwareAction { configuration.addRoots(editor); final Library.ModifiableModel model = library.getModifiableModel(); editor.applyTo((LibraryEx.ModifiableModelEx)model); - AccessToken token = WriteAction.start(); - try { - model.commit(); - } - finally { - token.finish(); - } + WriteAction.run(() -> model.commit()); return library; } diff --git a/java/java-impl/src/com/intellij/jarFinder/FindJarFix.java b/java/java-impl/src/com/intellij/jarFinder/FindJarFix.java index 7d8a2196cac2..5bd5a2185f01 100644 --- a/java/java-impl/src/com/intellij/jarFinder/FindJarFix.java +++ b/java/java-impl/src/com/intellij/jarFinder/FindJarFix.java @@ -4,7 +4,6 @@ import com.intellij.codeInsight.daemon.impl.quickfix.OrderEntryFix; import com.intellij.codeInsight.hint.HintManager; import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.ide.util.PropertiesComponent; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; @@ -27,7 +26,6 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.ui.components.JBList; import com.intellij.util.IncorrectOperationException; -import com.intellij.util.NotNullFunction; import com.intellij.util.PlatformIcons; import com.intellij.util.download.DownloadableFileDescription; import com.intellij.util.download.DownloadableFileService; @@ -255,13 +253,7 @@ public abstract class FindJarFix implements IntentionActio downloader.createDownloader(Arrays.asList(description), jarName) .downloadFilesWithProgress(file.getPath(), project, myEditorComponent); if (jars != null && jars.size() == 1) { - AccessToken token = WriteAction.start(); - try { - OrderEntryFix.addJarToRoots(jars.get(0).getPresentableUrl(), myModule, myRef); - } - finally { - token.finish(); - } + WriteAction.run(() -> OrderEntryFix.addJarToRoots(jars.get(0).getPresentableUrl(), myModule, myRef)); } } } diff --git a/java/testFramework/src/com/intellij/testFramework/CompilerTester.java b/java/testFramework/src/com/intellij/testFramework/CompilerTester.java index 7e00b4ef5bab..5fa586960313 100644 --- a/java/testFramework/src/com/intellij/testFramework/CompilerTester.java +++ b/java/testFramework/src/com/intellij/testFramework/CompilerTester.java @@ -16,7 +16,6 @@ package com.intellij.testFramework; import com.intellij.compiler.CompilerTestUtil; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.Result; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.command.WriteCommandAction; @@ -103,14 +102,10 @@ public class CompilerTester { } public void deleteClassFile(final String className) throws IOException { - AccessToken token = WriteAction.start(); - try { - //noinspection ConstantConditions - touch(JavaPsiFacade.getInstance(getProject()).findClass(className, GlobalSearchScope.allScope(getProject())).getContainingFile().getVirtualFile()); - } - finally { - token.finish(); - } + WriteAction.run(() -> { + //noinspection ConstantConditions + touch(JavaPsiFacade.getInstance(getProject()).findClass(className, GlobalSearchScope.allScope(getProject())).getContainingFile().getVirtualFile()); + }); } @Nullable diff --git a/java/testFramework/src/com/intellij/testFramework/ModuleTestCase.java b/java/testFramework/src/com/intellij/testFramework/ModuleTestCase.java index e3cea9296e31..bc00a96b8a3f 100644 --- a/java/testFramework/src/com/intellij/testFramework/ModuleTestCase.java +++ b/java/testFramework/src/com/intellij/testFramework/ModuleTestCase.java @@ -16,7 +16,6 @@ package com.intellij.testFramework; import com.intellij.ide.highlighter.ModuleFileType; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.command.WriteCommandAction; @@ -57,30 +56,24 @@ public abstract class ModuleTestCase extends IdeaTestCase { @Override protected void tearDown() throws Exception { try { - ModuleManager moduleManager = ModuleManager.getInstance(myProject); - List errors = null; - AccessToken token = WriteAction.start(); - try { - for (Module module : myModulesToDispose) { - try { - String moduleName = module.getName(); - if (moduleManager.findModuleByName(moduleName) != null) { - moduleManager.disposeModule(module); + if (!myModulesToDispose.isEmpty()) { + List errors = new SmartList<>(); + WriteAction.run(() -> { + ModuleManager moduleManager = ModuleManager.getInstance(myProject); + for (Module module : myModulesToDispose) { + try { + String moduleName = module.getName(); + if (moduleManager.findModuleByName(moduleName) != null) { + moduleManager.disposeModule(module); + } + } + catch (Throwable e) { + errors.add(e); } } - catch (Throwable e) { - if (errors == null) { - errors = new SmartList<>(); - } - errors.add(e); - } - } + }); + CompoundRuntimeException.throwIfNotEmpty(errors); } - finally { - token.finish(); - } - - CompoundRuntimeException.throwIfNotEmpty(errors); } finally { myModulesToDispose.clear(); diff --git a/platform/configuration-store-impl/src/SchemeManagerImpl.kt b/platform/configuration-store-impl/src/SchemeManagerImpl.kt index a210200778f6..10ab7e57b96c 100644 --- a/platform/configuration-store-impl/src/SchemeManagerImpl.kt +++ b/platform/configuration-store-impl/src/SchemeManagerImpl.kt @@ -15,8 +15,6 @@ */ package com.intellij.configurationStore -import com.intellij.openapi.application.AccessToken -import com.intellij.openapi.application.WriteAction import com.intellij.openapi.application.ex.DecodeDefaultsUtil import com.intellij.openapi.application.runWriteAction import com.intellij.openapi.components.RoamingType @@ -734,23 +732,14 @@ class SchemeManagerImpl(val fileSpec: String, if (useVfs) { virtualDirectory?.let { - var token: AccessToken? = null - try { - for (file in it.children) { - if (filesToDelete.contains(file.name)) { - if (token == null) { - token = WriteAction.start() - } - - errors.catch { - file.delete(this) - } + val childrenToDelete = it.children.filter { filesToDelete.contains(it.name) } + if (childrenToDelete.isNotEmpty()) { + runWriteAction { + childrenToDelete.forEach { file -> + errors.catch { file.delete(this) } } } } - finally { - token?.finish() - } return } } diff --git a/platform/core-api/src/com/intellij/openapi/command/WriteCommandAction.java b/platform/core-api/src/com/intellij/openapi/command/WriteCommandAction.java index 0113f34a0845..bc3470940bf4 100644 --- a/platform/core-api/src/com/intellij/openapi/command/WriteCommandAction.java +++ b/platform/core-api/src/com/intellij/openapi/command/WriteCommandAction.java @@ -104,14 +104,14 @@ public abstract class WriteCommandAction extends BaseActionRunnable { doExecuteCommand(new Runnable() { @Override public void run() { - AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(WriteCommandAction.this.getClass()); - try { - results[0].run(); - results[0] = null; - } - finally { - token.finish(); - } + //noinspection deprecation + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + results[0].run(); + results[0] = null; + } + }); } }); } diff --git a/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java b/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java index 61c009b44c79..ca637f7c30ff 100644 --- a/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java +++ b/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java @@ -20,10 +20,7 @@ import com.intellij.ide.IdeBundle; import com.intellij.ide.diff.*; import com.intellij.internal.statistic.UsageTrigger; import com.intellij.openapi.Disposable; -import com.intellij.openapi.application.AccessToken; -import com.intellij.openapi.application.Application; -import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.application.ModalityState; +import com.intellij.openapi.application.*; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.diff.impl.dir.actions.popup.WarnOnDeletion; import com.intellij.openapi.progress.EmptyProgressIndicator; @@ -35,7 +32,6 @@ import com.intellij.openapi.ui.MessageType; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.popup.Balloon; import com.intellij.openapi.ui.popup.JBPopupFactory; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.text.StringUtil; @@ -598,14 +594,10 @@ public class DirDiffTableModel extends AbstractTableModel implements DirDiffMode ((BackgroundOperatingDiffElement)source).copyTo(myTrg, errorMessage, diff, onFinish, element.getTarget(), path); } else { - final AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(getClass()); - try { + WriteAction.run(() -> { final DiffElement diffElement = source.copyTo(myTrg, path); refreshElementAfterCopyTo(diffElement, element); - } - finally { - token.finish(); - } + }); } } } @@ -647,14 +639,10 @@ public class DirDiffTableModel extends AbstractTableModel implements DirDiffMode ((BackgroundOperatingDiffElement)target).copyTo(mySrc, errorMessage, diff, onFinish, element.getSource(), path); } else { - final AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(getClass()); - try { + WriteAction.run(() -> { final DiffElement diffElement = target.copyTo(mySrc, path); refreshElementAfterCopyFrom(element, diffElement); - } - finally { - token.finish(); - } + }); } } } @@ -736,18 +724,14 @@ public class DirDiffTableModel extends AbstractTableModel implements DirDiffMode if (myElements.indexOf(element) != -1) { removeElement(element, true); } - final AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(getClass()); - try { + WriteAction.run(() -> { if (source != null) { source.delete(); } if (target != null) { target.delete(); } - } - finally { - token.finish(); - } + }); } } diff --git a/platform/lang-impl/src/com/intellij/application/options/codeStyle/CodeStyleSchemeExporterUI.java b/platform/lang-impl/src/com/intellij/application/options/codeStyle/CodeStyleSchemeExporterUI.java index 82bbe4c6a281..cc08b6a64e5c 100644 --- a/platform/lang-impl/src/com/intellij/application/options/codeStyle/CodeStyleSchemeExporterUI.java +++ b/platform/lang-impl/src/com/intellij/application/options/codeStyle/CodeStyleSchemeExporterUI.java @@ -15,9 +15,8 @@ */ package com.intellij.application.options.codeStyle; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationBundle; -import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.fileChooser.FileChooserFactory; import com.intellij.openapi.fileChooser.FileSaverDescriptor; import com.intellij.openapi.fileChooser.FileSaverDialog; @@ -91,15 +90,16 @@ class CodeStyleSchemeExporterUI { String message; MessageType messageType; if (targetFile != null) { - final AccessToken writeToken = ApplicationManager.getApplication().acquireWriteActionLock(getClass()); try { - OutputStream outputStream = targetFile.getOutputStream(this); - try { - exporter.exportScheme(myScheme, outputStream); - } - finally { - outputStream.close(); - } + WriteAction.run(() -> { + OutputStream outputStream = targetFile.getOutputStream(this); + try { + exporter.exportScheme(myScheme, outputStream); + } + finally { + outputStream.close(); + } + }); message = ApplicationBundle .message("scheme.exporter.ui.code.style.exported.message", myScheme.getName(), targetFile.getPresentableUrl()); messageType = MessageType.INFO; @@ -108,9 +108,6 @@ class CodeStyleSchemeExporterUI { message = ApplicationBundle.message("scheme.exporter.ui.export.failed", e.getMessage()); messageType = MessageType.ERROR; } - finally { - writeToken.finish(); - } } else { message = ApplicationBundle.message("scheme.exporter.ui.cannot.write.message"); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/actions/SaveAsTemplateAction.java b/platform/lang-impl/src/com/intellij/codeInsight/template/actions/SaveAsTemplateAction.java index 678ed320bf1b..c792c5763b20 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/actions/SaveAsTemplateAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/actions/SaveAsTemplateAction.java @@ -31,7 +31,6 @@ import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.diagnostic.Logger; @@ -39,8 +38,6 @@ import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.EditorFactory; import com.intellij.openapi.editor.RangeMarker; -import com.intellij.openapi.editor.ex.RangeMarkerEx; -import com.intellij.openapi.editor.impl.RangeMarkerTree; import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; @@ -49,7 +46,10 @@ import com.intellij.psi.util.PsiElementFilter; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.containers.HashMap; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; public class SaveAsTemplateAction extends AnAction { @@ -146,14 +146,7 @@ public class SaveAsTemplateAction extends AnAction { final TemplateImpl template = new TemplateImpl(TemplateListPanel.ABBREVIATION, document.getText(), TemplateSettings.USER_GROUP_NAME); template.setToReformat(true); - PsiFile copy; - AccessToken token = WriteAction.start(); - try { - copy = TemplateManagerImpl.insertDummyIdentifier(editor, file); - } - finally { - token.finish(); - } + PsiFile copy = WriteAction.compute(() -> TemplateManagerImpl.insertDummyIdentifier(editor, file)); Set applicable = TemplateManagerImpl.getApplicableContextTypes(copy, startOffset); for(TemplateContextType contextType: TemplateManagerImpl.getAllContextTypes()) { diff --git a/platform/lang-impl/src/com/intellij/execution/console/ConsoleHistoryController.java b/platform/lang-impl/src/com/intellij/execution/console/ConsoleHistoryController.java index 97e0adc4b295..5df23a07dd8f 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/ConsoleHistoryController.java +++ b/platform/lang-impl/src/com/intellij/execution/console/ConsoleHistoryController.java @@ -21,9 +21,9 @@ import com.intellij.ide.scratch.ScratchFileService; import com.intellij.lang.Language; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.PathManager; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.command.undo.UndoConstants; import com.intellij.openapi.diagnostic.Logger; @@ -464,13 +464,7 @@ public class ConsoleHistoryController { if (loadHistoryOld(id)) { if (!myRootType.isHidden()) { // migrate content - AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(getClass()); - try { - VfsUtil.saveText(consoleFile, myContent); - } - finally { - token.finish(); - } + WriteAction.run(() -> VfsUtil.saveText(consoleFile, myContent)); } return true; } @@ -560,14 +554,10 @@ public class ConsoleHistoryController { saveHistoryOld(); return; } - AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(getClass()); - try { + WriteAction.run(() -> { VirtualFile file = HistoryRootType.getInstance().findFile(null, getHistoryName(myRootType, myId), ScratchFileService.Option.create_if_missing); VfsUtil.saveText(file, StringUtil.join(getModel().getEntries(), myRootType.getEntrySeparator())); - } - finally { - token.finish(); - } + }); } catch (Exception ex) { LOG.error(ex); diff --git a/platform/lang-impl/src/com/intellij/formatting/commandLine/FileSetFormatter.java b/platform/lang-impl/src/com/intellij/formatting/commandLine/FileSetFormatter.java index 5dde72ab3224..8019a7eb849b 100644 --- a/platform/lang-impl/src/com/intellij/formatting/commandLine/FileSetFormatter.java +++ b/platform/lang-impl/src/com/intellij/formatting/commandLine/FileSetFormatter.java @@ -17,9 +17,8 @@ package com.intellij.formatting.commandLine; import com.intellij.formatting.FormatTextRanges; import com.intellij.lang.LanguageFormatting; -import com.intellij.openapi.application.AccessToken; -import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.command.CommandProcessor; +import com.intellij.openapi.application.WriteAction; +import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.FileDocumentManager; @@ -92,9 +91,7 @@ class FileSetFormatter extends FileSetProcessor { private void closeProject() { if (myProject != null) { ProjectManager.getInstance().closeProject(myProject); - AccessToken writeToken = ApplicationManager.getApplication().acquireWriteActionLock(this.getClass()); - Disposer.dispose(myProject); - writeToken.finish(); + WriteAction.run(() -> Disposer.dispose(myProject)); } } @@ -150,19 +147,11 @@ class FileSetFormatter extends FileSetProcessor { } private void reformatFile(@NotNull Project project, @NotNull final PsiFile file, @NotNull Document document) { - AccessToken writeToken = ApplicationManager.getApplication().acquireWriteActionLock(this.getClass()); - try { - CommandProcessor.getInstance().executeCommand( - myProject, - () -> { - CodeFormatterFacade formatterFacade = new CodeFormatterFacade(mySettings, file.getLanguage()); - formatterFacade.processText(file, new FormatTextRanges(new TextRange(0, file.getTextLength()), true), false); - PsiDocumentManager.getInstance(project).commitDocument(document); - }, null, null); - } - finally { - writeToken.finish(); - } + WriteCommandAction.runWriteCommandAction(project, () -> { + CodeFormatterFacade formatterFacade = new CodeFormatterFacade(mySettings, file.getLanguage()); + formatterFacade.processText(file, new FormatTextRanges(new TextRange(0, file.getTextLength()), true), false); + PsiDocumentManager.getInstance(project).commitDocument(document); + }); } private static boolean isFormattingSupported(@NotNull PsiFile file) { diff --git a/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionUtil.java b/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionUtil.java index 6d037b30d11c..97efe388a716 100644 --- a/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionUtil.java +++ b/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionUtil.java @@ -20,7 +20,6 @@ import com.intellij.framework.FrameworkType; import com.intellij.framework.detection.DetectedFrameworkDescription; import com.intellij.framework.detection.FacetBasedFrameworkDetector; import com.intellij.framework.detection.FrameworkDetector; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.roots.ModifiableModelsProvider; import com.intellij.openapi.roots.ui.configuration.ModulesProvider; @@ -86,8 +85,7 @@ public class FrameworkDetectionUtil { public static void setupFrameworks(List descriptions, final ModifiableModelsProvider modelsProvider, final ModulesProvider modulesProvider) { - AccessToken token = WriteAction.start(); - try { + WriteAction.run(() -> { List sortedDescriptions = new ArrayList<>(); //todo[nik] perform real sorting for (DetectedFrameworkDescription description : descriptions) { @@ -103,9 +101,6 @@ public class FrameworkDetectionUtil { for (DetectedFrameworkDescription description : sortedDescriptions) { description.setupFramework(modelsProvider, modulesProvider); } - } - finally { - token.finish(); - } + }); } } diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/actions/ImportModuleFromImlFileAction.java b/platform/lang-impl/src/com/intellij/ide/projectView/actions/ImportModuleFromImlFileAction.java index c645f8cc281d..7e4449f9d1df 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/actions/ImportModuleFromImlFileAction.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/actions/ImportModuleFromImlFileAction.java @@ -19,9 +19,7 @@ import com.intellij.CommonBundle; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; -import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.actionSystem.Presentation; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileTypes.StdFileTypes; @@ -54,13 +52,7 @@ public class ImportModuleFromImlFileAction extends AnAction { model.loadModule(file.getPath()); } - AccessToken token = WriteAction.start(); - try { - model.commit(); - } - finally { - token.finish(); - } + WriteAction.run(() -> model.commit()); } catch (Exception ex) { LOG.info(ex); diff --git a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileServiceImpl.java b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileServiceImpl.java index 02b80d5fe63e..1112f5dd6cd9 100644 --- a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileServiceImpl.java +++ b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileServiceImpl.java @@ -21,10 +21,7 @@ import com.intellij.lang.Language; import com.intellij.lang.LanguageUtil; import com.intellij.lang.PerFileMappings; import com.intellij.lang.PerFileMappingsBase; -import com.intellij.openapi.application.AccessToken; -import com.intellij.openapi.application.Application; -import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.application.PathManager; +import com.intellij.openapi.application.*; import com.intellij.openapi.components.PersistentStateComponent; import com.intellij.openapi.components.State; import com.intellij.openapi.components.Storage; @@ -290,8 +287,7 @@ public class ScratchFileServiceImpl extends ScratchFileService implements Persis String ext = PathUtil.getFileExtension(pathName); String fileNameExt = PathUtil.getFileName(pathName); String fileName = StringUtil.trimEnd(fileNameExt, ext == null ? "" : "." + ext); - AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(getClass()); - try { + return WriteAction.compute(() -> { VirtualFile dir = VfsUtil.createDirectories(PathUtil.getParentPath(fullPath)); if (option == Option.create_new_always) { return VfsUtil.createChildSequent(LocalFileSystem.getInstance(), dir, fileName, StringUtil.notNullize(ext)); @@ -299,10 +295,7 @@ public class ScratchFileServiceImpl extends ScratchFileService implements Persis else { return dir.createChildData(LocalFileSystem.getInstance(), fileNameExt); } - } - finally { - token.finish(); - } + }); } @Nullable diff --git a/platform/lang-impl/src/com/intellij/platform/ModuleAttachProcessor.java b/platform/lang-impl/src/com/intellij/platform/ModuleAttachProcessor.java index 77c82f90c93a..c78669c0f1fe 100644 --- a/platform/lang-impl/src/com/intellij/platform/ModuleAttachProcessor.java +++ b/platform/lang-impl/src/com/intellij/platform/ModuleAttachProcessor.java @@ -98,13 +98,7 @@ public class ModuleAttachProcessor extends ProjectAttachProcessor { final ModifiableModuleModel model = ModuleManager.getInstance(project).getModifiableModel(); final Module module = model.loadModule(imlFile.getPath()); - AccessToken token = WriteAction.start(); - try { - model.commit(); - } - finally { - token.finish(); - } + WriteAction.run(() -> model.commit()); final Module newModule = ModuleManager.getInstance(project).findModuleByName(module.getName()); assert newModule != null; final Module primaryModule = addPrimaryModuleDependency(project, newModule); diff --git a/platform/lang-impl/src/com/intellij/platform/templates/SystemFileProcessor.java b/platform/lang-impl/src/com/intellij/platform/templates/SystemFileProcessor.java index 6a02dd55c8b7..1ce69a1c9427 100644 --- a/platform/lang-impl/src/com/intellij/platform/templates/SystemFileProcessor.java +++ b/platform/lang-impl/src/com/intellij/platform/templates/SystemFileProcessor.java @@ -19,6 +19,7 @@ import com.intellij.ide.util.projectWizard.ProjectTemplateFileProcessor; import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.components.PathMacroManager; import com.intellij.openapi.components.PersistentStateComponent; import com.intellij.openapi.components.ServiceManager; @@ -88,9 +89,7 @@ public class SystemFileProcessor extends ProjectTemplateFileProcessor { } } else if (component instanceof PersistentStateComponent) { - AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(SystemFileProcessor.class); - Object state = ((PersistentStateComponent)component).getState(); - token.finish(); + Object state = WriteAction.compute(() -> ((PersistentStateComponent)component).getState()); if(state == null){ return; diff --git a/platform/lang-impl/src/com/intellij/platform/templates/TemplateModuleBuilder.java b/platform/lang-impl/src/com/intellij/platform/templates/TemplateModuleBuilder.java index 08517174fd9f..f1f36f7e92c6 100644 --- a/platform/lang-impl/src/com/intellij/platform/templates/TemplateModuleBuilder.java +++ b/platform/lang-impl/src/com/intellij/platform/templates/TemplateModuleBuilder.java @@ -24,9 +24,9 @@ import com.intellij.ide.fileTemplates.FileTemplate; import com.intellij.ide.fileTemplates.FileTemplateManager; import com.intellij.ide.fileTemplates.FileTemplateUtil; import com.intellij.ide.util.projectWizard.*; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.diagnostic.Attachment; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileTypes.FileType; @@ -393,16 +393,12 @@ public class TemplateModuleBuilder extends ModuleBuilder { canceledRef.set(true); if (!isSomehowOverwriting) { ApplicationManager.getApplication().invokeLater(() -> { - AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(TemplateProjectDirectoryGenerator.class); try { - baseDir.delete(TemplateProjectDirectoryGenerator.class); + WriteAction.run(() -> baseDir.delete(TemplateProjectDirectoryGenerator.class)); } catch (IOException e) { LOG.error(e); } - finally { - token.close(); - } }); } } diff --git a/platform/lang-impl/src/com/intellij/ui/ColorLineMarkerProvider.java b/platform/lang-impl/src/com/intellij/ui/ColorLineMarkerProvider.java index 1cfb56141c76..2b649aa6c0ea 100644 --- a/platform/lang-impl/src/com/intellij/ui/ColorLineMarkerProvider.java +++ b/platform/lang-impl/src/com/intellij/ui/ColorLineMarkerProvider.java @@ -18,8 +18,7 @@ package com.intellij.ui; import com.intellij.codeHighlighting.Pass; import com.intellij.codeInsight.daemon.*; import com.intellij.icons.AllIcons; -import com.intellij.openapi.application.AccessToken; -import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ElementColorProvider; import com.intellij.openapi.editor.markup.GutterIconRenderer; @@ -81,13 +80,7 @@ public final class ColorLineMarkerProvider implements LineMarkerProvider { assert editor != null; final Color c = ColorChooser.chooseColor(editor.getComponent(), "Choose Color", color, true); if (c != null) { - AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(ColorLineMarkerProvider.class); - try { - colorProvider.setColorTo(element, c); - } - finally { - token.finish(); - } + WriteAction.run(() -> colorProvider.setColorTo(element, c)); } } }, diff --git a/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StorageUtil.java b/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StorageUtil.java index a5594bca0ce1..95df4253b62f 100644 --- a/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StorageUtil.java +++ b/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StorageUtil.java @@ -178,12 +178,6 @@ public class StorageUtil { return parentVirtualFile.createChildData(requestor, file.getFileName().toString()); } - AccessToken token = WriteAction.start(); - try { - return parentVirtualFile.createChildData(requestor, file.getFileName().toString()); - } - finally { - token.finish(); - } + return WriteAction.compute(() -> parentVirtualFile.createChildData(requestor, file.getFileName().toString())); } } 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 494d6c78dbac..4fd4815947a5 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 @@ -26,10 +26,7 @@ import com.intellij.diff.requests.DiffRequest; import com.intellij.diff.requests.SimpleDiffRequest; 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.application.*; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.command.UndoConfirmationPolicy; import com.intellij.openapi.diagnostic.Logger; @@ -387,13 +384,7 @@ public class FileDocumentManagerImpl extends FileDocumentManager implements Virt } } - final AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(getClass()); - try { - doSaveDocumentInWriteAction(document, file); - } - finally { - token.finish(); - } + WriteAction.run(() -> doSaveDocumentInWriteAction(document, file)); } private void doSaveDocumentInWriteAction(@NotNull final Document document, @NotNull final VirtualFile file) throws IOException { diff --git a/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectMacrosUtil.java b/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectMacrosUtil.java index 444b264772f7..e2b1f91254be 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectMacrosUtil.java +++ b/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectMacrosUtil.java @@ -65,13 +65,7 @@ public class ProjectMacrosUtil { String macro = it.next(); String value = System.getProperty(pathMacroSystemPrefix + macro, null); if (value != null) { - AccessToken token = WriteAction.start(); - try { - PathMacros.getInstance().setMacro(macro, value); - } - finally { - token.finish(); - } + WriteAction.run(() -> PathMacros.getInstance().setMacro(macro, value)); it.remove(); } } diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/RefreshSessionImpl.java b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/RefreshSessionImpl.java index da7e1c9d0340..90253f1f4d0a 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/RefreshSessionImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/RefreshSessionImpl.java @@ -180,14 +180,14 @@ public class RefreshSessionImpl extends RefreshSession { return; } - //noinspection unused - try (AccessToken dumb = myStartTrace == null ? null : DumbServiceImpl.forceDumbModeStartTrace(myStartTrace); - AccessToken write = WriteAction.start()) { - if (myDumbModePermission != null) { - DumbService.allowStartingDumbModeInside(myDumbModePermission, this::fireEventsInWriteAction); - } else { - fireEventsInWriteAction(); - } + try (AccessToken ignore = myStartTrace == null ? null : DumbServiceImpl.forceDumbModeStartTrace(myStartTrace)) { + WriteAction.run(() -> { + if (myDumbModePermission != null) { + DumbService.allowStartingDumbModeInside(myDumbModePermission, this::fireEventsInWriteAction); + } else { + fireEventsInWriteAction(); + } + }); } finally { mySemaphore.up(); diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModuleRootManagerImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModuleRootManagerImpl.java index 368f4a822d10..c4d5e21d3428 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModuleRootManagerImpl.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModuleRootManagerImpl.java @@ -16,7 +16,6 @@ package com.intellij.openapi.roots.impl; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ReadAction; import com.intellij.openapi.application.WriteAction; @@ -32,6 +31,7 @@ import com.intellij.openapi.util.JDOMExternalizable; import com.intellij.openapi.util.WriteExternalException; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.pointers.VirtualFilePointerManager; +import com.intellij.util.ThrowableRunnable; import gnu.trove.THashMap; import org.jdom.Element; import org.jetbrains.annotations.NotNull; @@ -346,8 +346,7 @@ public class ModuleRootManagerImpl extends ModuleRootManager implements ModuleCo } protected void loadState(ModuleRootManagerState object, boolean throwEvent) { - AccessToken token = throwEvent ? WriteAction.start() : ReadAction.start(); - try { + ThrowableRunnable r = () -> { final RootModelImpl newModel = new RootModelImpl(object.getRootModelElement(), this, myProjectRootManager, myFilePointerManager, throwEvent); if (throwEvent) { @@ -359,13 +358,14 @@ public class ModuleRootManagerImpl extends ModuleRootManager implements ModuleCo } assert !myRootModel.isOrderEntryDisposed(); + }; + try { + if (throwEvent) WriteAction.run(r); + else ReadAction.run(r); } catch (InvalidDataException e) { LOG.error(e); } - finally { - token.finish(); - } } public static class ModuleRootManagerState implements JDOMExternalizable { diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java index ebbe24ac3389..c67e4a6fd15a 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java @@ -16,7 +16,6 @@ package com.intellij.openapi.roots.impl; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.components.PersistentStateComponent; @@ -93,17 +92,11 @@ public class ProjectRootManagerImpl extends ProjectRootManagerEx implements Pers protected void levelDown() { myBatchLevel -= 1; if (myChanged && myBatchLevel == 0) { - AccessToken token = WriteAction.start(); try { - fireChange(); + WriteAction.run(() -> fireChange()); } finally { - try { - myChanged = false; - } - finally { - token.finish(); - } + myChanged = false; } } } diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/libraries/LibraryTableBase.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/libraries/LibraryTableBase.java index c64e6a915d30..7ce950399710 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/libraries/LibraryTableBase.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/libraries/LibraryTableBase.java @@ -17,7 +17,6 @@ package com.intellij.openapi.roots.impl.libraries; import com.intellij.openapi.Disposable; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.components.PersistentStateComponent; @@ -73,14 +72,10 @@ public abstract class LibraryTableBase implements PersistentStateComponent { model.readExternal(element); commit(model); - } - finally { - token.finish(); - } + }); } myFirstLoad = false; diff --git a/platform/testFramework/src/com/intellij/testFramework/PsiTestUtil.java b/platform/testFramework/src/com/intellij/testFramework/PsiTestUtil.java index e0394457bd88..9a1404a94bc0 100644 --- a/platform/testFramework/src/com/intellij/testFramework/PsiTestUtil.java +++ b/platform/testFramework/src/com/intellij/testFramework/PsiTestUtil.java @@ -93,8 +93,7 @@ public class PsiTestUtil { PlatformTestCase.synchronizeTempDirVfs(vDir); EdtTestUtil.runInEdtAndWait(() -> { - AccessToken token = WriteAction.start(); - try { + WriteAction.run(() -> { if (rootPath != null) { VirtualFile vDir1 = LocalFileSystem.getInstance().findFileByPath(rootPath.replace(File.separatorChar, '/')); if (vDir1 == null) { @@ -106,10 +105,7 @@ public class PsiTestUtil { if (addProjectRoots) { addSourceContentToRoots(module, vDir); } - } - finally { - token.finish(); - } + }); }); return vDir; } diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index f1331aa37939..84b7850e8dd5 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -1359,16 +1359,12 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig EdtTestUtil.runInEdtAndWait(() -> { if (!copy.getFileType().isBinary()) { - AccessToken token = WriteAction.start(); try { - copy.setBinaryContent(loader.newFileText.getBytes(copy.getCharset())); + WriteAction.run(() -> copy.setBinaryContent(loader.newFileText.getBytes(copy.getCharset()))); } catch (IOException e) { throw new RuntimeException(e); } - finally { - token.finish(); - } } myFile = copy; myEditor = createEditor(copy); diff --git a/plugins/devkit/src/actions/ShuffleNamesAction.java b/plugins/devkit/src/actions/ShuffleNamesAction.java index fc08e3a1f27c..a0321919e628 100644 --- a/plugins/devkit/src/actions/ShuffleNamesAction.java +++ b/plugins/devkit/src/actions/ShuffleNamesAction.java @@ -18,10 +18,7 @@ package org.jetbrains.idea.devkit.actions; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; -import com.intellij.openapi.actionSystem.LangDataKeys; -import com.intellij.openapi.actionSystem.PlatformDataKeys; -import com.intellij.openapi.application.AccessToken; -import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.command.CommandProcessorEx; import com.intellij.openapi.command.UndoConfirmationPolicy; import com.intellij.openapi.editor.Editor; @@ -54,12 +51,10 @@ public class ShuffleNamesAction extends AnAction { final Project project = file.getProject(); CommandProcessorEx commandProcessor = (CommandProcessorEx)CommandProcessorEx.getInstance(); Object commandToken = commandProcessor.startCommand(project, e.getPresentation().getText(), e.getPresentation().getText(), UndoConfirmationPolicy.DEFAULT); - AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(getClass()); try { - shuffleIds(file, editor); + WriteAction.run(() -> shuffleIds(file, editor)); } finally { - token.finish(); commandProcessor.finishCommand(project, commandToken, null); } } diff --git a/plugins/devkit/src/actions/ToggleHighlightingMarkupAction.java b/plugins/devkit/src/actions/ToggleHighlightingMarkupAction.java index 2e5f4cb7b475..9d1090f32f7b 100644 --- a/plugins/devkit/src/actions/ToggleHighlightingMarkupAction.java +++ b/plugins/devkit/src/actions/ToggleHighlightingMarkupAction.java @@ -22,10 +22,7 @@ import com.intellij.lang.annotation.HighlightSeverity; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; -import com.intellij.openapi.actionSystem.LangDataKeys; -import com.intellij.openapi.actionSystem.PlatformDataKeys; -import com.intellij.openapi.application.AccessToken; -import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.command.CommandProcessorEx; import com.intellij.openapi.command.UndoConfirmationPolicy; import com.intellij.openapi.editor.Document; @@ -34,7 +31,6 @@ import com.intellij.openapi.editor.SelectionModel; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiFile; -import com.intellij.util.Processor; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -63,19 +59,19 @@ public class ToggleHighlightingMarkupAction extends AnAction { final Project project = file.getProject(); CommandProcessorEx commandProcessor = (CommandProcessorEx)CommandProcessorEx.getInstance(); Object commandToken = commandProcessor.startCommand(project, e.getPresentation().getText(), e.getPresentation().getText(), UndoConfirmationPolicy.DEFAULT); - AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(getClass()); try { - final SelectionModel selectionModel = editor.getSelectionModel(); - int[] starts = selectionModel.getBlockSelectionStarts(); - int[] ends = selectionModel.getBlockSelectionEnds(); + WriteAction.run(() -> { + final SelectionModel selectionModel = editor.getSelectionModel(); + int[] starts = selectionModel.getBlockSelectionStarts(); + int[] ends = selectionModel.getBlockSelectionEnds(); - int startOffset = starts.length == 0? 0 : starts[0]; - int endOffset = ends.length == 0? editor.getDocument().getTextLength() : ends[ends.length - 1]; + int startOffset = starts.length == 0? 0 : starts[0]; + int endOffset = ends.length == 0? editor.getDocument().getTextLength() : ends[ends.length - 1]; - perform(project, editor.getDocument(), startOffset, endOffset); + perform(project, editor.getDocument(), startOffset, endOffset); + }); } finally { - token.finish(); commandProcessor.finishCommand(project, commandToken, null); } } diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/ClasspathSaveSession.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/ClasspathSaveSession.java index eca94d18fa66..d3f4a91a2daf 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/ClasspathSaveSession.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/ClasspathSaveSession.java @@ -15,7 +15,6 @@ */ package org.jetbrains.idea.eclipse.config; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.components.StateStorage; import com.intellij.openapi.components.impl.stores.StorageUtil; @@ -114,8 +113,7 @@ final class ClasspathSaveSession implements StateStorage.ExternalizationSession, public void save() throws IOException { CachedXmlDocumentSet fileSet = EclipseClasspathStorageProvider.getFileCache(module); - AccessToken token = WriteAction.start(); - try { + WriteAction.run(() -> { for (String key : modifiedContent.keySet()) { Element content = modifiedContent.get(key); String path = fileSet.getParent(key) + '/' + key; @@ -143,9 +141,6 @@ final class ClasspathSaveSession implements StateStorage.ExternalizationSession, } } deletedContent.clear(); - } - finally { - token.finish(); - } + }); } } diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/EclipseClasspathStorageProvider.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/EclipseClasspathStorageProvider.java index 07d265c2d3a9..99ca7f75a95f 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/EclipseClasspathStorageProvider.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/EclipseClasspathStorageProvider.java @@ -15,7 +15,6 @@ */ package org.jetbrains.idea.eclipse.config; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.components.PathMacroManager; import com.intellij.openapi.module.Module; @@ -145,13 +144,7 @@ public class EclipseClasspathStorageProvider implements ClasspathStorageProvider VirtualFile root = LocalFileSystem.getInstance().findFileByPath(ModuleUtilCore.getModuleDirPath(module)); VirtualFile source = root == null ? null : root.findChild(oldName + EclipseXml.IDEA_SETTINGS_POSTFIX); if (source != null && source.isValid()) { - AccessToken token = WriteAction.start(); - try { - source.rename(this, newName + EclipseXml.IDEA_SETTINGS_POSTFIX); - } - finally { - token.finish(); - } + WriteAction.run(() -> source.rename(this, newName + EclipseXml.IDEA_SETTINGS_POSTFIX)); } DotProjectFileHelper.saveDotProjectFile(module, fileSet.getParent(EclipseXml.PROJECT_FILE)); diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseUserLibrariesHelper.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseUserLibrariesHelper.java index 53d51c798663..f5c61e1f7314 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseUserLibrariesHelper.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/conversion/EclipseUserLibrariesHelper.java @@ -20,7 +20,6 @@ */ package org.jetbrains.idea.eclipse.conversion; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.OrderRootType; @@ -98,8 +97,7 @@ public class EclipseUserLibrariesHelper { LibraryTable libraryTable = ProjectLibraryTable.getInstance(project); Element element = JDOMUtil.load(exportedFile.getInputStream()); - AccessToken token = WriteAction.start(); - try { + WriteAction.run(() -> { for (Element libElement : element.getChildren("library")) { String libName = libElement.getAttributeValue("name"); Library libraryByName = libraryTable.getLibraryByName(libName); @@ -133,9 +131,6 @@ public class EclipseUserLibrariesHelper { } unknownLibraries.remove(libName); //ignore finally found libraries } - } - finally { - token.finish(); - } + }); } } diff --git a/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseEmlTest.java b/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseEmlTest.java index f825d9aa49ca..d2e5d990aef0 100644 --- a/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseEmlTest.java +++ b/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseEmlTest.java @@ -20,7 +20,6 @@ */ package org.jetbrains.idea.eclipse; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.PluginPathManager; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.module.Module; @@ -75,26 +74,14 @@ public class EclipseEmlTest extends IdeaTestCase { } private static Module doLoadModule(@NotNull String path, @NotNull Project project) throws IOException, JDOMException, InvalidDataException { - Module module; - AccessToken token = WriteAction.start(); - try { - module = ModuleManager.getInstance(project).newModule(path + '/' + EclipseProjectFinder.findProjectName(path) + IdeaXml.IML_EXT, StdModuleTypes.JAVA.getId()); - } - finally { - token.finish(); - } + Module module = WriteAction.compute( + () -> ModuleManager.getInstance(project).newModule(path + '/' + EclipseProjectFinder.findProjectName(path) + IdeaXml.IML_EXT, StdModuleTypes.JAVA.getId())); replaceRoot(path, EclipseXml.DOT_CLASSPATH_EXT, project); ModifiableRootModel rootModel = ModuleRootManager.getInstance(module).getModifiableModel(); new EclipseClasspathConverter(module).readClasspath(rootModel); - token = WriteAction.start(); - try { - rootModel.commit(); - } - finally { - token.finish(); - } + WriteAction.run(() -> rootModel.commit()); return module; } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/CreateClassActionBase.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/CreateClassActionBase.java index 149253491f35..0eb2d1d4a94f 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/CreateClassActionBase.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/CreateClassActionBase.java @@ -17,7 +17,6 @@ package org.jetbrains.plugins.groovy.annotator.intentions; import com.intellij.codeInsight.intention.impl.CreateClassDialog; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.diagnostic.Logger; @@ -101,43 +100,40 @@ public abstract class CreateClassActionBase extends Intention { @Nullable final PsiElement contextElement, @NotNull final String templateName, boolean allowReformatting) { - AccessToken accessToken = WriteAction.start(); - - try { - GrTypeDefinition targetClass = null; + return WriteAction.compute(() -> { try { - PsiFile file = GroovyTemplatesFactory.createFromTemplate(directory, name, name + ".groovy", templateName, allowReformatting); - for (PsiElement element : file.getChildren()) { - if (element instanceof GrTypeDefinition) { - targetClass = ((GrTypeDefinition)element); - break; + GrTypeDefinition targetClass = null; + try { + PsiFile file = GroovyTemplatesFactory.createFromTemplate(directory, name, name + ".groovy", templateName, allowReformatting); + for (PsiElement element : file.getChildren()) { + if (element instanceof GrTypeDefinition) { + targetClass = ((GrTypeDefinition)element); + break; + } + } + if (targetClass == null) { + throw new IncorrectOperationException(GroovyBundle.message("no.class.in.file.template")); } } - if (targetClass == null) { - throw new IncorrectOperationException(GroovyBundle.message("no.class.in.file.template")); + catch (final IncorrectOperationException e) { + ApplicationManager.getApplication().invokeLater(() -> Messages.showErrorDialog( + GroovyBundle.message("cannot.create.class.error.text", name, e.getLocalizedMessage()), + GroovyBundle.message("cannot.create.class.error.title"))); + return null; } + PsiModifierList modifiers = targetClass.getModifierList(); + if (contextElement != null && + !JavaPsiFacade.getInstance(manager.getProject()).getResolveHelper().isAccessible(targetClass, contextElement, null) && + modifiers != null) { + modifiers.setModifierProperty(PsiModifier.PUBLIC, true); + } + return targetClass; } - catch (final IncorrectOperationException e) { - ApplicationManager.getApplication().invokeLater(() -> Messages.showErrorDialog( - GroovyBundle.message("cannot.create.class.error.text", name, e.getLocalizedMessage()), - GroovyBundle.message("cannot.create.class.error.title"))); + catch (IncorrectOperationException e) { + LOG.error(e); return null; } - PsiModifierList modifiers = targetClass.getModifierList(); - if (contextElement != null && - !JavaPsiFacade.getInstance(manager.getProject()).getResolveHelper().isAccessible(targetClass, contextElement, null) && - modifiers != null) { - modifiers.setModifierProperty(PsiModifier.PUBLIC, true); - } - return targetClass; - } - catch (IncorrectOperationException e) { - LOG.error(e); - return null; - } - finally { - accessToken.finish(); - } + }); } @Nullable diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/CreateClassFix.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/CreateClassFix.java index 366aebca89f9..fff178beb5bd 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/CreateClassFix.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/CreateClassFix.java @@ -118,8 +118,7 @@ public abstract class CreateClassFix { @NotNull PsiType[] argTypes, @NotNull GrTypeDefinition targetClass, @NotNull Project project) { - final AccessToken writeLock = WriteAction.start(); - try { + WriteAction.run(() -> { ChooseTypeExpression[] paramTypesExpressions = new ChooseTypeExpression[argTypes.length]; String[] paramTypes = new String[argTypes.length]; String[] paramNames = new String[argTypes.length]; @@ -138,10 +137,7 @@ public abstract class CreateClassFix { method = (GrMethod)targetClass.addBefore(method, null); final PsiElement context = PsiTreeUtil.getParentOfType(refElement, PsiMethod.class, PsiClass.class, PsiFile.class); IntentionUtils.createTemplateForMethod(argTypes, paramTypesExpressions, method, targetClass, TypeConstraint.EMPTY_ARRAY, true, context); - } - finally { - writeLock.finish(); - } + }); } public static IntentionAction createClassFixAction(final GrReferenceElement refElement, GrCreateClassKind type) { @@ -182,21 +178,16 @@ public abstract class CreateClassFix { return; } + if (!FileModificationService.getInstance().preparePsiElementForWrite(resolved)) return; - AccessToken lock = ApplicationManager.getApplication().acquireWriteActionLock(CreateClassFix.class); - try { - FileModificationService.getInstance().preparePsiElementForWrite(resolved); - + WriteAction.run(() -> { PsiClass added = (PsiClass)resolved.add(template); PsiModifierList modifierList = added.getModifierList(); if (modifierList != null) { modifierList.setModifierProperty(PsiModifier.STATIC, true); } IntentionUtils.positionCursor(project, added.getContainingFile(), added); - } - finally { - lock.finish(); - } + }); } @Nullable diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/GroovyStaticImportMethodFix.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/GroovyStaticImportMethodFix.java index e6562f0975f7..22e653be5ef6 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/GroovyStaticImportMethodFix.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/GroovyStaticImportMethodFix.java @@ -19,7 +19,6 @@ import com.intellij.codeInsight.FileModificationService; import com.intellij.codeInsight.completion.JavaCompletionUtil; import com.intellij.codeInsight.daemon.QuickFixBundle; import com.intellij.ide.util.MethodCellRenderer; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.diagnostic.Logger; @@ -159,24 +158,17 @@ public class GroovyStaticImportMethodFix extends Intention { } private void doImport(final PsiMethod toImport) { - CommandProcessor.getInstance().executeCommand(toImport.getProject(), () -> { - AccessToken accessToken = WriteAction.start(); - + CommandProcessor.getInstance().executeCommand(toImport.getProject(), () -> WriteAction.run(() -> { try { - try { - GrMethodCall element = myMethodCall.getElement(); - if (element != null) { - getMethodExpression(element).bindToElementViaStaticImport(toImport); - } - } - catch (IncorrectOperationException e) { - LOG.error(e); + GrMethodCall element = myMethodCall.getElement(); + if (element != null) { + getMethodExpression(element).bindToElementViaStaticImport(toImport); } } - finally { - accessToken.finish(); + catch (IncorrectOperationException e) { + LOG.error(e); } - }, getText(), this); + }), getText(), this); } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyFacetUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyFacetUtil.java index 42db1982b9ce..c0b647efc914 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyFacetUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyFacetUtil.java @@ -15,7 +15,6 @@ */ package org.jetbrains.plugins.groovy.config; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.PathManager; import com.intellij.openapi.application.PluginPathManager; import com.intellij.openapi.application.WriteAction; @@ -50,18 +49,13 @@ public class GroovyFacetUtil { GroovyBundle.message("groovy.like.library.found.text", module.getName(), library.getName(), utils.getSDKLibVersion(library)), GroovyBundle.message("groovy.like.library.found"), JetgroovyIcons.Groovy.Groovy_32x32); if (result == Messages.OK) { - AccessToken accessToken = WriteAction.start(); - - try { + WriteAction.run(() -> { ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel(); LibraryOrderEntry entry = model.addLibraryEntry(libraries[0]); LibrariesUtil.placeEntryToCorrectPlace(model, entry); model.commit(); - return true; - } - finally { - accessToken.finish(); - } + }); + return true; } } return false; diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/griffon/GriffonFramework.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/griffon/GriffonFramework.java index dd2e4870f0f1..ac8f6a29650a 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/griffon/GriffonFramework.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/griffon/GriffonFramework.java @@ -22,7 +22,6 @@ import com.intellij.execution.configurations.JavaParameters; import com.intellij.execution.configurations.ParametersList; import com.intellij.lang.properties.IProperty; import com.intellij.lang.properties.psi.PropertiesFile; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; @@ -118,18 +117,14 @@ public class GriffonFramework extends MvcFramework { final VirtualFile root = findAppRoot(module); if (root == null) return; - AccessToken token = WriteAction.start(); - try { + WriteAction.run(() -> { MvcModuleStructureUtil.updateModuleStructure(module, createProjectStructure(module, false), root); if (hasSupport(module)) { MvcModuleStructureUtil.updateAuxiliaryPluginsModuleRoots(module, this); MvcModuleStructureUtil.updateGlobalPluginModule(module.getProject(), this); } - } - finally { - token.finish(); - } + }); final Project project = module.getProject(); ChangeListManager.getInstance(project).addFilesToIgnore(IgnoredBeanFactory.ignoreUnderDirectory(getUserHomeGriffon(), project)); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/conversions/strings/ConvertConcatenationToGstringIntention.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/conversions/strings/ConvertConcatenationToGstringIntention.java index a0023c4fc109..51d8abdc0357 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/conversions/strings/ConvertConcatenationToGstringIntention.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/conversions/strings/ConvertConcatenationToGstringIntention.java @@ -145,18 +145,12 @@ public class ConvertConcatenationToGstringIntention extends Intention { final GroovyPsiElementFactory factory = GroovyPsiElementFactory.getInstance(element.getProject()); final GrExpression newExpr = factory.createExpressionFromText(GrStringUtil.addQuotes(text, true)); - CommandProcessor.getInstance().executeCommand(element.getProject(), () -> { - final AccessToken accessToken = WriteAction.start(); - try { - final GrExpression expression = ((GrExpression)element).replaceWithExpression(newExpr, true); - if (expression instanceof GrString) { - GrStringUtil.removeUnnecessaryBracesInGString((GrString)expression); - } + CommandProcessor.getInstance().executeCommand(element.getProject(), () -> WriteAction.run(() -> { + final GrExpression expression = ((GrExpression)element).replaceWithExpression(newExpr, true); + if (expression instanceof GrString) { + GrStringUtil.removeUnnecessaryBracesInGString((GrString)expression); } - finally { - accessToken.finish(); - } - }, null, null, document); + }), null, null, document); } private static boolean containsMultilineStrings(GrExpression expr) { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/GroovyImportOptimizerRefactoringHelper.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/GroovyImportOptimizerRefactoringHelper.java index 83449d508e65..a7b04cd256dd 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/GroovyImportOptimizerRefactoringHelper.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/GroovyImportOptimizerRefactoringHelper.java @@ -16,7 +16,6 @@ package org.jetbrains.plugins.groovy.refactoring; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.progress.ProgressIndicator; @@ -29,9 +28,9 @@ import com.intellij.psi.PsiFile; import com.intellij.refactoring.RefactoringHelper; import com.intellij.usageView.UsageInfo; import com.intellij.util.containers.hash.HashSet; -import org.jetbrains.plugins.groovy.lang.psi.util.GroovyImportUtil; import org.jetbrains.plugins.groovy.lang.psi.GroovyFile; import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.imports.GrImportStatement; +import org.jetbrains.plugins.groovy.lang.psi.util.GroovyImportUtil; import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil; import java.util.HashMap; @@ -86,9 +85,7 @@ public class GroovyImportOptimizerRefactoringHelper implements RefactoringHelper return; } - AccessToken accessToken = WriteAction.start(); - - try { + WriteAction.run(() -> { for (GroovyFile groovyFile : redundants.keySet()) { if (!groovyFile.isValid()) continue; final Pair, Set> pair = redundants.get(groovyFile); @@ -100,10 +97,7 @@ public class GroovyImportOptimizerRefactoringHelper implements RefactoringHelper } } } - } - finally { - accessToken.finish(); - } + }); } } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/extract/method/GroovyExtractMethodHandler.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/extract/method/GroovyExtractMethodHandler.java index 0c3c729d8ca3..12f7355ee561 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/extract/method/GroovyExtractMethodHandler.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/extract/method/GroovyExtractMethodHandler.java @@ -17,8 +17,8 @@ package org.jetbrains.plugins.groovy.refactoring.extract.method; import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; @@ -194,8 +194,7 @@ public class GroovyExtractMethodHandler implements RefactoringActionHandler { if (helper == null) return; CommandProcessor.getInstance().executeCommand(helper.getProject(), () -> { - final AccessToken lock = ApplicationManager.getApplication().acquireWriteActionLock(GroovyExtractMethodHandler.class); - try { + WriteAction.run(() -> { createMethod(helper, owner); GrStatementOwner declarationOwner = helper.getStringPartInfo() == null ? GroovyRefactoringUtil.getDeclarationOwner(helper.getStatements()[0]) : null; @@ -207,10 +206,7 @@ public class GroovyExtractMethodHandler implements RefactoringActionHandler { editor.getSelectionModel().removeSelection(); editor.getCaretModel().moveToOffset(ExtractUtil.getCaretOffset(realStatement)); } - } - finally { - lock.finish(); - } + }); }, REFACTORING_NAME, null); } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/constant/GrIntroduceConstantDialog.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/constant/GrIntroduceConstantDialog.java index e11bf85bfa5c..32bf0845775a 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/constant/GrIntroduceConstantDialog.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/constant/GrIntroduceConstantDialog.java @@ -16,8 +16,7 @@ package org.jetbrains.plugins.groovy.refactoring.introduce.constant; import com.intellij.ide.util.*; -import com.intellij.openapi.application.AccessToken; -import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.event.DocumentAdapter; import com.intellij.openapi.editor.event.DocumentEvent; @@ -437,15 +436,11 @@ public class GrIntroduceConstantDialog extends DialogWrapper if (psiDirectory == null) return null; final String shortName = StringUtil.getShortName(qualifiedName); final String fileName = shortName + NewGroovyActionBase.GROOVY_EXTENSION; - final AccessToken lock = ApplicationManager.getApplication().acquireWriteActionLock(GrIntroduceConstantDialog.class); - try { + return WriteAction.compute(() -> { final GroovyFile file = (GroovyFile)GroovyTemplatesFactory.createFromTemplate(psiDirectory, shortName, fileName, GroovyTemplates.GROOVY_CLASS, true); return file.getTypeDefinitions()[0]; - } - finally { - lock.finish(); - } + }); } } } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/parameter/GrIntroduceParameterDialog.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/parameter/GrIntroduceParameterDialog.java index 4d48d3a22cfc..b85f474593b2 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/parameter/GrIntroduceParameterDialog.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/parameter/GrIntroduceParameterDialog.java @@ -15,7 +15,6 @@ */ package org.jetbrains.plugins.groovy.refactoring.introduce.parameter; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; @@ -340,15 +339,7 @@ public class GrIntroduceParameterDialog extends DialogWrapper { final ExtractClosureHelperImpl mockHelper = new ExtractClosureHelperImpl(myInfo, "__test___n_", false, new TIntArrayList(), false, IntroduceParameterRefactoring.REPLACE_FIELDS_WITH_GETTERS_NONE, false, false, false); - final PsiType returnType; - final AccessToken token = WriteAction.start(); - try { - returnType = ExtractClosureProcessorBase.generateClosure(mockHelper).getReturnType(); - } - finally { - token.finish(); - } - return returnType; + return WriteAction.compute(() -> ExtractClosureProcessorBase.generateClosure(mockHelper).getReturnType()); } private NameSuggestionsField createNameField(GrVariable var) { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/testIntegration/GroovyTestGenerator.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/testIntegration/GroovyTestGenerator.java index 0fc1c9b3f57b..759d8d63ae5e 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/testIntegration/GroovyTestGenerator.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/testIntegration/GroovyTestGenerator.java @@ -17,7 +17,6 @@ package org.jetbrains.plugins.groovy.testIntegration; import com.intellij.codeInsight.CodeInsightBundle; import com.intellij.codeInsight.CodeInsightUtil; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.editor.Editor; @@ -58,8 +57,7 @@ public class GroovyTestGenerator implements TestGenerator { @Nullable @Override public PsiElement generateTest(final Project project, final CreateTestDialog d) { - AccessToken accessToken = WriteAction.start(); - try { + return WriteAction.compute(() -> { final PsiClass test = (PsiClass)PostprocessReformattingAspect.getInstance(project).postponeFormattingInside( (Computable)() -> { try { @@ -93,10 +91,7 @@ public class GroovyTestGenerator implements TestGenerator { JavaCodeStyleManager.getInstance(test.getProject()).shortenClassReferences(test); CodeStyleManager.getInstance(project).reformat(test); return test; - } - finally { - accessToken.finish(); - } + }); } @Override diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/surroundWith/SurrounderOrderTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/surroundWith/SurrounderOrderTest.groovy index afc8cd55aafb..2c728bbc7dc6 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/surroundWith/SurrounderOrderTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/surroundWith/SurrounderOrderTest.groovy @@ -104,9 +104,7 @@ println c /*also important */ private List getSurrounders(final String fileText) { myFixture.configureByText("a.groovy", fileText) - def token = WriteAction.start() - - try { + WriteAction.compute { def actions = SurroundWithHandler.buildSurroundActions(project, myFixture.editor, myFixture.file, null) def names = [] for (action in actions) { @@ -119,8 +117,5 @@ println c /*also important */ } return names } - finally { - token.finish() - } } } \ No newline at end of file diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/introduce/field/GrIntroduceFieldTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/introduce/field/GrIntroduceFieldTest.groovy index b3e9aa698687..e8786a904721 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/introduce/field/GrIntroduceFieldTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/introduce/field/GrIntroduceFieldTest.groovy @@ -668,15 +668,11 @@ println(a + b) private void performRefactoring(String selectedType, boolean isStatic, boolean removeLocal, boolean declareFinal, GrIntroduceFieldSettings.Init initIn, boolean replaceAll) { final PsiType type = selectedType == null ? null : JavaPsiFacade.getElementFactory(project).createTypeFromText(selectedType, myFixture.file) - def accessToken = WriteAction.start() - try { + WriteAction.run { final IntroduceFieldTestHandler handler = new IntroduceFieldTestHandler(isStatic, removeLocal, declareFinal, initIn, replaceAll, type) handler.invoke(project, myFixture.editor, myFixture.file, null) PostprocessReformattingAspect.getInstance(project).doPostponedFormatting() } - finally { - accessToken.finish() - } } private void doTestInitInTarget(String text, EnumSet expected = EnumSet.noneOf(Init), ReplaceChoice replaceChoice = ALL) { diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/JavaCreatePropertyFix.java b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/JavaCreatePropertyFix.java index ef1dfcd4c197..54c294bfab5b 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/JavaCreatePropertyFix.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/JavaCreatePropertyFix.java @@ -19,8 +19,7 @@ import com.intellij.lang.properties.psi.PropertiesFile; import com.intellij.lang.properties.references.CreatePropertyFix; import com.intellij.lang.properties.references.I18nizeQuickFixDialog; import com.intellij.lang.properties.references.I18nizeQuickFixModel; -import com.intellij.openapi.application.AccessToken; -import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Couple; @@ -55,17 +54,15 @@ public class JavaCreatePropertyFix extends CreatePropertyFix { StringUtil.escapeStringCharacters(key.length(), key, buffer); buffer.append('"'); - final AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(JavaCreatePropertyFix.class); try { - final PsiExpression newKeyLiteral = JavaPsiFacade.getElementFactory(project).createExpressionFromText(buffer.toString(), null); - psiElement.replace(newKeyLiteral); + WriteAction.run(() -> { + final PsiExpression newKeyLiteral = JavaPsiFacade.getElementFactory(project).createExpressionFromText(buffer.toString(), null); + psiElement.replace(newKeyLiteral); + }); } catch (IncorrectOperationException e) { LOG.error(e); } - finally { - token.finish(); - } } return result; } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenFoldersImporter.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenFoldersImporter.java index 284cc0c6e5d5..3495ba6c6074 100755 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenFoldersImporter.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenFoldersImporter.java @@ -29,7 +29,6 @@ import com.intellij.openapi.roots.impl.ModifiableModelCommitter; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.util.ArrayUtil; -import com.intellij.util.PairConsumer; import com.intellij.util.containers.LinkedMultiMap; import com.intellij.util.containers.MultiMap; import org.jdom.Element; @@ -58,8 +57,7 @@ public class MavenFoldersImporter { final MavenProjectsManager manager = MavenProjectsManager.getInstance(project); final MavenImportingSettings settings = manager.getImportingSettings(); - AccessToken accessToken = WriteAction.start(); - try { + WriteAction.run(() -> { List rootModels = new ArrayList<>(); for (Module each : ModuleManager.getInstance(project).getModules()) { MavenProject mavenProject = manager.findProject(each); @@ -83,10 +81,7 @@ public class MavenFoldersImporter { ModifiableModelCommitter.multiCommit(modelsArray, ModuleManager.getInstance(modelsArray[0].getProject()).getModifiableModel()); } } - } - finally { - accessToken.finish(); - } + }); } public MavenFoldersImporter(MavenProject mavenProject, MavenImportingSettings settings, MavenRootModelAdapter model) { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsProcessorArtifactsDownloadingTask.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsProcessorArtifactsDownloadingTask.java index e2fe324f583d..90cd5a78c014 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsProcessorArtifactsDownloadingTask.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsProcessorArtifactsDownloadingTask.java @@ -15,7 +15,6 @@ */ package org.jetbrains.idea.maven.project; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ex.ProjectRootManagerEx; @@ -57,14 +56,7 @@ public class MavenProjectsProcessorArtifactsDownloadingTask implements MavenProj if (myCallbackResult != null) myCallbackResult.setDone(result); // todo: hack to update all file pointers. - MavenUtil.invokeLater(project, () -> { - AccessToken accessToken = WriteAction.start(); - try { - ProjectRootManagerEx.getInstanceEx(project).makeRootsChange(EmptyRunnable.getInstance(), false, true); - } - finally { - accessToken.finish(); - } - }); + MavenUtil.invokeLater(project, () -> WriteAction.run( + () -> ProjectRootManagerEx.getInstanceEx(project).makeRootsChange(EmptyRunnable.getInstance(), false, true))); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryAttachHandler.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryAttachHandler.java index 3be48a8ceb8e..6f90373382bb 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryAttachHandler.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryAttachHandler.java @@ -19,7 +19,6 @@ import com.intellij.CommonBundle; import com.intellij.notification.Notification; import com.intellij.notification.NotificationType; import com.intellij.notification.Notifications; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.progress.ProgressIndicator; @@ -35,7 +34,6 @@ import com.intellij.openapi.roots.libraries.ui.OrderRoot; import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryEditor; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.io.FileUtil; @@ -43,7 +41,6 @@ import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; -import com.intellij.util.Function; import com.intellij.util.PairProcessor; import com.intellij.util.Processor; import com.intellij.util.SmartList; @@ -143,14 +140,10 @@ public class RepositoryAttachHandler { final Ref> result = Ref.create(null); doResolveInner(project, getMavenId(coord), extraTypes, repositories, artifacts -> { if (!artifacts.isEmpty()) { - AccessToken accessToken = WriteAction.start(); - try { + WriteAction.run(() -> { final List roots = createRoots(artifacts, copyTo); result.set(roots); - } - finally { - accessToken.finish(); - } + }); } return true; }, indicator); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryUtils.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryUtils.java index 78ee12a44662..0fda1567c0a5 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryUtils.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryUtils.java @@ -33,7 +33,6 @@ import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.JarFileSystem; -import com.intellij.util.Function; import com.intellij.util.PathUtil; import com.intellij.util.containers.JBIterable; import org.jetbrains.annotations.NotNull; @@ -146,18 +145,14 @@ public class RepositoryUtils { if (library.isDisposed()) { return; } - AccessToken token = WriteAction.start(); - try { + WriteAction.run(() -> { final NewLibraryEditor editor = new NewLibraryEditor(null, properties); editor.removeAllRoots(); editor.addRoots(roots); final Library.ModifiableModel model = library.getModifiableModel(); editor.applyTo((LibraryEx.ModifiableModelEx)model); model.commit(); - } - finally { - token.finish(); - } + }); }); } } diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/compiler/ResourceCopyingTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/compiler/ResourceCopyingTest.java index 1684caafd020..971684b0eea3 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/compiler/ResourceCopyingTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/compiler/ResourceCopyingTest.java @@ -535,16 +535,12 @@ public class ResourceCopyingTest extends MavenCompilingTestCase { } private void setModulesOutput(final VirtualFile output, final String... moduleNames) { - AccessToken accessToken = WriteAction.start(); - try { + WriteAction.run(() -> { for (String each : moduleNames) { PsiTestUtil.setCompilerOutputPath(getModule(each), output.getUrl(), false); PsiTestUtil.setCompilerOutputPath(getModule(each), output.getUrl(), true); } - } - finally { - accessToken.finish(); - } + }); } public void testWebResources() throws Exception { diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/execution/MavenResolveToWorkspaceTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/execution/MavenResolveToWorkspaceTest.java index 4cf5b79a615b..22fdc8ef40b3 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/execution/MavenResolveToWorkspaceTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/execution/MavenResolveToWorkspaceTest.java @@ -16,7 +16,6 @@ package org.jetbrains.idea.maven.execution; import com.intellij.execution.configurations.JavaParameters; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.vfs.VirtualFile; @@ -80,13 +79,7 @@ public abstract class MavenResolveToWorkspaceTest extends MavenImportingTestCase //assertModules("project", "moduleA", "moduleB"); - AccessToken accessToken = WriteAction.start(); - try { - ProjectRootManager.getInstance(myProject).setProjectSdk(createJdk("Java 1.5")); - } - finally { - accessToken.finish(); - } + WriteAction.run(() -> ProjectRootManager.getInstance(myProject).setProjectSdk(createJdk("Java 1.5"))); MavenRunnerParameters runnerParameters = new MavenRunnerParameters(moduleB.getParent().getPath(), false, Collections.singletonList("jetty:run"), Collections.emptyMap()); runnerParameters.setResolveToWorkspace(true); diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/DependenciesImportingTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/DependenciesImportingTest.java index 4eca62f78c4c..3f0e25b18760 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/DependenciesImportingTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/DependenciesImportingTest.java @@ -15,7 +15,6 @@ */ package org.jetbrains.idea.maven.importing; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.Result; import com.intellij.openapi.application.WriteAction; @@ -2080,13 +2079,7 @@ public class DependenciesImportingTest extends MavenImportingTestCase { } private Library createProjectLibrary(final String libraryName) { - AccessToken accessToken = WriteAction.start(); - try { - return ProjectLibraryTable.getInstance(myProject).createLibrary(libraryName); - } - finally { - accessToken.finish(); - } + return WriteAction.compute(() -> ProjectLibraryTable.getInstance(myProject).createLibrary(libraryName)); } private void createAndAddProjectLibrary(final String moduleName, final String libraryName) { diff --git a/python/src/com/jetbrains/python/refactoring/introduce/field/PyIntroduceFieldHandler.java b/python/src/com/jetbrains/python/refactoring/introduce/field/PyIntroduceFieldHandler.java index 85db15dea8e7..6b86a17dfadd 100644 --- a/python/src/com/jetbrains/python/refactoring/introduce/field/PyIntroduceFieldHandler.java +++ b/python/src/com/jetbrains/python/refactoring/introduce/field/PyIntroduceFieldHandler.java @@ -17,8 +17,7 @@ package com.jetbrains.python.refactoring.introduce.field; import com.intellij.lang.ASTNode; import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.application.AccessToken; -import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.editor.CaretModel; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; @@ -359,8 +358,7 @@ public class PyIntroduceFieldHandler extends IntroduceHandler { @Override protected void moveOffsetAfter(boolean success) { if (success && (myPanel != null && myPanel.getInitPlace() != InitPlace.SAME_METHOD) || myOperation.getInplaceInitPlace() != InitPlace.SAME_METHOD) { - final AccessToken accessToken = ApplicationManager.getApplication().acquireWriteActionLock(getClass()); - try { + WriteAction.run(() -> { final PyAssignmentStatement initializer = PsiTreeUtil.getParentOfType(myTarget, PyAssignmentStatement.class); assert initializer != null; final Function callback = FunctionUtil.constant(initializer); @@ -381,10 +379,7 @@ public class PyIntroduceFieldHandler extends IntroduceHandler { initializer.replace(copy); } initializer.delete(); - } - finally { - accessToken.finish(); - } + }); } } } diff --git a/xml/impl/src/com/intellij/codeInsight/daemon/impl/quickfix/FetchExtResourceAction.java b/xml/impl/src/com/intellij/codeInsight/daemon/impl/quickfix/FetchExtResourceAction.java index 0d72b4a7190c..6b4d8ab16495 100644 --- a/xml/impl/src/com/intellij/codeInsight/daemon/impl/quickfix/FetchExtResourceAction.java +++ b/xml/impl/src/com/intellij/codeInsight/daemon/impl/quickfix/FetchExtResourceAction.java @@ -17,9 +17,9 @@ package com.intellij.codeInsight.daemon.impl.quickfix; import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer; import com.intellij.javaee.ExternalResourceManager; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.PathManager; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.fileTypes.FileTypeManager; @@ -184,16 +184,11 @@ public class FetchExtResourceAction extends BaseExtResourceAction implements Wat final PsiManager psiManager = PsiManager.getInstance(project); ApplicationManager.getApplication().invokeAndWait(() -> { - @SuppressWarnings("deprecation") - final AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(FetchExtResourceAction.class); - try { + WriteAction.run(() -> { final String path = FileUtil.toSystemIndependentName(extResources.getAbsolutePath()); final VirtualFile vFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(path); LOG.assertTrue(vFile != null, path); - } - finally { - token.finish(); - } + }); }); final List downloadedResources = new LinkedList<>(); diff --git a/xml/tests/src/com/intellij/codeInsight/XmlXIncludeTest.groovy b/xml/tests/src/com/intellij/codeInsight/XmlXIncludeTest.groovy index fd4c17e46b9d..5bba43bbf091 100644 --- a/xml/tests/src/com/intellij/codeInsight/XmlXIncludeTest.groovy +++ b/xml/tests/src/com/intellij/codeInsight/XmlXIncludeTest.groovy @@ -108,13 +108,9 @@ class XmlXIncludeTest extends LightCodeInsightFixtureTestCase { } private changeText(VirtualFile inc1, String s) { - def token = WriteAction.start() - try { + WriteAction.run { FileDocumentManager.instance.getDocument(inc1).setText s PsiDocumentManager.getInstance(project).commitAllDocuments() } - finally { - token.finish() - } } }