diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/cache/CacheChangeBeanRemove.java b/ebean-core/src/main/java/io/ebeaninternal/server/cache/CacheChangeBeanRemove.java
index c6f99f194..7c2086c55 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/cache/CacheChangeBeanRemove.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/cache/CacheChangeBeanRemove.java
@@ -8,10 +8,9 @@ import java.util.Collection;
/**
* Change to remove bean from L2 cache.
*/
-class CacheChangeBeanRemove implements CacheChange {
+final class CacheChangeBeanRemove implements CacheChange {
private final BeanDescriptor> descriptor;
-
private final Collection
*/
-public class DefaultCacheAdapter implements ServerCacheManager {
+public final class DefaultCacheAdapter implements ServerCacheManager {
private final SpiCacheManager cacheManager;
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultCacheHolder.java b/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultCacheHolder.java
index cf15c51fe..6d632acc3 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultCacheHolder.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultCacheHolder.java
@@ -23,14 +23,13 @@ import java.util.concurrent.locks.ReentrantLock;
/**
* Manages the construction of caches.
*/
-class DefaultCacheHolder {
+final class DefaultCacheHolder {
private static final Logger log = LoggerFactory.getLogger("io.ebean.cache.ALL");
private final ReentrantLock lock = new ReentrantLock();
private final ConcurrentHashMap allCaches = new ConcurrentHashMap<>();
private final ConcurrentHashMap> collectIdCaches = new ConcurrentHashMap<>();
-
private final ServerCacheFactory cacheFactory;
private final ServerCacheOptions beanDefault;
private final ServerCacheOptions queryDefault;
@@ -76,7 +75,6 @@ class DefaultCacheHolder {
* Return the cache for a given bean type.
*/
private ServerCache getCacheInternal(Class> beanType, ServerCacheType type, String collectionProperty) {
-
String shortName = key(beanType.getSimpleName(), collectionProperty, type);
String fullKey = key(beanType.getName(), collectionProperty, type);
return allCaches.computeIfAbsent(fullKey, s -> createCache(beanType, type, fullKey, shortName));
@@ -143,10 +141,8 @@ class DefaultCacheHolder {
}
private ServerCacheOptions getBeanOptions(Class> cls) {
-
Cache cache = cls.getAnnotation(Cache.class);
boolean nearCache = (cache != null && cache.nearCache());
-
CacheBeanTuning tuning = cls.getAnnotation(CacheBeanTuning.class);
if (tuning != null) {
return new ServerCacheOptions(nearCache, tuning).applyDefaults(beanDefault);
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCache.java b/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCache.java
index 334a0838a..ebd086117 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCache.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCache.java
@@ -39,7 +39,6 @@ public class DefaultServerCache implements ServerCache {
* The underlying map (ConcurrentHashMap or similar)
*/
protected final Map> map;
-
protected final CountMetric hitCount;
protected final CountMetric missCount;
protected final CountMetric putCount;
@@ -49,16 +48,11 @@ public class DefaultServerCache implements ServerCache {
protected final String name;
protected final String shortName;
-
- private int maxSize;
-
+ private final int maxSize;
private final int trimFrequency;
-
- private int maxIdleSecs;
-
- private int maxSecsToLive;
-
- private TenantAwareKey tenantAwareKey;
+ private final int maxIdleSecs;
+ private final int maxSecsToLive;
+ private final TenantAwareKey tenantAwareKey;
public DefaultServerCache(DefaultServerCacheConfig config) {
this.name = config.getName();
@@ -71,7 +65,6 @@ public class DefaultServerCache implements ServerCache {
this.trimFrequency = config.determineTrimFrequency();
MetricFactory factory = MetricFactory.get();
-
String prefix = "l2n.";
this.hitCount = factory.createCountMetric(prefix + shortName + ".hit");
this.missCount = factory.createCountMetric(prefix + shortName + ".miss");
@@ -82,9 +75,7 @@ public class DefaultServerCache implements ServerCache {
}
public void periodicTrim(BackgroundExecutor executor) {
-
EvictionRunnable trim = new EvictionRunnable();
-
// default to trimming the cache every 60 seconds
long trimFreqSecs = (trimFrequency == 0) ? 60 : trimFrequency;
executor.scheduleWithFixedDelay(trim, trimFreqSecs, trimFreqSecs, TimeUnit.SECONDS);
@@ -102,11 +93,9 @@ public class DefaultServerCache implements ServerCache {
@Override
public ServerCacheStatistics getStatistics(boolean reset) {
-
ServerCacheStatistics cacheStats = new ServerCacheStatistics();
cacheStats.setCacheName(name);
cacheStats.setMaxSize(maxSize);
-
cacheStats.setSize(size());
cacheStats.setHitCount(hitCount.get(reset));
cacheStats.setMissCount(missCount.get(reset));
@@ -114,7 +103,6 @@ public class DefaultServerCache implements ServerCache {
cacheStats.setRemoveCount(removeCount.get(reset));
cacheStats.setClearCount(clearCount.get(reset));
cacheStats.setEvictCount(evictCount.get(reset));
-
return cacheStats;
}
@@ -134,10 +122,8 @@ public class DefaultServerCache implements ServerCache {
@Override
public int getHitRatio() {
-
long mc = missCount.get(false);
long hc = hitCount.get(false);
-
long totalCount = hc + mc;
if (totalCount == 0) {
return 0;
@@ -178,7 +164,6 @@ public class DefaultServerCache implements ServerCache {
*/
@Override
public Object get(Object id) {
-
CacheEntry entry = getCacheEntry(id);
if (entry == null) {
missCount.increment();
@@ -252,31 +237,25 @@ public class DefaultServerCache implements ServerCache {
* Run the eviction based on Idle time, Time to live and LRU last access.
*/
public void runEviction() {
-
long trimForMaxSize;
if (maxSize == 0) {
trimForMaxSize = 0;
} else {
trimForMaxSize = size() - maxSize;
}
-
if (maxIdleSecs == 0 && maxSecsToLive == 0 && trimForMaxSize < 0) {
// nothing to trim on this cache
return;
}
-
long startNanos = System.nanoTime();
-
long trimmedByIdle = 0;
long trimmedByGC = 0;
long trimmedByTTL = 0;
long trimmedByLRU = 0;
List activeList = new ArrayList<>(map.size());
-
long idleExpireNano = startNanos - TimeUnit.SECONDS.toNanos(maxIdleSecs);
long ttlExpireNano = startNanos - TimeUnit.SECONDS.toNanos(maxSecsToLive);
-
Iterator> it = map.values().iterator();
while (it.hasNext()) {
SoftReference ref = it.next();
@@ -287,16 +266,13 @@ public class DefaultServerCache implements ServerCache {
} else if (maxIdleSecs > 0 && idleExpireNano > cacheEntry.getLastAccessTime()) {
it.remove();
trimmedByIdle++;
-
} else if (maxSecsToLive > 0 && ttlExpireNano > cacheEntry.getCreateTime()) {
it.remove();
trimmedByTTL++;
-
} else if (trimForMaxSize > 0) {
activeList.add(cacheEntry);
}
}
-
if (trimForMaxSize > 0 && activeList.size() > maxSize) {
// sort into last access time ascending
activeList.sort(BY_LAST_ACCESS);
@@ -313,7 +289,6 @@ public class DefaultServerCache implements ServerCache {
evictCount.add(trimmedByGC);
evictCount.add(trimmedByTTL);
evictCount.add(trimmedByLRU);
-
if (logger.isTraceEnabled()) {
long exeMicros = TimeUnit.MICROSECONDS.convert(System.nanoTime() - startNanos, TimeUnit.NANOSECONDS);
logger.trace("Executed trim of cache {} in [{}]millis idle[{}] timeToLive[{}] accessTime[{}] gc[{}]",
@@ -324,7 +299,7 @@ public class DefaultServerCache implements ServerCache {
/**
* Runnable that calls the eviction routine.
*/
- public class EvictionRunnable implements Runnable {
+ public final class EvictionRunnable implements Runnable {
@Override
public void run() {
@@ -335,7 +310,7 @@ public class DefaultServerCache implements ServerCache {
/**
* Comparator for sorting by last access time.
*/
- public static class CompareByLastAccess implements Comparator, Serializable {
+ public static final class CompareByLastAccess implements Comparator, Serializable {
private static final long serialVersionUID = 1L;
@@ -348,7 +323,7 @@ public class DefaultServerCache implements ServerCache {
/**
* Wraps the value to additionally hold createTime and lastAccessTime and hit counter.
*/
- public static class CacheEntry {
+ public static final class CacheEntry {
private final Object key;
private final Object value;
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCacheConfig.java b/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCacheConfig.java
index 5f8ed1d5d..2c329a62a 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCacheConfig.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCacheConfig.java
@@ -10,16 +10,14 @@ import java.lang.ref.SoftReference;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-public class DefaultServerCacheConfig {
+public final class DefaultServerCacheConfig {
private final ServerCacheConfig config;
-
- private int maxSize;
- private int maxIdleSecs;
- private int maxSecsToLive;
- private int trimFrequency;
-
- private Map> map;
+ private final int maxSize;
+ private final int maxIdleSecs;
+ private final int maxSecsToLive;
+ private final int trimFrequency;
+ private final Map> map;
public DefaultServerCacheConfig(ServerCacheConfig config) {
this(config, new ConcurrentHashMap<>());
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCacheFactory.java b/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCacheFactory.java
index 1b0476f3c..eab615ed1 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCacheFactory.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCacheFactory.java
@@ -11,7 +11,7 @@ import io.ebean.cache.ServerCacheNotify;
/**
* Default implementation of ServerCacheFactory.
*/
-class DefaultServerCacheFactory implements ServerCacheFactory {
+final class DefaultServerCacheFactory implements ServerCacheFactory {
private final BackgroundExecutor executor;
@@ -31,7 +31,6 @@ class DefaultServerCacheFactory implements ServerCacheFactory {
@Override
public ServerCache createCache(ServerCacheConfig config) {
-
DefaultServerCache cache;
if (config.isQueryCache()) {
// use a server cache aware of extra validation and QueryCacheEntry
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCacheManager.java b/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCacheManager.java
index 7214437cc..562a98371 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCacheManager.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCacheManager.java
@@ -19,18 +19,14 @@ import java.util.Map;
/**
* Manages the bean and query caches.
*/
-public class DefaultServerCacheManager implements SpiCacheManager {
+public final class DefaultServerCacheManager implements SpiCacheManager {
private static final Logger log = LoggerFactory.getLogger("io.ebean.cache.REGION");
private final Map regionMap = new HashMap<>();
-
private final ClusterManager clusterManager;
-
private final DefaultCacheHolder cacheHolder;
-
private final boolean localL2Caching;
-
private final String serverName;
/**
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCachePlugin.java b/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCachePlugin.java
index 262aa8bf2..d4a6a247f 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCachePlugin.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/cache/DefaultServerCachePlugin.java
@@ -8,7 +8,7 @@ import io.ebean.config.DatabaseConfig;
/**
* Default implementation of ServerCachePlugin.
*/
-public class DefaultServerCachePlugin implements ServerCachePlugin {
+public final class DefaultServerCachePlugin implements ServerCachePlugin {
/**
* Creates the default ServerCacheFactory.
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/cache/RemoteCacheEvent.java b/ebean-core/src/main/java/io/ebeaninternal/server/cache/RemoteCacheEvent.java
index ef327d69e..21f04704d 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/cache/RemoteCacheEvent.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/cache/RemoteCacheEvent.java
@@ -12,11 +12,10 @@ import java.util.List;
/**
* Cache events broadcast across the cluster.
*/
-public class RemoteCacheEvent implements BinaryWritable {
+public final class RemoteCacheEvent implements BinaryWritable {
- private boolean clearAll;
-
- private List clearCaches;
+ private final boolean clearAll;
+ private final List clearCaches;
/**
* Clear all the caches.
@@ -57,10 +56,8 @@ public class RemoteCacheEvent implements BinaryWritable {
}
public static RemoteCacheEvent readBinaryMessage(BinaryReadContext dataInput) throws IOException {
-
boolean clearAll = dataInput.readBoolean();
int size = dataInput.readInt();
-
List clearCache = null;
if (size > 0) {
clearCache = new ArrayList<>(size);
@@ -68,7 +65,6 @@ public class RemoteCacheEvent implements BinaryWritable {
clearCache.add(dataInput.readUTF());
}
}
-
return new RemoteCacheEvent(clearAll, clearCache);
}
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/changelog/DefaultChangeLogListener.java b/ebean-core/src/main/java/io/ebeaninternal/server/changelog/DefaultChangeLogListener.java
index ee8e75424..6e12aa31d 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/changelog/DefaultChangeLogListener.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/changelog/DefaultChangeLogListener.java
@@ -20,7 +20,7 @@ public final class DefaultChangeLogListener implements ChangeLogListener, Plugin
/**
* The usual application specific logger.
*/
- protected static final Logger logger = LoggerFactory.getLogger(DefaultChangeLogListener.class);
+ private static final Logger logger = LoggerFactory.getLogger(DefaultChangeLogListener.class);
/**
* The named logger we send the change set payload to. Can be externally configured as desired.
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/changelog/DefaultChangeLogRegister.java b/ebean-core/src/main/java/io/ebeaninternal/server/changelog/DefaultChangeLogRegister.java
index d9f962969..e7a7bf303 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/changelog/DefaultChangeLogRegister.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/changelog/DefaultChangeLogRegister.java
@@ -30,20 +30,16 @@ public final class DefaultChangeLogRegister implements ChangeLogRegister {
@Override
public ChangeLogFilter getChangeFilter(Class> beanType) {
-
ChangeLog changeLog = getChangeLog(beanType);
if (changeLog == null) {
return null;
}
-
String[] updatesThatInclude = changeLog.updatesThatInclude();
if (updatesThatInclude.length == 0) {
return insertModeInclude(changeLog.inserts()) ? INCLUDE_INSERTS : EXCLUDE_INSERTS;
}
-
Set updateProps = new HashSet<>();
Collections.addAll(updateProps, updatesThatInclude);
-
return new UpdateFilter(insertModeInclude(changeLog.inserts()), updateProps);
}
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/readaudit/DefaultReadAuditPrepare.java b/ebean-core/src/main/java/io/ebeaninternal/server/readaudit/DefaultReadAuditPrepare.java
index dee68efbd..70065f9ec 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/readaudit/DefaultReadAuditPrepare.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/readaudit/DefaultReadAuditPrepare.java
@@ -10,7 +10,7 @@ import io.ebean.event.readaudit.ReadEvent;
* the user context information on the readEvent bean (like user id).
*
*/
-public class DefaultReadAuditPrepare implements ReadAuditPrepare {
+public final class DefaultReadAuditPrepare implements ReadAuditPrepare {
@Override
public void prepare(ReadEvent readEvent) {