private Cache getCache(String regionName, String typeKey, Properties properties) { TypeOverrides regionOverride = typeOverrides.get(regionName); if (!definedConfigurations.contains(regionName)) { String templateCacheName = null; Configuration regionCacheCfg = null; if (regionOverride != null) { if (log.isDebugEnabled()) log.debug("Cache region specific configuration exists: " + regionOverride); regionOverride = overrideStatisticsIfPresent(regionOverride, properties); regionCacheCfg = regionOverride.createInfinispanConfiguration(); String cacheName = regionOverride.getCacheName(); if (cacheName != null) // Region specific override with a given cache name templateCacheName = cacheName; else // Region specific override without cache name, so template cache name is generic for // data type. templateCacheName = typeOverrides.get(typeKey).getCacheName(); } else { // No region specific overrides, template cache name is generic for data type. templateCacheName = typeOverrides.get(typeKey).getCacheName(); regionCacheCfg = typeOverrides.get(typeKey).createInfinispanConfiguration(); } // Configure transaction manager regionCacheCfg = configureTransactionManager(regionCacheCfg, templateCacheName, properties); // Apply overrides manager.defineConfiguration(regionName, templateCacheName, regionCacheCfg); definedConfigurations.add(regionName); } Cache cache = manager.getCache(regionName); if (!cache.getStatus().allowInvocations()) { cache.start(); } return createCacheWrapper(cache.getAdvancedCache()); }
private TypeOverrides overrideStatisticsIfPresent(TypeOverrides override, Properties properties) { String globalStats = ConfigurationHelper.extractPropertyValue(INFINISPAN_GLOBAL_STATISTICS_PROP, properties); if (globalStats != null) { override.setExposeStatistics(Boolean.parseBoolean(globalStats)); } return override; }
private void defineGenericDataTypeCacheConfigurations(Settings settings, Properties properties) throws CacheException { String[] defaultGenericDataTypes = new String[] {ENTITY_KEY, COLLECTION_KEY, TIMESTAMPS_KEY, QUERY_KEY}; for (String type : defaultGenericDataTypes) { TypeOverrides override = overrideStatisticsIfPresent(typeOverrides.get(type), properties); String cacheName = override.getCacheName(); Configuration newCacheCfg = override.createInfinispanConfiguration(); // Apply overrides Configuration cacheConfig = manager.defineConfiguration(cacheName, cacheName, newCacheCfg); // Configure transaction manager cacheConfig = configureTransactionManager(cacheConfig, cacheName, properties); manager.defineConfiguration(cacheName, cacheName, cacheConfig); definedConfigurations.add(cacheName); override.validateInfinispanConfiguration(cacheConfig); } }
private void dissectProperty(int prefixLoc, String key, Properties properties) { TypeOverrides cfgOverride = null; int suffixLoc = -1; if (!key.equals(INFINISPAN_CONFIG_RESOURCE_PROP) && (suffixLoc = key.indexOf(CONFIG_SUFFIX)) != -1) { cfgOverride = getOrCreateConfig(prefixLoc, key, suffixLoc); cfgOverride.setCacheName(ConfigurationHelper.extractPropertyValue(key, properties)); } else if ((suffixLoc = key.indexOf(STRATEGY_SUFFIX)) != -1) { cfgOverride = getOrCreateConfig(prefixLoc, key, suffixLoc); cfgOverride.setEvictionStrategy(ConfigurationHelper.extractPropertyValue(key, properties)); } else if ((suffixLoc = key.indexOf(WAKE_UP_INTERVAL_SUFFIX)) != -1) { cfgOverride = getOrCreateConfig(prefixLoc, key, suffixLoc); cfgOverride.setEvictionWakeUpInterval( Long.parseLong(ConfigurationHelper.extractPropertyValue(key, properties))); } else if ((suffixLoc = key.indexOf(MAX_ENTRIES_SUFFIX)) != -1) { cfgOverride = getOrCreateConfig(prefixLoc, key, suffixLoc); cfgOverride.setEvictionMaxEntries(ConfigurationHelper.getInt(key, properties, -1)); } else if ((suffixLoc = key.indexOf(LIFESPAN_SUFFIX)) != -1) { cfgOverride = getOrCreateConfig(prefixLoc, key, suffixLoc); cfgOverride.setExpirationLifespan( Long.parseLong(ConfigurationHelper.extractPropertyValue(key, properties))); } else if ((suffixLoc = key.indexOf(MAX_IDLE_SUFFIX)) != -1) { cfgOverride = getOrCreateConfig(prefixLoc, key, suffixLoc); cfgOverride.setExpirationMaxIdle( Long.parseLong(ConfigurationHelper.extractPropertyValue(key, properties))); } // else if ((suffixLoc = key.indexOf(STATISTICS_SUFFIX)) != -1) { // cfgOverride = getOrCreateConfig(prefixLoc, key, suffixLoc); // // cfgOverride.setExposeStatistics(Boolean.parseBoolean(PropertiesHelper.extractPropertyValue(key, properties))); // } }
private Map<String, TypeOverrides> initGenericDataTypeOverrides() { TypeOverrides entityOverrides = new TypeOverrides(); entityOverrides.setCacheName(DEF_ENTITY_RESOURCE); typeOverrides.put(ENTITY_KEY, entityOverrides); TypeOverrides collectionOverrides = new TypeOverrides(); collectionOverrides.setCacheName(DEF_ENTITY_RESOURCE); typeOverrides.put(COLLECTION_KEY, collectionOverrides); TypeOverrides timestampOverrides = new TimestampTypeOverrides(); timestampOverrides.setCacheName(DEF_TIMESTAMPS_RESOURCE); typeOverrides.put(TIMESTAMPS_KEY, timestampOverrides); TypeOverrides queryOverrides = new TypeOverrides(); queryOverrides.setCacheName(DEF_QUERY_RESOURCE); typeOverrides.put(QUERY_KEY, queryOverrides); return typeOverrides; }