James Moger
2014-03-27 bfa998a3d04e759be555dd8136aaa9450960a879
src/main/java/com/gitblit/transport/ssh/IPublicKeyManager.java
@@ -15,7 +15,6 @@
 */
package com.gitblit.transport.ssh;
import java.security.PublicKey;
import java.text.MessageFormat;
import java.util.List;
import java.util.concurrent.ExecutionException;
@@ -27,10 +26,11 @@
import com.gitblit.manager.IManager;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.CacheLoader.InvalidCacheLoadException;
import com.google.common.cache.LoadingCache;
/**
 * Parent class for public key managers.
 * Parent class for ssh public key managers.
 *
 * @author James Moger
 *
@@ -39,13 +39,13 @@
   protected final Logger log = LoggerFactory.getLogger(getClass());
   protected final LoadingCache<String, List<PublicKey>> keyCache = CacheBuilder
   protected final LoadingCache<String, List<SshKey>> keyCache = CacheBuilder
         .newBuilder().
         expireAfterAccess(15, TimeUnit.MINUTES).
         maximumSize(100)
         .build(new CacheLoader<String, List<PublicKey>>() {
         .build(new CacheLoader<String, List<SshKey>>() {
            @Override
            public List<PublicKey> load(String username) {
            public List<SshKey> load(String username) {
               return getKeysImpl(username);
            }
         });
@@ -58,12 +58,16 @@
   @Override
   public abstract IPublicKeyManager stop();
   public final List<PublicKey> getKeys(String username) {
   public final List<SshKey> getKeys(String username) {
      try {
         if (isStale(username)) {
            keyCache.invalidate(username);
         }
         return keyCache.get(username);
      } catch (InvalidCacheLoadException e) {
         if (e.getMessage() == null || !e.getMessage().contains("returned null")) {
            log.error(MessageFormat.format("failed to retrieve keys for {0}", username), e);
         }
      } catch (ExecutionException e) {
         log.error(MessageFormat.format("failed to retrieve keys for {0}", username), e);
      }
@@ -72,11 +76,11 @@
   protected abstract boolean isStale(String username);
   protected abstract List<PublicKey> getKeysImpl(String username);
   protected abstract List<SshKey> getKeysImpl(String username);
   public abstract boolean addKey(String username, String data);
   public abstract boolean addKey(String username, SshKey key);
   public abstract boolean removeKey(String username, String data);
   public abstract boolean removeKey(String username, SshKey key);
   public abstract boolean removeAllKeys(String username);
}