@SuppressWarnings("resource")
InputStream in = new FileInputStream(file);
AsyncXMLStreamReader asyncReader = new InputFactoryImpl().createAsyncXMLStreamReader();
final AsyncInputFeeder feeder = asyncReader.getInputFeeder();
final byte[] buf = new byte[BLOCK_SIZE];
// Let's just copy input as is
XMLStreamWriter2 sw = (XMLStreamWriter2) new OutputFactoryImpl().createXMLStreamWriter(System.out, "UTF-8");
main_loop:
while (true) {
int type;
// May need to feed multiple segments:
while ((type = asyncReader.next()) == AsyncXMLStreamReader.EVENT_INCOMPLETE) {
if (!feeder.needMoreInput()) { // sanity check for this test (not needed for real code)
throw new IllegalStateException("Got EVENT_INCOMPLETE but not expecting more input");
}
// System.out.println("READ-MORE: reader == "+asyncReader.toString());
int len = in.read(buf);
if (len < 0) {
System.err.println("Error: Unexpected EOF");
break main_loop;
}
bytes += len;
feeder.feedInput(buf, 0, len);
}
sw.copyEventFromReader(asyncReader, false);
if (type == END_DOCUMENT) {
break;
}
}
feeder.endOfInput();
sw.close();
return bytes;
}