/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.store.hibernate.cache; import java.util.Map; import org.hibernate.cache.Cache; import org.hibernate.cache.CacheException; import org.hibernate.cache.Timestamper; import com.enonic.cms.framework.cache.CacheFacade; /** * This class implements hibernate cache provider. */ public final class HibernateCache implements Cache { /** * Group name. */ private final String groupName; /** * Shared cache. */ private final CacheFacade cache; /** * Construct the cache. */ public HibernateCache( String groupName, CacheFacade cache ) { this.groupName = groupName; this.cache = cache; } /** * @see org.hibernate.cache.Cache#get(java.lang.Object) */ public Object get( Object key ) { return this.cache.get( this.groupName, key.toString() ); } /** * @see org.hibernate.cache.Cache#put(java.lang.Object, java.lang.Object) */ public void put( Object key, Object value ) { this.cache.put( this.groupName, key.toString(), value ); } /** * @see org.hibernate.cache.Cache#remove(java.lang.Object) */ public void remove( Object key ) { //("Removing one entry ("+key+") in group: " + this.groupName); this.cache.remove( this.groupName, key.toString() ); } /** * @see org.hibernate.cache.Cache#clear() */ public void clear() { //("Removing all cache entries in group: " + this.groupName); this.cache.removeGroup( this.groupName ); } /** * @see org.hibernate.cache.Cache#destroy() */ public void destroy() { // Do nothing } /** * @see org.hibernate.cache.Cache#lock(java.lang.Object) */ public void lock( Object key ) { // Do nothing } /** * @see org.hibernate.cache.Cache#unlock(java.lang.Object) */ public void unlock( Object key ) { // Do nothing } /** * @see org.hibernate.cache.Cache#nextTimestamp() */ public long nextTimestamp() { return Timestamper.next(); } /** * @see org.hibernate.cache.Cache#getTimeout() */ public int getTimeout() { return Timestamper.ONE_MS * 60000; } /** * @see org.hibernate.cache.Cache#toMap() */ @SuppressWarnings("unchecked") public Map toMap() { throw new UnsupportedOperationException(); } /** * @see org.hibernate.cache.Cache#getElementCountOnDisk() */ public long getElementCountOnDisk() { return -1; } /** * @see org.hibernate.cache.Cache#getElementCountInMemory() */ public long getElementCountInMemory() { return -1; } /** * @see org.hibernate.cache.Cache#getSizeInMemory() */ public long getSizeInMemory() { return -1; } /** * @see org.hibernate.cache.Cache#getRegionName() */ public String getRegionName() { return this.cache.getName(); } /** * @see org.hibernate.cache.Cache#update(java.lang.Object, java.lang.Object) */ public void update( Object key, Object value ) throws CacheException { put( key, value ); } /** * @see org.hibernate.cache.Cache#read(java.lang.Object) */ public Object read( Object key ) throws CacheException { return get( key ); } }