1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.owasp.dependencycheck.xml.pom;
19
20 import java.io.File;
21 import java.io.FileInputStream;
22 import java.io.FileNotFoundException;
23 import java.io.IOException;
24 import java.io.InputStream;
25 import java.io.InputStreamReader;
26 import java.io.Reader;
27 import javax.xml.parsers.ParserConfigurationException;
28 import javax.xml.parsers.SAXParser;
29 import javax.xml.parsers.SAXParserFactory;
30
31 import org.slf4j.Logger;
32 import org.slf4j.LoggerFactory;
33 import org.xml.sax.InputSource;
34 import org.xml.sax.SAXException;
35 import org.xml.sax.XMLReader;
36
37
38
39
40
41
42 public class PomParser {
43
44
45
46
47 private static final Logger LOGGER = LoggerFactory.getLogger(PomParser.class);
48
49
50
51
52
53
54
55
56 public Model parse(File file) throws PomParseException {
57 FileInputStream fis = null;
58 try {
59 fis = new FileInputStream(file);
60 return parse(fis);
61 } catch (IOException ex) {
62 LOGGER.debug("", ex);
63 throw new PomParseException(ex);
64 } finally {
65 if (fis != null) {
66 try {
67 fis.close();
68 } catch (IOException ex) {
69 LOGGER.debug("Unable to close stream", ex);
70 }
71 }
72 }
73 }
74
75
76
77
78
79
80
81
82 public Model parse(InputStream inputStream) throws PomParseException {
83 try {
84 final PomHandler handler = new PomHandler();
85 final SAXParserFactory factory = SAXParserFactory.newInstance();
86
87
88 final SAXParser saxParser = factory.newSAXParser();
89 final XMLReader xmlReader = saxParser.getXMLReader();
90 xmlReader.setContentHandler(handler);
91
92 final Reader reader = new InputStreamReader(inputStream, "UTF-8");
93 final InputSource in = new InputSource(reader);
94
95
96 xmlReader.parse(in);
97
98 return handler.getModel();
99 } catch (ParserConfigurationException ex) {
100 LOGGER.debug("", ex);
101 throw new PomParseException(ex);
102 } catch (SAXException ex) {
103 LOGGER.debug("", ex);
104 throw new PomParseException(ex);
105 } catch (FileNotFoundException ex) {
106 LOGGER.debug("", ex);
107 throw new PomParseException(ex);
108 } catch (IOException ex) {
109 LOGGER.debug("", ex);
110 throw new PomParseException(ex);
111 }
112 }
113 }