View Javadoc

1   package com.atlassian.cache;
2   
3   import com.atlassian.annotations.Internal;
4   
5   /**
6    * Provides an implementation of the {@link CacheSettings} interface.
7    * @since 2.0
8    */
9   @Internal
10  class DefaultCacheSettings implements CacheSettings
11  {
12      private final Long expireAfterAccess;
13      private final Long expireAfterWrite;
14      private final Boolean flushable;
15      private final Boolean local;
16      private final Integer maxEntries;
17      private final Boolean replicateAsynchronously;
18      private final Boolean replicateViaCopy;
19  
20      DefaultCacheSettings(Long expireAfterAccess, Long expireAfterWrite, Boolean flushable,
21          Boolean local, Integer maxEntries, Boolean replicateAsynchronously, Boolean replicateViaCopy)
22      {
23          this.expireAfterAccess = expireAfterAccess;
24          this.expireAfterWrite = expireAfterWrite;
25          this.flushable = flushable;
26          this.local = local;
27          this.maxEntries = maxEntries;
28          this.replicateAsynchronously = replicateAsynchronously;
29          this.replicateViaCopy = replicateViaCopy;
30      }
31  
32      @Override
33      public CacheSettings override(CacheSettings overrides)
34      {
35          return new DefaultCacheSettings(
36                  notNullElse(overrides.getExpireAfterAccess(), expireAfterAccess),
37                  notNullElse(overrides.getExpireAfterWrite(), expireAfterWrite),
38                  notNullElse(overrides.getFlushable(), flushable),
39                  notNullElse(overrides.getLocal(), local),
40                  notNullElse(overrides.getMaxEntries(), maxEntries),
41                  notNullElse(overrides.getReplicateAsynchronously(), replicateAsynchronously),
42                  notNullElse(overrides.getReplicateViaCopy(), replicateViaCopy));
43      }
44  
45      @Override
46      public Long getExpireAfterAccess()
47      {
48          return expireAfterAccess;
49      }
50      @Override
51      public long getExpireAfterAccess(long defaultValue)
52      {
53          return (null == getExpireAfterAccess()) ? defaultValue : getExpireAfterAccess();
54      }
55  
56      @Override
57      public Long getExpireAfterWrite()
58      {
59          return expireAfterWrite;
60      }
61      @Override
62      public long getExpireAfterWrite(long defaultValue)
63      {
64          return (null == getExpireAfterWrite()) ? defaultValue : getExpireAfterWrite();
65      }
66  
67      @Override
68      public Boolean getFlushable()
69      {
70          return flushable;
71      }
72  
73      @Override
74      public boolean getFlushable(boolean defaultValue)
75      {
76          return (null == getFlushable()) ? defaultValue : getFlushable();
77      }
78  
79      @Override
80      public Boolean getLocal()
81      {
82          return local;
83      }
84      @Override
85      public boolean getLocal(boolean defaultValue)
86      {
87          return (null == getLocal()) ? defaultValue : getLocal();
88      }
89  
90      @Override
91      public Integer getMaxEntries()
92      {
93          return maxEntries;
94      }
95  
96      @Override
97      public int getMaxEntries(int defaultValue)
98      {
99          return (null == getMaxEntries()) ? defaultValue : getMaxEntries();
100     }
101 
102     @Override
103     public Boolean getReplicateAsynchronously()
104     {
105         return replicateAsynchronously;
106     }
107     @Override
108     public boolean getReplicateAsynchronously(boolean defaultValue)
109     {
110         return (null == getReplicateAsynchronously()) ? defaultValue : getReplicateAsynchronously();
111     }
112 
113     @Override
114     public Boolean getReplicateViaCopy()
115     {
116         return replicateViaCopy;
117     }
118 
119     @Override
120     public boolean getReplicateViaCopy(boolean defaultValue)
121     {
122         return (null == getReplicateViaCopy()) ? defaultValue : getReplicateViaCopy();
123     }
124 
125     private static <T> T notNullElse(T value, T def)
126     {
127         return (null != value) ? value : def;
128     }
129 }