XMLInputSource[] xmlInputSources = new XMLInputSource[schemas.length];
InputStream inputStream;
Reader reader;
for (int i = 0; i < schemas.length; ++i) {
Source source = schemas[i];
if (source instanceof StreamSource) {
StreamSource streamSource = (StreamSource) source;
String publicId = streamSource.getPublicId();
String systemId = streamSource.getSystemId();
inputStream = streamSource.getInputStream();
reader = streamSource.getReader();
XMLInputSource xmlInputSource = new XMLInputSource(publicId, systemId, null);
xmlInputSource.setByteStream(inputStream);
xmlInputSource.setCharacterStream(reader);
xmlInputSources[i] = xmlInputSource;
}
else if (source instanceof SAXSource) {
SAXSource saxSource = (SAXSource) source;
InputSource inputSource = saxSource.getInputSource();
if (inputSource == null) {
throw new SAXException(JAXPValidationMessageFormatter.formatMessage(fXMLSchemaLoader.getLocale(),
"SAXSourceNullInputSource", null));
}
xmlInputSources[i] = new SAXInputSource(saxSource.getXMLReader(), inputSource);
}
else if (source instanceof DOMSource) {
DOMSource domSource = (DOMSource) source;
//MF
Node node = (Node) domSource.getNode();
String systemID = domSource.getSystemId();
xmlInputSources[i] = new DOMInputSource(node, systemID);
}
else if (source instanceof StAXSource) {
StAXSource staxSource = (StAXSource) source;
XMLEventReader eventReader = staxSource.getXMLEventReader();
if (eventReader != null) {
xmlInputSources[i] = new StAXInputSource(eventReader);
}
else {
xmlInputSources[i] = new StAXInputSource(staxSource.getXMLStreamReader());
}
}
else if (source == null) {
throw new NullPointerException(JAXPValidationMessageFormatter.formatMessage(fXMLSchemaLoader.getLocale(),
"SchemaSourceArrayMemberNull", null));
}
else {
throw new IllegalArgumentException(JAXPValidationMessageFormatter.formatMessage(fXMLSchemaLoader.getLocale(),
"SchemaFactorySourceUnrecognized",
new Object [] {source.getClass().getName()}));
}
}
try {
fXMLSchemaLoader.loadGrammar(xmlInputSources);