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:net.sourceforge.vulcan.core.support.AbstractProjectDomBuilder.java

public String transform(Document document, Map<String, ?> transformParameters, Locale locale, String format,
        Result result) throws SAXException, IOException, TransformerException, NoSuchTransformFormatException {
    final Transformer transformer = createTransformer(format);

    if (transformParameters != null) {
        for (String key : transformParameters.keySet()) {
            transformer.setParameter(key, transformParameters.get(key));
        }//w w  w  . j  a  v a2 s  . c o m
    }

    transformer.transform(new JDOMSource(document), result);

    return transformer.getOutputProperty(OutputKeys.MEDIA_TYPE);
}

From source file:nl.b3p.catalog.xml.mdeXml2Html.java

private static Document transformIntern(Document doc, String xslName, Boolean viewMode, boolean ignoreAllowed)
        throws JDOMException, IOException, TransformerConfigurationException, TransformerException {
    log.debug("XML before transformation with '" + xslName + "':\n" + DocumentHelper.getDocumentString(doc));
    Templates aTemplates = null;//from   w  w  w  .  ja  v  a2  s  .  co m

    if (!transformerTemplates.containsKey(xslName)) {
        InputStream is = getXslStream(xslName);
        if (is != null) {
            if (transformerFactory == null) {
                transformerFactory = TransformerFactory.newInstance();
            }
            aTemplates = transformerFactory.newTemplates(new StreamSource(is));
        }
        transformerTemplates.put(xslName, aTemplates);
    } else {
        aTemplates = transformerTemplates.get(xslName);
    }

    if (aTemplates == null) {
        if (ignoreAllowed) {
            // ignore transformer
            return doc;
        } else {
            throw new TransformerConfigurationException(
                    "Transformer [" + xslName + "] is missing from configuration!");
        }
    }

    Transformer t = aTemplates.newTransformer();

    Map<String, String> params = CatalogAppConfig.getConfig().getMdeConfig();
    if (params != null) {
        for (Map.Entry<String, String> param : params.entrySet()) {
            t.setParameter(param.getKey(), param.getValue());
        }
        if (viewMode != null) {
            t.setParameter("globalReadonly_init", viewMode.toString());
        }
    }

    JDOMResult result = new JDOMResult();
    t.transform(new JDOMSource(doc), result);
    log.debug("XML after transformation with '" + xslName + "':\n"
            + DocumentHelper.getDocumentString(result.getDocument()));

    return result.getDocument();
}

From source file:nl.clockwork.mule.common.transformer.AbstractXSLTransformer.java

@Override
public Object transform(MuleMessage message, String outputEncoding) throws TransformerException {
    try {//from   w w w. j a v a2 s. c om
        Transformer transformer = templates.newTransformer();
        for (String name : parameters.keySet())
            transformer.setParameter(name, parameters.get(name));
        StreamSource xmlsource = new StreamSource(new StringReader(message.toString()));
        Writer writer = new StringWriter();
        StreamResult output = new StreamResult(writer);
        transformer.transform(xmlsource, output);
        writer.flush();
        message.setPayload(writer.toString());
        return message;
    } catch (Exception e) {
        throw new TransformerException(this, e);
    }
}

From source file:nl.nn.adapterframework.util.XmlUtils.java

/**
 * sets all the parameters of the transformer using a Map with parameter values.
 */// w  w  w . ja v a 2 s. c  o m
public static void setTransformerParameters(Transformer t, Map parameters) {
    t.clearParameters();
    if (parameters == null) {
        return;
    }
    for (Iterator it = parameters.keySet().iterator(); it.hasNext();) {
        String name = (String) it.next();
        Object value = parameters.get(name);

        if (value != null) {
            t.setParameter(name, value);
            log.debug("setting parameter [" + name + "] on transformer");
        } else {
            log.info("omitting setting of parameter [" + name + "] on transformer, as it has a null-value");
        }
    }
}

From source file:org.alfresco.repo.template.XSLTProcessor.java

/**
 * @param templateSource/*from  w  w  w. ja v a2  s . c o m*/
 * @param model
 * @param out
 */
private void process(TemplateSource templateSource, Object model, Writer out) {
    if ((model == null) || !XSLTemplateModel.class.isAssignableFrom(model.getClass())) {
        throw new IllegalArgumentException("\"model\" must be an XSLTemplateModel object: " + model);
    }

    XSLTemplateModel xsltModel = (XSLTemplateModel) model;
    System.setProperty("org.apache.xalan.extensions.bsf.BSFManager", BSFManager.class.getName());

    Document xslTemplate;
    try {
        xslTemplate = XMLUtil.parse(templateSource.getReader(defaultEncoding));
    } catch (IOException ex) {
        throw new TemplateException(MSG_UNABLE_TO_READ_TEMPLATE, new Object[] { ex.getMessage() }, ex);
    } catch (SAXException sax) {
        throw new TemplateException(MSG_UNABLE_TO_PARSE_TEMPLATE, new Object[] { sax.getMessage() }, sax);
    } finally {
        try {
            templateSource.close();
        } catch (IOException ex) {
            // There's little to be done here. Log it and carry on
            log.warn("Error while trying to close template stream", ex);
        }
    }

    List<String> scriptIds = addScripts(xsltModel, xslTemplate);
    addParameters(xsltModel, xslTemplate);

    final LinkedList<TransformerException> errors = new LinkedList<TransformerException>();
    final ErrorListener errorListener = new ErrorListener() {
        public void error(final TransformerException te) throws TransformerException {
            log.debug("error " + te.getMessageAndLocation());
            errors.add(te);
        }

        public void fatalError(final TransformerException te) throws TransformerException {
            log.debug("fatalError " + te.getMessageAndLocation());
            throw te;
        }

        public void warning(final TransformerException te) throws TransformerException {
            log.debug("warning " + te.getMessageAndLocation());
            errors.add(te);
        }
    };

    final TemplateSource resourceSource = templateSource;
    final URIResolver uriResolver = new URIResolver() {
        public Source resolve(final String href, String base) throws TransformerException {
            if (log.isDebugEnabled()) {
                log.debug("request to resolve href " + href + " using base " + base);
            }
            InputStream in = null;
            try {
                in = resourceSource.getResource(href);
                if (in == null) {
                    throw new TransformerException("unable to resolve href " + href);
                }

                Document d = XMLUtil.parse(in);
                if (log.isDebugEnabled()) {
                    log.debug("loaded " + XMLUtil.toString(d));
                }
                return new DOMSource(d);
            } catch (TransformerException ex) {
                throw ex;
            } catch (Exception e) {
                throw new TransformerException("unable to load " + href, e);
            }
        }
    };

    Source xmlSource = this.getXMLSource(xsltModel);

    Transformer t = null;
    try {
        final TransformerFactory tf = TransformerFactory.newInstance();
        tf.setErrorListener(errorListener);
        tf.setURIResolver(uriResolver);

        if (log.isDebugEnabled()) {
            log.debug("xslTemplate: \n" + XMLUtil.toString(xslTemplate));
        }

        t = tf.newTransformer(new DOMSource(xslTemplate));

        if (errors.size() != 0) {
            final StringBuilder msg = new StringBuilder("errors encountered creating tranformer ... \n");
            for (TransformerException te : errors) {
                msg.append(te.getMessageAndLocation()).append("\n");
            }
            throw new TemplateException(msg.toString());
        }

        t.setErrorListener(errorListener);
        t.setURIResolver(uriResolver);
        t.setParameter("versionParam", "2.0");
    } catch (TransformerConfigurationException tce) {
        log.error(tce);
        throw new TemplateException(tce.getMessage(), tce);
    }

    try {
        t.transform(xmlSource, new StreamResult(out));
    } catch (TransformerException te) {
        log.error(te.getMessageAndLocation());
        throw new TemplateException(te.getMessageAndLocation(), te);
    } catch (Exception e) {
        log.error("unexpected error " + e);
        throw new TemplateException(e.getMessage(), e);
    } finally {
        //Clear out any scripts that were created for this transform
        if (!scriptIds.isEmpty()) {
            XSLTProcessorMethodInvoker.removeMethods(scriptIds);
        }
    }

    if (errors.size() != 0) {
        final StringBuilder msg = new StringBuilder("errors encountered during transformation ... \n");
        for (TransformerException te : errors) {
            msg.append(te.getMessageAndLocation()).append("\n");
        }
        throw new TemplateException(msg.toString());
    }
}

From source file:org.alfresco.web.forms.XSLTRenderingEngine.java

public void render(final Map<QName, Object> model, final RenderingEngineTemplate ret, final Result result)
        throws IOException, RenderingEngine.RenderingException, SAXException {
    System.setProperty("org.apache.xalan.extensions.bsf.BSFManager", BSFManager.class.getName());
    Document xslTemplate = null;/*  w  w w  .  ja  v a  2  s. com*/
    try {
        xslTemplate = XMLUtil.parse(ret.getInputStream());
    } catch (final SAXException sax) {
        throw new RenderingEngine.RenderingException(sax);
    }
    this.addScripts(model, xslTemplate);
    this.addParameters(model, xslTemplate);

    final LinkedList<TransformerException> errors = new LinkedList<TransformerException>();
    final ErrorListener errorListener = new ErrorListener() {
        public void error(final TransformerException te) throws TransformerException {
            LOGGER.debug("error " + te.getMessageAndLocation());
            errors.add(te);
        }

        public void fatalError(final TransformerException te) throws TransformerException {
            LOGGER.debug("fatalError " + te.getMessageAndLocation());
            throw te;
        }

        public void warning(final TransformerException te) throws TransformerException {
            LOGGER.debug("warning " + te.getMessageAndLocation());
            errors.add(te);
        }
    };

    // create a uri resolver to resolve document() calls to the virtualized
    // web application
    final URIResolver uriResolver = new URIResolver() {
        public Source resolve(final String href, String base) throws TransformerException {
            LOGGER.debug("request to resolve href " + href + " using base " + base);
            final RenderingEngine.TemplateResourceResolver trr = (RenderingEngine.TemplateResourceResolver) model
                    .get(RenderingEngineTemplateImpl.PROP_RESOURCE_RESOLVER);

            InputStream in = null;
            try {
                in = trr.resolve(href);
            } catch (Exception e) {
                throw new TransformerException("unable to load " + href, e);
            }

            if (in == null) {
                throw new TransformerException("unable to resolve href " + href);
            }

            try {
                final Document d = XMLUtil.parse(in);
                if (LOGGER.isDebugEnabled())
                    LOGGER.debug("loaded " + XMLUtil.toString(d));
                return new DOMSource(d);
            } catch (Exception e) {
                throw new TransformerException("unable to load " + href, e);
            }
        }
    };

    Source xmlSource = this.getXMLSource(model);

    Transformer t = null;
    try {
        final TransformerFactory tf = TransformerFactory.newInstance();
        tf.setErrorListener(errorListener);
        tf.setURIResolver(uriResolver);

        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("xslTemplate: \n" + XMLUtil.toString(xslTemplate));
        }

        t = tf.newTransformer(new DOMSource(xslTemplate));

        if (errors.size() != 0) {
            final StringBuilder msg = new StringBuilder("errors encountered creating tranformer ... \n");
            for (TransformerException te : errors) {
                msg.append(te.getMessageAndLocation()).append("\n");
            }
            throw new RenderingEngine.RenderingException(msg.toString());
        }

        t.setErrorListener(errorListener);
        t.setURIResolver(uriResolver);
        t.setParameter("versionParam", "2.0");
    } catch (TransformerConfigurationException tce) {
        LOGGER.error(tce);
        throw new RenderingEngine.RenderingException(tce);
    }

    try {
        t.transform(xmlSource, result);
    } catch (TransformerException te) {
        LOGGER.error(te.getMessageAndLocation());
        throw new RenderingEngine.RenderingException(te);
    } catch (Exception e) {
        LOGGER.error("unexpected error " + e);
        throw new RenderingEngine.RenderingException(e);
    }

    if (errors.size() != 0) {
        final StringBuilder msg = new StringBuilder("errors encountered during transformation ... \n");
        for (TransformerException te : errors) {
            msg.append(te.getMessageAndLocation()).append("\n");
        }
        throw new RenderingEngine.RenderingException(msg.toString());
    }
}

From source file:org.ambraproject.service.xml.XMLServiceImpl.java

/**
 * Get a translet, compiled stylesheet, for the xslTemplate. If the doc is null
 * use the default template. If the doc is not null then get the DTD version.
 * IF the DTD version does not exist use the default template else use the
 * template associated with that version.
 *
 * @param  doc  the dtd version of document
 * @return Translet for the xslTemplate.
 * @throws javax.xml.transform.TransformerException TransformerException.
 *//*from  w  w  w .j a v  a2s .  c  o m*/
private Transformer getTranslet(Document doc) throws TransformerException, URISyntaxException, IOException {
    Transformer transformer;
    // key is "" if the Attribute does not exist
    String key = (doc == null) ? "default" : doc.getDocumentElement().getAttribute("dtd-version").trim();

    if ((!xslTemplateMap.containsKey(key)) || (key.equalsIgnoreCase(""))) {
        transformer = this.translet.newTransformer();
    } else {
        Templates translet;
        String templateName = xslTemplateMap.get(key);

        // set the Templates
        final TransformerFactory tFactory = TransformerFactory.newInstance();
        //Because we have XSL sheets with import statements.  I override the URI resolver
        //here so the factory knows to look inside the jar files for these files
        tFactory.setURIResolver(new XMLServiceURIResolver());

        //TODO: (performace) We should cache the translets when this class is initialized.  We don't need
        //to parse the XSLs for every transform.

        translet = tFactory.newTemplates(getResourceAsStreamSource(templateName));
        transformer = translet.newTransformer();
    }
    transformer.setParameter("pubAppContext", configuration.getString("ambra.platform.appContext", ""));
    return transformer;
}

From source file:org.ambraproject.wombat.service.ArticleTransformServiceImpl.java

private void setCitedArticles(List<Reference> references, XMLReader xmlReader, Transformer transformer)
        throws IOException {
    References refs = new References();
    refs.setReferences(references);//from   w w w  . ja v  a 2  s.co m
    StringWriter sw = new StringWriter();
    try {
        JAXBContext jaxbContext = JAXBContext.newInstance(References.class);
        Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
        jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        jaxbMarshaller.marshal(refs, sw);
    } catch (JAXBException jaxbE) {
        throw new RuntimeException(jaxbE);
    }

    String metadataXml = sw.toString();
    SAXSource saxSourceMeta = new SAXSource(xmlReader, new InputSource(IOUtils.toInputStream(metadataXml)));
    transformer.setParameter("refs", saxSourceMeta);
}

From source file:org.ambraproject.wombat.service.ArticleTransformServiceImpl.java

private void setVersionLink(ArticlePointer articleId, Transformer transformer) {
    final String versionLinkParameter;
    if (articleId.isOriginalRequestVersioned()) {
        final String versionType;
        final int versionNumber;

        OptionalInt revisionNumber = articleId.getRevisionNumber();
        if (revisionNumber.isPresent()) {
            versionType = DoiVersionArgumentResolver.REVISION_PARAMETER;
            versionNumber = revisionNumber.getAsInt();
        } else {//from ww  w.  j a va  2 s  .c  om
            versionType = DoiVersionArgumentResolver.INGESTION_PARAMETER;
            versionNumber = articleId.getIngestionNumber();
        }

        // Pre-build a snippet of a URL, meant to be concatenated onto a link in an HTML attribute.
        // Assumes that it will always be preceded by at least one other parameter,
        // else we would need a question mark instead of an ampersand.
        // TODO: Build the URL syntax in XSLT instead
        versionLinkParameter = "&" + versionType + "=" + versionNumber;
    } else {
        versionLinkParameter = "";
    }
    transformer.setParameter("versionLinkParameter", versionLinkParameter);
}

From source file:org.apache.camel.processor.cache.CacheBasedXPathReplacer.java

public void process(Exchange exchange) throws Exception {
    // Cache the buffer to the specified Cache against the specified key
    cacheManager = new CacheManagerFactory().instantiateCacheManager();

    if (isValid(cacheManager, cacheName, key)) {
        cache = cacheManager.getCache(cacheName);

        if (LOG.isDebugEnabled()) {
            LOG.debug("Replacing XPath value " + xpath + "in Message with value stored against key " + key
                    + " in CacheName " + cacheName);
        }//  ww  w .  ja v a 2s.  c  o  m
        exchange.getIn().setHeader("CACHE_KEY", key);
        Object body = exchange.getIn().getBody();
        InputStream is = exchange.getContext().getTypeConverter().convertTo(InputStream.class, body);
        try {
            document = exchange.getContext().getTypeConverter().convertTo(Document.class, exchange, is);
        } finally {
            IOHelper.close(is, "is", LOG);
        }

        InputStream cis = exchange.getContext().getTypeConverter().convertTo(InputStream.class,
                cache.get(key).getObjectValue());

        try {
            Document cacheValueDocument = exchange.getContext().getTypeConverter().convertTo(Document.class,
                    exchange, cis);

            // Create/setup the Transformer
            XmlConverter xmlConverter = new XmlConverter();
            String xslString = IOConverter.toString(new File("./src/main/resources/xpathreplacer.xsl"),
                    exchange);
            xslString = xslString.replace("##match_token##", xpath);
            Source xslSource = xmlConverter.toStreamSource(new StringReader(xslString));
            TransformerFactory transformerFactory = xmlConverter.createTransformerFactory();
            Transformer transformer = transformerFactory.newTransformer(xslSource);
            source = xmlConverter.toDOMSource(document);
            result = new DOMResult();

            transformer.setParameter("cacheValue", cacheValueDocument);
            transformer.transform(source, result);
        } finally {
            IOHelper.close(cis, "cis", LOG);
        }
    }

    // DOMSource can be converted to byte[] by camel type converter mechanism
    DOMSource dom = new DOMSource(result.getNode());
    exchange.getIn().setBody(dom, byte[].class);
}