Search in sources :

Example 1 with EXIException

use of com.siemens.ct.exi.exceptions.EXIException in project arctic-sea by 52North.

the class EXIResponseWriter method write.

@Override
public void write(EXIObject<XmlObject> exiObject, OutputStream out, ResponseProxy responseProxy) throws IOException, EncodingException {
    byte[] bytes = getBytes(exiObject);
    try (InputStream is = new ByteArrayInputStream(bytes)) {
        EXIResult result = new EXIResult(this.exiFactory.get());
        result.setOutputStream(out);
        XMLReader xmlReader = XMLReaderFactory.createXMLReader();
        xmlReader.setContentHandler(result.getHandler());
        xmlReader.parse(new InputSource(is));
    } catch (EXIException | SAXException e) {
        throw new EncodingException(e);
    }
}
Also used : EXIResult(com.siemens.ct.exi.api.sax.EXIResult) InputSource(org.xml.sax.InputSource) ByteArrayInputStream(java.io.ByteArrayInputStream) EncodingException(org.n52.svalbard.encode.exception.EncodingException) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) EXIException(com.siemens.ct.exi.exceptions.EXIException) XMLReader(org.xml.sax.XMLReader) SAXException(org.xml.sax.SAXException)

Example 2 with EXIException

use of com.siemens.ct.exi.exceptions.EXIException in project arctic-sea by 52North.

the class EXIBinding method decode.

/**
 * Parse the incoming EXI encoded {@link InputStream} transform to
 * {@link XmlObject}
 *
 * @param request
 *            {@link HttpServletRequest} with EXI encoded
 *            {@link InputStream}
 * @return {@link XmlObject} created from the EXI encoded
 *         {@link InputStream}
 * @throws OwsExceptionReport
 *             If an error occurs during parsing
 */
protected XmlObject decode(HttpServletRequest request) throws OwsExceptionReport {
    try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
        EXIFactory ef = this.exiUtils.newEXIFactory();
        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer transformer = tf.newTransformer();
        if (ef.isFragment()) {
            transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        }
        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
        transformer.setOutputProperty(OutputKeys.ENCODING, StandardCharsets.UTF_8.name());
        // decode EXI encoded InputStream
        EXISource exiSource = new EXISource(ef);
        XMLReader exiReader = exiSource.getXMLReader();
        InputSource inputSource = new InputSource(request.getInputStream());
        inputSource.setEncoding(request.getCharacterEncoding());
        SAXSource saxSource = new SAXSource(inputSource);
        saxSource.setXMLReader(exiReader);
        transformer.transform(saxSource, new StreamResult(os));
        // create XmlObject from OutputStream
        return XmlHelper.parseXmlString(os.toString(StandardCharsets.UTF_8.name()));
    } catch (IOException | EXIException ex) {
        throw new NoApplicableCodeException().causedBy(ex).withMessage("Error while reading request! Message: %s", ex.getMessage());
    } catch (TransformerException ex) {
        throw new NoApplicableCodeException().causedBy(ex).withMessage("Error while transforming request! Message: %s", ex.getMessage());
    } catch (DecodingException ex) {
        throw new NoApplicableCodeException().causedBy(ex).withMessage("Error while parsing request! Message: %s", ex.getMessage());
    }
}
Also used : InputSource(org.xml.sax.InputSource) TransformerFactory(javax.xml.transform.TransformerFactory) Transformer(javax.xml.transform.Transformer) EXISource(com.siemens.ct.exi.api.sax.EXISource) StreamResult(javax.xml.transform.stream.StreamResult) NoApplicableCodeException(org.n52.shetland.ogc.ows.exception.NoApplicableCodeException) DecodingException(org.n52.svalbard.decode.exception.DecodingException) OwsDecodingException(org.n52.iceland.coding.decode.OwsDecodingException) ByteArrayOutputStream(java.io.ByteArrayOutputStream) IOException(java.io.IOException) EXIException(com.siemens.ct.exi.exceptions.EXIException) SAXSource(javax.xml.transform.sax.SAXSource) XMLReader(org.xml.sax.XMLReader) TransformerException(javax.xml.transform.TransformerException) EXIFactory(com.siemens.ct.exi.EXIFactory)

Aggregations

EXIException (com.siemens.ct.exi.exceptions.EXIException)2 InputSource (org.xml.sax.InputSource)2 XMLReader (org.xml.sax.XMLReader)2 EXIFactory (com.siemens.ct.exi.EXIFactory)1 EXIResult (com.siemens.ct.exi.api.sax.EXIResult)1 EXISource (com.siemens.ct.exi.api.sax.EXISource)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 Transformer (javax.xml.transform.Transformer)1 TransformerException (javax.xml.transform.TransformerException)1 TransformerFactory (javax.xml.transform.TransformerFactory)1 SAXSource (javax.xml.transform.sax.SAXSource)1 StreamResult (javax.xml.transform.stream.StreamResult)1 OwsDecodingException (org.n52.iceland.coding.decode.OwsDecodingException)1 NoApplicableCodeException (org.n52.shetland.ogc.ows.exception.NoApplicableCodeException)1 DecodingException (org.n52.svalbard.decode.exception.DecodingException)1 EncodingException (org.n52.svalbard.encode.exception.EncodingException)1 SAXException (org.xml.sax.SAXException)1