1 16 package scriptella.driver.xpath; 17 18 import scriptella.util.LRUMap; 19 20 import javax.xml.xpath.XPathExpression ; 21 import javax.xml.xpath.XPathExpressionException ; 22 import javax.xml.xpath.XPathFactory ; 23 import java.util.Map ; 24 25 32 class XPathExpressionCompiler { 33 private static final int DEFAULT_SIZE = 100; 34 private static final XPathFactory XPATH_FACTORY = XPathFactory.newInstance(); 35 private Map<String , XPathExpression > cache = new LRUMap<String , XPathExpression >(DEFAULT_SIZE); 36 37 public XPathExpression compile(final String expression) { 38 String trimmedEx = expression.trim(); 39 XPathExpression ex = cache.get(trimmedEx); 40 if (ex == null) { 41 try { 42 cache.put(trimmedEx, ex = XPATH_FACTORY.newXPath().compile(trimmedEx)); 43 } catch (XPathExpressionException e) { 44 throw new XPathProviderException("Unable to compile XPath query: " + trimmedEx, e); 45 } 46 } 47 return ex; 48 } 49 } 50 | Popular Tags |