use of com.thaiopensource.validate.ValidationDriver in project intellij-community by JetBrains.
the class ValidateAction method doValidation.
@SuppressWarnings({ "ThrowableInstanceNeverThrown" })
private static void doValidation(VirtualFile instanceFile, VirtualFile schemaFile, org.xml.sax.ErrorHandler eh) {
final SchemaReader sr = schemaFile.getFileType() == RncFileType.getInstance() ? CompactSchemaReader.getInstance() : new AutoSchemaReader();
final PropertyMapBuilder properties = new PropertyMapBuilder();
ValidateProperty.ERROR_HANDLER.put(properties, eh);
// TODO: should some options dialog displayed before validating?
RngProperty.CHECK_ID_IDREF.add(properties);
try {
final String schemaPath = VfsUtilCore.fixIDEAUrl(schemaFile.getUrl());
try {
final ValidationDriver driver = new ValidationDriver(properties.toPropertyMap(), sr);
final InputSource in = ValidationDriver.uriOrFileInputSource(schemaPath);
in.setEncoding(schemaFile.getCharset().name());
if (driver.loadSchema(in)) {
final String path = VfsUtilCore.fixIDEAUrl(instanceFile.getUrl());
try {
driver.validate(ValidationDriver.uriOrFileInputSource(path));
} catch (IOException e1) {
eh.fatalError(new SAXParseException(e1.getMessage(), null, UriOrFile.fileToUri(path), -1, -1, e1));
}
}
} catch (SAXParseException e1) {
eh.fatalError(e1);
} catch (IOException e1) {
eh.fatalError(new SAXParseException(e1.getMessage(), null, UriOrFile.fileToUri(schemaPath), -1, -1, e1));
}
} catch (SAXException | MalformedURLException e1) {
// huh?
Logger.getInstance(ValidateAction.class.getName()).error(e1);
}
}
Aggregations