/*
* Created on May 3, 2004
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package org.xdev.base.core.vm.filter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.log4j.Level;
import org.jdom.Element;
import org.xdev.base.core.compiler.AXCompiler;
import org.xdev.base.log.LoggerWriter;
/**
* @author AYegorov
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class RegExFilter extends AbstractCompilerFilter {
/**
*
*/
public RegExFilter() {
super();
// XXX Auto-generated constructor stub
}
/* (non-Javadoc)
* @see org.xdev.base.core.vm.filter.AbstractCompilerFilter#doFilter(org.jdom.Element)
*/
protected boolean doFilter(Element filter) throws Exception {
boolean flag = false;
String regexProp = filter.getAttributeValue("property");
String value = null;
if (regexProp == null) {
value = AXCompiler.getInvokerClass().getName();
}
else {
if (regexProp.startsWith("${")) {
value = AXCompiler.getArgument(Integer.parseInt(regexProp.substring(2,regexProp.length()-1)));
}
else {
value = System.getProperty(regexProp);
}
}
String regex = filter.getAttributeValue("expression");
boolean strict = false;
if (regex == null) {
regex = filter.getAttributeValue("match");
strict = true;
}
LoggerWriter.log("Applying regular expression filter "+regex+" against value: "+value, Level.INFO_INT, this.getClass());
value = value == null ? "" : value;
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(value);
flag = strict ? matcher.matches() : matcher.find();
return flag;
}
}
|