KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > cache > loader > DummyInMemoryCacheLoader


1 /*
2  * JBoss, Home of Professional Open Source
3  *
4  * Distributable under LGPL license.
5  * See terms of license at gnu.org.
6  */

7 package org.jboss.cache.loader;
8
9 import org.apache.commons.logging.Log;
10 import org.apache.commons.logging.LogFactory;
11 import org.jboss.cache.Fqn;
12 import org.jboss.cache.Modification;
13 import org.jboss.cache.config.CacheLoaderConfig.IndividualCacheLoaderConfig;
14
15 import java.util.HashMap JavaDoc;
16 import java.util.HashSet JavaDoc;
17 import java.util.List JavaDoc;
18 import java.util.Map JavaDoc;
19 import java.util.Set JavaDoc;
20
21 /**
22  * Dummy cache loader that stores data in memory
23  *
24  * @author <a HREF="mailto:manik@jboss.org">Manik Surtani (manik@jboss.org)</a>
25  */

26 public class DummyInMemoryCacheLoader extends AbstractCacheLoader
27 {
28    private Map JavaDoc<Fqn, Node> nodes = new HashMap JavaDoc<Fqn, Node>();
29    private Log log = LogFactory.getLog(DummyInMemoryCacheLoader.class);
30    private Map JavaDoc<Object JavaDoc, List JavaDoc<Modification>> transactions = new HashMap JavaDoc<Object JavaDoc, List JavaDoc<Modification>>();
31
32    public void setConfig(IndividualCacheLoaderConfig config)
33    {
34    }
35
36    public IndividualCacheLoaderConfig getConfig()
37    {
38       return null;
39    }
40
41    public Set JavaDoc getChildrenNames(Fqn fqn) throws Exception JavaDoc
42    {
43       log.debug("Calling getChildrenNames on Fqn " + fqn);
44       if (!nodes.containsKey(fqn))
45       {
46          log.debug("node not in loader");
47          return null;
48       }
49
50       Set JavaDoc children = findChildren(fqn);
51       log.debug("Fqn " + fqn + " has children " + children);
52       return children;
53    }
54
55    private Set JavaDoc findChildren(Fqn p)
56    {
57       Set JavaDoc c = new HashSet JavaDoc();
58       for (Fqn f : nodes.keySet())
59       {
60          if (f.getParent().equals(p))
61          {
62             c.add(f.getLastElement());
63          }
64       }
65       return c;
66    }
67
68    public Map JavaDoc get(Fqn name) throws Exception JavaDoc
69    {
70       Map JavaDoc d = nodes.containsKey(name) ? nodes.get(name).data : null;
71       log.debug("Getting data for fqn " + name + " = " + d);
72       return d;
73    }
74
75    public boolean exists(Fqn name) throws Exception JavaDoc
76    {
77       return nodes.containsKey(name);
78    }
79
80    public Object JavaDoc put(Fqn name, Object JavaDoc key, Object JavaDoc value) throws Exception JavaDoc
81    {
82       Node n = nodes.get(name);
83       if (n == null)
84       {
85          n = new Node();
86          n.fqn = name;
87       }
88       Object JavaDoc old = n.data.put(key, value);
89       nodes.put(name, n);
90       log.debug("Did a put on " + name + ", data is " + n.data);
91       return old;
92    }
93
94    public void put(Fqn name, Map JavaDoc attributes) throws Exception JavaDoc
95    {
96       Node n = nodes.get(name);
97       if (n == null)
98       {
99          n = new Node();
100          n.fqn = name;
101       }
102       if (attributes != null) n.data.putAll(attributes);
103       nodes.put(name, n);
104       log.debug("Did a put on " + name + ", data is " + n.data);
105    }
106
107    public Object JavaDoc remove(Fqn fqn, Object JavaDoc key) throws Exception JavaDoc
108    {
109       log.debug("Removing data from " + fqn);
110       Node n = nodes.get(fqn);
111       if (n == null) n = new Node();
112       n.fqn = fqn;
113       Object JavaDoc old = n.data.remove(key);
114       nodes.put(fqn, n);
115       return old;
116    }
117
118    public void remove(Fqn fqn) throws Exception JavaDoc
119    {
120       log.debug("Removing fqn " + fqn);
121       nodes.remove(fqn);
122    }
123
124    public void removeData(Fqn fqn) throws Exception JavaDoc
125    {
126       log.debug("Removing data from " + fqn);
127       Node n = nodes.get(fqn);
128       if (n == null) n = new Node();
129       n.fqn = fqn;
130       n.data.clear();
131       nodes.put(fqn, n);
132    }
133
134
135    public void prepare(Object JavaDoc tx, List JavaDoc<Modification> modifications, boolean one_phase) throws Exception JavaDoc
136    {
137       if (one_phase)
138       {
139          put(modifications);
140       }
141       else
142       {
143          transactions.put(tx, modifications);
144       }
145    }
146
147    public void commit(Object JavaDoc tx) throws Exception JavaDoc
148    {
149       List JavaDoc<Modification> modifications = transactions.remove(tx);
150       if (modifications == null)
151       {
152          throw new Exception JavaDoc("transaction " + tx + " not found in transaction table");
153       }
154       put(modifications);
155    }
156
157    public void rollback(Object JavaDoc tx)
158    {
159       transactions.remove(tx);
160    }
161
162    public void create() throws Exception JavaDoc
163    {
164    }
165
166    public void start() throws Exception JavaDoc
167    {
168    }
169
170    public void stop()
171    {
172    }
173
174    public void destroy()
175    {
176    }
177
178
179    public class Node
180    {
181       Map JavaDoc data = new HashMap JavaDoc();
182       Fqn fqn;
183
184
185       public String JavaDoc toString()
186       {
187          return "Node{" +
188                  "data=" + data +
189                  ", fqn=" + fqn +
190                  '}';
191       }
192    }
193
194
195    public String JavaDoc toString()
196    {
197       return "DummyInMemoryCacheLoader{" +
198               "nodes=" + nodes +
199               '}';
200    }
201 }
202
Popular Tags