package com.bagri.xquery.saxon; import static com.bagri.xquery.saxon.SaxonUtils.convertXQItem; import javax.xml.xquery.XQException; import javax.xml.xquery.XQSequence; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import net.sf.saxon.Configuration; import net.sf.saxon.om.Item; import net.sf.saxon.om.SequenceIterator; import net.sf.saxon.trans.XPathException; public class XQSequenceIterator implements SequenceIterator { private static final Logger logger = LoggerFactory.getLogger(XQSequenceIterator.class); private XQSequence xqs; private Configuration config; public XQSequenceIterator(XQSequence xqs, Configuration config) { this.xqs = xqs; this.config = config; } @Override public Item next() throws XPathException { try { if (xqs.next()) { return convertXQItem(xqs.getItem(), config); } } catch (XQException ex) { throw new XPathException(ex); } return null; } @Override public void close() { try { xqs.close(); } catch (XQException ex) { logger.error("close", ex); } } @Override public SequenceIterator getAnother() throws XPathException { return null; // new XQSequenceIterator(xqs, config); //?? } @Override public int getProperties() { return 0; } }