Search in sources :

Example 1 with EXISerializer

use of org.exist.util.serializer.EXISerializer in project exist by eXist-db.

the class EncodeExiFunction method eval.

@Override
public Sequence eval(Sequence[] args, Sequence contextSequence) throws XPathException {
    if (args[0].isEmpty()) {
        return Sequence.EMPTY_SEQUENCE;
    }
    try (final UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream()) {
        EXISerializer exiSerializer;
        if (args.length > 1) {
            if (!args[1].isEmpty()) {
                Item xsdItem = args[1].itemAt(0);
                try (InputStream xsdInputStream = EXIUtils.getInputStream(xsdItem, context)) {
                    exiSerializer = new EXISerializer(baos, xsdInputStream);
                }
            } else {
                exiSerializer = new EXISerializer(baos);
            }
        } else {
            exiSerializer = new EXISerializer(baos);
        }
        Item inputNode = args[0].itemAt(0);
        exiSerializer.startDocument();
        inputNode.toSAX(context.getBroker(), exiSerializer, new Properties());
        exiSerializer.endDocument();
        return BinaryValueFromInputStream.getInstance(context, new Base64BinaryValueType(), baos.toInputStream());
    } catch (IOException ioex) {
        // TODO - test!
        throw new XPathException(this, ErrorCodes.FODC0002, ioex.getMessage());
    } catch (EXIException | SAXException exie) {
        throw new XPathException(this, new JavaErrorCode(exie.getCause()), exie.getMessage());
    }
}
Also used : Item(org.exist.xquery.value.Item) XPathException(org.exist.xquery.XPathException) BinaryValueFromInputStream(org.exist.xquery.value.BinaryValueFromInputStream) InputStream(java.io.InputStream) Base64BinaryValueType(org.exist.xquery.value.Base64BinaryValueType) IOException(java.io.IOException) EXIException(com.siemens.ct.exi.exceptions.EXIException) UnsynchronizedByteArrayOutputStream(org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream) Properties(java.util.Properties) EXISerializer(org.exist.util.serializer.EXISerializer) SAXException(org.xml.sax.SAXException) JavaErrorCode(org.exist.xquery.ErrorCodes.JavaErrorCode)

Aggregations

EXIException (com.siemens.ct.exi.exceptions.EXIException)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 Properties (java.util.Properties)1 UnsynchronizedByteArrayOutputStream (org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream)1 EXISerializer (org.exist.util.serializer.EXISerializer)1 JavaErrorCode (org.exist.xquery.ErrorCodes.JavaErrorCode)1 XPathException (org.exist.xquery.XPathException)1 Base64BinaryValueType (org.exist.xquery.value.Base64BinaryValueType)1 BinaryValueFromInputStream (org.exist.xquery.value.BinaryValueFromInputStream)1 Item (org.exist.xquery.value.Item)1 SAXException (org.xml.sax.SAXException)1