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>();