1
2
3
4
5
6
7
8
9
10
11 package org.mule.util.queue;
12
13 import java.io.IOException;
14 import java.util.Collections;
15 import java.util.List;
16 import java.util.Map;
17
18 import org.apache.commons.collections.map.ReferenceMap;
19
20 public class CachingPersistenceStrategy implements QueuePersistenceStrategy
21 {
22
23 private QueuePersistenceStrategy ps;
24 private Map objects;
25
26 public CachingPersistenceStrategy(QueuePersistenceStrategy ps)
27 {
28 this.ps = ps;
29 this.objects = Collections.synchronizedMap(new ReferenceMap());
30 }
31
32 public void open() throws IOException
33 {
34 ps.open();
35 }
36
37 public void close() throws IOException
38 {
39 objects.clear();
40 ps.close();
41 }
42
43 public Object load(String queue, Object id) throws IOException
44 {
45
46
47 return ps.load(queue, id);
48 }
49
50 public void remove(String queue, Object id) throws IOException
51 {
52 objects.remove(id);
53 ps.remove(queue, id);
54 }
55
56 public List restore() throws IOException
57 {
58 return ps.restore();
59 }
60
61 public Object store(String queue, Object obj) throws IOException
62 {
63 Object id = ps.store(queue, obj);
64 objects.put(id, obj);
65 return id;
66 }
67
68 public boolean isTransient()
69 {
70 return ps.isTransient();
71 }
72 }