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

net.sf.ehcache.extension.CacheExtension Maven / Gradle / Ivy

There is a newer version: 2.10.9.2
Show newest version
/**
 *  Copyright Terracotta, Inc.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package net.sf.ehcache.extension;

import net.sf.ehcache.CacheException;
import net.sf.ehcache.Ehcache;
import net.sf.ehcache.Status;

/**
 * This is a general purpose mechanism to allow generic extensions to a Cache.
 * 

* CacheExtensions are tied into the Cache lifecycle. For that reason this interface has the * lifecycle methods. *

* CacheExtensions are created using the CacheExtensionFactory which has a * createCacheCacheExtension() method which takes as a parameter a Cache and * properties. It can thus call back into any public method on Cache, including, of course, * the load methods. *

* CacheExtensions are suitable for timing services, where you want to create a timer to * perform cache operations. The other way of adding Cache behaviour is to decorate a cache. * See {@link net.sf.ehcache.constructs.blocking.BlockingCache} for an example of how to do * this. *

* Because a CacheExtension holds a reference to a Cache, the CacheExtension can do things * such as registering a CacheEventListener or even a CacheManagerEventListener, all from * within a CacheExtension, creating more opportunities for customisation. * * @author Greg Luck * @version $Id: CacheExtension.java 5594 2012-05-07 16:04:31Z cdennis $ */ public interface CacheExtension { /** * Notifies providers to initialise themselves. *

* This method is called during the Cache's initialise method after it has changed it's * status to alive. Cache operations are legal in this method. * * @throws CacheException */ void init(); /** * Providers may be doing all sorts of exotic things and need to be able to clean up on * dispose. *

* Cache operations are illegal when this method is called. The cache itself is partly * disposed when this method is called. * * @throws CacheException */ void dispose() throws CacheException; /** * Creates a clone of this extension. This method will only be called by ehcache before a * cache is initialized. *

* Implementations should throw CloneNotSupportedException if they do not support clone * but that will stop them from being used with defaultCache. * * @param cache the cache extended * @return a clone * @throws CloneNotSupportedException if the extension could not be cloned. */ public CacheExtension clone(Ehcache cache) throws CloneNotSupportedException; /** * @return the status of the extension */ public Status getStatus(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy