001package io.ebeaninternal.server.cache;
002
003import io.ebean.cache.QueryCacheEntryValidate;
004import io.ebean.cache.ServerCacheFactory;
005import io.ebean.cache.ServerCacheOptions;
006import io.ebean.config.CurrentTenantProvider;
007import io.ebean.config.ServerConfig;
008import io.ebeaninternal.server.cluster.ClusterManager;
009
010/**
011 * Configuration options when creating the default cache manager.
012 */
013public class CacheManagerOptions {
014
015  private final ClusterManager clusterManager;
016
017  private final ServerConfig serverConfig;
018
019  private final boolean localL2Caching;
020
021  private CurrentTenantProvider currentTenantProvider;
022
023  private QueryCacheEntryValidate queryCacheEntryValidate;
024
025  private ServerCacheFactory cacheFactory = new DefaultServerCacheFactory();
026  private ServerCacheOptions beanDefault = new ServerCacheOptions();
027  private ServerCacheOptions queryDefault = new ServerCacheOptions();
028
029  CacheManagerOptions() {
030    this.localL2Caching = true;
031    this.clusterManager = null;
032    this.serverConfig = null;
033    this.cacheFactory = new DefaultServerCacheFactory();
034    this.beanDefault = new ServerCacheOptions();
035    this.queryDefault = new ServerCacheOptions();
036  }
037
038  public CacheManagerOptions(ClusterManager clusterManager, ServerConfig serverConfig, boolean localL2Caching) {
039    this.clusterManager = clusterManager;
040    this.serverConfig = serverConfig;
041    this.localL2Caching = localL2Caching;
042    this.currentTenantProvider = serverConfig.getCurrentTenantProvider();
043  }
044
045  public CacheManagerOptions with(ServerCacheOptions beanDefault, ServerCacheOptions queryDefault) {
046    this.beanDefault = beanDefault;
047    this.queryDefault = queryDefault;
048    return this;
049  }
050
051  public CacheManagerOptions with(ServerCacheFactory cacheFactory, QueryCacheEntryValidate queryCacheEntryValidate) {
052    this.cacheFactory = cacheFactory;
053    this.queryCacheEntryValidate = queryCacheEntryValidate;
054    return this;
055  }
056
057  public CacheManagerOptions with(CurrentTenantProvider currentTenantProvider) {
058    this.currentTenantProvider = currentTenantProvider;
059    return this;
060  }
061
062  public String getServerName() {
063    return (serverConfig == null) ? "db" : serverConfig.getName();
064  }
065
066  public boolean isLocalL2Caching() {
067    return localL2Caching;
068  }
069
070  public ServerCacheFactory getCacheFactory() {
071    return cacheFactory;
072  }
073
074  public ServerCacheOptions getBeanDefault() {
075    return beanDefault;
076  }
077
078  public ServerCacheOptions getQueryDefault() {
079    return queryDefault;
080  }
081
082  public CurrentTenantProvider getCurrentTenantProvider() {
083    return currentTenantProvider;
084  }
085
086  public ClusterManager getClusterManager() {
087    return clusterManager;
088  }
089
090  public QueryCacheEntryValidate getQueryCacheEntryValidate() {
091    return queryCacheEntryValidate;
092  }
093}