1 9 10 package org.ozoneDB.xml.dom4j.o3impl; 11 12 import org.dom4j.Namespace; 13 14 import java.util.Collections ; 15 import java.util.HashMap ; 16 import java.util.Map ; 17 18 24 public class NamespaceCache { 25 26 29 protected static Map cache; 30 31 34 protected static Map noPrefixCache; 35 36 37 39 public synchronized Namespace get(String prefix, String uri) { 40 Map cache = getURICache(uri); 41 Namespace answer = (Namespace) cache.get(prefix); 42 if (answer == null) { 43 answer = createNamespace(prefix, uri); 44 cache.put(prefix, answer); 45 } 46 return answer; 47 } 48 49 50 52 public synchronized Namespace get(String uri) { 53 if (noPrefixCache == null) { 54 noPrefixCache = createURIMap(); 55 } 56 Namespace answer = (Namespace) noPrefixCache.get(uri); 57 if (answer == null) { 58 answer = createNamespace("", uri); 59 noPrefixCache.put(uri, answer); 60 } 61 return answer; 62 } 63 64 65 68 protected synchronized Map getURICache(String uri) { 69 if (cache == null) { 70 cache = createURIMap(); 71 } 72 Map answer = (Map ) cache.get(uri); 73 if (answer == null) { 74 answer = createPrefixMap(); 75 cache.put(uri, answer); 76 } 77 return answer; 78 } 79 80 83 protected Namespace createNamespace(String prefix, String uri) { 84 throw new RuntimeException ("FIXME - should NamespaceCache become a real OzoneObject or whould db be passed?"); 85 } 87 88 91 protected Map createPrefixMap() { 92 return Collections.synchronizedMap(new HashMap ()); 93 } 94 95 98 protected Map createURIMap() { 99 return Collections.synchronizedMap(new HashMap ()); 100 } 101 } 102 103 104 148 | Popular Tags |