use of com.thaiopensource.xml.sax.Jaxp11XMLReaderCreator in project camel by apache.
the class JingValidator method process.
public void process(Exchange exchange) throws Exception {
Jaxp11XMLReaderCreator xmlCreator = new Jaxp11XMLReaderCreator();
DefaultValidationErrorHandler errorHandler = new DefaultValidationErrorHandler();
PropertyMapBuilder mapBuilder = new PropertyMapBuilder();
mapBuilder.put(ValidateProperty.XML_READER_CREATOR, xmlCreator);
mapBuilder.put(ValidateProperty.ERROR_HANDLER, errorHandler);
PropertyMap propertyMap = mapBuilder.toPropertyMap();
Validator validator = getSchema().createValidator(propertyMap);
Message in = exchange.getIn();
SAXSource saxSource = in.getBody(SAXSource.class);
if (saxSource == null) {
Source source = exchange.getIn().getMandatoryBody(Source.class);
saxSource = ExchangeHelper.convertToMandatoryType(exchange, SAXSource.class, source);
}
InputSource bodyInput = saxSource.getInputSource();
// now lets parse the body using the validator
XMLReader reader = xmlCreator.createXMLReader();
reader.setContentHandler(validator.getContentHandler());
reader.setDTDHandler(validator.getDTDHandler());
reader.setErrorHandler(errorHandler);
reader.parse(bodyInput);
errorHandler.handleErrors(exchange, schema);
}
use of com.thaiopensource.xml.sax.Jaxp11XMLReaderCreator in project camel by apache.
the class JingEndpoint method doStart.
@Override
protected void doStart() throws Exception {
super.doStart();
if (inputSource == null) {
ObjectHelper.notEmpty(resourceUri, "resourceUri", this);
InputStream inputStream = ResourceHelper.resolveMandatoryResourceAsInputStream(getCamelContext(), resourceUri);
inputSource = new InputSource(inputStream);
}
if (schemaFactory == null) {
schemaFactory = new SchemaFactory();
schemaFactory.setCompactSyntax(compactSyntax);
schemaFactory.setXMLReaderCreator(new Jaxp11XMLReaderCreator());
}
if (schema == null) {
schema = schemaFactory.createSchema(inputSource);
}
}
use of com.thaiopensource.xml.sax.Jaxp11XMLReaderCreator in project validator by validator.
the class SimpleDocumentValidator method setUpValidatorAndParsers.
/* *
* Prepares a Validator instance along with HTML and XML parsers, and then
* attaches the Validator instance and supplied ErrorHandler instance to the
* parsers so that the ErrorHandler is used for processing of all document-
* validation problems reported.
*
* @param docValidationErrHandler error handler for doc-validation reporting
*
* @param loadExternalEnts whether XML parser should load remote DTDs, etc.
*
* @param noStream whether HTML parser should buffer instead of streaming
*/
public void setUpValidatorAndParsers(ErrorHandler docValidationErrHandler, boolean noStream, boolean loadExternalEnts) throws SAXException {
PropertyMapBuilder pmb = new PropertyMapBuilder();
pmb.put(ValidateProperty.ERROR_HANDLER, docValidationErrHandler);
pmb.put(ValidateProperty.XML_READER_CREATOR, new Jaxp11XMLReaderCreator());
RngProperty.CHECK_ID_IDREF.add(pmb);
PropertyMap jingPropertyMap = pmb.toPropertyMap();
validator = this.mainSchema.createValidator(jingPropertyMap);
if (this.hasHtml5Schema) {
Validator assertionValidator = assertionSchema.createValidator(jingPropertyMap);
validator = new CombineValidator(validator, assertionValidator);
validator = new CombineValidator(validator, new CheckerValidator(new TableChecker(), jingPropertyMap));
validator = new CombineValidator(validator, new CheckerValidator(new ConformingButObsoleteWarner(), jingPropertyMap));
validator = new CombineValidator(validator, new CheckerValidator(new MicrodataChecker(), jingPropertyMap));
validator = new CombineValidator(validator, new CheckerValidator(new NormalizationChecker(), jingPropertyMap));
validator = new CombineValidator(validator, new CheckerValidator(new TextContentChecker(), jingPropertyMap));
validator = new CombineValidator(validator, new CheckerValidator(new UncheckedSubtreeWarner(), jingPropertyMap));
validator = new CombineValidator(validator, new CheckerValidator(new UnsupportedFeatureChecker(), jingPropertyMap));
validator = new CombineValidator(validator, new CheckerValidator(new UsemapChecker(), jingPropertyMap));
validator = new CombineValidator(validator, new CheckerValidator(new XmlPiChecker(), jingPropertyMap));
}
HtmlParser htmlParser = new HtmlParser();
htmlParser.addCharacterHandler(sourceCode);
htmlParser.setCommentPolicy(XmlViolationPolicy.ALLOW);
htmlParser.setContentNonXmlCharPolicy(XmlViolationPolicy.ALLOW);
htmlParser.setContentSpacePolicy(XmlViolationPolicy.ALTER_INFOSET);
htmlParser.setNamePolicy(XmlViolationPolicy.ALLOW);
htmlParser.setXmlnsPolicy(XmlViolationPolicy.ALTER_INFOSET);
htmlParser.setMappingLangToXmlLang(true);
htmlParser.setHeuristics(Heuristics.ALL);
htmlParser.setContentHandler(validator.getContentHandler());
htmlParser.setErrorHandler(docValidationErrHandler);
htmlParser.setNamePolicy(XmlViolationPolicy.ALLOW);
htmlParser.setMappingLangToXmlLang(true);
htmlParser.setFeature("http://xml.org/sax/features/unicode-normalization-checking", true);
if (!noStream) {
htmlParser.setStreamabilityViolationPolicy(XmlViolationPolicy.FATAL);
}
htmlReader = getWiretap(htmlParser);
xmlParser = new SAXDriver();
xmlParser.setContentHandler(validator.getContentHandler());
if (lexicalHandler != null) {
xmlParser.setProperty("http://xml.org/sax/properties/lexical-handler", lexicalHandler);
}
xmlReader = new IdFilter(xmlParser);
xmlReader.setFeature("http://xml.org/sax/features/string-interning", true);
xmlReader.setContentHandler(validator.getContentHandler());
xmlReader.setFeature("http://xml.org/sax/features/unicode-normalization-checking", true);
if (loadExternalEnts) {
xmlReader.setEntityResolver(entityResolver);
} else {
xmlReader.setFeature("http://xml.org/sax/features/external-general-entities", false);
xmlReader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
xmlReader.setEntityResolver(new NullEntityResolver());
}
xmlReader = getWiretap(xmlParser);
xmlParser.setErrorHandler(docValidationErrHandler);
xmlParser.lockErrorHandler();
}
use of com.thaiopensource.xml.sax.Jaxp11XMLReaderCreator in project validator by validator.
the class SimpleDocumentValidator method schemaByUrl.
private Schema schemaByUrl(String schemaUrl, ErrorHandler errorHandler) throws Exception, SchemaReadException {
PropertyMapBuilder pmb = new PropertyMapBuilder();
pmb.put(ValidateProperty.ERROR_HANDLER, errorHandler);
pmb.put(ValidateProperty.ENTITY_RESOLVER, entityResolver);
pmb.put(ValidateProperty.XML_READER_CREATOR, new Jaxp11XMLReaderCreator());
RngProperty.CHECK_ID_IDREF.add(pmb);
PropertyMap jingPropertyMap = pmb.toPropertyMap();
try {
TypedInputSource schemaInput = (TypedInputSource) entityResolver.resolveEntity(null, schemaUrl);
SchemaReader sr;
if ("application/relax-ng-compact-syntax".equals(schemaInput.getType())) {
sr = CompactSchemaReader.getInstance();
} else {
sr = new AutoSchemaReader();
}
return sr.createSchema(schemaInput, jingPropertyMap);
} catch (ClassCastException e) {
throw new SchemaReadException(String.format("Failed to resolve schema URL \"%s\".", schemaUrl));
}
}
Aggregations