private XMLChunk endChunk() throws XMLStreamException { Chunk chunk = m_chunkStack.removeFirst(); String content = chunk.getWriter().getChunkContent(); m_chunkWriterPool.release(chunk.getWriter()); Chunk parentChunk = m_chunkStack.isEmpty() ? null : m_chunkStack.getFirst(); return new XMLChunk(false, chunk.getXmlChunk().getXpath(), content, parentChunk != null ? parentChunk.getXmlChunk() : null); }
private XMLChunk startChunk(List<QName> path) throws XMLStreamException { Chunk parentChunk = m_chunkStack.isEmpty() ? null : m_chunkStack.getFirst(); XMLChunk parent = null; if (parentChunk != null) { XMLChunk old = parentChunk.getXmlChunk(); parent = new XMLChunk(true, old.getXpath(), parentChunk.getWriter().getChunkContent(), old .getParent()); // replace old parent chunk with new content which is maybe before the child element parentChunk.setXmlChunk(parent); } Chunk chunk = new Chunk(new XMLChunk(true, asList(path), parent), m_chunkWriterPool.acquire()); m_chunkStack.addFirst(chunk); return chunk.getXmlChunk(); }
/** * Handles a chunk start. */ private void handleChunkStart(final XMLChunk chunk) { List<QName> xpath = Collections.unmodifiableList(chunk.getXpath()); XMLChunkHandler handler = getHandler(chunk.getStartElement()); if (chunk.hasParent()) { XMLChunk parentChunk = chunk.getParent(); XMLChunkHandler parentHandler = getHandler(parentChunk.getStartElement()); parentHandler.handleChunkBeforChildHandler( xpath, parentChunk.getStartElement(), parentChunk.getChunk(), chunk.getStartElement(), handler); } handler.handleChunkStart(xpath, chunk.getStartElement()); }
/** * Handler function of the end chunk event. */ private void handleChunkEnd(final XMLChunk chunk) { List<QName> xpath = Collections.unmodifiableList(chunk.getXpath()); XMLChunkHandler handler = getHandler(chunk.getStartElement()); handler.handleChunkEnd(xpath, chunk.getStartElement(), chunk.getChunk()); if (chunk.hasParent()) { XMLChunk parentChunk = chunk.getParent(); XMLChunkHandler parentHandler = getHandler(parentChunk.getStartElement()); parentHandler.handleChunkAfterChildHandler( xpath, parentChunk.getStartElement(), parentChunk.getChunk(), chunk.getStartElement(), handler); } }