private BufferedXMLEventReader createSourceXmlEventReader(final Source source) { // If it is a StAXSource see if we can do better handling of it if (source instanceof StAXSource) { final StAXSource staxSource = (StAXSource) source; XMLEventReader xmlEventReader = staxSource.getXMLEventReader(); if (xmlEventReader != null) { if (xmlEventReader instanceof BufferedXMLEventReader) { final BufferedXMLEventReader bufferedXMLEventReader = (BufferedXMLEventReader) xmlEventReader; bufferedXMLEventReader.reset(); bufferedXMLEventReader.mark(-1); return bufferedXMLEventReader; } return new BufferedXMLEventReader(xmlEventReader, -1); } } final XMLInputFactory xmlInputFactory = this.xmlUtilities.getXmlInputFactory(); final XMLEventReader xmlEventReader; try { xmlEventReader = xmlInputFactory.createXMLEventReader(source); } catch (XMLStreamException e) { throw new RuntimeException("Failed to create XML Event Reader for data Source", e); } return new BufferedXMLEventReader(xmlEventReader, -1); }
@Test public void testBufferNoEvents() throws Exception { final XMLInputFactory xmlInputFactory = XMLInputFactory.newFactory(); final InputStream xmlStream = this.getClass().getResourceAsStream("document.xml"); final XMLEventReader xmlEventReader = xmlInputFactory.createXMLEventReader(xmlStream); final BufferedXMLEventReader reader = new BufferedXMLEventReader(xmlEventReader); int eventCount = 0; while (reader.hasNext()) { reader.nextEvent(); eventCount++; } assertEquals(122, eventCount); reader.reset(); while (reader.hasNext()) { reader.nextEvent(); eventCount++; } assertEquals(122, eventCount); }
try { xmlEventReader = new BufferedXMLEventReader(this.xmlInputFactory.createXMLEventReader(fis), -1); IOUtils.closeQuietly(fis); xmlEventReader.reset(); final Set<PortalDataKey> processedPortalDataKeys = portalDataType.postProcessPortalDataKey(resourceUri, portalDataKey, xmlEventReader); xmlEventReader.reset();
/** Same as calling {@link #mark(int)} with -1. */ public void mark() { this.mark(-1); }
protected PortalDataKey getPortalDataKey(final BufferedXMLEventReader bufferedXmlEventReader) { final StartElement rootElement = StaxUtils.getRootElement(bufferedXmlEventReader); final PortalDataKey portalDataKey = new PortalDataKey(rootElement); bufferedXmlEventReader.reset(); return portalDataKey; }
protected BufferedXMLEventReader createSourceXmlEventReader(MultipartFile multipartFile) throws IOException { final InputStream inputStream = multipartFile.getInputStream(); final String name = multipartFile.getOriginalFilename(); final XMLInputFactory xmlInputFactory = this.xmlUtilities.getXmlInputFactory(); final XMLEventReader xmlEventReader; try { xmlEventReader = xmlInputFactory.createXMLEventReader(name, inputStream); } catch (XMLStreamException e) { throw new RuntimeException("Failed to create XML Event Reader for data Source", e); } return new BufferedXMLEventReader(xmlEventReader, -1); }
@Override protected XMLEvent internalNextEvent() throws XMLStreamException { // If there is an iterator to read from reset was called, use the iterator // until it runs out of events. if (this.bufferReader != null) { final XMLEvent event = this.bufferReader.next(); // If nothing left in the iterator, remove the reference and fall through to direct // reading if (!this.bufferReader.hasNext()) { this.bufferReader = null; } return event; } // Get the next event from the underlying reader final XMLEvent event = this.getParent().nextEvent(); // if buffering add the event if (this.eventLimit != 0) { this.eventBuffer.offer(event); // If limited buffer size and buffer is too big trim the buffer. if (this.eventLimit > 0 && this.eventBuffer.size() > this.eventLimit) { this.eventBuffer.poll(); } } return event; }
@Test public void testBufferSomeEvents() throws Exception { final XMLInputFactory xmlInputFactory = XMLInputFactory.newFactory(); final InputStream xmlStream = this.getClass().getResourceAsStream("document.xml"); final XMLEventReader xmlEventReader = xmlInputFactory.createXMLEventReader(xmlStream); final BufferedXMLEventReader reader = new BufferedXMLEventReader(xmlEventReader, 10); int eventCount = 0; while (reader.hasNext()) { reader.nextEvent(); eventCount++; } assertEquals(122, eventCount); reader.reset(); while (reader.hasNext()) { reader.nextEvent(); eventCount++; } assertEquals(132, eventCount); } }
try { xmlEventReader = new BufferedXMLEventReader(this.xmlInputFactory.createXMLEventReader(fis), -1); IOUtils.closeQuietly(fis); xmlEventReader.reset(); final Set<PortalDataKey> processedPortalDataKeys = portalDataType.postProcessPortalDataKey(resourceUri, portalDataKey, xmlEventReader); xmlEventReader.reset();
/** Same as calling {@link #mark(int)} with -1. */ public void mark() { this.mark(-1); }
final StartElement rootElement = StaxUtils.getRootElement(bufferedXmlEventReader); portalDataKey = new PortalDataKey(rootElement); bufferedXmlEventReader.reset(); portalDataType.postProcessPortalDataKey( systemId, portalDataKey, bufferedXmlEventReader); bufferedXmlEventReader.reset(); if (postProcessedPortalDataKeys.contains(orderedPortalDataKey)) { bufferedXmlEventReader.reset(); this.importOrUpgradeData( systemId, orderedPortalDataKey, bufferedXmlEventReader);
@Override protected XMLEvent internalNextEvent() throws XMLStreamException { // If there is an iterator to read from reset was called, use the iterator // until it runs out of events. if (this.bufferReader != null) { final XMLEvent event = this.bufferReader.next(); // If nothing left in the iterator, remove the reference and fall through to direct // reading if (!this.bufferReader.hasNext()) { this.bufferReader = null; } return event; } // Get the next event from the underlying reader final XMLEvent event = this.getParent().nextEvent(); // if buffering add the event if (this.eventLimit != 0) { this.eventBuffer.offer(event); // If limited buffer size and buffer is too big trim the buffer. if (this.eventLimit > 0 && this.eventBuffer.size() > this.eventLimit) { this.eventBuffer.poll(); } } return event; }
@Test public void testBufferAllEvents() throws Exception { final XMLInputFactory xmlInputFactory = XMLInputFactory.newFactory(); final InputStream xmlStream = this.getClass().getResourceAsStream("document.xml"); final XMLEventReader xmlEventReader = xmlInputFactory.createXMLEventReader(xmlStream); final BufferedXMLEventReader reader = new BufferedXMLEventReader(xmlEventReader, -1); final XMLEvent firstEvent = reader.peek(); int eventCount = 0; while (reader.hasNext()) { reader.nextEvent(); eventCount++; } assertEquals(122, eventCount); reader.reset(); final XMLEvent firstEventAgain = reader.peek(); assertEquals(firstEvent, firstEventAgain); while (reader.hasNext()) { reader.nextEvent(); eventCount++; } assertEquals(244, eventCount); }
private BufferedXMLEventReader createSourceXmlEventReader(final Source source) { // If it is a StAXSource see if we can do better handling of it if (source instanceof StAXSource) { final StAXSource staxSource = (StAXSource) source; XMLEventReader xmlEventReader = staxSource.getXMLEventReader(); if (xmlEventReader != null) { if (xmlEventReader instanceof BufferedXMLEventReader) { final BufferedXMLEventReader bufferedXMLEventReader = (BufferedXMLEventReader) xmlEventReader; bufferedXMLEventReader.reset(); bufferedXMLEventReader.mark(-1); return bufferedXMLEventReader; } return new BufferedXMLEventReader(xmlEventReader, -1); } } final XMLInputFactory xmlInputFactory = this.xmlUtilities.getXmlInputFactory(); final XMLEventReader xmlEventReader; try { xmlEventReader = xmlInputFactory.createXMLEventReader(source); } catch (XMLStreamException e) { throw new RuntimeException("Failed to create XML Event Reader for data Source", e); } return new BufferedXMLEventReader(xmlEventReader, -1); }
@Override public void close() throws XMLStreamException { this.mark(0); super.close(); }
final StartElement rootElement = StaxUtils.getRootElement(bufferedXmlEventReader); portalDataKey = new PortalDataKey(rootElement); bufferedXmlEventReader.reset(); portalDataType.postProcessPortalDataKey( systemId, portalDataKey, bufferedXmlEventReader); bufferedXmlEventReader.reset(); if (postProcessedPortalDataKeys.contains(orderedPortalDataKey)) { bufferedXmlEventReader.reset(); this.importOrUpgradeData( systemId, orderedPortalDataKey, bufferedXmlEventReader);
@Override public void close() throws XMLStreamException { this.mark(0); super.close(); }