Search in sources :

Example 1 with XMLGenerator

use of org.apache.cocoon.sax.component.XMLGenerator in project syncope by apache.

the class WADLServlet method doGet.

/**
 * Handles the HTTP <code>GET</code> method.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
@Override
protected void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {
    Matcher schemaMatcher = SCHEMA_PATTERN.matcher(request.getServletPath());
    WadlGenerator wadlGenerator = ApplicationContextProvider.getApplicationContext().getBean(WadlGenerator.class);
    String wadl = wadlGenerator.getWadl();
    Pipeline<SAXPipelineComponent> pipeline = new CachingPipeline<>();
    pipeline.addComponent(new XMLGenerator(wadl));
    if ("/index.html".equals(request.getServletPath())) {
        XSLTTransformer xslt = new XSLTTransformer(getClass().getResource("/wadl2html/index.xsl"));
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("contextPath", request.getContextPath());
        xslt.setParameters(parameters);
        pipeline.addComponent(xslt);
        finish(pipeline, response);
    } else if (schemaMatcher.matches()) {
        XSLTTransformer xslt = new XSLTTransformer(getClass().getResource("/wadl2html/schema.xsl"));
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("contextPath", request.getContextPath());
        parameters.put("schema-position", schemaMatcher.group(1));
        parameters.put("schema-prefix", schemaMatcher.group(2));
        xslt.setParameters(parameters);
        pipeline.addComponent(xslt);
        finish(pipeline, response);
    } else if ("/syncope.wadl".equals(request.getServletPath())) {
        response.setContentType(MediaType.APPLICATION_XML);
        try (InputStream in = new ByteArrayInputStream(wadl.getBytes());
            OutputStream out = response.getOutputStream()) {
            IOUtils.copy(in, out);
        }
    } else {
        throw new ServerException("URL not supported: " + request.getRequestURI());
    }
}
Also used : ServerException(java.rmi.ServerException) Matcher(java.util.regex.Matcher) HashMap(java.util.HashMap) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) OutputStream(java.io.OutputStream) XMLGenerator(org.apache.cocoon.sax.component.XMLGenerator) ByteArrayInputStream(java.io.ByteArrayInputStream) XSLTTransformer(org.apache.cocoon.sax.component.XSLTTransformer) SAXPipelineComponent(org.apache.cocoon.sax.SAXPipelineComponent) HashMap(java.util.HashMap) Map(java.util.Map) CachingPipeline(org.apache.cocoon.pipeline.CachingPipeline)

Example 2 with XMLGenerator

use of org.apache.cocoon.sax.component.XMLGenerator in project syncope by apache.

the class ReportLogic method exportExecutionResult.

@PreAuthorize("hasRole('" + StandardEntitlement.REPORT_READ + "')")
public void exportExecutionResult(final OutputStream os, final ReportExec reportExec, final ReportExecExportFormat format) {
    // streaming SAX handler from a compressed byte array stream
    try (ByteArrayInputStream bais = new ByteArrayInputStream(reportExec.getExecResult());
        ZipInputStream zis = new ZipInputStream(bais)) {
        // a single ZipEntry in the ZipInputStream (see ReportJob)
        zis.getNextEntry();
        Pipeline<SAXPipelineComponent> pipeline = new NonCachingPipeline<>();
        pipeline.addComponent(new XMLGenerator(zis));
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("status", reportExec.getStatus());
        parameters.put("message", reportExec.getMessage());
        parameters.put("start", reportExec.getStart());
        parameters.put("end", reportExec.getEnd());
        switch(format) {
            case HTML:
                XSLTTransformer xsl2html = new XSLTTransformer(new StreamSource(IOUtils.toInputStream(reportExec.getReport().getTemplate().getHTMLTemplate(), StandardCharsets.UTF_8)));
                xsl2html.setParameters(parameters);
                pipeline.addComponent(xsl2html);
                pipeline.addComponent(XMLSerializer.createXHTMLSerializer());
                break;
            case PDF:
                XSLTTransformer xsl2pdf = new XSLTTransformer(new StreamSource(IOUtils.toInputStream(reportExec.getReport().getTemplate().getFOTemplate(), StandardCharsets.UTF_8)));
                xsl2pdf.setParameters(parameters);
                pipeline.addComponent(xsl2pdf);
                pipeline.addComponent(new FopSerializer(MimeConstants.MIME_PDF));
                break;
            case RTF:
                XSLTTransformer xsl2rtf = new XSLTTransformer(new StreamSource(IOUtils.toInputStream(reportExec.getReport().getTemplate().getFOTemplate(), StandardCharsets.UTF_8)));
                xsl2rtf.setParameters(parameters);
                pipeline.addComponent(xsl2rtf);
                pipeline.addComponent(new FopSerializer(MimeConstants.MIME_RTF));
                break;
            case CSV:
                XSLTTransformer xsl2csv = new XSLTTransformer(new StreamSource(IOUtils.toInputStream(reportExec.getReport().getTemplate().getCSVTemplate(), StandardCharsets.UTF_8)));
                xsl2csv.setParameters(parameters);
                pipeline.addComponent(xsl2csv);
                pipeline.addComponent(new TextSerializer());
                break;
            case XML:
            default:
                pipeline.addComponent(XMLSerializer.createXMLSerializer());
        }
        pipeline.setup(os);
        pipeline.execute();
        LOG.debug("Result of {} successfully exported as {}", reportExec, format);
    } catch (Exception e) {
        LOG.error("While exporting content", e);
    }
}
Also used : HashMap(java.util.HashMap) StreamSource(javax.xml.transform.stream.StreamSource) XMLGenerator(org.apache.cocoon.sax.component.XMLGenerator) SyncopeClientException(org.apache.syncope.common.lib.SyncopeClientException) NotFoundException(org.apache.syncope.core.persistence.api.dao.NotFoundException) SchedulerException(org.quartz.SchedulerException) FopSerializer(org.apache.syncope.core.logic.cocoon.FopSerializer) ZipInputStream(java.util.zip.ZipInputStream) NonCachingPipeline(org.apache.cocoon.pipeline.NonCachingPipeline) TextSerializer(org.apache.syncope.core.logic.cocoon.TextSerializer) ByteArrayInputStream(java.io.ByteArrayInputStream) XSLTTransformer(org.apache.syncope.core.logic.cocoon.XSLTTransformer) SAXPipelineComponent(org.apache.cocoon.sax.SAXPipelineComponent) PreAuthorize(org.springframework.security.access.prepost.PreAuthorize)

Aggregations

ByteArrayInputStream (java.io.ByteArrayInputStream)2 HashMap (java.util.HashMap)2 SAXPipelineComponent (org.apache.cocoon.sax.SAXPipelineComponent)2 XMLGenerator (org.apache.cocoon.sax.component.XMLGenerator)2 InputStream (java.io.InputStream)1 OutputStream (java.io.OutputStream)1 ServerException (java.rmi.ServerException)1 Map (java.util.Map)1 Matcher (java.util.regex.Matcher)1 ZipInputStream (java.util.zip.ZipInputStream)1 StreamSource (javax.xml.transform.stream.StreamSource)1 CachingPipeline (org.apache.cocoon.pipeline.CachingPipeline)1 NonCachingPipeline (org.apache.cocoon.pipeline.NonCachingPipeline)1 XSLTTransformer (org.apache.cocoon.sax.component.XSLTTransformer)1 SyncopeClientException (org.apache.syncope.common.lib.SyncopeClientException)1 FopSerializer (org.apache.syncope.core.logic.cocoon.FopSerializer)1 TextSerializer (org.apache.syncope.core.logic.cocoon.TextSerializer)1 XSLTTransformer (org.apache.syncope.core.logic.cocoon.XSLTTransformer)1 NotFoundException (org.apache.syncope.core.persistence.api.dao.NotFoundException)1 SchedulerException (org.quartz.SchedulerException)1