From f81ed74578eb1d0fed26c56ddcfbb39f08a4e47c Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 10 Apr 2014 18:58:10 -0400 Subject: [PATCH] Support querying in tickets ls and accept Object[][] for table data --- src/main/java/com/gitblit/transport/ssh/IPublicKeyManager.java | 22 +++++++++++++--------- 1 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/gitblit/transport/ssh/IPublicKeyManager.java b/src/main/java/com/gitblit/transport/ssh/IPublicKeyManager.java index 5857a59..956a76e 100644 --- a/src/main/java/com/gitblit/transport/ssh/IPublicKeyManager.java +++ b/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); } -- Gitblit v1.9.1