From d3f07553b456e5d1f07b8d6d434cab5ffbb90eaa Mon Sep 17 00:00:00 2001 From: Nadya Zabrodina Date: Fri, 23 Sep 2016 16:25:56 +0300 Subject: [PATCH] [vcs]: add annotations to avoid wrong thread external usages * getting current repo based on getting current editor->calledInAwt --- platform/dvcs-impl/src/com/intellij/dvcs/DvcsUtil.java | 3 +++ .../dvcs-impl/src/com/intellij/dvcs/ui/DvcsStatusWidget.java | 1 + plugins/git4idea/src/git4idea/actions/GitRepositoryAction.java | 3 +++ plugins/git4idea/src/git4idea/branch/GitBranchUtil.java | 2 ++ plugins/git4idea/src/git4idea/ui/branch/GitBranchWidget.java | 2 ++ plugins/hg4idea/src/org/zmlx/hg4idea/action/HgActionUtil.java | 2 ++ .../src/org/zmlx/hg4idea/action/HgProcessStateAction.java | 2 ++ .../hg4idea/src/org/zmlx/hg4idea/status/ui/HgStatusWidget.java | 2 ++ plugins/hg4idea/src/org/zmlx/hg4idea/util/HgUtil.java | 2 ++ 9 files changed, 19 insertions(+) diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/DvcsUtil.java b/platform/dvcs-impl/src/com/intellij/dvcs/DvcsUtil.java index ea4dcee737ac..483727401eb0 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/DvcsUtil.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/DvcsUtil.java @@ -60,6 +60,7 @@ import com.intellij.vcs.log.VcsFullCommitDetails; import com.intellij.vcsUtil.VcsImplUtil; import com.intellij.vcsUtil.VcsUtil; import org.intellij.images.editor.ImageFileEditor; +import org.jetbrains.annotations.CalledInAwt; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -165,6 +166,7 @@ public class DvcsUtil { * Returns the currently selected file, based on which VcsBranch or StatusBar components will identify the current repository root. */ @Nullable + @CalledInAwt public static VirtualFile getSelectedFile(@NotNull Project project) { StatusBar statusBar = WindowManager.getInstance().getStatusBar(project); final FileEditor fileEditor = StatusBarUtil.getCurrentFileEditor(project, statusBar); @@ -328,6 +330,7 @@ public class DvcsUtil { } @Nullable + @CalledInAwt public static T guessCurrentRepositoryQuick(@NotNull Project project, @NotNull AbstractRepositoryManager manager, @Nullable String defaultRootPathValue) { diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/ui/DvcsStatusWidget.java b/platform/dvcs-impl/src/com/intellij/dvcs/ui/DvcsStatusWidget.java index 6c9eaceb8b79..2368f86a7302 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/ui/DvcsStatusWidget.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/ui/DvcsStatusWidget.java @@ -185,6 +185,7 @@ public abstract class DvcsStatusWidget extends EditorBased } @Nullable + @CalledInAwt private String getToolTip(@NotNull Project project) { T currentRepository = guessCurrentRepository(project); if (currentRepository == null) return null; diff --git a/plugins/git4idea/src/git4idea/actions/GitRepositoryAction.java b/plugins/git4idea/src/git4idea/actions/GitRepositoryAction.java index a02b27bcd542..220531f553f7 100644 --- a/plugins/git4idea/src/git4idea/actions/GitRepositoryAction.java +++ b/plugins/git4idea/src/git4idea/actions/GitRepositoryAction.java @@ -37,6 +37,7 @@ import git4idea.branch.GitBranchUtil; import git4idea.i18n.GitBundle; import git4idea.repo.GitRepository; import git4idea.repo.GitRepositoryManager; +import org.jetbrains.annotations.CalledInAwt; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -80,6 +81,7 @@ public abstract class GitRepositoryAction extends DumbAwareAction { } @NotNull + @CalledInAwt private static VirtualFile getDefaultRoot(@NotNull Project project, @NotNull List roots, @Nullable VirtualFile[] vFiles) { if (vFiles != null) { for (VirtualFile file : vFiles) { @@ -120,6 +122,7 @@ public abstract class GitRepositoryAction extends DumbAwareAction { return true; } + @CalledInAwt protected static boolean isRebasing(AnActionEvent e) { final Project project = e.getData(CommonDataKeys.PROJECT); if (project != null) { diff --git a/plugins/git4idea/src/git4idea/branch/GitBranchUtil.java b/plugins/git4idea/src/git4idea/branch/GitBranchUtil.java index aabee79e1bb5..1fd3c9a03305 100644 --- a/plugins/git4idea/src/git4idea/branch/GitBranchUtil.java +++ b/plugins/git4idea/src/git4idea/branch/GitBranchUtil.java @@ -38,6 +38,7 @@ import git4idea.repo.GitRemote; import git4idea.repo.GitRepository; import git4idea.ui.branch.GitMultiRootBranchConfig; import git4idea.validators.GitNewBranchNameValidator; +import org.jetbrains.annotations.CalledInAwt; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -319,6 +320,7 @@ public class GitBranchUtil { * or if the current Git root couldn't be determined. */ @Nullable + @CalledInAwt public static GitRepository getCurrentRepository(@NotNull Project project) { return getRepositoryOrGuess(project, DvcsUtil.getSelectedFile(project)); } diff --git a/plugins/git4idea/src/git4idea/ui/branch/GitBranchWidget.java b/plugins/git4idea/src/git4idea/ui/branch/GitBranchWidget.java index f263655b3e81..e8350ba14caa 100644 --- a/plugins/git4idea/src/git4idea/ui/branch/GitBranchWidget.java +++ b/plugins/git4idea/src/git4idea/ui/branch/GitBranchWidget.java @@ -26,6 +26,7 @@ import git4idea.branch.GitBranchUtil; import git4idea.config.GitVcsSettings; import git4idea.repo.GitRepository; import git4idea.repo.GitRepositoryChangeListener; +import org.jetbrains.annotations.CalledInAwt; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -47,6 +48,7 @@ public class GitBranchWidget extends DvcsStatusWidget { @Nullable @Override + @CalledInAwt protected GitRepository guessCurrentRepository(@NotNull Project project) { return DvcsUtil.guessCurrentRepositoryQuick(project, GitUtil.getRepositoryManager(project), mySettings.getRecentRootPath()); } diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgActionUtil.java b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgActionUtil.java index 627c88898bb6..3fdd52207c8c 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgActionUtil.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgActionUtil.java @@ -22,6 +22,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.CalledInAwt; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.zmlx.hg4idea.repo.HgRepository; @@ -45,6 +46,7 @@ public class HgActionUtil { } @Nullable + @CalledInAwt public static HgRepository getSelectedRepositoryFromEvent(AnActionEvent e) { final DataContext dataContext = e.getDataContext(); final Project project = CommonDataKeys.PROJECT.getData(dataContext); diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgProcessStateAction.java b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgProcessStateAction.java index 8ec77382a3af..623946ef1c3c 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgProcessStateAction.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/action/HgProcessStateAction.java @@ -17,6 +17,7 @@ package org.zmlx.hg4idea.action; import com.intellij.dvcs.repo.Repository; import com.intellij.openapi.actionSystem.AnActionEvent; +import org.jetbrains.annotations.CalledInAwt; import org.zmlx.hg4idea.repo.HgRepository; public abstract class HgProcessStateAction extends HgAbstractGlobalSingleRepoAction { @@ -26,6 +27,7 @@ public abstract class HgProcessStateAction extends HgAbstractGlobalSingleRepoAct myState = state; } + @CalledInAwt protected boolean isRebasing(AnActionEvent e) { HgRepository repository = HgActionUtil.getSelectedRepositoryFromEvent(e); return repository != null && repository.getState() == myState; diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/status/ui/HgStatusWidget.java b/plugins/hg4idea/src/org/zmlx/hg4idea/status/ui/HgStatusWidget.java index e827d91dccc8..970eff482291 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/status/ui/HgStatusWidget.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/status/ui/HgStatusWidget.java @@ -22,6 +22,7 @@ import com.intellij.openapi.ui.popup.ListPopup; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.StatusBarWidget; import com.intellij.util.ObjectUtils; +import org.jetbrains.annotations.CalledInAwt; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.zmlx.hg4idea.HgProjectSettings; @@ -52,6 +53,7 @@ public class HgStatusWidget extends DvcsStatusWidget { @Nullable @Override + @CalledInAwt protected HgRepository guessCurrentRepository(@NotNull Project project) { return DvcsUtil.guessCurrentRepositoryQuick(project, HgUtil.getRepositoryManager(project), HgProjectSettings.getInstance(project).getRecentRootPath()); diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/util/HgUtil.java b/plugins/hg4idea/src/org/zmlx/hg4idea/util/HgUtil.java index a117fcd7414b..e455e7769fd1 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/util/HgUtil.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/util/HgUtil.java @@ -44,6 +44,7 @@ import com.intellij.ui.GuiUtils; import com.intellij.util.ArrayUtil; import com.intellij.util.containers.ContainerUtil; import com.intellij.vcsUtil.VcsUtil; +import org.jetbrains.annotations.CalledInAwt; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.zmlx.hg4idea.*; @@ -498,6 +499,7 @@ public abstract class HgUtil { } @Nullable + @CalledInAwt public static HgRepository getCurrentRepository(@NotNull Project project) { if (project.isDisposed()) return null; return DvcsUtil.guessRepositoryForFile(project, getRepositoryManager(project),