use of javax.xml.validation.Validator in project hazelcast by hazelcast.
the class XMLConfigBuilderTest method testXSDConfigXML.
private void testXSDConfigXML(String xmlFileName) throws Exception {
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
URL schemaResource = XMLConfigBuilderTest.class.getClassLoader().getResource("hazelcast-config-3.9.xsd");
assertNotNull(schemaResource);
InputStream xmlResource = XMLConfigBuilderTest.class.getClassLoader().getResourceAsStream(xmlFileName);
Schema schema = factory.newSchema(schemaResource);
Source source = new StreamSource(xmlResource);
Validator validator = schema.newValidator();
try {
validator.validate(source);
} catch (SAXException ex) {
fail(xmlFileName + " is not valid because: " + ex.toString());
}
}
use of javax.xml.validation.Validator in project hazelcast by hazelcast.
the class AbstractXmlConfigHelper method schemaValidation.
protected void schemaValidation(Document doc) throws Exception {
ArrayList<StreamSource> schemas = new ArrayList<StreamSource>();
InputStream inputStream = null;
String schemaLocation = doc.getDocumentElement().getAttribute("xsi:schemaLocation");
schemaLocation = schemaLocation.replaceAll("^ +| +$| (?= )", "");
// get every two pair. every pair includes namespace and uri
String[] xsdLocations = schemaLocation.split("(?<!\\G\\S+)\\s");
for (String xsdLocation : xsdLocations) {
if (xsdLocation.isEmpty()) {
continue;
}
String namespace = xsdLocation.split('[' + LINE_SEPARATOR + " ]+")[0];
String uri = xsdLocation.split('[' + LINE_SEPARATOR + " ]+")[1];
// if this is hazelcast namespace but location is different log only warning
if (namespace.equals(xmlns) && !uri.endsWith(hazelcastSchemaLocation)) {
LOGGER.warning("Name of the hazelcast schema location incorrect using default");
}
// if this is not hazelcast namespace then try to load from uri
if (!namespace.equals(xmlns)) {
inputStream = loadSchemaFile(uri);
schemas.add(new StreamSource(inputStream));
}
}
// include hazelcast schema
schemas.add(new StreamSource(getClass().getClassLoader().getResourceAsStream(hazelcastSchemaLocation)));
// document to InputStream conversion
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Source xmlSource = new DOMSource(doc);
Result outputTarget = new StreamResult(outputStream);
TransformerFactory.newInstance().newTransformer().transform(xmlSource, outputTarget);
InputStream is = new ByteArrayInputStream(outputStream.toByteArray());
// schema validation
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(schemas.toArray(new Source[schemas.size()]));
Validator validator = schema.newValidator();
try {
SAXSource source = new SAXSource(new InputSource(is));
validator.validate(source);
} catch (Exception e) {
throw new InvalidConfigurationException(e.getMessage());
} finally {
for (StreamSource source : schemas) {
closeResource(source.getInputStream());
}
closeResource(inputStream);
}
}
use of javax.xml.validation.Validator in project hibernate-orm by hibernate.
the class PersistenceXmlParser method validate.
private void validate(Document document) {
// todo : add ability to disable validation...
final Validator validator;
final String version = document.getDocumentElement().getAttribute("version");
if ("2.1".equals(version)) {
validator = v21Schema().newValidator();
} else if ("2.0".equals(version)) {
validator = v2Schema().newValidator();
} else if ("1.0".equals(version)) {
validator = v1Schema().newValidator();
} else {
throw new PersistenceException("Unrecognized persistence.xml version [" + version + "]");
}
List<SAXException> errors = new ArrayList<SAXException>();
validator.setErrorHandler(new ErrorHandlerImpl(errors));
try {
validator.validate(new DOMSource(document));
} catch (SAXException e) {
errors.add(e);
} catch (IOException e) {
throw new PersistenceException("Unable to validate persistence.xml", e);
}
if (errors.size() != 0) {
//report all errors in the exception
StringBuilder errorMessage = new StringBuilder();
for (SAXException error : errors) {
errorMessage.append(extractInfo(error)).append('\n');
}
throw new PersistenceException("Invalid persistence.xml.\n" + errorMessage.toString());
}
}
use of javax.xml.validation.Validator in project hazelcast by hazelcast.
the class XmlClientConfigBuilderTest method testXSDConfigXML.
private void testXSDConfigXML(String xmlFileName) throws SAXException, IOException {
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
URL schemaResource = XMLConfigBuilderTest.class.getClassLoader().getResource("hazelcast-client-config-3.9.xsd");
InputStream xmlResource = XMLConfigBuilderTest.class.getClassLoader().getResourceAsStream(xmlFileName);
Schema schema = factory.newSchema(schemaResource);
Source source = new StreamSource(xmlResource);
Validator validator = schema.newValidator();
try {
validator.validate(source);
} catch (SAXException ex) {
fail(xmlFileName + " is not valid because: " + ex.toString());
}
}
use of javax.xml.validation.Validator in project languagetool by languagetool-org.
the class XMLValidator method validateInternal.
private void validateInternal(Source xmlSrc, URL xmlSchema) throws SAXException, IOException {
Validator validator = getValidator(xmlSchema);
validator.validate(xmlSrc);
}
Aggregations