/** * Test is extra schema can be loaded to the schema registry and whether the file compliant to that * schema can be validated. */ @Test public void testExtraSchema() throws SAXException, IOException, SchemaException { System.out.println("===[ testExtraSchema ]==="); Document dataDoc = DOMUtil.parseFile(new File(COMMON_DIR_PATH, "root-foo.xml")); PrismContext context = constructPrismContext(); SchemaRegistryImpl reg = (SchemaRegistryImpl) context.getSchemaRegistry(); Document extraSchemaDoc = DOMUtil.parseFile(new File(EXTRA_SCHEMA_DIR, "root.xsd")); reg.registerSchema(extraSchemaDoc, "file root.xsd"); reg.initialize(); Schema javaxSchema = reg.getJavaxSchema(); assertNotNull(javaxSchema); Validator validator = javaxSchema.newValidator(); DOMResult validationResult = new DOMResult(); validator.validate(new DOMSource(dataDoc),validationResult); // System.out.println("Validation result:"); // System.out.println(DOMUtil.serializeDOMToString(validationResult.getNode())); }
@Test public void testUserExtensionSchemaParseUser() throws SAXException, IOException, SchemaException { System.out.println("===[ testUserExtensionSchemaParseUser ]==="); Document dataDoc = DOMUtil.parseFile(USER_JACK_FILE_XML); PrismContext context = constructPrismContext(); SchemaRegistryImpl reg = (SchemaRegistryImpl) context.getSchemaRegistry(); reg.registerPrismSchemasFromDirectory(EXTRA_SCHEMA_DIR); context.initialize(); // Parsing user PrismObject<UserType> user = context.parserFor(DOMUtil.getFirstChildElement(dataDoc)).compat().parse(); // items from user extension are not correctly defined in the schema assertNotNull("No definition for user", user.getDefinition()); System.out.println("Parsed root object:"); System.out.println(user.debugDump()); // TODO: assert user // Try javax schemas by validating a XML file Schema javaxSchema = reg.getJavaxSchema(); assertNotNull(javaxSchema); Validator validator = javaxSchema.newValidator(); DOMResult validationResult = new DOMResult(); validator.validate(new DOMSource(dataDoc),validationResult); // System.out.println("Validation result:"); // System.out.println(DOMUtil.serializeDOMToString(validationResult.getNode())); }