use of com.sun.tools.xjc.reader.internalizer.VersionChecker in project jaxb-ri by eclipse-ee4j.
the class ModelLoader method createXSOMSpeculative.
/**
* Parses schemas directly into XSOM by assuming that there's
* no external annotations.
* <p>
* When an external annotation is found, a {@link SpeculationFailure} is thrown,
* and we will do it all over again by using the slow way.
*/
private XSSchemaSet createXSOMSpeculative() throws SAXException, SpeculationFailure {
// check if the schema contains external binding files. If so, speculation is a failure.
XMLParser parser = new XMLParser() {
private final JAXPParser base = new JAXPParser(XmlFactory.createParserFactory(opt.disableXmlSecurity));
@Override
public void parse(InputSource source, ContentHandler handler, ErrorHandler errorHandler, EntityResolver entityResolver) throws SAXException, IOException {
// set up the chain of handlers.
handler = wrapBy(new SpeculationChecker(), handler);
handler = wrapBy(new VersionChecker(null, errorReceiver, entityResolver), handler);
base.parse(source, handler, errorHandler, entityResolver);
}
/**
* Wraps the specified content handler by a filter.
* It is little awkward to use a helper implementation class like XMLFilterImpl
* as the method parameter, but this simplifies the code.
*/
private ContentHandler wrapBy(XMLFilterImpl filter, ContentHandler handler) {
filter.setContentHandler(handler);
return filter;
}
};
XSOMParser reader = createXSOMParser(parser);
// parse source grammars
for (InputSource value : opt.getGrammars()) reader.parse(value);
return reader.getResult();
}
Aggregations