1 package com.protomatter.syslog; 2 3 52 53 import java.util.*; 54 import java.util.regex.*; 55 import java.text.MessageFormat ; 56 57 86 public class JDK14PerClassPolicy 87 extends SimpleLogPolicy 88 { 89 private List groupList = new ArrayList(); 90 91 94 public JDK14PerClassPolicy() 95 { 96 super(); 97 } 98 99 102 public List getGroupList() 103 { 104 return this.groupList; 105 } 106 109 public void setGroupList(List list) 110 { 111 this.groupList = list; 112 } 113 114 127 public boolean shouldLog(SyslogMessage message) 128 { 129 if (message.loggerClassname != null) 131 { 132 int size = groupList.size(); 133 PolicyGroup group = null; 134 for (int i=0; i<size; i++) 135 { 136 group = (PolicyGroup)groupList.get(i); 137 if (group.shouldLog(message)) 138 return true; 139 } 140 } 141 142 return super.shouldLog(message); 145 } 146 147 150 public Iterator getPolicyGroups() 151 { 152 return this.groupList.iterator(); 153 } 154 155 158 public void addPolicyGroup(PolicyGroup group) 159 { 160 this.groupList.add(group); 161 } 162 163 166 public void removePolicyGroup(PolicyGroup group) 167 { 168 this.groupList.remove(group); 169 } 170 171 179 public static class PolicyGroup 180 extends SimpleLogPolicy 181 { 182 private Set patternSet = new HashSet(); 183 private Set classNameSet = new HashSet(); 184 private Pattern pattern = null; 185 186 189 public PolicyGroup() 190 { 191 super(); 192 } 193 194 197 public Iterator getClassSet() 198 { 199 return this.classNameSet.iterator(); 200 } 201 202 206 public void clearClassSet() 207 { 208 this.classNameSet = new HashSet(); 209 } 210 211 215 public void addClass(String classname) 216 { 217 this.classNameSet.add(classname); 218 } 219 220 224 public void removeClass(String classname) 225 { 226 this.classNameSet.remove(classname); 227 } 228 229 232 public Iterator getPatternSet() 233 { 234 return this.patternSet.iterator(); 235 } 236 237 241 public void clearPatternSet() 242 { 243 this.patternSet = new HashSet(); 244 this.pattern = null; 245 } 246 247 251 public void addClassPattern(String classname) 252 { 253 this.patternSet.add(classname); 254 generatePattern(); 255 } 256 257 261 public void removeClassPattern(String classname) 262 { 263 this.patternSet.remove(classname); 264 generatePattern(); 265 } 266 267 271 private void generatePattern() 272 throws IllegalArgumentException 273 { 274 StringBuffer thePattern = new StringBuffer (); 275 try 276 { 277 Iterator patterns = getPatternSet(); 278 while (patterns.hasNext()) 279 { 280 thePattern.append(patterns.next()); 281 if (patterns.hasNext()) 282 thePattern.append("|"); 283 } 284 pattern = Pattern.compile(thePattern.toString()); 285 } 286 catch (PatternSyntaxException x) 287 { 288 throw new IllegalArgumentException ( 289 MessageFormat.format(Syslog.getResources().getString(MessageConstants.INVALID_PATTERN_MESSAGE), 290 new Object [] { thePattern })); 291 } 292 } 293 294 301 public boolean shouldLog(SyslogMessage m) 302 { 303 if (super.shouldLog(m)) 305 { 306 if (classNameSet.contains(m.loggerClassname)) 308 { 309 return true; 310 } 311 else if (pattern != null) { 313 return pattern.matcher(m.loggerClassname).matches(); 314 } 315 } 316 317 return false; 319 } 320 } 321 } 322 | Popular Tags |