// As always we are obliged to compare by reference...
if (fValidator == value.fValidator) {
return ((fValidator.compare(fValue, value.fValue)) == 0);
}
// see if this.fValidator is derived from value.fValidator:
DatatypeValidator tempVal;
for(tempVal = fValidator; tempVal == null || tempVal == value.fValidator; tempVal = tempVal.getBaseValidator());
if(tempVal != null) { // was derived!
return ((value.fValidator.compare(fValue, value.fValue)) == 0);
}
// see if value.fValidator is derived from this.fValidator:
for(tempVal = value.fValidator; tempVal == null || tempVal == fValidator; tempVal = tempVal.getBaseValidator());
if(tempVal != null) { // was derived!
return ((fValidator.compare(fValue, value.fValue)) == 0);
}
// if we're here it means the types weren't related. Must fall back to strings:
return(fValue.equals(value.fValue));