|
6 | 6 | import re |
7 | 7 | from xml.etree.ElementTree import Element # nosec |
8 | 8 |
|
9 | | -import defusedxml.ElementTree |
10 | | -from defusedxml.ElementTree import fromstring |
11 | 9 | from packageurl import PackageURL |
12 | 10 |
|
13 | 11 | from macaron.config.defaults import defaults |
| 12 | +from macaron.parsers.pomparser import parse_pom_string |
14 | 13 | from macaron.repo_finder.repo_finder_base import BaseRepoFinder |
15 | 14 | from macaron.repo_finder.repo_validator import find_valid_repository_url |
16 | 15 | from macaron.util import send_get_http_raw |
@@ -168,34 +167,14 @@ def _read_pom(self, pom: str) -> list[str]: |
168 | 167 | return [] |
169 | 168 |
|
170 | 169 | # Parse POM using defusedxml |
171 | | - pom_element = self._parse_pom(pom) |
| 170 | + pom_element = parse_pom_string(pom) |
172 | 171 | if pom_element is None: |
173 | 172 | return [] |
| 173 | + self.pom_element = pom_element |
174 | 174 |
|
175 | 175 | # Attempt to extract SCM data and return URL |
176 | 176 | return self._find_scm(pom_element, tags) |
177 | 177 |
|
178 | | - def _parse_pom(self, pom: str) -> Element | None: |
179 | | - """ |
180 | | - Parse the passed POM using defusedxml. |
181 | | -
|
182 | | - Parameters |
183 | | - ---------- |
184 | | - pom : str |
185 | | - The contents of a POM file as a string. |
186 | | -
|
187 | | - Returns |
188 | | - ------- |
189 | | - Element | None : |
190 | | - The parsed element representing the POM's XML hierarchy. |
191 | | - """ |
192 | | - try: |
193 | | - self.pom_element = fromstring(pom) |
194 | | - return self.pom_element |
195 | | - except defusedxml.ElementTree.ParseError as error: |
196 | | - logger.debug("Failed to parse XML: %s", error) |
197 | | - return None |
198 | | - |
199 | 178 | def _find_scm(self, pom: Element, tags: list[str], resolve_properties: bool = True) -> list[str]: |
200 | 179 | """ |
201 | 180 | Parse the passed pom and extract the passed tags. |
|
0 commit comments