KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > module > gui > html > MultilevelCacheHandler


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

10 package org.mmbase.module.gui.html;
11
12 import org.mmbase.module.core.*;
13 import org.mmbase.util.*;
14 import java.util.*;
15
16
17 /**
18  * This object handles cache multilevel tag cache requests.
19  *
20  * @javadoc
21  * @application SCAN
22  * @deprecated use org.mmbase.cache.MultilevelCacheHandler
23  * @author Daniel Ockeloen
24  * @version $Id: MultilevelCacheHandler.java,v 1.5 2004/10/01 08:43:46 pierre Exp $
25  */

26 public class MultilevelCacheHandler extends LRUHashtable {
27
28         private Hashtable listeners = new Hashtable();
29         private MMBase mmb;
30
31         public MultilevelCacheHandler(MMBase mmb,int size) {
32                 super(size);
33                 this.mmb=mmb;
34
35         }
36
37         public Object JavaDoc put(Object JavaDoc hash,Object JavaDoc o,Vector types,StringTagger tagger) {
38                 MultilevelCacheEntry n=new MultilevelCacheEntry(this,hash,o,tagger);
39                 addListeners(types,n);
40                 return(put(hash,n));
41         }
42
43
44         public synchronized Object JavaDoc get(Object JavaDoc key) {
45                 // get the wrapper but return the
46
// object
47
MultilevelCacheEntry n=(MultilevelCacheEntry)super.get(key);
48                 if (n==null) {
49                         return(null);
50                 } else {
51                         return(n.getObject());
52                 }
53         }
54
55         private void addListeners(Vector types,MultilevelCacheEntry n) {
56                 Enumeration e=types.elements();
57                 while (e.hasMoreElements()) {
58                         String JavaDoc type=(String JavaDoc)e.nextElement();
59                         char lastchar=type.charAt(type.length()-1);
60                         if (lastchar>='1' && lastchar<='9') {
61                                 type=type.substring(0,type.length()-1);
62                         }
63                         MultilevelSubscribeNode l=(MultilevelSubscribeNode)listeners.get(type);
64                         if (l==null) {
65                                 l=new MultilevelSubscribeNode(mmb,type);
66                                 listeners.put(type,l);
67                         }
68                         l.addCacheEntry(n);
69                 }
70         }
71
72
73         // intercept remove of LRU to make sure
74
// we remove from all Observers first
75
// the clear will call the real remove
76
public synchronized Object JavaDoc remove(Object JavaDoc key) {
77                 MultilevelCacheEntry n=(MultilevelCacheEntry)super.get(key);
78                 n.clear();
79                 return(n);
80         }
81
82         // call the real remove in the LRU
83
public synchronized void callbackRemove(Object JavaDoc key) {
84                 super.remove(key);
85         }
86 }
87
Popular Tags