View Javadoc

1   /**
2    *  Copyright 2003-2006 Greg Luck
3    *
4    *  Licensed under the Apache License, Version 2.0 (the "License");
5    *  you may not use this file except in compliance with the License.
6    *  You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   *  Unless required by applicable law or agreed to in writing, software
11   *  distributed under the License is distributed on an "AS IS" BASIS,
12   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   *  See the License for the specific language governing permissions and
14   *  limitations under the License.
15   */
16  
17  package net.sf.ehcache.event;
18  
19  /**
20   * Allows implementers to register callback methods that will be executed when a <code>CacheManager</code> event occurs.
21   * The events include:
22   * <ol>
23   * <li>adding a <code>Cache</code>
24   * <li>removing a <code>Cache</code>
25   * </ol>
26   * <p/>
27   * Callbacks to these methods are synchronous and unsynchronized. It is the responsibility of the implementer
28   * to safely handle the potential performance and thread safety issues depending on what their listener is doing.
29   * @author Greg Luck
30   * @version $Id: CacheManagerEventListener.java 28 2006-04-15 05:12:32Z gregluck $
31   * @since 1.2
32   * @see CacheEventListener
33   */
34  public interface CacheManagerEventListener {
35  
36  
37      /**
38       * Called immediately after a cache has been added and activated.
39       * <p/>
40       * Note that the CacheManager calls this method from a synchronized method. Any attempt to call a synchronized
41       * method on CacheManager from this method will cause a deadlock.
42       * <p/>
43       * Note that activation will also cause a CacheEventListener status change notification from
44       *  {@link net.sf.ehcache.Status#STATUS_UNINITIALISED} to {@link net.sf.ehcache.Status#STATUS_ALIVE}. Care should be
45       * taken on processing that notification because:
46       * <ul>
47       * <li>the cache will not yet be accessible from the CacheManager.
48       * <li>the addCaches methods whih cause this notification are synchronized on the CacheManager. An attempt to call
49       * {@link net.sf.ehcache.CacheManager#getCache(String)} will cause a deadlock.
50       * </ul>
51       * The calling method will block until this method returns.
52       * <p/>
53       * @param cacheName the name of the <code>Cache</code> the operation relates to
54       * @see CacheEventListener
55       */
56      void notifyCacheAdded(String cacheName);
57  
58      /**
59       * Called immediately after a cache has been disposed and removed. The calling method will block until
60       * this method returns.
61       * <p/>
62       * Note that the CacheManager calls this method from a synchronized method. Any attempt to call a synchronized
63       * method on CacheManager from this method will cause a deadlock.
64       * <p/>
65       * Note that a {@link CacheEventListener} status changed will also be triggered. Any attempt from that notification
66       * to access CacheManager will also result in a deadlock.
67       * @param cacheName the name of the <code>Cache</code> the operation relates to
68       */
69      void notifyCacheRemoved(String cacheName);
70  
71  }