1 32 33 package com.jeantessier.text; 34 35 import java.util.*; 36 37 import org.apache.oro.text.*; 38 import org.apache.oro.text.regex.*; 39 40 public class MaximumCapacityPatternCache implements PatternCache { 41 PatternCompiler compiler; 42 43 Map map = new HashMap(); 44 45 public MaximumCapacityPatternCache() { 46 this(new Perl5Compiler()); 47 } 48 49 public MaximumCapacityPatternCache(PatternCompiler compiler) { 50 this.compiler = compiler; 51 } 52 53 public Pattern addPattern(String expression) throws MalformedPatternException { 54 Pattern result = (Pattern) map.get(expression); 55 56 if (result == null) { 57 result = compiler.compile(expression); 58 map.put(expression, result); 59 } 60 61 return result; 62 } 63 64 public Pattern addPattern(String expression, int options) throws MalformedPatternException { 65 Pattern result = (Pattern) map.get(expression); 66 67 if (result == null) { 68 result = compiler.compile(expression, options); 69 map.put(expression, result); 70 } 71 72 return result; 73 } 74 75 public Pattern getPattern(String expression) throws MalformedCachePatternException { 76 Pattern result = (Pattern) map.get(expression); 77 78 if (result == null) { 79 try { 80 result = compiler.compile(expression); 81 } catch (MalformedPatternException ex) { 82 throw new MalformedCachePatternException(ex.getMessage()); 83 } 84 map.put(expression, result); 85 } 86 87 return result; 88 } 89 90 public Pattern getPattern(String expression, int options) throws MalformedCachePatternException { 91 Pattern result = (Pattern) map.get(expression); 92 93 if (result == null) { 94 try { 95 result = compiler.compile(expression, options); 96 } catch (MalformedPatternException ex) { 97 throw new MalformedCachePatternException(ex.getMessage()); 98 } 99 map.put(expression, result); 100 } 101 102 return result; 103 } 104 105 public int size() { 106 return map.size(); 107 } 108 109 public int capacity() { 110 return 20; 111 } 112 } 113 | Popular Tags |