/*
* ====================================================================
* Copyright (c) 2004-2012 TMate Software Ltd. All rights reserved.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://svnkit.com/license.html
* If newer versions of this license are posted there, you may use a
* newer version instead, at your option.
* ====================================================================
*/
package org.tmatesoft.svn.core.internal.wc;
/**
* The <b>ISVNAuthenticationStorage</b> interface is used to implement custom
* runtime authentication storage managers, that are responsible for caching
* user credentials as well as for retrieving cached credentials from the
* storage of a preferable type (it may be an in-memory cache, or a disk cache).
*
* <p>
* To make an authentication manager use your custom auth storage manager,
* provide it to the {@link org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager#setRuntimeStorage(ISVNAuthenticationStorage) setRuntimeStorage()}
* method of the authentication manager.
*
* <p>
* A default implementation of <b>ISVNAuthenticationStorage</b> (that comes along
* with a default implementation of <b>ISVNAuthenticationManager</b> - <b>org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager</b>)
* caches credentials only in the memory (not in the filesystem) during runtime. This feature is handy especially when
* on-disk caching is disabled in the standard <i>config</i> file (option <span class="javastring">"store-auth-creds"</span> is <span class="javastring">"no"</span>).
*
* @version 1.3
* @author TMate Software Ltd.
* @see org.tmatesoft.svn.core.auth.ISVNAuthenticationManager
*/
public interface ISVNAuthenticationStorage {
/**
* Caches a credential of the specified kind for the given repository
* authentication realm in the auth storage.
*
* @param kind a credential kind (for example, like those defined in
* {@link org.tmatesoft.svn.core.auth.ISVNAuthenticationManager})
* @param realm a repository authentication realm including a hostname,
* a port number and a realm string
* @param data a credential object
*/
public void putData(String kind, String realm, Object data);
/**
* Retrieves a cached credential of the specified kind for the
* given repository authentication realm from the auth storage.
*
* @param kind a credential kind (for example, like those defined in
* {@link org.tmatesoft.svn.core.auth.ISVNAuthenticationManager})
* @param realm a repository authentication realm including a hostname,
* a port number and a realm string
* @return a credential object
*/
public Object getData(String kind, String realm);
}