@Override protected void doOpen() throws Exception { Assert.notNull(resource, "The Resource must not be null."); noInput = true; if (!resource.exists()) { if (strict) { throw new IllegalStateException("Input resource must exist (reader is in 'strict' mode)"); } logger.warn("Input resource does not exist " + resource.getDescription()); return; } if (!resource.isReadable()) { if (strict) { throw new IllegalStateException("Input resource must be readable (reader is in 'strict' mode)"); } logger.warn("Input resource is not readable " + resource.getDescription()); return; } inputStream = resource.getInputStream(); eventReader = xmlInputFactory.createXMLEventReader(inputStream); fragmentReader = new DefaultFragmentEventReader(eventReader); noInput = false; }
@Override public XMLEvent nextEvent() throws XMLStreamException { if (fakeDocumentEnd) { throw new NoSuchElementException(); } XMLEvent event = wrappedEventReader.peek(); XMLEvent proxyEvent = alterEvent(event, false); checkFragmentEnd(proxyEvent); if (event == proxyEvent) { wrappedEventReader.nextEvent(); } return proxyEvent; }
@Override public Object next() { try { return nextEvent(); } catch (XMLStreamException e) { throw new DataAccessResourceFailureException("Error reading XML stream", e); } }
@Override public XMLEvent peek() throws XMLStreamException { if (fakeDocumentEnd) { return null; } return alterEvent(wrappedEventReader.peek(), true); }
@Override public boolean hasNext() { try { if (peek() != null) { return true; } } catch (XMLStreamException e) { throw new DataAccessResourceFailureException("Error reading XML stream", e); } return false; }
@Override public XMLEvent peek() throws XMLStreamException { if (fakeDocumentEnd) { return null; } return alterEvent(wrappedEventReader.peek(), true); }
@Override public boolean hasNext() { try { if (peek() != null) { return true; } } catch (XMLStreamException e) { throw new DataAccessResourceFailureException("Error reading XML stream", e); } return false; }
@Override public XMLEvent nextEvent() throws XMLStreamException { if (fakeDocumentEnd) { throw new NoSuchElementException(); } XMLEvent event = wrappedEventReader.peek(); XMLEvent proxyEvent = alterEvent(event, false); checkFragmentEnd(proxyEvent); if (event == proxyEvent) { wrappedEventReader.nextEvent(); } return proxyEvent; }
/** * Setup the fragmentReader to read the test input. */ @Override protected void setUp() throws Exception { Resource input = new ByteArrayResource(xml.getBytes()); eventReader = StaxUtils.createXmlInputFactory().createXMLEventReader( input.getInputStream()); fragmentReader = new DefaultFragmentEventReader(eventReader); }
/** * Finishes reading the fragment in case the fragment was processed without * being read until the end. */ @Override public void markFragmentProcessed() { if (insideFragment|| startFragmentFollows) { try { while (!(nextEvent() instanceof EndDocument)) { // just read all events until EndDocument } } catch (XMLStreamException e) { throw new DataAccessResourceFailureException("Error reading XML stream", e); } } fakeDocumentEnd = false; }
@Override protected void doOpen() throws Exception { Assert.notNull(resource, "The Resource must not be null."); noInput = true; if (!resource.exists()) { if (strict) { throw new IllegalStateException("Input resource must exist (reader is in 'strict' mode)"); } logger.warn("Input resource does not exist " + resource.getDescription()); return; } if (!resource.isReadable()) { if (strict) { throw new IllegalStateException("Input resource must be readable (reader is in 'strict' mode)"); } logger.warn("Input resource is not readable " + resource.getDescription()); return; } inputStream = resource.getInputStream(); eventReader = xmlInputFactory.createXMLEventReader(inputStream); fragmentReader = new DefaultFragmentEventReader(eventReader); noInput = false; }
@Override public Object next() { try { return nextEvent(); } catch (XMLStreamException e) { throw new DataAccessResourceFailureException("Error reading XML stream", e); } }
/** * Finishes reading the fragment in case the fragment was processed without * being read until the end. */ @Override public void markFragmentProcessed() { if (insideFragment|| startFragmentFollows) { try { while (!(nextEvent() instanceof EndDocument)) { // just read all events until EndDocument } } catch (XMLStreamException e) { throw new DataAccessResourceFailureException("Error reading XML stream", e); } } fakeDocumentEnd = false; }