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(); }
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); }