Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2006-2007 the original author or authors.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package org.springframework.batch.item.xml.stax;
 
 
 
Default implementation of FragmentEventReader

Author(s):
Robert Kasanicky
 
 
 	// true when the next event is the StartElement of next fragment
 	private boolean startFragmentFollows = false;
 
 	// true when the next event is the EndElement of current fragment
 	private boolean endFragmentFollows = false;
 
 	// true while cursor is inside fragment
 	private boolean insideFragment = false;
 
 	// true when reader should behave like the cursor was at the end of document
 	private boolean fakeDocumentEnd = false;
 
 	private StartDocument startDocumentEvent = null;
 
 	private EndDocument endDocumentEvent = null;
 
 	// fragment root name is remembered so that the matching closing element can
 	// be identified
 	private QName fragmentRootName = null;
 
 	// counts the occurrences of current fragmentRootName (increased for
 	// StartElement, decreased for EndElement)
 	private int matchCounter = 0;

Caches the StartDocument event for later use.

Parameters:
wrappedEventReader the original wrapped event reader
 
 	public DefaultFragmentEventReader(XMLEventReader wrappedEventReader) {
 		super(wrappedEventReader);
 		try {
 			 = (StartDocumentwrappedEventReader.peek();
 		}
 		catch (XMLStreamException e) {
 			throw new DataAccessResourceFailureException("Error reading start document from event reader"e);
 		}
 
 	}
 
 	public void markStartFragment() {
 		 = null;
 	}
 
 	public boolean hasNext() {
 		try {
 			if (peek() != null) {
 				return true;
 			}
 		}
 		catch (XMLStreamException e) {
 			throw new DataAccessResourceFailureException("Error reading XML stream"e);
 		}
 		return false;
 	}
 
 	public Object next() {
 		try {
 			return nextEvent();
		}
		catch (XMLStreamException e) {
			throw new DataAccessResourceFailureException("Error reading XML stream"e);
		}
	}
	public XMLEvent nextEvent() throws XMLStreamException {
		}
		XMLEvent proxyEvent = alterEvent(eventfalse);
		checkFragmentEnd(proxyEvent);
		if (event == proxyEvent) {
		}
		return proxyEvent;
	}

Sets the endFragmentFollows flag to true if next event is the last event of the fragment.

Parameters:
event peek() from wrapped event reader
	private void checkFragmentEnd(XMLEvent event) {
		if (event.isStartElement() && ((StartElementevent).getName().equals()) {
		}
		else if (event.isEndElement() && ((EndElementevent).getName().equals()) {
			if ( == 0) {
			}
		}
	}

Parameters:
event peek() from wrapped event reader
peek if true do not change the internal state
Returns:
StartDocument event if peek() points to beginning of fragment EndDocument event if cursor is right behind the end of fragment original event otherwise
	private XMLEvent alterEvent(XMLEvent eventboolean peek) {
			if (!peek) {
			}
		}
		else if () {
			if (!peek) {
				 = false;
			}
		}
		return event;
	}
	public XMLEvent peek() throws XMLStreamException {
			return null;
		}
	}

Finishes reading the fragment in case the fragment was processed without being read until the end.
	public void markFragmentProcessed() {
			try {
				while (!(nextEvent() instanceof EndDocument)) {
					// just read all events until EndDocument
				}
			}
			catch (XMLStreamException e) {
				throw new DataAccessResourceFailureException("Error reading XML stream"e);
			}
		}
		 = false;
	}
	public void reset() {
		 = false;
		 = false;
	}
New to GrepCode? Check out our FAQ X