Using PasswordSafe to load credentials editable in a Configurable


I'm trying to implement a plugin that requires the user to input some credentials the right way, using PasswordSafe and a Configurable. However, no matter how I twist my logic of when I read the credentials from PasswordSafe, I always end up with the ‘Slow operations are prohibited on EDT.’  error.

I have a Settings class that has all the plugin's settings, along with the credentials. This is the class I wish to use throughout my plugin and these data must be available to it. To avoid persisting the credentials, I've annotated them as @Transient, but the fields are present in the class.

Now, I wish to enable the user to edit these Settings using a Configurable. To do so, before I present the user with the old credentials, I must fetch them from the PasswordSafe. But regardless of whether I do this in PersistentStateComponent.loadState() or Configurable.reset(), I always get the ‘Slow operations are prohibited on EDT.’  error.

I've tried consulting the “How to use PasswordSafe” (, but the examples are all removed from any context, including this one.

So, where should I do this step so that I don't get this error?

1 comment

I've solved the problem. I've added a StartupActivity that loads all the passwords from PasswordSafe before the Configurable needs to show them to the user, as well as a Task.Backgroundable that persists the modified passwords in Configurable.apply().


Please sign in to leave a comment.