package com.bagri.xquery.saxon; import static com.bagri.xquery.saxon.SaxonUtils.convertXQItem; import javax.xml.xquery.XQException; import javax.xml.xquery.XQItem; import javax.xml.xquery.XQItemAccessor; import javax.xml.xquery.XQSequence; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import net.sf.saxon.expr.JPConverter; import net.sf.saxon.expr.XPathContext; import net.sf.saxon.om.Sequence; import net.sf.saxon.om.SequenceTool; import net.sf.saxon.trans.XPathException; import net.sf.saxon.type.AnyItemType; import net.sf.saxon.type.ItemType; public class JPConverterImpl extends JPConverter { private static final Logger logger = LoggerFactory.getLogger(JPConverterImpl.class); @Override public Sequence convert(Object object, XPathContext context) throws XPathException { logger.trace("convert.enter; object: {}", object); Sequence result = null; if (object instanceof XQItem) { try { result = convertXQItem((XQItem) object, context.getConfiguration()); } catch (XQException ex) { throw new XPathException(ex); } } else if (object instanceof XQSequence) { XQSequence sequence = (XQSequence) object; result = SequenceTool.toMemoSequence(new XQSequenceIterator(sequence, context.getConfiguration())); } logger.trace("convert.exit; returning: {}", result); return result; //convertToItem(object, context.getConfiguration()); } @Override public ItemType getItemType() { return AnyItemType.getInstance(); } }