Mercurial > hg > mercurial
changeset 344:ec375e18374f Eluru-6.5.x
TW-19658: workaround a bug in hg log xml output
In mercurial 1.4.2 xml output of the log command wasn't closed with
appropriate tag. Add this tag if xml output doesn't contain it
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Tue, 10 Jan 2012 12:49:29 +0400 |
parents | 7700af586e11 |
children | 607091bd8ccd e8f0eb6d4ca4 |
files | mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommand.java |
diffstat | 1 files changed, 15 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommand.java Mon Dec 12 11:44:01 2011 +0300 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommand.java Tue Jan 10 12:49:29 2012 +0400 @@ -92,11 +92,25 @@ private List<ChangeSet> parseChangeSetsXml(@NotNull final String xml) throws JDOMException, IOException, ParseException { if ("".equals(xml)) return Collections.emptyList(); - Document doc = JDOMUtil.loadDocument(xml); + Document doc = loadDocument(xml); Element log = doc.getRootElement(); return parseLog(log); } + private Document loadDocument(@NotNull final String xml) throws IOException, JDOMException { + String validXml = makeValidXml(xml); + return JDOMUtil.loadDocument(validXml); + } + + + private String makeValidXml(@NotNull final String xml) { + String trimmed = xml.trim(); + if (xml.trim().endsWith("</log>")) + return xml; + else + return trimmed + "</log>"; + } + private List<ChangeSet> parseLog(@NotNull final Element logElement) throws ParseException { List<ChangeSet> result = new ArrayList<ChangeSet>();