001 package com.thaiopensource.datatype.xsd; 002 003 import com.thaiopensource.datatype.xsd.regex.Regex; 004 import com.thaiopensource.datatype.xsd.regex.RegexEngine; 005 import com.thaiopensource.datatype.xsd.regex.RegexSyntaxException; 006 007 class RegexDatatype extends TokenDatatype { 008 private final String pattern; 009 private Regex regex; 010 011 RegexDatatype(String pattern) { 012 this.pattern = pattern; 013 } 014 015 synchronized void compile(RegexEngine engine) throws RegexSyntaxException { 016 if (regex == null) 017 regex = engine.compile(pattern); 018 } 019 020 public boolean lexicallyAllows(String str) { 021 return regex.matches(str); 022 } 023 024 public boolean alwaysValid() { 025 return false; 026 } 027 }