1 package com.atlassian.cache;
2
3 import java.io.Serializable;
4
5 import javax.annotation.Nonnull;
6
7 import com.atlassian.annotations.Internal;
8
9
10
11
12
13
14 @Internal
15 class DefaultCacheSettings implements CacheSettings, Serializable
16 {
17 private static final long serialVersionUID = 1L;
18
19 private final Long expireAfterAccess;
20 private final Long expireAfterWrite;
21 private final Boolean flushable;
22 private final Boolean local;
23 private final Integer maxEntries;
24 private final Boolean replicateAsynchronously;
25 private final Boolean replicateViaCopy;
26 private final Boolean statisticsEnabled;
27
28 DefaultCacheSettings(Long expireAfterAccess, Long expireAfterWrite, Boolean flushable,
29 Boolean local, Integer maxEntries, Boolean replicateAsynchronously, Boolean replicateViaCopy, Boolean statisticsEnabled)
30 {
31 this.expireAfterAccess = expireAfterAccess;
32 this.expireAfterWrite = expireAfterWrite;
33 this.flushable = flushable;
34 this.local = local;
35 this.maxEntries = maxEntries;
36 this.replicateAsynchronously = replicateAsynchronously;
37 this.replicateViaCopy = replicateViaCopy;
38 this.statisticsEnabled = statisticsEnabled;
39 }
40
41 @Nonnull
42 @Override
43 public CacheSettings override(@Nonnull CacheSettings overrides)
44 {
45 return new DefaultCacheSettings(
46 notNullElse(overrides.getExpireAfterAccess(), expireAfterAccess),
47 notNullElse(overrides.getExpireAfterWrite(), expireAfterWrite),
48 notNullElse(overrides.getFlushable(), flushable),
49 notNullElse(overrides.getLocal(), local),
50 notNullElse(overrides.getMaxEntries(), maxEntries),
51 notNullElse(overrides.getReplicateAsynchronously(), replicateAsynchronously),
52 notNullElse(overrides.getReplicateViaCopy(), replicateViaCopy),
53 notNullElse(overrides.getStatisticsEnabled(), statisticsEnabled));
54 }
55
56 @Override
57 public Long getExpireAfterAccess()
58 {
59 return expireAfterAccess;
60 }
61
62 @Override
63 public long getExpireAfterAccess(long defaultValue)
64 {
65 return (null == getExpireAfterAccess()) ? defaultValue : getExpireAfterAccess();
66 }
67
68 @Override
69 public Long getExpireAfterWrite()
70 {
71 return expireAfterWrite;
72 }
73
74 @Override
75 public long getExpireAfterWrite(long defaultValue)
76 {
77 return (null == getExpireAfterWrite()) ? defaultValue : getExpireAfterWrite();
78 }
79
80 @Override
81 public Boolean getFlushable()
82 {
83 return flushable;
84 }
85
86 @Override
87 public boolean getFlushable(boolean defaultValue)
88 {
89 return (null == getFlushable()) ? defaultValue : getFlushable();
90 }
91
92 @Override
93 public Boolean getLocal()
94 {
95 return local;
96 }
97
98 @Override
99 public boolean getLocal(boolean defaultValue)
100 {
101 return (null == getLocal()) ? defaultValue : getLocal();
102 }
103
104 @Override
105 public Integer getMaxEntries()
106 {
107 return maxEntries;
108 }
109
110 @Override
111 public int getMaxEntries(int defaultValue)
112 {
113 return (null == getMaxEntries()) ? defaultValue : getMaxEntries();
114 }
115
116 @Override
117 public Boolean getReplicateAsynchronously()
118 {
119 return replicateAsynchronously;
120 }
121
122 @Override
123 public boolean getReplicateAsynchronously(boolean defaultValue)
124 {
125 return (null == getReplicateAsynchronously()) ? defaultValue : getReplicateAsynchronously();
126 }
127
128 @Override
129 public Boolean getReplicateViaCopy()
130 {
131 return replicateViaCopy;
132 }
133
134 @Override
135 public boolean getReplicateViaCopy(boolean defaultValue)
136 {
137 return (null == getReplicateViaCopy()) ? defaultValue : getReplicateViaCopy();
138 }
139
140 @Override
141 public Boolean getStatisticsEnabled()
142 {
143 return statisticsEnabled;
144 }
145
146 @Override
147 public boolean getStatisticsEnabled(final boolean defaultValue)
148 {
149 return (null == getStatisticsEnabled()) ? defaultValue : getStatisticsEnabled();
150 }
151
152 private static <T> T notNullElse(T value, T def)
153 {
154 return (null != value) ? value : def;
155 }
156 }