Example usage for javax.xml.transform Transformer setParameter

List of usage examples for javax.xml.transform Transformer setParameter

Introduction

In this page you can find the example usage for javax.xml.transform Transformer setParameter.

Prototype

public abstract void setParameter(String name, Object value);

Source Link

Document

Add a parameter for the transformation.

Usage

From source file:org.apache.cocoon.components.xslt.TraxProcessor.java

public void transform(final Source source, final Source stylesheet, final Parameters params,
        final Result result) throws XSLTProcessorException {
    try {//from  w ww  . j  a  v  a 2 s.c  om
        if (getLogger().isDebugEnabled()) {
            getLogger().debug("Transform source = " + source + ", stylesheet = " + stylesheet
                    + ", parameters = " + params + ", result = " + result);
        }
        final TransformerHandler handler = getTransformerHandler(stylesheet);
        if (params != null) {
            final Transformer transformer = handler.getTransformer();
            transformer.clearParameters();
            String[] names = params.getNames();
            for (int i = names.length - 1; i >= 0; i--) {
                transformer.setParameter(names[i], params.getParameter(names[i]));
            }
        }

        handler.setResult(result);
        sourceToSAX(source, handler);
        if (getLogger().isDebugEnabled()) {
            getLogger().debug("Transform done");
        }
    } catch (SAXException e) {
        // Unwrapping the exception will "remove" the real cause with
        // never Xalan versions and makes the exception message unusable
        final String message = "Error in running Transformation";
        throw new XSLTProcessorException(message, e);
        /*
         * if( e.getException() == null ) { final String message = "Error in
         * running Transformation"; throw new XSLTProcessorException(
         * message, e ); } else { final String message = "Got SAXException.
         * Rethrowing cause exception."; getLogger().debug( message, e );
         * throw new XSLTProcessorException( "Error in running
         * Transformation", e.getException() ); }
         */
    } catch (Exception e) {
        final String message = "Error in running Transformation";
        throw new XSLTProcessorException(message, e);
    }
}

From source file:org.apache.cocoon.transformation.TraxTransformer.java

/**
 * Set the <code>XMLConsumer</code> that will receive XML data.
 *//*from   w  ww.  jav a 2  s.  c o  m*/
public void setConsumer(XMLConsumer consumer) {

    if (this.transformerHandler == null) {
        try {
            this.transformerHandler = this.xsltProcessor.getTransformerHandler(this.inputSource);
        } catch (XSLTProcessorException se) {
            // the exception will be thrown during startDocument()
            this.exceptionDuringSetConsumer = new SAXException(
                    "Unable to get transformer handler for " + this.inputSource.getURI(), se);
            return;
        }
    }
    final Map map = getLogicSheetParameters();
    if (map != null) {
        final javax.xml.transform.Transformer transformer = this.transformerHandler.getTransformer();
        final Iterator iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            final Map.Entry entry = (Entry) iterator.next();
            transformer.setParameter((String) entry.getKey(), entry.getValue());
        }
    }

    super.setContentHandler(this.transformerHandler);
    super.setLexicalHandler(this.transformerHandler);

    if (this.transformerHandler instanceof LogEnabled) {
        ((LogEnabled) this.transformerHandler).enableLogging(getLogger());
    }
    // According to TrAX specs, all TransformerHandlers are LexicalHandlers
    final SAXResult result = new SAXResult(consumer);
    result.setLexicalHandler(consumer);
    this.transformerHandler.setResult(result);

    this.errorListener = new TraxErrorListener(getLogger(), this.inputSource.getURI());
    this.transformerHandler.getTransformer().setErrorListener(this.errorListener);
}

From source file:org.apache.cocoon.transformation.XSLTTransformer.java

/**
 * Set the <code>XMLConsumer</code> that will receive XML data.
 *//*www.j av  a2s.  com*/
public void setConsumer(XMLConsumer consumer) {

    if (this.transformerHandler == null) {
        try {
            this.transformerHandler = this.xsltProcessor.getTransformerHandler(this.inputSource);
        } catch (XSLTProcessorException se) {
            // the exception will be thrown during startDocument()
            this.exceptionDuringSetConsumer = new SAXException(
                    "Unable to get transformer handler for " + this.inputSource.getURI(), se);
            return;
        }
    }
    final Map map = getLogicSheetParameters();
    if (map != null) {
        final javax.xml.transform.Transformer transformer = this.transformerHandler.getTransformer();
        final Iterator iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            final Map.Entry entry = (Entry) iterator.next();
            transformer.setParameter((String) entry.getKey(), entry.getValue());
        }
    }

    super.setContentHandler(this.transformerHandler);
    super.setLexicalHandler(this.transformerHandler);
    // Is there even single implementation of LogEnabled TransformerHandler?
    if (this.transformerHandler instanceof LogEnabled) {
        ((LogEnabled) this.transformerHandler).enableLogging(new CLLoggerWrapper(getLogger()));
    }
    // According to TrAX specs, all TransformerHandlers are LexicalHandlers
    final SAXResult result = new SAXResult(consumer);
    result.setLexicalHandler(consumer);
    this.transformerHandler.setResult(result);

    this.errorListener = new TraxErrorListener(this.inputSource.getURI());
    this.transformerHandler.getTransformer().setErrorListener(this.errorListener);
}

From source file:org.apache.fop.cli.InputHandler.java

/**
 * Transforms the input document to the input format expected by FOP using XSLT.
 * @param result the Result object where the result of the XSL transformation is sent to
 * @throws FOPException in case of an error during processing
 *///from   www  .  j a v  a 2  s  .c o m
protected void transformTo(Result result) throws FOPException {
    try {
        // Setup XSLT
        TransformerFactory factory = TransformerFactory.newInstance();
        if (uriResolver != null) {
            factory.setURIResolver(uriResolver);
        }
        factory.setErrorListener(this);
        Transformer transformer;

        Source xsltSource = createXSLTSource();
        if (xsltSource == null) { // FO Input
            transformer = factory.newTransformer();
        } else { // XML/XSLT input
            transformer = factory.newTransformer(xsltSource);

            // Set the value of parameters, if any, defined for stylesheet
            if (xsltParams != null) {
                for (int i = 0; i < xsltParams.size(); i += 2) {
                    transformer.setParameter((String) xsltParams.elementAt(i),
                            (String) xsltParams.elementAt(i + 1));
                }
            }
        }
        transformer.setErrorListener(this);

        // Create a SAXSource from the input Source file
        Source src = createMainSource();

        // Start XSLT transformation and FOP processing
        transformer.transform(src, result);

    } catch (Exception e) {
        throw new FOPException(e);
    }
}

From source file:org.apache.fop.memory.MemoryEater.java

private void eatMemory(int callIndex, File foFile, int replicatorRepeats) throws Exception {
    Source src = new StreamSource(foFile);

    Transformer transformer = replicatorTemplates.newTransformer();
    transformer.setParameter("repeats", new Integer(replicatorRepeats));

    OutputStream out = new NullOutputStream(); //write to /dev/nul
    try {/*from w  w  w  . j a  v a  2  s. com*/
        FOUserAgent userAgent = fopFactory.newFOUserAgent();
        userAgent.setBaseURL(foFile.getParentFile().toURI().toURL().toExternalForm());
        Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, userAgent, out);
        Result res = new SAXResult(fop.getDefaultHandler());

        transformer.transform(src, res);

        stats.notifyPagesProduced(fop.getResults().getPageCount());
        if (callIndex == 0) {
            System.out.println(foFile.getName() + " generates " + fop.getResults().getPageCount() + " pages.");
        }
        stats.checkStats();
    } finally {
        IOUtils.closeQuietly(out);
    }
}

From source file:org.apache.fop.tools.EventProducerCollectorTask.java

/**
 * Updates the translation file with new entries for newly found event producer methods.
 * @param modelFile the model file to use
 * @throws IOException if an I/O error occurs
 *//*from w  ww .ja va2 s.c  om*/
protected void updateTranslationFile(File modelFile) throws IOException {
    try {
        boolean resultExists = getTranslationFile().exists();
        SAXTransformerFactory tFactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();

        //Generate fresh generated translation file as template
        Source src = new StreamSource(modelFile.toURI().toURL().toExternalForm());
        StreamSource xslt1 = new StreamSource(getClass().getResourceAsStream(MODEL2TRANSLATION));
        if (xslt1.getInputStream() == null) {
            throw new FileNotFoundException(MODEL2TRANSLATION + " not found");
        }
        DOMResult domres = new DOMResult();
        Transformer transformer = tFactory.newTransformer(xslt1);
        transformer.transform(src, domres);
        final Node generated = domres.getNode();

        Node sourceDocument;
        if (resultExists) {
            //Load existing translation file into memory (because we overwrite it later)
            src = new StreamSource(getTranslationFile().toURI().toURL().toExternalForm());
            domres = new DOMResult();
            transformer = tFactory.newTransformer();
            transformer.transform(src, domres);
            sourceDocument = domres.getNode();
        } else {
            //Simply use generated as source document
            sourceDocument = generated;
        }

        //Generate translation file (with potentially new translations)
        src = new DOMSource(sourceDocument);

        //The following triggers a bug in older Xalan versions
        //Result res = new StreamResult(getTranslationFile());
        OutputStream out = new java.io.FileOutputStream(getTranslationFile());
        out = new java.io.BufferedOutputStream(out);
        Result res = new StreamResult(out);
        try {
            StreamSource xslt2 = new StreamSource(getClass().getResourceAsStream(MERGETRANSLATION));
            if (xslt2.getInputStream() == null) {
                throw new FileNotFoundException(MERGETRANSLATION + " not found");
            }
            transformer = tFactory.newTransformer(xslt2);
            transformer.setURIResolver(new URIResolver() {
                public Source resolve(String href, String base) throws TransformerException {
                    if ("my:dom".equals(href)) {
                        return new DOMSource(generated);
                    }
                    return null;
                }
            });
            if (resultExists) {
                transformer.setParameter("generated-url", "my:dom");
            }
            transformer.transform(src, res);
            if (resultExists) {
                log("Translation file updated: " + getTranslationFile());
            } else {
                log("Translation file generated: " + getTranslationFile());
            }
        } finally {
            IOUtils.closeQuietly(out);
        }
    } catch (TransformerException te) {
        throw new IOException(te.getMessage());
    }
}

From source file:org.apache.fop.tools.fontlist.FontListMain.java

private void generateXML(SortedMap fontFamilies, File outFile, String singleFamily)
        throws TransformerConfigurationException, SAXException, IOException {
    SAXTransformerFactory tFactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
    TransformerHandler handler;//from w  w w.j av a 2s  . com
    if (this.mode == GENERATE_XML) {
        handler = tFactory.newTransformerHandler();
    } else {
        URL url = getClass().getResource("fonts2fo.xsl");
        if (url == null) {
            throw new FileNotFoundException("Did not find resource: fonts2fo.xsl");
        }
        handler = tFactory.newTransformerHandler(new StreamSource(url.toExternalForm()));
    }

    if (singleFamily != null) {
        Transformer transformer = handler.getTransformer();
        transformer.setParameter("single-family", singleFamily);
    }

    OutputStream out = new java.io.FileOutputStream(outFile);
    out = new java.io.BufferedOutputStream(out);
    if (this.mode == GENERATE_RENDERED) {
        handler.setResult(new SAXResult(getFOPContentHandler(out)));
    } else {
        handler.setResult(new StreamResult(out));
    }
    try {
        GenerationHelperContentHandler helper = new GenerationHelperContentHandler(handler, null);
        FontListSerializer serializer = new FontListSerializer();
        serializer.generateSAX(fontFamilies, singleFamily, helper);
    } finally {
        IOUtils.closeQuietly(out);
    }
}

From source file:org.apache.nifi.processors.standard.TransformXml.java

@Override
public void onTrigger(final ProcessContext context, final ProcessSession session) {
    final FlowFile original = session.get();
    if (original == null) {
        return;//ww  w  .j a v  a2s .  c o m
    }

    final ComponentLog logger = getLogger();
    final StopWatch stopWatch = new StopWatch(true);
    final String path = context.getProperty(XSLT_FILE_NAME).isSet()
            ? context.getProperty(XSLT_FILE_NAME).evaluateAttributeExpressions(original).getValue()
            : context.getProperty(XSLT_CONTROLLER_KEY).evaluateAttributeExpressions(original).getValue();
    final Boolean indentOutput = context.getProperty(INDENT_OUTPUT).asBoolean();
    lookupService.set(context.getProperty(XSLT_CONTROLLER).asControllerService(LookupService.class));

    try {
        FlowFile transformed = session.write(original, new StreamCallback() {
            @Override
            public void process(final InputStream rawIn, final OutputStream out) throws IOException {
                try (final InputStream in = new BufferedInputStream(rawIn)) {
                    final Templates templates;
                    if (cache != null) {
                        templates = cache.get(path);
                    } else {
                        templates = newTemplates(context, path);
                    }

                    final Transformer transformer = templates.newTransformer();
                    transformer.setOutputProperty(OutputKeys.INDENT, (indentOutput ? "yes" : "no"));

                    // pass all dynamic properties to the transformer
                    for (final Map.Entry<PropertyDescriptor, String> entry : context.getProperties()
                            .entrySet()) {
                        if (entry.getKey().isDynamic()) {
                            String value = context.newPropertyValue(entry.getValue())
                                    .evaluateAttributeExpressions(original).getValue();
                            transformer.setParameter(entry.getKey().getName(), value);
                        }
                    }

                    // use a StreamSource with Saxon
                    StreamSource source = new StreamSource(in);
                    StreamResult result = new StreamResult(out);
                    transformer.transform(source, result);
                } catch (final Exception e) {
                    throw new IOException(e);
                }
            }
        });
        session.transfer(transformed, REL_SUCCESS);
        session.getProvenanceReporter().modifyContent(transformed, stopWatch.getElapsed(TimeUnit.MILLISECONDS));
        logger.info("Transformed {}", new Object[] { original });
    } catch (ProcessException e) {
        logger.error("Unable to transform {} due to {}", new Object[] { original, e });
        session.transfer(original, REL_FAILURE);
    }
}

From source file:org.apache.ode.utils.xsl.XslTransformHandler.java

/**
 * Transforms a Source document to a result using the XSL stylesheet referenced
 * by the provided URI. The stylesheet MUST have been parsed previously.
 * @param uri referencing the stylesheet
 * @param source XML document//w  ww.ja  v  a2 s .  co m
 * @param parameters passed to the stylesheet
 * @param resolver used to resolve includes and imports
 * @return result of the transformation (XSL, HTML or text depending of the output method specified in stylesheet.
 */
public Object transform(QName processQName, URI uri, Source source, Map<QName, Object> parameters,
        URIResolver resolver) {
    Templates tm;
    synchronized (_templateCache) {
        tm = (Templates) _templateCache.get(processQName, uri);
    }
    if (tm == null)
        throw new XslTransformException("XSL sheet" + uri + " has not been parsed before transformation!");
    try {
        Transformer tf = tm.newTransformer();
        tf.setURIResolver(resolver);
        if (parameters != null) {
            for (Map.Entry<QName, Object> param : parameters.entrySet()) {
                tf.setParameter(param.getKey().getLocalPart(), param.getValue());
            }
        }
        String method = tf.getOutputProperties().getProperty("method");
        if (method == null || "xml".equals(method)) {
            DOMResult result = new DOMResult();
            tf.transform(source, result);
            Node node = result.getNode();
            if (node.getNodeType() == Node.DOCUMENT_NODE)
                node = ((Document) node).getDocumentElement();
            if (__log.isDebugEnabled())
                __log.debug("Returned node: type=" + node.getNodeType() + ", " + DOMUtils.domToString(node));
            return node;
        } else {
            // text and html outputs are handled the same way
            StringWriter writerResult = new StringWriter();
            StreamResult result = new StreamResult(writerResult);
            tf.transform(source, result);
            writerResult.flush();
            String output = writerResult.toString();
            if (__log.isDebugEnabled())
                __log.debug("Returned string: " + output);
            return output;
        }
    } catch (TransformerConfigurationException e) {
        throw new XslTransformException(e);
    } catch (TransformerException e) {
        throw new XslTransformException("XSL Transformation failed!", e);
    }
}

From source file:org.apache.synapse.mediators.transform.XSLTMediator.java

/**
 * Set the properties defined in the mediator as parameters on the stylesheet.
 * //  www.  j ava2 s  .  c o m
 * @param transformer Transformer instance
 * @param synCtx MessageContext instance
 * @param synLog SynapseLog instance 
 */
private void applyProperties(Transformer transformer, MessageContext synCtx, SynapseLog synLog) {
    for (MediatorProperty prop : properties) {
        if (prop != null) {
            String value;
            if (prop.getValue() != null) {
                value = prop.getValue();
            } else {
                value = prop.getExpression().stringValueOf(synCtx);
            }
            if (synLog.isTraceOrDebugEnabled()) {
                if (value == null) {
                    synLog.traceOrDebug("Not setting parameter '" + prop.getName() + "'");
                } else {
                    synLog.traceOrDebug("Setting parameter '" + prop.getName() + "' to '" + value + "'");
                }
            }
            if (value != null) {
                transformer.setParameter(prop.getName(), value);
            }
        }
    }
}