From 64581dad7e5069b01e4673d94a33cbf3433fb9ba Mon Sep 17 00:00:00 2001 From: Jaxsun McCarthy Huggan Date: Wed, 29 Jun 2016 14:25:19 -0700 Subject: 497040: fix overzealous recording of task list xml orphans Fixes an issue where all task list elements after the first encountered orphans would be recorded as orphans. This lead to duplication of task list elements on read/write round trips. Change-Id: I7176eb4fda0ede6459ec1d7cf2dd0c78adec1c98 Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=497040 --- .../internal/tasks/core/externalization/SaxOrphanBuilder.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks') diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/externalization/SaxOrphanBuilder.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/externalization/SaxOrphanBuilder.java index 5a9228f31..13dac579d 100644 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/externalization/SaxOrphanBuilder.java +++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/externalization/SaxOrphanBuilder.java @@ -33,8 +33,11 @@ public class SaxOrphanBuilder { private StringBuilder currentStringContent; + private final Element orphansElement; + public SaxOrphanBuilder() throws CoreException { this.document = createDocument(); + this.orphansElement = document.getDocumentElement(); } private Document createDocument() throws CoreException { @@ -79,11 +82,13 @@ public class SaxOrphanBuilder { if (currentElement != null) { appendTextNode(); Node parentNode = currentElement.getParentNode(); - if (parentNode instanceof Element) { + // do not set the current element to be the orphans element or all tasks will end up as orphans + if (parentNode instanceof Element && parentNode != orphansElement) { currentElement = (Element) parentNode; currentStringContent = new StringBuilder(); } else { currentElement = null; + currentStringContent = null; } } } -- cgit v1.2.3