diff options
Diffstat (limited to 'platform/platform-impl/src/com/intellij/ide/passwordSafe')
11 files changed, 148 insertions, 186 deletions
diff --git a/platform/platform-impl/src/com/intellij/ide/passwordSafe/HelpID.java b/platform/platform-impl/src/com/intellij/ide/passwordSafe/HelpID.java index b05021ff7d72..a805638501be 100644 --- a/platform/platform-impl/src/com/intellij/ide/passwordSafe/HelpID.java +++ b/platform/platform-impl/src/com/intellij/ide/passwordSafe/HelpID.java @@ -24,6 +24,8 @@ import org.jetbrains.annotations.NonNls; * Time: 2:09 PM */ public interface HelpID { - @NonNls String RESET_PASSWORD = "reference_ide_settings_master_password_reset"; - @NonNls String CHANGE_PASSWORD = "reference_settings_password_safe_master_password"; + @NonNls String INIT_PASSWORD = "settings_passwords_master_password_init"; + @NonNls String ENTER_PASSWORD = "settings_passwords_master_password_enter"; + @NonNls String RESET_PASSWORD = "settings_passwords_master_password_reset"; + @NonNls String CHANGE_PASSWORD = "settings_passwords_master_password_change"; } 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 b1ea1332986e..e5b9f1530256 100644 --- a/platform/platform-impl/src/com/intellij/ide/passwordSafe/PasswordStorage.java +++ b/platform/platform-impl/src/com/intellij/ide/passwordSafe/PasswordStorage.java @@ -25,15 +25,21 @@ import org.jetbrains.annotations.Nullable; * The interface defines basic password management operations */ public interface PasswordStorage { + /** - * <p>Get password stored in a password safe.</p> - * - * <p><b>NB: </b> - * 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.</p> + * @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. + * <p/> + * 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 @@ -43,25 +49,53 @@ 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) throws PasswordSafeException; + String getPassword(@Nullable Project project, @NotNull Class requestor, String key, + @Nullable ModalityState state) throws PasswordSafeException; + /** - * Remove password stored in a password safe + * Store password in password safe + * <p/> + * 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 - * @return the plugin key + * @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; + /** - * Store password in password safe + * Remove password stored in a password safe + * <p/> + * 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 + * @return the plugin key * @throws PasswordSafeException if password safe cannot be accessed */ - void storePassword(@Nullable Project project, @NotNull Class requestor, String key, String value) throws PasswordSafeException; + void removePassword(@Nullable Project project, @NotNull Class requestor, String key, + @Nullable ModalityState modalityState) 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 11dc4d7d018b..34aee7aaad38 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,42 +22,19 @@ 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; import org.jetbrains.annotations.Nullable; -/** - * The implementation of password safe service - */ public class PasswordSafeImpl extends PasswordSafe { - /** - * The logger instance - */ private static final Logger LOG = Logger.getInstance(PasswordSafeImpl.class.getName()); - /** - * The current settings - */ private final PasswordSafeSettings mySettings; - /** - * The master key provider - */ private final MasterKeyPasswordSafe myMasterKeyProvider; - /** - * The nil provider - */ private final NilProvider myNilProvider; - /** - * The memory provider - */ private final MemoryPasswordSafe myMemoryProvider; - /** - * The constructor - * - * @param settings the settings for the password safe - * @param database the password database - */ public PasswordSafeImpl(PasswordSafeSettings settings, PasswordDatabase database) { mySettings = settings; myMasterKeyProvider = new MasterKeyPasswordSafe(database); @@ -89,21 +66,24 @@ public class PasswordSafeImpl extends PasswordSafe { return p; } - - /** - * @return settings for the passwords safe - */ public PasswordSafeSettings getSettings() { return mySettings; } - @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); + String password = getMemoryProvider().getPassword(project, requester, key, modalityState); if (password == null) { - password = provider().getPassword(project, requester, key); + password = provider().getPassword(project, requester, key, modalityState); if (password != null) { // cache the password in memory as well for easier access during the session getMemoryProvider().storePassword(project, requester, key, password); @@ -111,27 +91,35 @@ public class PasswordSafeImpl extends PasswordSafe { } return password; } - return provider().getPassword(project, requester, key); + return provider().getPassword(project, requester, key, modalityState); } - /** - * {@inheritDoc} - */ - public void removePassword(@Nullable Project project, @NotNull Class requester, String key) throws PasswordSafeException { + @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 { if (mySettings.getProviderType().equals(PasswordSafeSettings.ProviderType.MASTER_PASSWORD)) { getMemoryProvider().removePassword(project, requester, key); } - provider().removePassword(project, requester, key); + provider().removePassword(project, requester, key, modalityState); } - /** - * {@inheritDoc} - */ - public void storePassword(@Nullable Project project, @NotNull Class requester, String key, String value) throws PasswordSafeException { + @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 { if (mySettings.getProviderType().equals(PasswordSafeSettings.ProviderType.MASTER_PASSWORD)) { getMemoryProvider().storePassword(project, requester, key, value); } - provider().storePassword(project, requester, key, value); + provider().storePassword(project, requester, key, value, modalityState); } /** 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 18dee7c755f5..3a40d617e99b 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,7 +15,11 @@ */ 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 @@ -34,4 +38,21 @@ 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 c72c65d0d528..8c8f921f18b8 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,16 +43,15 @@ 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) throws PasswordSafeException; + protected abstract byte[] key(@Nullable Project project, @NotNull Class requestor, + @Nullable ModalityState modalityState) throws PasswordSafeException; - /** - * {@inheritDoc} - */ @Nullable - public String getPassword(@Nullable Project project, @NotNull Class requestor, String key) throws PasswordSafeException { - byte[] k = dbKey(project, requestor, key); + public String getPassword(@Nullable Project project, @NotNull Class requestor, String key, + @Nullable ModalityState modalityState) throws PasswordSafeException { + byte[] k = dbKey(project, requestor, key, modalityState); byte[] ct = getEncryptedPassword(k); - return ct == null ? null : EncryptionUtil.decryptText(key(project, requestor), ct); + return ct == null ? null : EncryptionUtil.decryptText(key(project, requestor, modalityState), ct); } /** @@ -69,17 +68,17 @@ 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, Class requestor, String key) throws PasswordSafeException { - return EncryptionUtil.dbKey(key(project, requestor), requestor, key); + 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); } - /** - * {@inheritDoc} - */ - public void removePassword(@Nullable Project project, @NotNull Class requester, String key) throws PasswordSafeException { - byte[] k = dbKey(project, requester, key); + public void removePassword(@Nullable Project project, @NotNull Class requester, String key, + @Nullable ModalityState modalityState) throws PasswordSafeException { + byte[] k = dbKey(project, requester, key, modalityState); removeEncryptedPassword(k); } @@ -90,12 +89,10 @@ public abstract class BasePasswordSafeProvider extends PasswordSafeProvider { */ protected abstract void removeEncryptedPassword(byte[] key); - /** - * {@inheritDoc} - */ - 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); + 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); storeEncryptedPassword(k, ct); } diff --git a/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/masterKey/EnterPasswordComponent.java b/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/masterKey/EnterPasswordComponent.java index 638e2e23c1f9..304b31e3bee1 100644 --- a/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/masterKey/EnterPasswordComponent.java +++ b/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/masterKey/EnterPasswordComponent.java @@ -16,6 +16,7 @@ package com.intellij.ide.passwordSafe.impl.providers.masterKey; import com.intellij.ide.TypePresentationService; +import com.intellij.ide.passwordSafe.HelpID; import com.intellij.openapi.ui.ValidationInfo; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; @@ -46,4 +47,9 @@ public class EnterPasswordComponent extends PasswordComponentBase { String password = new String(myPasswordField.getPassword()); return mySafe.changeMasterPassword(password, password, myEncryptCheckBox.isSelected()); } + + @Override + public String getHelpId() { + return HelpID.ENTER_PASSWORD; + } } 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 95fba48afabe..b74e51315cd5 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 @@ -42,17 +42,8 @@ import java.util.concurrent.atomic.AtomicReference; * The password safe that stores information in configuration file encrypted by master password */ public class MasterKeyPasswordSafe extends BasePasswordSafeProvider { - /** - * The test password key - */ private static final String TEST_PASSWORD_KEY = "TEST_PASSWORD:"; - /** - * The test password value - */ private static final String TEST_PASSWORD_VALUE = "test password"; - /** - * The password database instance - */ final PasswordDatabase database; /** * The key to use to encrypt data @@ -68,18 +59,10 @@ public class MasterKeyPasswordSafe extends BasePasswordSafeProvider { } }; - /** - * The constructor - * - * @param database the password database - */ public MasterKeyPasswordSafe(PasswordDatabase database) { this.database = database; } - /** - * @return true if the component is running in the test mode - */ protected boolean isTestMode() { return false; } @@ -130,7 +113,6 @@ public class MasterKeyPasswordSafe extends BasePasswordSafeProvider { else { return true; } - } /** @@ -167,18 +149,13 @@ public class MasterKeyPasswordSafe extends BasePasswordSafeProvider { } - /** - * The test key - * - * @param password the password for the test key - * @return the test key - */ private static String testKey(String password) { return TEST_PASSWORD_KEY + password; } @Override - protected byte[] key(@Nullable final Project project, @NotNull final Class requestor) throws PasswordSafeException { + protected byte[] key(@Nullable final Project project, @NotNull final Class requestor, + @Nullable ModalityState modalityState) throws PasswordSafeException { Application application = ApplicationManager.getApplication(); if (!isTestMode() && application.isHeadlessEnvironment()) { throw new MasterPasswordUnavailableException("The provider is not available in headless environment"); @@ -223,7 +200,7 @@ public class MasterKeyPasswordSafe extends BasePasswordSafeProvider { } } } - }, ModalityState.defaultModalityState()); + }, modalityState == null ? ModalityState.defaultModalityState() : modalityState); //noinspection ThrowableResultOfMethodCallIgnored if (ex.get() != null) { throw ex.get(); @@ -233,20 +210,15 @@ public class MasterKeyPasswordSafe extends BasePasswordSafeProvider { return result.get(); } - /** - * {@inheritDoc} - */ @Override - public String getPassword(@Nullable Project project, @NotNull Class requestor, String key) throws PasswordSafeException { + public String getPassword(@Nullable Project project, @NotNull Class requestor, String key, + @Nullable ModalityState modalityState) throws PasswordSafeException { if (database.isEmpty()) { return null; } - return super.getPassword(project, requestor, key); + return super.getPassword(project, requestor, key, modalityState); } - /** - * {@inheritDoc} - */ @Override public void removePassword(@Nullable Project project, @NotNull Class requester, String key) throws PasswordSafeException { if (database.isEmpty()) { @@ -255,50 +227,32 @@ public class MasterKeyPasswordSafe extends BasePasswordSafeProvider { super.removePassword(project, requester, key); } - /** - * {@inheritDoc} - */ @Override protected byte[] getEncryptedPassword(byte[] key) { return database.get(key); } - /** - * {@inheritDoc} - */ @Override protected void removeEncryptedPassword(byte[] key) { database.remove(key); } - /** - * {@inheritDoc} - */ @Override protected void storeEncryptedPassword(byte[] key, byte[] encryptedPassword) { database.put(key, encryptedPassword); } - /** - * {@inheritDoc} - */ @Override public boolean isSupported() { return !ApplicationManager.getApplication().isHeadlessEnvironment(); } - /** - * {@inheritDoc} - */ @Override public String getDescription() { return "This provider stores passwords in IDEA config and uses master password to encrypt other passwords. " + "The passwords for the same resources are shared between different projects."; } - /** - * {@inheritDoc} - */ @Override public String getName() { return "Master Key PasswordSafe"; @@ -309,9 +263,6 @@ public class MasterKeyPasswordSafe extends BasePasswordSafeProvider { return setMasterPassword(""); } - /** - * @return true, if OS protected passwords are supported for the current platform - */ @SuppressWarnings({"MethodMayBeStatic"}) public boolean isOsProtectedPasswordSupported() { // TODO extension point needed? @@ -351,9 +302,6 @@ public class MasterKeyPasswordSafe extends BasePasswordSafeProvider { } } - /** - * @return true, if the password is currently encrypted in the database - */ public boolean isPasswordEncrypted() { if (!isOsProtectedPasswordSupported()) return false; @@ -361,9 +309,6 @@ public class MasterKeyPasswordSafe extends BasePasswordSafeProvider { return i != null && i.length > 0; } - /** - * @return check if provider database is empty - */ public boolean isEmpty() { return database.isEmpty(); } diff --git a/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/masterKey/ResetPasswordComponent.java b/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/masterKey/ResetPasswordComponent.java index ce75bdb2165a..faa36c121ec9 100644 --- a/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/masterKey/ResetPasswordComponent.java +++ b/platform/platform-impl/src/com/intellij/ide/passwordSafe/impl/providers/masterKey/ResetPasswordComponent.java @@ -49,7 +49,7 @@ public class ResetPasswordComponent extends PasswordComponentBase { @Override public String getHelpId() { - return HelpID.RESET_PASSWORD; + return myFirstTime ? HelpID.INIT_PASSWORD : HelpID.RESET_PASSWORD; } @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 5be4a25df859..da82bb986fdb 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,10 +19,12 @@ 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; @@ -57,13 +59,8 @@ public class MemoryPasswordSafe extends BasePasswordSafeProvider { return Registry.intValue("passwordSafe.memorySafe.ttl"); } - /** - * @param project the project to use - * @param requestor - * @return the secret key used by provider - */ @Override - protected byte[] key(Project project, @NotNull Class requestor) { + protected byte[] key(Project project, @NotNull Class requestor, @Nullable ModalityState modalityState) { if (key.get() == null) { byte[] rnd = new byte[EncryptionUtil.SECRET_KEY_SIZE_BYTES * 16]; new SecureRandom().nextBytes(rnd); @@ -72,49 +69,31 @@ public class MemoryPasswordSafe extends BasePasswordSafeProvider { return key.get(); } - /** - * {@inheritDoc} - */ @Override protected byte[] getEncryptedPassword(byte[] key) { return database.get().get(new ByteArrayWrapper(key)); } - /** - * {@inheritDoc} - */ @Override protected void removeEncryptedPassword(byte[] key) { database.get().remove(new ByteArrayWrapper(key)); } - /** - * {@inheritDoc} - */ @Override protected void storeEncryptedPassword(byte[] key, byte[] encryptedPassword) { database.get().put(new ByteArrayWrapper(key), encryptedPassword); } - /** - * {@inheritDoc} - */ @Override public boolean isSupported() { return true; } - /** - * {@inheritDoc} - */ @Override public String getDescription() { return "Memory-based password safe provider. The passwords are stored only for the duration of IDEA process."; } - /** - * {@inheritDoc} - */ @Override public String getName() { return "Memory PasswordSafe"; 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 581df18ea317..e3a77325b06e 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,6 +17,7 @@ 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; @@ -25,49 +26,38 @@ import org.jetbrains.annotations.Nullable; * The most secure provider that does not store anything, so it cannot be cracked */ public final class NilProvider extends PasswordSafeProvider { - /** - * {@inheritDoc} - */ + @Override public boolean isSupported() { return true; } - /** - * {@inheritDoc} - */ @Override public String getDescription() { return "The provider that does not remembers password."; } - /** - * {@inheritDoc} - */ @Override public String getName() { return "Do not Store"; } - /** - * {@inheritDoc} - */ - public String getPassword(@Nullable Project project, @NotNull Class requester, String key) throws PasswordSafeException { + @Nullable + public String getPassword(@Nullable Project project, @NotNull Class requester, String key, + @Nullable ModalityState modalityState) throws PasswordSafeException { // nothing is stored return null; } - /** - * {@inheritDoc} - */ - public void removePassword(@Nullable Project project, @NotNull Class requester, String key) throws PasswordSafeException { + @Override + public void removePassword(@Nullable Project project, @NotNull Class requester, String key, + @Nullable ModalityState modalityState) throws PasswordSafeException { // do nothing } - /** - * {@inheritDoc} - */ - public void storePassword(@Nullable Project project, @NotNull Class requester, String key, String value) throws PasswordSafeException { + @Override + public void storePassword(@Nullable Project project, @NotNull Class requester, String key, String value, + @Nullable ModalityState modalityState) 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 def7aa96ce9b..353e836f3f33 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); + String pw = ps.getPassword(project, requestor, key, modalityState); if (pw != null) { return pw; } |