bz-64952 junitlauncher - properly report JUnit4 Parametrized test, in the XML report

Closes #125 pull request at github/apache/ant repo
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 9d06fb7..69fc46b 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -158,6 +158,7 @@
 Gilles Scokart
 Glenn McAllister
 Glenn Twiggs
+Gösen
 Greg Nelson
 Greg Roodt
 Greg Schueler
diff --git a/WHATSNEW b/WHATSNEW
index bf2406a..9473c71 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -19,6 +19,10 @@
    and system-out
    Bugzilla Report 63436
 
+ * Fixes a bug in junitlauncher task's legacy-xml formatter, where the testcase
+   representing a @Parameterized JUnit4 test wasn't being reported in the XML.
+   Bugzilla Report 64952
+
 Other changes:
 --------------
 
diff --git a/contributors.xml b/contributors.xml
index a2969b5..bd46c45 100644
--- a/contributors.xml
+++ b/contributors.xml
@@ -665,6 +665,10 @@
     <last>Twiggs</last>
   </name>
   <name>
+    <first>Gösen</first>
+    <last></last>
+  </name>
+  <name>
     <first>Greg</first>
     <last>Nelson</last>
   </name>
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/LegacyXmlResultFormatter.java b/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/LegacyXmlResultFormatter.java
index 35df278..d86c35b 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/LegacyXmlResultFormatter.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/LegacyXmlResultFormatter.java
@@ -407,9 +407,14 @@
 
         private Optional<ClassSource> findFirstParentClassSource(final TestIdentifier testId) {
             final Optional<TestIdentifier> parent = testPlan.getParent(testId);
-            if (!parent.isPresent() || !parent.get().getSource().isPresent()) {
+            if (!parent.isPresent()) {
                 return Optional.empty();
             }
+            if (!parent.get().getSource().isPresent()) {
+                // the source of the parent is unknown, so we move up the
+                // hierarchy and try and find a class source
+                return findFirstParentClassSource(parent.get());
+            }
             final TestSource parentSource = parent.get().getSource().get();
             return parentSource instanceof ClassSource ? Optional.of((ClassSource) parentSource)
                     : findFirstParentClassSource(parent.get());