Search in sources :

Example 1 with XMLTranslator

use of org.teiid.core.types.XMLTranslator in project teiid by teiid.

the class SaxonXQueryExpression method createXMLType.

public XMLType createXMLType(final SequenceIterator iter, BufferManager bufferManager, boolean emptyOnEmpty, CommandContext context) throws XPathException, TeiidComponentException, TeiidProcessingException {
    final Item item = iter.next();
    if (item == null && !emptyOnEmpty) {
        return null;
    }
    XMLType.Type type = Type.CONTENT;
    if (item instanceof NodeInfo) {
        NodeInfo info = (NodeInfo) item;
        type = getType(info);
    }
    final Item next = iter.next();
    if (next != null) {
        type = Type.CONTENT;
    }
    SQLXMLImpl xml = XMLSystemFunctions.saveToBufferManager(bufferManager, new XMLTranslator() {

        @Override
        public void translate(Writer writer) throws TransformerException, IOException {
            QueryResult.serializeSequence(new PushBackSequenceIterator(iter, item, next), config, writer, DEFAULT_OUTPUT_PROPERTIES);
        }
    }, context);
    XMLType value = new XMLType(xml);
    value.setType(type);
    return value;
}
Also used : Item(net.sf.saxon.om.Item) NamespaceItem(org.teiid.query.sql.symbol.XMLNamespaces.NamespaceItem) XMLType(org.teiid.core.types.XMLType) SQLXMLImpl(org.teiid.core.types.SQLXMLImpl) NodeInfo(net.sf.saxon.om.NodeInfo) Type(org.teiid.core.types.XMLType.Type) IOException(java.io.IOException) XMLTranslator(org.teiid.core.types.XMLTranslator) Writer(java.io.Writer) TransformerException(javax.xml.transform.TransformerException)

Aggregations

IOException (java.io.IOException)1 Writer (java.io.Writer)1 TransformerException (javax.xml.transform.TransformerException)1 Item (net.sf.saxon.om.Item)1 NodeInfo (net.sf.saxon.om.NodeInfo)1 SQLXMLImpl (org.teiid.core.types.SQLXMLImpl)1 XMLTranslator (org.teiid.core.types.XMLTranslator)1 XMLType (org.teiid.core.types.XMLType)1 Type (org.teiid.core.types.XMLType.Type)1 NamespaceItem (org.teiid.query.sql.symbol.XMLNamespaces.NamespaceItem)1