com.thaiopensource.relaxng.pattern.ValuePattern Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of wicketstuff-jing Show documentation
Show all versions of wicketstuff-jing Show documentation
Jing is a validator for RELAX NG and other schema languages. This
project was taken from http://code.google.com/p/jing-trang and
mavenized for inclusion in the Wicket Stuff HTML Validator.
The code was taken from the 20091111 release.
package com.thaiopensource.relaxng.pattern;
import com.thaiopensource.xml.util.Name;
import org.relaxng.datatype.Datatype;
class ValuePattern extends StringPattern {
private final Object obj;
private final Datatype dt;
private final Name dtName;
private final String stringValue;
ValuePattern(Datatype dt, Name dtName, Object obj, String stringValue) {
super(combineHashCode(VALUE_HASH_CODE, dt.valueHashCode(obj)));
this.dt = dt;
this.dtName = dtName;
this.obj = obj;
this.stringValue = stringValue;
}
boolean samePattern(Pattern other) {
if (getClass() != other.getClass())
return false;
if (!(other instanceof ValuePattern))
return false;
return (dt.equals(((ValuePattern)other).dt)
&& dt.sameValue(obj, ((ValuePattern)other).obj));
}
T apply(PatternFunction f) {
return f.caseValue(this);
}
void checkRestrictions(int context, DuplicateAttributeDetector dad, Alphabet alpha)
throws RestrictionViolationException {
switch (context) {
case START_CONTEXT:
throw new RestrictionViolationException("start_contains_value");
}
}
Datatype getDatatype() {
return dt;
}
Name getDatatypeName() {
return dtName;
}
Object getValue() {
return obj;
}
String getStringValue() {
return stringValue;
}
}