package com.thaiopensource.datatype.xsd.regex.xerces2; import com.thaiopensource.datatype.xsd.regex.RegexEngine; import com.thaiopensource.datatype.xsd.regex.Regex; import com.thaiopensource.datatype.xsd.regex.RegexSyntaxException; import org.apache.xerces.impl.xpath.regex.RegularExpression; import org.apache.xerces.impl.xpath.regex.ParseException; /** * An implementation of <code>RegexEngine</code> using the Xerces 2 regular expression * implementation. */ public class RegexEngineImpl implements RegexEngine { public RegexEngineImpl() { // Force a linkage error on instantiation if the Xerces classes // are not available. try { new RegularExpression("", "X"); } catch (ParseException e) { } } public Regex compile(String expr) throws RegexSyntaxException { try { final RegularExpression re = new RegularExpression(expr, "X"); return new Regex() { public boolean matches(String str) { return re.matches(str); } }; } catch (ParseException e) { throw new RegexSyntaxException(e.getMessage(), e.getLocation()); } } }