Patched version of OSCacheProvider.java originally created by Mathias Bogaert. OSCacheProvider.java import java.util.Properties; import net.sf.hibernate.cache.Cache; import net.sf.hibernate.cache.CacheException; import net.sf.hibernate.cache.CacheProvider; import net.sf.hibernate.cache.Timestamper; import net.sf.hibernate.util.PropertiesHelper; import net.sf.hibernate.util.StringHelper; import com.opensymphony.oscache.base.CacheEntry; import com.opensymphony.oscache.base.Config; /** * Support for OpenSymphony OSCache. This implementation assumes * that identifiers have well-behaved <tt>toString()</tt> methods. */ public class OSCacheProvider implements CacheProvider { /** * The <tt>OSCache</tt> refresh period property suffix. */ public static final String OSCACHE_REFRESH_PERIOD = "refresh.period"; /** * The <tt>OSCache</tt> CRON expression property suffix. */ public static final String OSCACHE_CRON = "cron"; private static final Properties OSCACHE_PROPERTIES = new Config().getProperties(); /** * Builds a new {@link Cache} instance, and gets it's properties from the OSCache {@link Config} * which reads the properties file (<code>oscache.properties</code>) from the classpath. * If the file cannot be found or loaded, an the defaults are used. * * @param region * @param properties * @return * @throws CacheException */ public Cache buildCache(String region, Properties properties) throws CacheException { int refreshPeriod = PropertiesHelper.getInt( StringHelper.qualify(region, OSCACHE_REFRESH_PERIOD), OSCACHE_PROPERTIES, CacheEntry.INDEFINITE_EXPIRY ); String cron = OSCACHE_PROPERTIES.getProperty( StringHelper.qualify(region, OSCACHE_CRON) ); // construct the cache return new OSCache(refreshPeriod, cron, region); } public long nextTimestamp() { return Timestamper.next(); } /** * Callback to perform any necessary initialization of the underlying cache implementation * during SessionFactory construction. * * @param properties current configuration settings. */ public void start(Properties properties) throws CacheException { } /** * Callback to perform any necessary cleanup of the underlying cache implementation * during SessionFactory.close(). */ public void stop() { } } |