Search code examples
javaeclipse-rcpequinox

How to delete Eclipse Secure Storage settings programmatically


How can I delete the saved content in eclipse secure storage programmatically? I need to reset all setting before I run some SWTBot tests.

I know, that I can delete the folder, but isn't there another way?

../.eclipse/org.eclipse.equinox.security

EDIT:

Thanks to Kris I solved the problem.

    //part 1
    try {
        AuthPlugin.getDefault().stop(null);
    } catch (final Exception e) {
        e.printStackTrace();
    }
    //part 2
    final ISecurePreferences rootNode = SecurePreferencesFactory.getDefault()
            .node(ROOT_NODE_NAME);
    final String[] names = rootNode.childrenNames().clone();
    for (int i = 0; i < names.length; i++) {
        rootNode.node(names[i]).removeNode();
    }

The problem is solved in part 2. I want to also show a way how to stop the authentication for the secure storage, because it is very annoying, by testing with SWTBot.


Solution

  • You can remove stored values in secure store by using ISecurePreferences. Have a look here

    ISecurePreferences root = org.eclipse.equinox.security.storage.SecurePreferencesFactory.getDefault();
    if (root == null)
    return null;
    ISecurePreferences node = root.node("/your.class.path.or.something.else"); // get the node for your application e.g. this.getClass().getCanonicalName()
    node = node.node( "some name"); // get custom node from the tree
    node.get( "key" );   // load
    node.put("key","value", true / false (encrypt) ); // store (no save operation)
    node.remove("key");  // remove
    node.flush();        // save