in src/main/java/org/apache/xmlbeans/impl/schema/StscSimpleTypeResolver.java [462:558]
static boolean facetAppliesToType(int facetCode, SchemaTypeImpl baseImpl) {
switch (baseImpl.getSimpleVariety()) {
case SchemaType.LIST:
switch (facetCode) {
case SchemaType.FACET_LENGTH:
case SchemaType.FACET_MIN_LENGTH:
case SchemaType.FACET_MAX_LENGTH:
case SchemaType.FACET_ENUMERATION:
case SchemaType.FACET_PATTERN:
case SchemaType.FACET_WHITE_SPACE:
return true;
}
return false;
case SchemaType.UNION:
switch (facetCode) {
case SchemaType.FACET_ENUMERATION:
case SchemaType.FACET_PATTERN:
return true;
}
return false;
}
// the atomic case
switch (baseImpl.getPrimitiveType().getBuiltinTypeCode()) {
case SchemaType.BTC_ANY_SIMPLE:
return false;
case SchemaType.BTC_BOOLEAN:
switch (facetCode) {
case SchemaType.FACET_PATTERN:
case SchemaType.FACET_WHITE_SPACE:
return true;
}
return false;
case SchemaType.BTC_FLOAT:
case SchemaType.BTC_DOUBLE:
case SchemaType.BTC_DURATION:
case SchemaType.BTC_DATE_TIME:
case SchemaType.BTC_TIME:
case SchemaType.BTC_DATE:
case SchemaType.BTC_G_YEAR_MONTH:
case SchemaType.BTC_G_YEAR:
case SchemaType.BTC_G_MONTH_DAY:
case SchemaType.BTC_G_DAY:
case SchemaType.BTC_G_MONTH:
switch (facetCode) {
case SchemaType.FACET_MIN_EXCLUSIVE:
case SchemaType.FACET_MIN_INCLUSIVE:
case SchemaType.FACET_MAX_INCLUSIVE:
case SchemaType.FACET_MAX_EXCLUSIVE:
case SchemaType.FACET_ENUMERATION:
case SchemaType.FACET_PATTERN:
case SchemaType.FACET_WHITE_SPACE:
return true;
}
return false;
case SchemaType.BTC_DECIMAL:
switch (facetCode) {
case SchemaType.FACET_MIN_EXCLUSIVE:
case SchemaType.FACET_MIN_INCLUSIVE:
case SchemaType.FACET_MAX_INCLUSIVE:
case SchemaType.FACET_MAX_EXCLUSIVE:
case SchemaType.FACET_TOTAL_DIGITS:
case SchemaType.FACET_FRACTION_DIGITS:
case SchemaType.FACET_ENUMERATION:
case SchemaType.FACET_PATTERN:
case SchemaType.FACET_WHITE_SPACE:
return true;
}
return false;
case SchemaType.BTC_BASE_64_BINARY:
case SchemaType.BTC_HEX_BINARY:
case SchemaType.BTC_ANY_URI:
case SchemaType.BTC_QNAME:
case SchemaType.BTC_NOTATION:
case SchemaType.BTC_STRING:
switch (facetCode) {
case SchemaType.FACET_LENGTH:
case SchemaType.FACET_MIN_LENGTH:
case SchemaType.FACET_MAX_LENGTH:
case SchemaType.FACET_ENUMERATION:
case SchemaType.FACET_PATTERN:
case SchemaType.FACET_WHITE_SPACE:
return true;
}
return false;
default:
assert (false);
return false;
}
}