diff --git a/platform/platform-impl/src/com/intellij/ide/passwordSafe/PasswordStorage.java b/platform/platform-impl/src/com/intellij/ide/passwordSafe/PasswordStorage.java index e5b9f1530256..b1ea1332986e 100644 --- a/platform/platform-impl/src/com/intellij/ide/passwordSafe/PasswordStorage.java +++ b/platform/platform-impl/src/com/intellij/ide/passwordSafe/PasswordStorage.java @@ -25,21 +25,15 @@ import org.jetbrains.annotations.Nullable; * The interface defines basic password management operations */ public interface PasswordStorage { - /** - * @deprecated To remove in IDEA 15. Use {@link #getPassword(Project, Class, String, ModalityState)} - */ - @Deprecated - @Nullable - String getPassword(@Nullable Project project, @NotNull Class requestor, String key) throws PasswordSafeException; - - /** - * Get password stored in a password safe. - *

- * The method may be called from any thread. It may need to show a master password dialog to unlock the password database, - * and then will use {@link Application#invokeAndWait(Runnable, ModalityState) invokeAndWait()}. - * So make sure to pass correct {@link ModalityState} to the method to make sure the dialog is shown above all other dialog or progress - * windows. + *

Get password stored in a password safe.

+ * + *

NB: + * This method may be called from the background, + * and it may need to ask user to enter the master password to access the database by calling + * {@link Application#invokeAndWait(Runnable, ModalityState) invokeAndWait()} to show a modal dialog. + * So make sure not to call it from the read action. + * Calling this method from the dispatch thread is allowed.

* * @param project the project, that is used to ask for the master password if this is the first access to password safe * @param requestor the requestor class @@ -49,45 +43,9 @@ public interface PasswordStorage { * @throws IllegalStateException if the method is called from the read action. */ @Nullable - String getPassword(@Nullable Project project, @NotNull Class requestor, String key, - @Nullable ModalityState state) throws PasswordSafeException; - - /** - * Store password in password safe - *

- * The method may be called from any thread. It may need to show a master password dialog to unlock the password database, - * and then will use {@link Application#invokeAndWait(Runnable, ModalityState) invokeAndWait()}. - * So make sure to pass correct {@link ModalityState} to the method to make sure the dialog is shown above all other dialog or progress - * windows. - * - * @param project the project, that is used to ask for the master password if this is the first access to password safe - * @param requestor the requestor class - * @param key the key for the password - * @param value the value to store - * @throws PasswordSafeException if password safe cannot be accessed - */ - void storePassword(@Nullable Project project, @NotNull Class requestor, String key, String value, - @Nullable ModalityState modalityState) throws PasswordSafeException; - - /** - * @deprecated To remove in IDEA 15. Use {@link #storePassword(Project, Class, String, String, ModalityState)} - */ - @Deprecated - void storePassword(@Nullable Project project, @NotNull Class requestor, String key, String value) throws PasswordSafeException; - - /** - * @deprecated To remove in IDEA 15. Use {@link #removePassword(Project, Class, String, ModalityState)} - */ - @Deprecated - void removePassword(@Nullable Project project, @NotNull Class requestor, String key) throws PasswordSafeException; - + String getPassword(@Nullable Project project, @NotNull Class requestor, String key) throws PasswordSafeException; /** * Remove password stored in a password safe - *

- * The method may be called from any thread. It may need to show a master password dialog to unlock the password database, - * and then will use {@link Application#invokeAndWait(Runnable, ModalityState) invokeAndWait()}. - * So make sure to pass correct {@link ModalityState} to the method to make sure the dialog is shown above all other dialog or progress - * windows. * * @param project the project, that is used to ask for the master password if this is the first access to password safe * @param requestor the requestor class @@ -95,7 +53,15 @@ public interface PasswordStorage { * @return the plugin key * @throws PasswordSafeException if password safe cannot be accessed */ - void removePassword(@Nullable Project project, @NotNull Class requestor, String key, - @Nullable ModalityState modalityState) throws PasswordSafeException; - + void removePassword(@Nullable Project project, @NotNull Class requestor, String key) throws PasswordSafeException; + /** + * Store password in password safe + * + * @param project the project, that is used to ask for the master password if this is the first access to password safe + * @param requestor the requestor class + * @param key the key for the password + * @param value the value to store + * @throws PasswordSafeException if password safe cannot be accessed + */ + void storePassword(@Nullable Project project, @NotNull Class requestor, String key, String value) throws PasswordSafeException; } diff --git a/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/PasswordSafeImpl.java b/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/PasswordSafeImpl.java index 34aee7aaad38..6d5127b376ad 100644 --- a/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/PasswordSafeImpl.java +++ b/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/PasswordSafeImpl.java @@ -22,7 +22,6 @@ import com.intellij.ide.passwordSafe.impl.providers.masterKey.MasterKeyPasswordS import com.intellij.ide.passwordSafe.impl.providers.masterKey.PasswordDatabase; import com.intellij.ide.passwordSafe.impl.providers.memory.MemoryPasswordSafe; import com.intellij.ide.passwordSafe.impl.providers.nil.NilProvider; -import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; @@ -71,19 +70,11 @@ public class PasswordSafeImpl extends PasswordSafe { } @Nullable - @Override public String getPassword(@Nullable Project project, @NotNull Class requester, String key) throws PasswordSafeException { - return getPassword(project, requester, key, null); - } - - @Nullable - @Override - public String getPassword(@Nullable Project project, @NotNull Class requester, String key, - @Nullable ModalityState modalityState) throws PasswordSafeException { if (mySettings.getProviderType().equals(PasswordSafeSettings.ProviderType.MASTER_PASSWORD)) { - String password = getMemoryProvider().getPassword(project, requester, key, modalityState); + String password = getMemoryProvider().getPassword(project, requester, key); if (password == null) { - password = provider().getPassword(project, requester, key, modalityState); + password = provider().getPassword(project, requester, key); if (password != null) { // cache the password in memory as well for easier access during the session getMemoryProvider().storePassword(project, requester, key, password); @@ -91,35 +82,21 @@ public class PasswordSafeImpl extends PasswordSafe { } return password; } - return provider().getPassword(project, requester, key, modalityState); + return provider().getPassword(project, requester, key); } - @Override - public void removePassword(@Nullable Project project, @NotNull Class requestor, String key) throws PasswordSafeException { - removePassword(project, requestor, key, null); - } - - @Override - public void removePassword(@Nullable Project project, @NotNull Class requester, String key, - @Nullable ModalityState modalityState) throws PasswordSafeException { + public void removePassword(@Nullable Project project, @NotNull Class requester, String key) throws PasswordSafeException { if (mySettings.getProviderType().equals(PasswordSafeSettings.ProviderType.MASTER_PASSWORD)) { getMemoryProvider().removePassword(project, requester, key); } - provider().removePassword(project, requester, key, modalityState); + provider().removePassword(project, requester, key); } - @Override - public void storePassword(@Nullable Project project, @NotNull Class requestor, String key, String value) throws PasswordSafeException { - storePassword(project, requestor, key, value, null); - } - - @Override - public void storePassword(@Nullable Project project, @NotNull Class requester, String key, String value, - @Nullable ModalityState modalityState) throws PasswordSafeException { + public void storePassword(@Nullable Project project, @NotNull Class requester, String key, String value) throws PasswordSafeException { if (mySettings.getProviderType().equals(PasswordSafeSettings.ProviderType.MASTER_PASSWORD)) { getMemoryProvider().storePassword(project, requester, key, value); } - provider().storePassword(project, requester, key, value, modalityState); + provider().storePassword(project, requester, key, value); } /** diff --git a/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/PasswordSafeProvider.java b/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/PasswordSafeProvider.java index 3a40d617e99b..18dee7c755f5 100644 --- a/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/PasswordSafeProvider.java +++ b/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/PasswordSafeProvider.java @@ -15,11 +15,7 @@ */ package com.intellij.ide.passwordSafe.impl; -import com.intellij.ide.passwordSafe.PasswordSafeException; import com.intellij.ide.passwordSafe.PasswordStorage; -import com.intellij.openapi.project.Project; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * The provider for password safe component @@ -38,21 +34,4 @@ public abstract class PasswordSafeProvider implements PasswordStorage { * @return the name of provider */ public abstract String getName(); - - @Nullable - @Override - public String getPassword(@Nullable Project project, @NotNull Class requestor, String key) throws PasswordSafeException { - return getPassword(project, requestor, key, null); - } - - @Override - public void storePassword(@Nullable Project project, @NotNull Class requestor, String key, String value) throws PasswordSafeException { - storePassword(project, requestor, key, value, null); - } - - @Override - public void removePassword(@Nullable Project project, @NotNull Class requestor, String key) throws PasswordSafeException { - removePassword(project, requestor, key, null); - } - } diff --git a/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/BasePasswordSafeProvider.java b/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/BasePasswordSafeProvider.java index 8c8f921f18b8..a0b001824d90 100644 --- a/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/BasePasswordSafeProvider.java +++ b/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/BasePasswordSafeProvider.java @@ -43,15 +43,13 @@ public abstract class BasePasswordSafeProvider extends PasswordSafeProvider { * @throws PasswordSafeException in case of problems with access to the password database. * @throws IllegalStateException if the method is called from the read action. */ - protected abstract byte[] key(@Nullable Project project, @NotNull Class requestor, - @Nullable ModalityState modalityState) throws PasswordSafeException; + protected abstract byte[] key(@Nullable Project project, @NotNull Class requestor) throws PasswordSafeException; @Nullable - public String getPassword(@Nullable Project project, @NotNull Class requestor, String key, - @Nullable ModalityState modalityState) throws PasswordSafeException { - byte[] k = dbKey(project, requestor, key, modalityState); + public String getPassword(@Nullable Project project, @NotNull Class requestor, String key) throws PasswordSafeException { + byte[] k = dbKey(project, requestor, key); byte[] ct = getEncryptedPassword(k); - return ct == null ? null : EncryptionUtil.decryptText(key(project, requestor, modalityState), ct); + return ct == null ? null : EncryptionUtil.decryptText(key(project, requestor), ct); } /** @@ -68,17 +66,14 @@ public abstract class BasePasswordSafeProvider extends PasswordSafeProvider { * @param project * @param requestor the requestor class * @param key the key to use - * @param modalityState * @return the key to use for map */ - private byte[] dbKey(@Nullable Project project, @NotNull Class requestor, String key, - @Nullable ModalityState modalityState) throws PasswordSafeException { - return EncryptionUtil.dbKey(key(project, requestor, modalityState), requestor, key); + private byte[] dbKey(@Nullable Project project, Class requestor, String key) throws PasswordSafeException { + return EncryptionUtil.dbKey(key(project, requestor), requestor, key); } - public void removePassword(@Nullable Project project, @NotNull Class requester, String key, - @Nullable ModalityState modalityState) throws PasswordSafeException { - byte[] k = dbKey(project, requester, key, modalityState); + public void removePassword(@Nullable Project project, @NotNull Class requester, String key) throws PasswordSafeException { + byte[] k = dbKey(project, requester, key); removeEncryptedPassword(k); } @@ -89,10 +84,9 @@ public abstract class BasePasswordSafeProvider extends PasswordSafeProvider { */ protected abstract void removeEncryptedPassword(byte[] key); - public void storePassword(@Nullable Project project, @NotNull Class requestor, String key, String value, - @Nullable ModalityState modalityState) throws PasswordSafeException { - byte[] k = dbKey(project, requestor, key, modalityState); - byte[] ct = EncryptionUtil.encryptText(key(project, requestor, modalityState), value); + public void storePassword(@Nullable Project project, @NotNull Class requestor, String key, String value) throws PasswordSafeException { + byte[] k = dbKey(project, requestor, key); + byte[] ct = EncryptionUtil.encryptText(key(project, requestor), value); storeEncryptedPassword(k, ct); } diff --git a/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/masterKey/MasterKeyPasswordSafe.java b/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/masterKey/MasterKeyPasswordSafe.java index b74e51315cd5..8d919d8a53c9 100644 --- a/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/masterKey/MasterKeyPasswordSafe.java +++ b/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/masterKey/MasterKeyPasswordSafe.java @@ -154,8 +154,7 @@ public class MasterKeyPasswordSafe extends BasePasswordSafeProvider { } @Override - protected byte[] key(@Nullable final Project project, @NotNull final Class requestor, - @Nullable ModalityState modalityState) throws PasswordSafeException { + protected byte[] key(@Nullable final Project project, @NotNull final Class requestor) throws PasswordSafeException { Application application = ApplicationManager.getApplication(); if (!isTestMode() && application.isHeadlessEnvironment()) { throw new MasterPasswordUnavailableException("The provider is not available in headless environment"); @@ -200,7 +199,7 @@ public class MasterKeyPasswordSafe extends BasePasswordSafeProvider { } } } - }, modalityState == null ? ModalityState.defaultModalityState() : modalityState); + }, ModalityState.defaultModalityState()); //noinspection ThrowableResultOfMethodCallIgnored if (ex.get() != null) { throw ex.get(); @@ -211,12 +210,11 @@ public class MasterKeyPasswordSafe extends BasePasswordSafeProvider { } @Override - public String getPassword(@Nullable Project project, @NotNull Class requestor, String key, - @Nullable ModalityState modalityState) throws PasswordSafeException { + public String getPassword(@Nullable Project project, @NotNull Class requestor, String key) throws PasswordSafeException { if (database.isEmpty()) { return null; } - return super.getPassword(project, requestor, key, modalityState); + return super.getPassword(project, requestor, key); } @Override diff --git a/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/memory/MemoryPasswordSafe.java b/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/memory/MemoryPasswordSafe.java index da82bb986fdb..4989789b4ec0 100644 --- a/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/memory/MemoryPasswordSafe.java +++ b/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/memory/MemoryPasswordSafe.java @@ -19,12 +19,10 @@ import com.intellij.ide.passwordSafe.impl.PasswordSafeTimed; import com.intellij.ide.passwordSafe.impl.providers.BasePasswordSafeProvider; import com.intellij.ide.passwordSafe.impl.providers.ByteArrayWrapper; import com.intellij.ide.passwordSafe.impl.providers.EncryptionUtil; -import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.registry.Registry; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.security.SecureRandom; import java.util.Collections; @@ -60,7 +58,7 @@ public class MemoryPasswordSafe extends BasePasswordSafeProvider { } @Override - protected byte[] key(Project project, @NotNull Class requestor, @Nullable ModalityState modalityState) { + protected byte[] key(Project project, @NotNull Class requestor) { if (key.get() == null) { byte[] rnd = new byte[EncryptionUtil.SECRET_KEY_SIZE_BYTES * 16]; new SecureRandom().nextBytes(rnd); diff --git a/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/nil/NilProvider.java b/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/nil/NilProvider.java index e3a77325b06e..4bf024d697c2 100644 --- a/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/nil/NilProvider.java +++ b/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/nil/NilProvider.java @@ -17,7 +17,6 @@ package com.intellij.ide.passwordSafe.impl.providers.nil; import com.intellij.ide.passwordSafe.PasswordSafeException; import com.intellij.ide.passwordSafe.impl.PasswordSafeProvider; -import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -42,22 +41,16 @@ public final class NilProvider extends PasswordSafeProvider { return "Do not Store"; } - @Nullable - public String getPassword(@Nullable Project project, @NotNull Class requester, String key, - @Nullable ModalityState modalityState) throws PasswordSafeException { + public String getPassword(@Nullable Project project, @NotNull Class requester, String key) throws PasswordSafeException { // nothing is stored return null; } - @Override - public void removePassword(@Nullable Project project, @NotNull Class requester, String key, - @Nullable ModalityState modalityState) throws PasswordSafeException { + public void removePassword(@Nullable Project project, @NotNull Class requester, String key) throws PasswordSafeException { // do nothing } - @Override - public void storePassword(@Nullable Project project, @NotNull Class requester, String key, String value, - @Nullable ModalityState modalityState) throws PasswordSafeException { + public void storePassword(@Nullable Project project, @NotNull Class requester, String key, String value) throws PasswordSafeException { // just forget about password } } diff --git a/platform/platform-impl/src/com/intellij/ide/passwordSafe/ui/PasswordSafePromptDialog.java b/platform/platform-impl/src/com/intellij/ide/passwordSafe/ui/PasswordSafePromptDialog.java index 353e836f3f33..def7aa96ce9b 100644 --- a/platform/platform-impl/src/com/intellij/ide/passwordSafe/ui/PasswordSafePromptDialog.java +++ b/platform/platform-impl/src/com/intellij/ide/passwordSafe/ui/PasswordSafePromptDialog.java @@ -176,7 +176,7 @@ public class PasswordSafePromptDialog extends DialogWrapper { ps.removePassword(project, requestor, key); } else { - String pw = ps.getPassword(project, requestor, key, modalityState); + String pw = ps.getPassword(project, requestor, key); if (pw != null) { return pw; } diff --git a/plugins/git4idea/src/git4idea/commands/GitHttpGuiAuthenticator.java b/plugins/git4idea/src/git4idea/commands/GitHttpGuiAuthenticator.java index e0312e5471fc..5b3a2422254f 100644 --- a/plugins/git4idea/src/git4idea/commands/GitHttpGuiAuthenticator.java +++ b/plugins/git4idea/src/git4idea/commands/GitHttpGuiAuthenticator.java @@ -87,7 +87,7 @@ class GitHttpGuiAuthenticator implements GitHttpAuthenticator { return ""; } url = adjustUrl(url); - Pair authData = findBestAuthData(url, myModalityState); + Pair authData = findBestAuthData(url); if (authData != null && authData.second.getPassword() != null) { String password = authData.second.getPassword(); myDataProvider = authData.first; @@ -114,7 +114,7 @@ class GitHttpGuiAuthenticator implements GitHttpAuthenticator { @NotNull public String askUsername(@NotNull String url) { url = adjustUrl(url); - Pair authData = findBestAuthData(url, myModalityState); + Pair authData = findBestAuthData(url); String login = null; String password = null; if (authData != null) { @@ -223,10 +223,10 @@ class GitHttpGuiAuthenticator implements GitHttpAuthenticator { // return the first that knows username + password; otherwise return the first that knows just the username @Nullable - private Pair findBestAuthData(@NotNull String url, @Nullable ModalityState modalityState) { + private Pair findBestAuthData(@NotNull String url) { Pair candidate = null; for (GitHttpAuthDataProvider provider : getProviders()) { - AuthData data = provider.getAuthData(url, modalityState); + AuthData data = provider.getAuthData(url); if (data != null) { Pair pair = Pair.create(provider, data); if (data.getPassword() != null) { @@ -268,12 +268,12 @@ class GitHttpGuiAuthenticator implements GitHttpAuthenticator { @Nullable @Override - public AuthData getAuthData(@NotNull String url, @Nullable ModalityState modalityState) { + public AuthData getAuthData(@NotNull String url) { String userName = getUsername(url); String key = makeKey(url, userName); final PasswordSafe passwordSafe = PasswordSafe.getInstance(); try { - String password = passwordSafe.getPassword(myProject, PASS_REQUESTER, key, modalityState); + String password = passwordSafe.getPassword(myProject, PASS_REQUESTER, key); return new AuthData(StringUtil.notNullize(userName), password); } catch (PasswordSafeException e) { diff --git a/plugins/git4idea/src/git4idea/remote/GitHttpAuthDataProvider.java b/plugins/git4idea/src/git4idea/remote/GitHttpAuthDataProvider.java index 281d69b772c3..6c0860ccf20a 100644 --- a/plugins/git4idea/src/git4idea/remote/GitHttpAuthDataProvider.java +++ b/plugins/git4idea/src/git4idea/remote/GitHttpAuthDataProvider.java @@ -15,7 +15,6 @@ */ package git4idea.remote; -import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.util.AuthData; import org.jetbrains.annotations.NotNull; @@ -32,7 +31,7 @@ public interface GitHttpAuthDataProvider { ExtensionPointName EP_NAME = ExtensionPointName.create("Git4Idea.GitHttpAuthDataProvider"); @Nullable - AuthData getAuthData(@NotNull String url, @Nullable ModalityState modalityState); + AuthData getAuthData(@NotNull String url); void forgetPassword(@NotNull String url); diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubRebaseAction.java b/plugins/github/src/org/jetbrains/plugins/github/GithubRebaseAction.java index 714191d06b98..bfceb0ceec39 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/GithubRebaseAction.java +++ b/plugins/github/src/org/jetbrains/plugins/github/GithubRebaseAction.java @@ -195,7 +195,7 @@ public class GithubRebaseAction extends DumbAwareAction { } try { - return GithubUtil.runTask(project, GithubAuthDataHolder.createFromSettings(indicator.getModalityState()), indicator, + return GithubUtil.runTask(project, GithubAuthDataHolder.createFromSettings(), indicator, new ThrowableConvertor() { @NotNull @Override diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubShareAction.java b/plugins/github/src/org/jetbrains/plugins/github/GithubShareAction.java index 7ba292889b9f..cca5afa0f5e5 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/GithubShareAction.java +++ b/plugins/github/src/org/jetbrains/plugins/github/GithubShareAction.java @@ -124,7 +124,7 @@ public class GithubShareAction extends DumbAwareAction { externalRemoteDetected = !gitRepository.getRemotes().isEmpty(); } - final GithubAuthDataHolder authHolder = GithubAuthDataHolder.createFromSettings(null); + final GithubAuthDataHolder authHolder = GithubAuthDataHolder.createFromSettings(); // get available GitHub repos with modal progress final GithubInfo githubInfo = loadGithubInfoWithModal(authHolder, project); diff --git a/plugins/github/src/org/jetbrains/plugins/github/extensions/GithubCheckoutProvider.java b/plugins/github/src/org/jetbrains/plugins/github/extensions/GithubCheckoutProvider.java index 115258d9bee2..6b3f73f5f8be 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/extensions/GithubCheckoutProvider.java +++ b/plugins/github/src/org/jetbrains/plugins/github/extensions/GithubCheckoutProvider.java @@ -61,7 +61,7 @@ public class GithubCheckoutProvider implements CheckoutProvider { @NotNull @Override public List convert(ProgressIndicator indicator) throws IOException { - return GithubUtil.runTask(project, GithubAuthDataHolder.createFromSettings(indicator.getModalityState()), indicator, + return GithubUtil.runTask(project, GithubAuthDataHolder.createFromSettings(), indicator, new ThrowableConvertor, IOException>() { @NotNull @Override diff --git a/plugins/github/src/org/jetbrains/plugins/github/extensions/GithubHttpAuthDataProvider.java b/plugins/github/src/org/jetbrains/plugins/github/extensions/GithubHttpAuthDataProvider.java index 47d3edcb3de5..5a7daf94a9fd 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/extensions/GithubHttpAuthDataProvider.java +++ b/plugins/github/src/org/jetbrains/plugins/github/extensions/GithubHttpAuthDataProvider.java @@ -15,7 +15,6 @@ */ package org.jetbrains.plugins.github.extensions; -import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.AuthData; import git4idea.remote.GitHttpAuthDataProvider; @@ -32,7 +31,7 @@ public class GithubHttpAuthDataProvider implements GitHttpAuthDataProvider { @Nullable @Override - public AuthData getAuthData(@NotNull String url, @Nullable ModalityState modalityState) { + public AuthData getAuthData(@NotNull String url) { if (!GithubUrlUtil.isGithubUrl(url)) { return null; } @@ -48,7 +47,7 @@ public class GithubHttpAuthDataProvider implements GitHttpAuthDataProvider { return null; } - GithubAuthData auth = settings.getAuthData(modalityState); + GithubAuthData auth = settings.getAuthData(); switch (auth.getAuthType()) { case BASIC: GithubAuthData.BasicAuth basicAuth = auth.getBasicAuth(); diff --git a/plugins/github/src/org/jetbrains/plugins/github/tasks/GithubRepositoryEditor.java b/plugins/github/src/org/jetbrains/plugins/github/tasks/GithubRepositoryEditor.java index 9cf3cdf4b4fe..5333d82e3baf 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/tasks/GithubRepositoryEditor.java +++ b/plugins/github/src/org/jetbrains/plugins/github/tasks/GithubRepositoryEditor.java @@ -125,8 +125,7 @@ public class GithubRepositoryEditor extends BaseRepositoryEditor() { @NotNull @Override diff --git a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.java b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.java index 229170e29ead..7de0dae30d69 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.java +++ b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.java @@ -130,8 +130,7 @@ public class GithubSettingsPanel { @NotNull @Override public String convert(ProgressIndicator indicator) throws IOException { - return GithubUtil.runTaskWithBasicAuthForHost(project, GithubAuthDataHolder.createFromSettings(indicator.getModalityState()), - indicator, getHost(), + return GithubUtil.runTaskWithBasicAuthForHost(project, GithubAuthDataHolder.createFromSettings(), indicator, getHost(), new ThrowableConvertor() { @NotNull @Override @@ -263,7 +262,7 @@ public class GithubSettingsPanel { @NotNull public GithubAuthData getAuthData() { if (!myCredentialsModified) { - return mySettings.getAuthData(null); + return mySettings.getAuthData(); } Object selected = myAuthTypeComboBox.getSelectedItem(); if (AUTH_PASSWORD.equals(selected)) return GithubAuthData.createBasicAuth(getHost(), getLogin(), getPassword()); @@ -291,7 +290,7 @@ public class GithubSettingsPanel { public void apply() { if (myCredentialsModified) { - mySettings.setAuthData(getAuthData(), true, null); + mySettings.setAuthData(getAuthData(), true); } mySettings.setConnectionTimeout(getConnectionTimeout()); resetCredentialsModification(); diff --git a/plugins/github/src/org/jetbrains/plugins/github/util/GithubAuthData.java b/plugins/github/src/org/jetbrains/plugins/github/util/GithubAuthData.java index d7981b261d7c..f11044422154 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/util/GithubAuthData.java +++ b/plugins/github/src/org/jetbrains/plugins/github/util/GithubAuthData.java @@ -15,7 +15,6 @@ */ package org.jetbrains.plugins.github.util; -import com.intellij.openapi.application.ModalityState; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.github.api.GithubApiUtil; @@ -53,8 +52,8 @@ public class GithubAuthData { myUseProxy = useProxy; } - public static GithubAuthData createFromSettings(@Nullable ModalityState state) { - return GithubSettings.getInstance().getAuthData(state); + public static GithubAuthData createFromSettings() { + return GithubSettings.getInstance().getAuthData(); } public static GithubAuthData createAnonymous() { diff --git a/plugins/github/src/org/jetbrains/plugins/github/util/GithubAuthDataHolder.java b/plugins/github/src/org/jetbrains/plugins/github/util/GithubAuthDataHolder.java index 24303a34d240..695dfe734c34 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/util/GithubAuthDataHolder.java +++ b/plugins/github/src/org/jetbrains/plugins/github/util/GithubAuthDataHolder.java @@ -15,10 +15,8 @@ */ package org.jetbrains.plugins.github.util; -import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.util.ThrowableComputable; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public class GithubAuthDataHolder { @@ -42,7 +40,7 @@ public class GithubAuthDataHolder { myAuthData = task.compute(); } - public static GithubAuthDataHolder createFromSettings(@Nullable ModalityState state) { - return new GithubAuthDataHolder(GithubSettings.getInstance().getAuthData(state)); + public static GithubAuthDataHolder createFromSettings() { + return new GithubAuthDataHolder(GithubSettings.getInstance().getAuthData()); } } diff --git a/plugins/github/src/org/jetbrains/plugins/github/util/GithubSettings.java b/plugins/github/src/org/jetbrains/plugins/github/util/GithubSettings.java index a2bdca59bbe4..3523e412a95e 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/util/GithubSettings.java +++ b/plugins/github/src/org/jetbrains/plugins/github/util/GithubSettings.java @@ -19,7 +19,6 @@ import com.intellij.ide.passwordSafe.PasswordSafe; import com.intellij.ide.passwordSafe.PasswordSafeException; import com.intellij.ide.passwordSafe.config.PasswordSafeSettings; import com.intellij.ide.passwordSafe.impl.PasswordSafeImpl; -import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.components.*; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.text.StringUtil; @@ -152,10 +151,10 @@ public class GithubSettings implements PersistentStateComponent availableRepos = GithubApiUtil.getUserRepos(myGitHubSettings.getAuthData(null), myLogin2); + List availableRepos = GithubApiUtil.getUserRepos(myGitHubSettings.getAuthData(), myLogin2); List realData = new ArrayList(); for (GithubRepo info : availableRepos) { realData.add(info.getName()); diff --git a/plugins/github/test/org/jetbrains/plugins/github/GithubShareProjectTest.java b/plugins/github/test/org/jetbrains/plugins/github/GithubShareProjectTest.java index e6da326777c5..c4063629cbbe 100644 --- a/plugins/github/test/org/jetbrains/plugins/github/GithubShareProjectTest.java +++ b/plugins/github/test/org/jetbrains/plugins/github/GithubShareProjectTest.java @@ -99,7 +99,7 @@ public class GithubShareProjectTest extends GithubShareProjectTestBase { } protected void checkGithubExists() throws IOException { - GithubAuthData auth = myGitHubSettings.getAuthData(null); + GithubAuthData auth = myGitHubSettings.getAuthData(); GithubRepoDetailed githubInfo = GithubApiUtil.getDetailedRepoInfo(auth, myLogin1, PROJECT_NAME); assertNotNull("GitHub repository does not exist", githubInfo); } diff --git a/plugins/github/test/org/jetbrains/plugins/github/GithubShareProjectTestBase.java b/plugins/github/test/org/jetbrains/plugins/github/GithubShareProjectTestBase.java index f146b37f4208..abfb5ece3819 100644 --- a/plugins/github/test/org/jetbrains/plugins/github/GithubShareProjectTestBase.java +++ b/plugins/github/test/org/jetbrains/plugins/github/GithubShareProjectTestBase.java @@ -48,7 +48,7 @@ public abstract class GithubShareProjectTestBase extends GithubTest { } protected void deleteGithubRepo() throws IOException { - GithubApiUtil.deleteGithubRepository(myGitHubSettings.getAuthData(null), myLogin1, PROJECT_NAME); + GithubApiUtil.deleteGithubRepository(myGitHubSettings.getAuthData(), myLogin1, PROJECT_NAME); } protected void registerDefaultShareDialogHandler() { diff --git a/plugins/github/test/org/jetbrains/plugins/github/test/GithubTest.java b/plugins/github/test/org/jetbrains/plugins/github/test/GithubTest.java index b728913aeacb..3d3d8201e03a 100644 --- a/plugins/github/test/org/jetbrains/plugins/github/test/GithubTest.java +++ b/plugins/github/test/org/jetbrains/plugins/github/test/GithubTest.java @@ -172,7 +172,7 @@ public abstract class GithubTest extends GitPlatformTest { myAuth = GithubAuthData.createBasicAuth(host, login1, password); myGitHubSettings = GithubSettings.getInstance(); - myGitHubSettings.setAuthData(myAuth, false, null); + myGitHubSettings.setAuthData(myAuth, false); myHttpAuthService = (GitHttpAuthTestService)ServiceManager.getService(GitHttpAuthService.class); diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/execution/HgCommandAuthenticator.java b/plugins/hg4idea/src/org/zmlx/hg4idea/execution/HgCommandAuthenticator.java index 1d41cdc688f9..14f6c981777b 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/execution/HgCommandAuthenticator.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/execution/HgCommandAuthenticator.java @@ -35,7 +35,7 @@ import org.zmlx.hg4idea.HgVcsMessages; class HgCommandAuthenticator { private static final Logger LOG = Logger.getInstance(HgCommandAuthenticator.class.getName()); - + private GetPasswordRunnable myGetPassword; private final Project myProject; private boolean myForceAuthorization; @@ -71,7 +71,7 @@ class HgCommandAuthenticator { } public boolean promptForAuthentication(Project project, String proposedLogin, String uri, String path, @Nullable ModalityState state) { - GetPasswordRunnable runnable = new GetPasswordRunnable(project, proposedLogin, uri, path, myForceAuthorization, state); + GetPasswordRunnable runnable = new GetPasswordRunnable(project, proposedLogin, uri, path, myForceAuthorization); ApplicationManager.getApplication().invokeAndWait(runnable, state == null ? ModalityState.defaultModalityState() : state); myGetPassword = runnable; return runnable.isOk(); @@ -96,21 +96,14 @@ class HgCommandAuthenticator { @Nullable private String myURL; private boolean myRememberPassword; private boolean myForceAuthorization; - @Nullable private ModalityState myState; - public GetPasswordRunnable(Project project, - String proposedLogin, - String uri, - String path, - boolean forceAuthorization, - @Nullable ModalityState state) { + public GetPasswordRunnable(Project project, String proposedLogin, String uri, String path, boolean forceAuthorization) { this.myProject = project; this.myProposedLogin = proposedLogin; this.myURL = uri + path; this.myForceAuthorization = forceAuthorization; - myState = state; } - + public void run() { // find if we've already been here @@ -135,9 +128,11 @@ class HgCommandAuthenticator { final String key = keyForUrlAndLogin(myURL, login); try { final PasswordSafeImpl passwordSafe = (PasswordSafeImpl)PasswordSafe.getInstance(); - password = passwordSafe.getPassword(myProject, HgCommandAuthenticator.class, key, myState); - } - catch (PasswordSafeException e) { + password = passwordSafe.getMemoryProvider().getPassword(myProject, HgCommandAuthenticator.class, key); + if (password == null) { + password = passwordSafe.getPassword(myProject, HgCommandAuthenticator.class, key); + } + } catch (PasswordSafeException e) { LOG.info("Couldn't get password for key [" + key + "]", e); } }