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}