All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hibernate.cache.ehcache.internal.regions.EhcacheGeneralDataRegion Maven / Gradle / Ivy

Go to download

Integration for using Ehcache 2.x as a Hibernate second-level-cache provider

There is a newer version: 6.0.0.Alpha7
Show newest version
/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or .
 */
package org.hibernate.cache.ehcache.internal.regions;

import java.util.Properties;

import net.sf.ehcache.Ehcache;
import net.sf.ehcache.Element;
import net.sf.ehcache.constructs.nonstop.NonStopCacheException;

import org.hibernate.cache.CacheException;
import org.hibernate.cache.ehcache.EhCacheMessageLogger;
import org.hibernate.cache.ehcache.internal.nonstop.HibernateNonstopCacheExceptionHandler;
import org.hibernate.cache.ehcache.internal.strategy.EhcacheAccessStrategyFactory;
import org.hibernate.cache.spi.GeneralDataRegion;

import org.hibernate.engine.spi.SessionImplementor;
import org.jboss.logging.Logger;

/**
 * An Ehcache specific GeneralDataRegion.
 * 

* GeneralDataRegion instances are used for both the timestamps and query caches. * * @author Chris Dennis * @author Greg Luck * @author Emmanuel Bernard * @author Abhishek Sanoujam * @author Alex Snaps */ abstract class EhcacheGeneralDataRegion extends EhcacheDataRegion implements GeneralDataRegion { private static final EhCacheMessageLogger LOG = Logger.getMessageLogger( EhCacheMessageLogger.class, EhcacheGeneralDataRegion.class.getName() ); /** * Constructs an EhcacheGeneralDataRegion around the given underlying cache. * * @param accessStrategyFactory The factory for building needed RegionAccessStrategy instance * @param underlyingCache The ehcache cache instance * @param properties Any additional[ properties */ public EhcacheGeneralDataRegion( EhcacheAccessStrategyFactory accessStrategyFactory, Ehcache underlyingCache, Properties properties) { super( accessStrategyFactory, underlyingCache, properties ); } @Override public Object get(SessionImplementor session, Object key) throws CacheException { try { LOG.debugf( "key: %s", key ); if ( key == null ) { return null; } else { final Element element = getCache().get( key ); if ( element == null ) { LOG.debugf( "Element for key %s is null", key ); return null; } else { return element.getObjectValue(); } } } catch (net.sf.ehcache.CacheException e) { if ( e instanceof NonStopCacheException ) { HibernateNonstopCacheExceptionHandler.getInstance() .handleNonstopCacheException( (NonStopCacheException) e ); return null; } else { throw new CacheException( e ); } } } @Override public void put(SessionImplementor session, Object key, Object value) throws CacheException { LOG.debugf( "key: %s value: %s", key, value ); try { final Element element = new Element( key, value ); getCache().put( element ); } catch (IllegalArgumentException e) { throw new CacheException( e ); } catch (IllegalStateException e) { throw new CacheException( e ); } catch (net.sf.ehcache.CacheException e) { if ( e instanceof NonStopCacheException ) { HibernateNonstopCacheExceptionHandler.getInstance() .handleNonstopCacheException( (NonStopCacheException) e ); } else { throw new CacheException( e ); } } } @Override public void evict(Object key) throws CacheException { try { getCache().remove( key ); } catch (ClassCastException e) { throw new CacheException( e ); } catch (IllegalStateException e) { throw new CacheException( e ); } catch (net.sf.ehcache.CacheException e) { if ( e instanceof NonStopCacheException ) { HibernateNonstopCacheExceptionHandler.getInstance() .handleNonstopCacheException( (NonStopCacheException) e ); } else { throw new CacheException( e ); } } } @Override public void evictAll() throws CacheException { try { getCache().removeAll(); } catch (IllegalStateException e) { throw new CacheException( e ); } catch (net.sf.ehcache.CacheException e) { if ( e instanceof NonStopCacheException ) { HibernateNonstopCacheExceptionHandler.getInstance() .handleNonstopCacheException( (NonStopCacheException) e ); } else { throw new CacheException( e ); } } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy