public StreamingParserHandler(Configuration config) { super(config); buffer = new Buffer(); }
public void run() { try { parser.parse(input, handler); } catch (Exception e) { // close the buffer handler.getBuffer().close(); throw new RuntimeException(e); } }; };
public void test() throws Exception { Consumer consumer = new Consumer(buffer); Thread thread = new Thread(consumer); thread.start(); for (int i = 0; i < 1000; i++) { buffer.put(Integer.valueOf(i)); } thread.join(); for (int i = 0; i < consumer.taken.size(); i++) { Integer integer = (Integer) consumer.taken.get(i); assertEquals(i, integer.intValue()); } }
/** * Streams the parser to the next element in the instance document which matches the xpath query * specified in the contstructor. This method returns null when there are no more objects to * stream. * * @return The next object in the stream, or null if no such object is available. */ public Object parse() { if (thread == null) { Runnable runnable = new Runnable() { public void run() { try { parser.parse(input, handler); } catch (Exception e) { // close the buffer handler.getBuffer().close(); throw new RuntimeException(e); } }; }; thread = new Thread(runnable); thread.start(); } return handler.getBuffer().get(); } }
protected void endElementInternal(ElementHandler handler) { super.endElementInternal(handler); if (stream(handler)) { // throw value into buffer buffer.put(handler.getParseNode().getValue()); // remove this node from parse tree if (handler.getParentHandler() instanceof ElementHandler) { ElementHandler parent = (ElementHandler) handler.getParentHandler(); ((NodeImpl) parent.getParseNode()).removeChild(handler.getParseNode()); // parent.endChildHandler(handler); } } }
public void run() { taken = new ArrayList(); for (int i = 0; i < 1000; i++) { taken.add(buffer.get()); } } }
protected void setUp() throws Exception { buffer = new Buffer(10); }
public void endDocument() throws SAXException { super.endDocument(); buffer.close(); }