1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.owasp.dependencycheck.xml.assembly;
19
20 import javax.annotation.concurrent.NotThreadSafe;
21 import org.xml.sax.Attributes;
22 import org.xml.sax.SAXException;
23 import org.xml.sax.helpers.DefaultHandler;
24
25
26
27
28
29
30 @NotThreadSafe
31 public class GrokHandler extends DefaultHandler {
32
33
34
35
36 private static final String ERROR = "error";
37
38
39
40 private static final String WARNING = "warning";
41
42
43
44 private static final String COMPANY_NAME = "companyName";
45
46
47
48 private static final String PRODUCT_NAME = "productName";
49
50
51
52 private static final String PRODUCT_VERSION = "productVersion";
53
54
55
56 private static final String COMMENTS = "comments";
57
58
59
60 private static final String FILE_DESCRIPTION = "fileDescription";
61
62
63
64 private static final String FILE_NAME = "fileName";
65
66
67
68 private static final String FILE_VERSION = "fileVersion";
69
70
71
72 private static final String INTERNAL_NAME = "internalName";
73
74
75
76 private static final String ORIGINAL_FILE_NAME = "originalFilename";
77
78
79
80 private static final String FULLNAME = "fullName";
81
82
83
84 private static final String NAMESPACE = "namespace";
85
86
87
88
89 private final AssemblyData data = new AssemblyData();
90
91
92
93 private StringBuilder currentText;
94
95
96
97
98
99
100
101
102
103
104 @Override
105 public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
106 currentText = new StringBuilder();
107 }
108
109
110
111
112
113
114
115
116
117 @Override
118 public void endElement(String uri, String localName, String qName) throws SAXException {
119 if (null != qName) {
120 switch (qName) {
121 case COMPANY_NAME:
122 data.setCompanyName(currentText.toString());
123 break;
124 case PRODUCT_NAME:
125 data.setProductName(currentText.toString());
126 break;
127 case PRODUCT_VERSION:
128 data.setProductVersion(currentText.toString());
129 break;
130 case COMMENTS:
131 data.setComments(currentText.toString());
132 break;
133 case FILE_DESCRIPTION:
134 data.setFileDescription(currentText.toString());
135 break;
136 case FILE_NAME:
137 data.setFileName(currentText.toString());
138 break;
139 case FILE_VERSION:
140 data.setFileVersion(currentText.toString());
141 break;
142 case INTERNAL_NAME:
143 data.setInternalName(currentText.toString());
144 break;
145 case ORIGINAL_FILE_NAME:
146 data.setOriginalFilename(currentText.toString());
147 break;
148 case FULLNAME:
149 data.setFullName(currentText.toString());
150 break;
151 case NAMESPACE:
152 data.addNamespace(currentText.toString());
153 break;
154 case ERROR:
155 data.setError(currentText.toString());
156 break;
157 case WARNING:
158 data.setWarning(currentText.toString());
159 break;
160 default:
161 break;
162 }
163 }
164 }
165
166
167
168
169
170
171
172
173
174 @Override
175 public void characters(char[] ch, int start, int length) throws SAXException {
176 currentText.append(ch, start, length);
177 }
178
179 AssemblyData getAssemblyData() {
180 return data;
181 }
182 }