try {
reader = inputFactory.createXMLEventReader(item);
} catch (XMLStreamException e) {
throw new IOException("Cannot create XML event reader.", e);
}
TestSuiteDescriptor testSuiteDescriptor = null;
TestCaseDescriptor testCaseDescriptor = null;
while (reader.hasNext()) {
XMLEvent event = (XMLEvent) reader.next();
if (event.isStartElement()) {
StartElement element = event.asStartElement();
String elementName = element.getName().getLocalPart();
@SuppressWarnings("unchecked")
Iterator<Attribute> attributes = element.getAttributes();
switch (elementName) {
case "testsuite":
testSuiteDescriptor = getStore().create(TestSuiteDescriptor.class);
while (attributes.hasNext()) {
Attribute attribute = attributes.next();
String attributeName = attribute.getName().getLocalPart();
String value = attribute.getValue();
switch (attributeName) {
case "name":
testSuiteDescriptor.setName(value);
break;
case "time":
testSuiteDescriptor.setTime(parseTime(value));
break;
case "tests":
testSuiteDescriptor.setTests(Integer.parseInt(value));
break;
case "failures":
testSuiteDescriptor.setFailures(Integer.parseInt(value));
break;
case "errors":
testSuiteDescriptor.setErrors(Integer.parseInt(value));
break;
case "skipped":
testSuiteDescriptor.setSkipped(Integer.parseInt(value));
break;
}
}
break;
case "testcase":
testCaseDescriptor = getStore().create(TestCaseDescriptor.class);
testCaseDescriptor.setResult(TestCaseDescriptor.Result.SUCCESS);
testSuiteDescriptor.getTestCases().add(testCaseDescriptor);
while (attributes.hasNext()) {
Attribute attribute = (Attribute) attributes.next();
String attributeName = attribute.getName().getLocalPart();
String value = attribute.getValue();
switch (attributeName) {
case "name":
testCaseDescriptor.setName(value);
break;
case "time":
testCaseDescriptor.setTime(parseTime(value));
break;
case "classname":
testCaseDescriptor.setClassName(value);
break;
}
}
break;
case "failure":
testCaseDescriptor.setResult(TestCaseDescriptor.Result.FAILURE);
break;
case "error":
testCaseDescriptor.setResult(TestCaseDescriptor.Result.ERROR);
break;
case "skipped":
testCaseDescriptor.setResult(TestCaseDescriptor.Result.SKIPPED);
break;
}
}
}
testSuiteDescriptor.setFileName(path);
return asList(testSuiteDescriptor);
}