1 package de.webman.util.xslt; 2 3 import java.io.File ; 4 import java.util.Hashtable ; 5 import javax.xml.transform.ErrorListener ; 6 import javax.xml.transform.Transformer ; 7 import javax.xml.transform.TransformerFactory ; 8 import javax.xml.transform.TransformerException ; 9 import javax.xml.transform.stream.StreamSource ; 10 11 17 public class XSLTTemplateCache 18 { 19 20 22 24 27 private static Hashtable cache = new Hashtable (); 28 29 32 private static Hashtable dates = new Hashtable (); 33 34 37 private static ErrorListener ERROR_LISTENER = null; 38 39 42 private static TransformerFactory TRANSFORMER_FACTORY = null; 43 44 45 47 52 public static synchronized ErrorListener getErrorListener () 53 { 54 if (ERROR_LISTENER == null) 55 { 56 ERROR_LISTENER = new XSLTErrorListener(); 58 } 59 60 return ERROR_LISTENER; 61 } 62 63 68 public static synchronized TransformerFactory getTransformerFactory () 69 { 70 if (TRANSFORMER_FACTORY == null) 71 { 72 TRANSFORMER_FACTORY = TransformerFactory.newInstance(); 74 TRANSFORMER_FACTORY.setErrorListener(getErrorListener()); 75 } 76 77 return TRANSFORMER_FACTORY; 78 } 79 80 86 public static synchronized Transformer getTransformer (String name) 87 throws TransformerException 88 { 89 Transformer transformer = (Transformer ) cache.get(name); 91 92 File file = new File (name); 94 Long lastModified = new Long (file.lastModified()); 95 Long cacheModified = (Long ) dates.get(name); 96 97 if (! lastModified.equals(cacheModified)) 98 { 99 transformer = getTransformerFactory().newTransformer(new StreamSource (file)); 101 transformer.setErrorListener(getErrorListener()); 102 103 dates.put(name, lastModified); 104 cache.put(name, transformer); 105 } 106 107 return transformer; 108 } 109 110 } 111 | Popular Tags |