Skip to content

Commit e0bbe91

Browse files
committed
Update module 'common-security' to use Caffeine.
Signed-off-by: Lukas Mansour <lukas.mansour@desy.de>
1 parent 8a7d3ca commit e0bbe91

1 file changed

Lines changed: 9 additions & 29 deletions

File tree

modules/common-security/src/main/java/org/dcache/gsi/KeyPairCache.java

Lines changed: 9 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,14 @@
1717
*/
1818
package org.dcache.gsi;
1919

20-
import com.google.common.cache.CacheBuilder;
21-
import com.google.common.cache.CacheLoader;
22-
import com.google.common.cache.LoadingCache;
23-
import com.google.common.util.concurrent.ListenableFuture;
24-
import com.google.common.util.concurrent.ListenableFutureTask;
20+
import com.github.benmanes.caffeine.cache.AsyncLoadingCache;
21+
import com.github.benmanes.caffeine.cache.Caffeine;
2522
import com.google.common.util.concurrent.ThreadFactoryBuilder;
2623
import java.security.KeyPair;
2724
import java.security.KeyPairGenerator;
2825
import java.security.NoSuchAlgorithmException;
2926
import java.security.NoSuchProviderException;
30-
import java.util.concurrent.ExecutionException;
27+
import java.util.concurrent.CompletionException;
3128
import java.util.concurrent.Executor;
3229
import java.util.concurrent.Executors;
3330
import java.util.concurrent.TimeUnit;
@@ -52,35 +49,18 @@ public class KeyPairCache {
5249
private static final Executor _executor = Executors.newCachedThreadPool(
5350
new ThreadFactoryBuilder().setNameFormat("KeyPair-generator-%d").setDaemon(true).build());
5451

55-
private final LoadingCache<Integer, KeyPair> _cache;
52+
private final AsyncLoadingCache<Integer, KeyPair> _cache;
5653
private String algorithm = DEFAULT_ALGORITHM;
5754
private String provider = DEFAULT_PROVIDER;
5855

5956
public KeyPairCache(long lifetime, TimeUnit unit) {
6057
if (lifetime > 0) {
61-
_cache = CacheBuilder.newBuilder()
58+
_cache = Caffeine.newBuilder()
6259
.maximumSize(1000)
6360
.expireAfterWrite(EXPIRE_AFTER, TimeUnit.DAYS)
6461
.refreshAfterWrite(lifetime, unit)
65-
.build(
66-
new CacheLoader<Integer, KeyPair>() {
67-
@Override
68-
public KeyPair load(Integer keySize) throws
69-
NoSuchAlgorithmException,
70-
NoSuchProviderException {
71-
return generate(keySize);
72-
}
73-
74-
@Override
75-
public ListenableFuture<KeyPair> reload(final
76-
Integer keySize, KeyPair previous) {
77-
ListenableFutureTask<KeyPair> task =
78-
ListenableFutureTask.create(() -> generate(keySize));
79-
_executor.execute(task);
80-
return task;
81-
}
82-
}
83-
);
62+
.executor(_executor)
63+
.buildAsync(this::generate);
8464
} else {
8565
_cache = null;
8666
}
@@ -109,8 +89,8 @@ public KeyPair getKeyPair(int bits)
10989
return generate(bits);
11090
} else {
11191
try {
112-
return _cache.get(bits);
113-
} catch (ExecutionException e) {
92+
return _cache.synchronous().get(bits);
93+
} catch (CompletionException e) {
11494
// propagate
11595
throw new RuntimeException();
11696
}

0 commit comments

Comments
 (0)