use of javax.xml.validation.SchemaFactory in project gocd by gocd.
the class XmlSchema method getSchema.
private Schema getSchema(Source source, String currentDir, String scriptFileName) throws SAXException {
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
SchemaResourceResolver resourceResolver = new SchemaResourceResolver(currentDir, scriptFileName, null);
schemaFactory.setResourceResolver(resourceResolver);
schemaFactory.setErrorHandler(new IgnoreSchemaErrorsErrorHandler());
return schemaFactory.newSchema(source);
}
use of javax.xml.validation.SchemaFactory 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.SchemaFactory 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.SchemaFactory in project hibernate-orm by hibernate.
the class LocalSchemaLocator method resolveLocalSchema.
public static Schema resolveLocalSchema(URL schemaUrl) {
try {
InputStream schemaStream = schemaUrl.openStream();
try {
StreamSource source = new StreamSource(schemaUrl.openStream());
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
return schemaFactory.newSchema(source);
} catch (Exception e) {
throw new XmlInfrastructureException("Unable to load schema [" + schemaUrl.toExternalForm() + "]", e);
} finally {
try {
schemaStream.close();
} catch (IOException e) {
log.debugf("Problem closing schema stream - %s", e.toString());
}
}
} catch (IOException e) {
throw new XmlInfrastructureException("Stream error handling schema url [" + schemaUrl.toExternalForm() + "]");
}
}
use of javax.xml.validation.SchemaFactory in project hibernate-orm by hibernate.
the class PersistenceXmlParser method resolveLocalSchema.
private Schema resolveLocalSchema(String schemaName) {
// These XSD resources should be available on the Hibernate ClassLoader
final URL url = classLoaderService.locateResource(schemaName);
if (url == null) {
throw new XsdException("Unable to locate schema [" + schemaName + "] via classpath", schemaName);
}
try {
InputStream schemaStream = url.openStream();
try {
StreamSource source = new StreamSource(url.openStream());
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
return schemaFactory.newSchema(source);
} catch (SAXException e) {
throw new XsdException("Unable to load schema [" + schemaName + "]", e, schemaName);
} catch (IOException e) {
throw new XsdException("Unable to load schema [" + schemaName + "]", e, schemaName);
} finally {
try {
schemaStream.close();
} catch (IOException e) {
LOG.debugf("Problem closing schema stream [%s]", e.toString());
}
}
} catch (IOException e) {
throw new XsdException("Stream error handling schema url [" + url.toExternalForm() + "]", schemaName);
}
}
Aggregations