1
2
3
4
5
6
7
8
9
10
11
12
13
14 package org.jdbi.v3.cache.guava;
15
16 import com.google.common.cache.CacheBuilder;
17 import org.jdbi.v3.core.cache.JdbiCache;
18 import org.jdbi.v3.core.cache.JdbiCacheBuilder;
19 import org.jdbi.v3.core.cache.JdbiCacheLoader;
20
21
22
23
24 public final class GuavaCacheBuilder implements JdbiCacheBuilder {
25
26 private final CacheBuilder<Object, Object> cacheBuilder;
27
28
29
30
31
32
33 public static JdbiCacheBuilder instance() {
34 return new GuavaCacheBuilder();
35 }
36
37
38
39
40
41
42 public GuavaCacheBuilder(CacheBuilder<Object, Object> cacheBuilder) {
43 this.cacheBuilder = cacheBuilder;
44 }
45
46 GuavaCacheBuilder() {
47 this.cacheBuilder = CacheBuilder.newBuilder().recordStats();
48 }
49
50 @Override
51 public <K, V> JdbiCache<K, V> build() {
52 return new GuavaCache<>(cacheBuilder);
53 }
54
55 @Override
56 public <K, V> JdbiCache<K, V> buildWithLoader(JdbiCacheLoader<K, V> cacheLoader) {
57 return new GuavaLoadingCache<>(cacheBuilder, cacheLoader);
58 }
59
60 @Override
61 public JdbiCacheBuilder maxSize(int maxSize) {
62 cacheBuilder.maximumSize(maxSize);
63 return this;
64 }
65 }