private static String extractName(String elementType, Attributes attrs) throws InvalidSchemaException { String name = attrs.get(NAME_ATTRIBUTE_NAME); if (name == null) { throw new InvalidSchemaException( "Missing attribute \"" + NAME_ATTRIBUTE_NAME + "\" in element: " + elementType); } if (attrs.size() != 1) { throw new InvalidSchemaException( "Encountered an attribute other than \"" + NAME_ATTRIBUTE_NAME + "\" in element: " + elementType); } return name; }
final void handleText(Attributes attrs) throws InvalidSchemaException { String type = attrs.get(TYPE_ATTRIBUTE_NAME); String chars = attrs.get(CHARACTERS_ATTRIBUTE_NAME); if (type == null) { throw new InvalidSchemaException("Missing attribute: " + TYPE_ATTRIBUTE_NAME); } if (chars == null) { throw new InvalidSchemaException("Missing attribute: " + CHARACTERS_ATTRIBUTE_NAME); } if (attrs.size() != 2) { throw new InvalidSchemaException("Encountered more attributes than the expected two"); } if (type.equals(BLACKLIST_ATTRIBUTE_VALUE)) { characterPattern.blacklistCharacters(extractCodePoints(chars)); } else if (type.equals(WHITELIST_ATTRIBUTE_VALUE)) { characterPattern.whitelistCharacters(extractCodePoints(chars)); } else { throw new InvalidSchemaException( "Invalid value for attribute " + TYPE_ATTRIBUTE_NAME + ": " + type); } }
final void handleAttribute(Attributes attrs) throws InvalidSchemaException { String name = attrs.get(NAME_ATTRIBUTE_NAME); String values = attrs.get(VALUES_ATTRIBUTE_NAME); String required = attrs.get(REQUIRED_ATTRIBUTE_NAME); if (name == null) { throw new InvalidSchemaException("Missing attribute: " + NAME_ATTRIBUTE_NAME); } if (values == null) { throw new InvalidSchemaException("Missing attribute: " + VALUES_ATTRIBUTE_NAME); } if (required == null) { throw new InvalidSchemaException("Missing attribute: " + REQUIRED_ATTRIBUTE_NAME); } if (attrs.size() != 3) { throw new InvalidSchemaException("Encountered more attributes than the expected three"); } checkAttributeName(name); if (required.equals(TRUE_ATTRIBUTE_VALUE)) { attributesPattern.addRequired(name); } else if (!required.equals(FALSE_ATTRIBUTE_VALUE)) { throw new InvalidSchemaException( "Invalid value for attribute " + REQUIRED_ATTRIBUTE_NAME + ": " + required); } RegularExpressionChecker.checkRegularExpression(values); attributesPattern.addValuePattern(name, values); }