1 package org.apache.maven.jcoveragereport;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 import java.io.Reader;
21
22 import org.xmlpull.v1.XmlPullParser;
23 import org.xmlpull.v1.XmlPullParserFactory;
24
25 /**
26 * @author Emmanuel Venisse
27 * @version $Id: CoverageUnmarshaller.java 170200 2005-05-15 06:24:19Z brett $
28 */
29 public class CoverageUnmarshaller
30 {
31 public Coverage parse(Reader reader) throws Exception
32 {
33 Coverage coverage = new Coverage();
34
35 XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
36 XmlPullParser parser = factory.newPullParser();
37 parser.setInput(reader);
38
39 int eventType = parser.getEventType();
40
41 while (eventType != XmlPullParser.END_DOCUMENT)
42 {
43 if (eventType == XmlPullParser.START_TAG)
44 {
45 if (parser.getName().equals("coverage"))
46 {
47 coverage.setSrcDirectory(parser.getAttributeValue("", "src"));
48 }
49 if (parser.getName().equals("class"))
50 {
51 Clazz theClass = new Clazz(parser.getAttributeValue("", "name"));
52 while (parser.nextTag() == XmlPullParser.START_TAG)
53 {
54 if (parser.getName().equals("file"))
55 {
56 String fileName = parser.getAttributeValue("", "name");
57 theClass.setFile(fileName);
58 }
59 else if (parser.getName().equals("line")
60 && parser.getAttributeCount() == 1)
61 {
62 theClass.setLineRate(
63 parser.getAttributeValue("", "rate"));
64 }
65 else if (parser.getName().equals("line")
66 && parser.getAttributeCount() == 2)
67 {
68 Line line = new Line();
69 line.setNumLine(
70 Integer.valueOf(
71 parser.getAttributeValue("", "number")
72 ).intValue());
73 line.setNbHits(
74 Integer.valueOf(
75 parser.getAttributeValue("", "hits")
76 ).intValue());
77 theClass.addLine(line);
78 }
79 else if (parser.getName().equals("branch"))
80 {
81 theClass.setBranchRate(
82 parser.getAttributeValue("", "rate"));
83 }
84 if (parser.getName().equals("methods"))
85 {
86 while (parser.nextTag() == XmlPullParser.START_TAG)
87 {
88 if (parser.getName().equals("method"))
89 {
90 while (parser.nextTag() == XmlPullParser.START_TAG)
91 {
92 if (parser.getName().equals("line"))
93 {
94
95 }
96 else if (parser.getName().equals("branch"))
97 {
98
99 }
100 parser.next();
101 }
102 }
103 parser.next();
104 }
105 }
106 else
107 {
108 parser.next();
109 }
110 }
111 coverage.addClass(theClass);
112 }
113 }
114
115 eventType = parser.next();
116 }
117
118 return coverage;
119 }
120 }