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

javax.cache.CacheManager Maven / Gradle / Ivy

The newest version!
/**
 *  Copyright (c) 2011 Terracotta, Inc.
 *  Copyright (c) 2011 Oracle and/or its affiliates.
 *
 *  All rights reserved. Use is subject to license terms.
 */

package javax.cache;

import javax.transaction.UserTransaction;

/**
 * A CacheManager is used for looking up Caches and controls their lifecycle. It represents a collection of caches.
 * 

* To the extent that implementations have configuration at the CacheManager level, it is a way for these caches * to share common configuration. For example a CacheManager might be clustered so all caches in that CacheManager * will participate in the same cluster. *

*

*

*

Creation

* Concrete implementations can be created in a number of ways: *
    *
  • Through a ServiceLoader using {@link javax.cache.Caching}
  • *
  • Simple creation with new of a concrete implementation, if supported by an implementation
  • *
*

*

Lookup

* If Caching was used for creation, it will keep track of all CacheManagers created. *

* The default CacheManager can be obtained using Caching.getCacheManager(). This is a * useful idiom if you only want to use one CacheManager. *

* Named CacheManagers can be obtained using Caching.getCacheManager(name). * * @author Greg Luck * @author Yannis Cosmadopoulos * @since 1.0 */ public interface CacheManager { /** * Get the name of this cache manager * * @return the name of this cache manager */ String getName(); /** * Returns the status of this CacheManager. *

* Calls to this method will block while the state is changing. * * @return one of {@link javax.cache.Status} */ Status getStatus(); /** * Creates a new {@link javax.cache.CacheBuilder} for the named cache to be managed by this cache manager. *

* An example which creates a cache using default cache configuration is: *

     *    Cache<Integer, Date> myCache2 = cacheManager.
     *           <Integer, Date>createCacheBuilder("myCache2").
     *           build();
     * 
*

* An example usage which programmatically sets many parameters of {@link javax.cache.CacheConfiguration}, * specifies a {@link javax.cache.CacheLoader} and registrs listeners is: *

     *    Cache<Integer, String> myCache1 = cacheManager.
     *           <Integer, String>createCacheBuilder("myCache1").
     *           setCacheLoader(cl).
     *           setStoreByValue(true).
     *           setReadThrough(true).
     *           setWriteThrough(false).
     *           setStatisticsEnabled(true).
     *           setTransactionEnabled(false).
     *           registerCacheEntryListener(listener1, NotificationScope.LOCAL, false).
     *           registerCacheEntryListener(listener2, NotificationScope.LOCAL, false).
     *           build();
     * 
*

*

* The returned CacheBuilder is associated with this CacheManager. * The Cache will be created, added to the caches controlled by this CacheManager and started when * {@link CacheBuilder#build()} is called. * If there is an existing Cache of the same name associated with this CacheManager when build is invoked, * an exception is thrown. * * @param cacheName the name of the cache to build. A cache name must consist of at least one non-whitespace character. * @return the CacheBuilder for the named cache * @throws IllegalStateException if the CacheManager is not in {@link javax.cache.Status#STARTED} state. * @throws javax.cache.CacheException if a cache with that name already exists or there was an error adding the cache to the CacheManager * @throws IllegalArgumentException if an illegal cache name is specified * @throws NullPointerException if the cache name is null */ CacheBuilder createCacheBuilder(String cacheName); /** * Looks up a named cache. * * @param cacheName the name of the cache to look for * @return the Cache or null if it does exist * @throws IllegalStateException if the CacheManager is not {@link javax.cache.Status#STARTED} */ Cache getCache(String cacheName); /** * Returns an Iterable over the caches managed by this CacheManager. * The Iterable is immutable (iterator.remove will throw an IllegalStateException) and independent * of the cache manager; if the caches managed by the cache manager change the Iterable is not affected * * @return an Iterable over the managed Caches * @throws UnsupportedOperationException if an attempt it made to remove an element */ Iterable> getCaches(); /** * Remove a cache from the CacheManager. The cache will be stopped. * * @param cacheName the cache name * @return true if the cache was removed * @throws IllegalStateException if the cache is not {@link javax.cache.Status#STARTED} * @throws NullPointerException if cacheName is null */ boolean removeCache(String cacheName); /** * This method will return a UserTransaction. * * @return the UserTransaction. * @throws UnsupportedOperationException if JTA is not supported */ UserTransaction getUserTransaction(); /** * Indicates whether a optional feature is supported by this CacheManager. * * @param optionalFeature the feature to check for * @return true if the feature is supported */ boolean isSupported(OptionalFeature optionalFeature); /** * Shuts down the CacheManager. *

* For each cache in the cache manager the {@link Cache#stop()} * method will be invoked, in no guaranteed order. * If the stop throws an exception, the exception is ignored. *

* Calls to {@link #getStatus()} will block until shutdown completes. *

* On completion the CacheManager's status is changed to {@link javax.cache.Status#STOPPED}, * and the manager's owned caches will be empty and {@link #getCaches()} * will return an empty collection. *

* A given CacheManager instance cannot be restarted after it has been stopped. A new one must be created. * * @throws IllegalStateException if an operation is performed on CacheManager while stopping or stopped. */ void shutdown(); /** * Return an object of the specified type to allow access to the provider-specific API. If the provider's * implementation does not support the specified class, the {@link IllegalArgumentException} is thrown. * * @param cls the class of the object to be returned. This is normally either the * underlying implementation class or an interface that it implements. * @return an instance of the specified class * @throws IllegalArgumentException if the provider doesn't support the specified class. */ T unwrap(Class cls); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy