1 10 11 package org.mule.util.queue; 12 13 import org.apache.commons.collections.map.ReferenceMap; 14 15 import java.io.IOException ; 16 import java.util.Collections ; 17 import java.util.List ; 18 import java.util.Map ; 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 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 } 73 | Popular Tags |