Example usage for javax.xml.transform TransformerException getMessageAndLocation

List of usage examples for javax.xml.transform TransformerException getMessageAndLocation

Introduction

In this page you can find the example usage for javax.xml.transform TransformerException getMessageAndLocation.

Prototype

public String getMessageAndLocation() 

Source Link

Document

Get the error message with location information appended.

Usage

From source file:Main.java

public static String transform(String xmlString, String stylesheetPathname) throws Exception {
    try {/*from  w w  w.j  a v a2s .  co m*/
        TransformerFactory factory = TransformerFactory.newInstance();
        Source stylesheetSource = new StreamSource(new File(stylesheetPathname).getAbsoluteFile());
        Transformer transformer = factory.newTransformer(stylesheetSource);
        Source inputSource = new StreamSource(new StringReader(xmlString));
        Writer outputWriter = new StringWriter();
        Result outputResult = new StreamResult(outputWriter);
        transformer.transform(inputSource, outputResult);
        return outputWriter.toString();
    } catch (TransformerConfigurationException tce) {
        throw new Exception(tce.getMessageAndLocation());
    } catch (TransformerException te) {
        throw new Exception(te.getMessageAndLocation());
    }
}

From source file:Main.java

public static String transform(String xmlString, String stylesheetPathname) throws TransformerException {
    try {// w ww .  j  a  v  a2 s  .c o  m
        TransformerFactory factory = TransformerFactory.newInstance();
        Source stylesheetSource = new StreamSource(new File(stylesheetPathname).getAbsoluteFile());
        Transformer transformer = factory.newTransformer(stylesheetSource);
        Source inputSource = new StreamSource(new StringReader(xmlString));
        Writer outputWriter = new StringWriter();
        Result outputResult = new StreamResult(outputWriter);
        transformer.transform(inputSource, outputResult);
        return outputWriter.toString();
    } catch (TransformerConfigurationException tce) {
        throw new TransformerException(tce.getMessageAndLocation());
    } catch (TransformerException te) {
        throw new TransformerException(te.getMessageAndLocation());
    }
}

From source file:Main.java

public static String XMLtoString(Document doc) throws Exception {
    try {//  w w w. ja  v a 2s.  co m
        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer transformer;
        transformer = tf.newTransformer();
        // below code to remove XML declaration
        // transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        StringWriter writer = new StringWriter();
        transformer.transform(new DOMSource(doc), new StreamResult(writer));
        return writer.getBuffer().toString();
    } catch (TransformerException te) {
        throw new Exception(te.getMessageAndLocation());
    }
}

From source file:Main.java

/**
 * Uses a TransformerFactory with an identity transformation to convert a
 * Document into a String representation of the XML.
 *
 * @param document Document./*from w w  w.  ja va 2  s.c o m*/
 * @return An XML String.
 * @throws IOException if an error occurs during transformation.
 */
public static String documentToString(Document document) throws IOException {
    String xml = null;

    try {
        DOMSource dom = new DOMSource(document);
        StringWriter writer = new StringWriter();
        StreamResult output = new StreamResult(writer);

        // Use Transformer to serialize a DOM
        TransformerFactory factory = TransformerFactory.newInstance();
        Transformer transformer = factory.newTransformer();

        // No need for pretty printing
        transformer.setOutputProperty(OutputKeys.INDENT, INDENT_XML);

        // XML Declarations unexpected whitespace for legacy AS XMLDocument type,
        // so we always omit it. We can't tell whether one was present when
        // constructing the Document in the first place anyway...
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, OMIT_XML_DECLARATION);

        transformer.transform(dom, output);

        xml = writer.toString();
    } catch (TransformerException te) {
        throw new IOException("Error serializing Document as String: " + te.getMessageAndLocation());
    }
    return xml;
}

From source file:eionet.gdem.conversion.converters.TransformerErrorListener.java

public static String formatTransformerException(int errType, TransformerException te) {
    String[] errorTypes = { "WARNING", "ERROR", "FATAL ERROR" };
    String msg = te.getMessageAndLocation();
    String msgout = "The XSLT processor reported the following " + errorTypes[errType] + ":\n" + msg;
    return msgout;
}

From source file:com.portfolio.data.utils.DomUtils.java

public static void processXSLT(Source xml, String xsltName, Result result, StringBuffer outTrace, boolean trace)
        throws Exception {
    //  =======================================
    outTrace.append("<br>processXSLT... " + xsltName);
    TransformerFactory tFactory = TransformerFactory.newInstance();
    StreamSource stylesource = new StreamSource(xsltName);
    Transformer transformer = tFactory.newTransformer(stylesource);

    try {/* w  w w  . ja  v a  2  s.  c o m*/
        transformer.transform(xml, result);
    } catch (TransformerConfigurationException tce) {
        throw new TransformerException(tce.getMessageAndLocation());
    } catch (TransformerException te) {
        throw new TransformerException(te.getMessageAndLocation());
    }
    if (trace)
        outTrace.append(" ... ok");
}

From source file:cz.cas.lib.proarc.common.export.cejsh.CejshBuilder.java

/**
 * Transforms a collection of articles to the bwmeta document.
 * @param src modsCollection in MODS format
 * @param dst bwmeta document/*ww  w . ja  va 2s  .  co  m*/
 * @return the error handler
 */
TransformErrorListener createCejshXml(Source src, Result dst) {
    bwmetaXsl.reset();
    String packageIssn = getPackageIssn();
    bwmetaXsl.setParameter("issn", packageIssn);
    if (getVolume() != null) {
        bwmetaXsl.setParameter("volume", getVolume().getVolumeNumber());
        bwmetaXsl.setParameter("volumeId", getVolume().getVolumeId());
        bwmetaXsl.setParameter("year", getVolume().getYear());
    }
    if (getIssue() != null) {
        bwmetaXsl.setParameter("issue", getIssue().getIssueNumber());
        bwmetaXsl.setParameter("issueId", getIssue().getIssueId());
    }
    try {
        tranformationErrorHandler.reset();
        bwmetaXsl.transform(src, dst);
    } catch (TransformerException ex) {
        if (tranformationErrorHandler.getErrors().isEmpty()) {
            tranformationErrorHandler.getErrors().add(ex.getMessageAndLocation());
        }
    }
    return tranformationErrorHandler;
}

From source file:org.ambraproject.article.service.XslIngestArchiveProcessor.java

/**
 * Run the zip file through the xsl stylesheet
 *
 * @param zip          the zip archive containing the items to ingest
 * @param zipInfo      the document describing the zip archive (adheres to zip.dtd)
 * @param articleXml      the stylesheet to run on <var>zipInfo</var>; this is the main script
 * @param doiUrlPrefix DOI URL prefix/*  w ww.j  av  a  2s  . c om*/
 * @return a document describing the fedora objects to create (must adhere to fedora.dtd)
 * @throws javax.xml.transform.TransformerException
 *          if an error occurs during the processing
 */
private Document transformZip(ZipFile zip, String zipInfo, Document articleXml, String doiUrlPrefix)
        throws TransformerException, URISyntaxException {
    Transformer t = getTranslet(articleXml);
    t.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
    t.setURIResolver(new ZipURIResolver(zip));

    // override the doi url prefix if one is specified in the config
    if (doiUrlPrefix != null)
        t.setParameter("doi-url-prefix", doiUrlPrefix);

    /*
     * Note: it would be preferable (and correct according to latest JAXP specs) to use
     * t.setErrorListener(), but Saxon does not forward <xls:message>'s to the error listener.
     * Hence we need to use Saxon's API's in order to get at those messages.
     */
    final StringWriter msgs = new StringWriter();
    MessageWarner em = new MessageWarner();
    ((Controller) t).setMessageEmitter(em);
    t.setErrorListener(new ErrorListener() {
        public void warning(TransformerException te) {
            log.warn("Warning received while processing zip", te);
        }

        public void error(TransformerException te) {
            log.warn("Error received while processing zip", te);
            msgs.write(te.getMessageAndLocation() + '\n');
        }

        public void fatalError(TransformerException te) {
            log.warn("Fatal error received while processing zip", te);
            msgs.write(te.getMessageAndLocation() + '\n');
        }
    });

    Source inp = new StreamSource(new StringReader(zipInfo), "zip:/");
    DOMResult res = new DOMResult();

    try {
        t.transform(inp, res);
    } catch (TransformerException te) {
        if (msgs.getBuffer().length() > 0) {
            log.error(msgs.getBuffer().toString());
            throw new TransformerException(msgs.toString(), te);
        } else
            throw te;
    }
    if (msgs.getBuffer().length() > 0)
        throw new TransformerException(msgs.toString());
    return (Document) res.getNode();
}

From source file:lux.solr.XQueryComponent.java

private String formatError(String query, List<TransformerException> errors, QueryStats queryStats) {
    StringBuilder buf = new StringBuilder();
    if (queryStats != null && queryStats.optimizedQuery != null) {
        query = queryStats.optimizedQuery;
    }/*  ww w  . jav  a  2 s  .c o m*/
    for (TransformerException te : errors) {
        if (te instanceof XPathException) {
            String additionalLocationText = ((XPathException) te).getAdditionalLocationText();
            if (additionalLocationText != null) {
                buf.append(additionalLocationText);
            }
        }
        buf.append(te.getMessageAndLocation());
        buf.append("\n");
        if (te.getLocator() != null) {
            int lineNumber = te.getLocator().getLineNumber();
            int column = te.getLocator().getColumnNumber();
            String[] lines = query.split("\r?\n");
            if (lineNumber <= lines.length && lineNumber > 0) {
                String line = lines[lineNumber - 1];
                buf.append(line, Math.min(Math.max(0, column - 100), line.length()),
                        Math.min(line.length(), column + 100));
            }
        }
        logger.error("XQuery exception", te);
    }
    return buf.toString();
}

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

/**
 * @param templateSource//from   w w  w.jav  a 2  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());
    }
}