in mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/BuilderSpec.java [65:131]
private static BuilderSpec create(
StAXParserConfiguration configuration, InputSource is, boolean makeDetachable) {
XMLStreamReader reader;
Detachable detachable;
Closeable closeable;
try {
if (is.getByteStream() != null) {
String systemId = is.getSystemId();
String encoding = is.getEncoding();
InputStream in = is.getByteStream();
if (makeDetachable) {
DetachableInputStream detachableInputStream =
new DetachableInputStream(in, false);
in = detachableInputStream;
detachable = detachableInputStream;
} else {
detachable = null;
}
if (systemId != null) {
if (encoding == null) {
reader = StAXUtils.createXMLStreamReader(configuration, systemId, in);
} else {
throw new UnsupportedOperationException();
}
} else {
if (encoding == null) {
reader = StAXUtils.createXMLStreamReader(configuration, in);
} else {
reader = StAXUtils.createXMLStreamReader(configuration, in, encoding);
}
}
closeable = null;
} else if (is.getCharacterStream() != null) {
Reader in = is.getCharacterStream();
if (makeDetachable) {
DetachableReader detachableReader = new DetachableReader(in);
in = detachableReader;
detachable = detachableReader;
} else {
detachable = null;
}
reader = StAXUtils.createXMLStreamReader(configuration, in);
closeable = null;
} else {
String systemId = is.getSystemId();
InputStream in = new URL(systemId).openConnection().getInputStream();
if (makeDetachable) {
DetachableInputStream detachableInputStream =
new DetachableInputStream(in, true);
in = detachableInputStream;
detachable = detachableInputStream;
} else {
detachable = null;
}
reader = StAXUtils.createXMLStreamReader(configuration, systemId, in);
closeable = in;
}
} catch (XMLStreamException ex) {
throw new OMException(ex);
} catch (IOException ex) {
throw new OMException(ex);
}
return new BuilderSpec(
new StAXPullInput(
reader, AxiomXMLStreamReaderHelperFactory.INSTANCE, true, closeable),
detachable);
}