From 736d9dd6154b87b05245a0334b8df795dc893a6f Mon Sep 17 00:00:00 2001 From: Mykola Pavluchynskyi Date: Thu, 8 Nov 2018 10:43:23 +0200 Subject: [PATCH] HHH-13090 Allow to use specific cache implementations in Ehcache cache provider Typically, it allows to use a BlockingCache. --- .../ehcache/internal/EhcacheRegionFactory.java | 15 ++++++++------- .../cache/ehcache/internal/StorageAccessImpl.java | 8 ++++---- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/hibernate-ehcache/src/main/java/org/hibernate/cache/ehcache/internal/EhcacheRegionFactory.java b/hibernate-ehcache/src/main/java/org/hibernate/cache/ehcache/internal/EhcacheRegionFactory.java index 650ee2725830..db66cff10832 100644 --- a/hibernate-ehcache/src/main/java/org/hibernate/cache/ehcache/internal/EhcacheRegionFactory.java +++ b/hibernate-ehcache/src/main/java/org/hibernate/cache/ehcache/internal/EhcacheRegionFactory.java @@ -11,7 +11,7 @@ import java.util.List; import java.util.Map; -import net.sf.ehcache.Cache; +import net.sf.ehcache.Ehcache; import net.sf.ehcache.CacheManager; import net.sf.ehcache.config.Configuration; import net.sf.ehcache.config.ConfigurationFactory; @@ -131,7 +131,7 @@ protected final String defaultRegionName(String regionName, SessionFactoryImplem return regionName; } - protected Cache getOrCreateCache(String unqualifiedRegionName, SessionFactoryImplementor sessionFactory) { + protected Ehcache getOrCreateCache(String unqualifiedRegionName, SessionFactoryImplementor sessionFactory) { verifyStarted(); assert !RegionNameQualifier.INSTANCE.isQualified( unqualifiedRegionName, sessionFactory.getSessionFactoryOptions() ); @@ -140,14 +140,14 @@ protected Cache getOrCreateCache(String unqualifiedRegionName, SessionFactoryImp sessionFactory.getSessionFactoryOptions() ); - final Cache cache = cacheManager.getCache( qualifiedRegionName ); + final Ehcache cache = cacheManager.getEhcache( qualifiedRegionName ); if ( cache == null ) { return createCache( qualifiedRegionName ); } return cache; } - protected Cache createCache(String regionName) { + protected Ehcache createCache(String regionName) { switch ( missingCacheStrategy ) { case CREATE_WARN: SecondLevelCacheLogger.INSTANCE.missingCacheCreated( @@ -155,10 +155,10 @@ protected Cache createCache(String regionName) { ConfigSettings.MISSING_CACHE_STRATEGY, MissingCacheStrategy.CREATE.getExternalRepresentation() ); cacheManager.addCache( regionName ); - return cacheManager.getCache( regionName ); + return cacheManager.getEhcache( regionName ); case CREATE: cacheManager.addCache( regionName ); - return cacheManager.getCache( regionName ); + return cacheManager.getEhcache( regionName ); case FAIL: throw new CacheException( "On-the-fly creation of Ehcache Cache objects is not supported [" + regionName + "]" ); default: @@ -171,13 +171,14 @@ protected boolean cacheExists(String unqualifiedRegionName, SessionFactoryImplem unqualifiedRegionName, sessionFactory.getSessionFactoryOptions() ); - return cacheManager.getCache( qualifiedRegionName ) != null; + return cacheManager.getEhcache( qualifiedRegionName ) != null; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Lifecycle + @Override protected boolean isStarted() { return super.isStarted() && cacheManager != null; } diff --git a/hibernate-ehcache/src/main/java/org/hibernate/cache/ehcache/internal/StorageAccessImpl.java b/hibernate-ehcache/src/main/java/org/hibernate/cache/ehcache/internal/StorageAccessImpl.java index f2ab9983168d..97496e358dc4 100644 --- a/hibernate-ehcache/src/main/java/org/hibernate/cache/ehcache/internal/StorageAccessImpl.java +++ b/hibernate-ehcache/src/main/java/org/hibernate/cache/ehcache/internal/StorageAccessImpl.java @@ -6,7 +6,7 @@ */ package org.hibernate.cache.ehcache.internal; -import net.sf.ehcache.Cache; +import net.sf.ehcache.Ehcache; import net.sf.ehcache.Element; import net.sf.ehcache.constructs.nonstop.NonStopCacheException; import net.sf.ehcache.hibernate.nonstop.HibernateNonstopCacheExceptionHandler; @@ -25,14 +25,14 @@ public class StorageAccessImpl implements DomainDataStorageAccess { private static final Logger LOG = Logger.getLogger( StorageAccessImpl.class ); - private final Cache cache; + private final Ehcache cache; @SuppressWarnings("WeakerAccess") - public StorageAccessImpl(Cache cache) { + public StorageAccessImpl(Ehcache cache) { this.cache = cache; } - public Cache getCache() { + public Ehcache getCache() { return cache; }