diff --git a/dependency-check-core/src/main/java/org/owasp/dependencycheck/xml/hints/HintParser.java b/dependency-check-core/src/main/java/org/owasp/dependencycheck/xml/hints/HintParser.java index 0c523d74a..58966d0f8 100644 --- a/dependency-check-core/src/main/java/org/owasp/dependencycheck/xml/hints/HintParser.java +++ b/dependency-check-core/src/main/java/org/owasp/dependencycheck/xml/hints/HintParser.java @@ -79,38 +79,19 @@ public class HintParser { * @throws HintParseException thrown if the XML file cannot be parsed */ public Hints parseHints(File file) throws HintParseException { - FileInputStream fis = null; + //TODO there must be a better way to determine which schema to use for validation. try { - fis = new FileInputStream(file); - return parseHints(fis); - } catch (IOException ex) { - LOGGER.debug("", ex); - throw new HintParseException(ex); - } catch (SAXException ex) { - try { - if (fis != null) { - try { - fis.close(); - } catch (IOException ex1) { - LOGGER.debug("Unable to close stream", ex1); - } - } - fis = new FileInputStream(file); - } catch (FileNotFoundException ex1) { - throw new HintParseException(ex1); - } - try { - return parseHints(fis, HINT_SCHEMA_OLD); - } catch (SAXException ex1) { + try (FileInputStream fis = new FileInputStream(file)) { + return parseHints(fis); + } catch (IOException ex) { + LOGGER.debug("", ex); throw new HintParseException(ex); } - } finally { - if (fis != null) { - try { - fis.close(); - } catch (IOException ex) { - LOGGER.debug("Unable to close stream", ex); - } + } catch (SAXException ex) { + try (FileInputStream fis = new FileInputStream(file)) { + return parseHints(fis, HINT_SCHEMA_OLD); + } catch (SAXException | IOException ex1) { + throw new HintParseException(ex); } } } @@ -139,23 +120,20 @@ public class HintParser { * @throws SAXException thrown if the XML cannot be parsed */ private Hints parseHints(InputStream inputStream, String schema) throws HintParseException, SAXException { - InputStream schemaStream = null; - try { - schemaStream = this.getClass().getClassLoader().getResourceAsStream(schema); + try (InputStream schemaStream = this.getClass().getClassLoader().getResourceAsStream(schema)) { final HintHandler handler = new HintHandler(); final SAXParser saxParser = XmlUtils.buildSecureSaxParser(schemaStream); final XMLReader xmlReader = saxParser.getXMLReader(); xmlReader.setErrorHandler(new HintErrorHandler()); xmlReader.setContentHandler(handler); - - final Reader reader = new InputStreamReader(inputStream, "UTF-8"); - final InputSource in = new InputSource(reader); - - xmlReader.parse(in); - final Hints hints = new Hints(); - hints.setHintRules(handler.getHintRules()); - hints.setVendorDuplicatingHintRules(handler.getVendorDuplicatingHintRules()); - return hints; + try (Reader reader = new InputStreamReader(inputStream, "UTF-8")) { + final InputSource in = new InputSource(reader); + xmlReader.parse(in); + final Hints hints = new Hints(); + hints.setHintRules(handler.getHintRules()); + hints.setVendorDuplicatingHintRules(handler.getVendorDuplicatingHintRules()); + return hints; + } } catch (ParserConfigurationException | FileNotFoundException ex) { LOGGER.debug("", ex); throw new HintParseException(ex); @@ -169,14 +147,6 @@ public class HintParser { } catch (IOException ex) { LOGGER.debug("", ex); throw new HintParseException(ex); - } finally { - if (schemaStream != null) { - try { - schemaStream.close(); - } catch (IOException ex) { - LOGGER.debug("Error closing hint file stream", ex); - } - } } } } diff --git a/dependency-check-core/src/main/java/org/owasp/dependencycheck/xml/suppression/SuppressionParser.java b/dependency-check-core/src/main/java/org/owasp/dependencycheck/xml/suppression/SuppressionParser.java index 5a155618d..4ee98c82a 100644 --- a/dependency-check-core/src/main/java/org/owasp/dependencycheck/xml/suppression/SuppressionParser.java +++ b/dependency-check-core/src/main/java/org/owasp/dependencycheck/xml/suppression/SuppressionParser.java @@ -64,39 +64,19 @@ public class SuppressionParser { * @throws SuppressionParseException thrown if the XML file cannot be parsed */ public List parseSuppressionRules(File file) throws SuppressionParseException { - FileInputStream fis = null; try { - fis = new FileInputStream(file); - return parseSuppressionRules(fis); - } catch (IOException ex) { - LOGGER.debug("", ex); - throw new SuppressionParseException(ex); + try (FileInputStream fis = new FileInputStream(file)) { + return parseSuppressionRules(fis); + } catch (IOException ex) { + LOGGER.debug("", ex); + throw new SuppressionParseException(ex); + } } catch (SAXException ex) { - try { - if (fis != null) { - try { - fis.close(); - } catch (IOException ex1) { - LOGGER.debug("Unable to close stream", ex1); - } - } - fis = new FileInputStream(file); - } catch (FileNotFoundException ex1) { - throw new SuppressionParseException(ex); - } - try { + try (FileInputStream fis = new FileInputStream(file)) { return parseSuppressionRules(fis, OLD_SUPPRESSION_SCHEMA); - } catch (SAXException ex1) { + } catch (SAXException | IOException ex1) { throw new SuppressionParseException(ex); } - } finally { - if (fis != null) { - try { - fis.close(); - } catch (IOException ex) { - LOGGER.debug("Unable to close stream", ex); - } - } } } @@ -124,18 +104,17 @@ public class SuppressionParser { * @throws SAXException thrown if the XML cannot be parsed */ private List parseSuppressionRules(InputStream inputStream, String schema) throws SuppressionParseException, SAXException { - InputStream schemaStream = null; - try { - schemaStream = this.getClass().getClassLoader().getResourceAsStream(schema); + try (InputStream schemaStream = this.getClass().getClassLoader().getResourceAsStream(schema)) { final SuppressionHandler handler = new SuppressionHandler(); final SAXParser saxParser = XmlUtils.buildSecureSaxParser(schemaStream); final XMLReader xmlReader = saxParser.getXMLReader(); xmlReader.setErrorHandler(new SuppressionErrorHandler()); xmlReader.setContentHandler(handler); - final Reader reader = new InputStreamReader(inputStream, "UTF-8"); - final InputSource in = new InputSource(reader); - xmlReader.parse(in); - return handler.getSuppressionRules(); + try (Reader reader = new InputStreamReader(inputStream, "UTF-8")) { + final InputSource in = new InputSource(reader); + xmlReader.parse(in); + return handler.getSuppressionRules(); + } } catch (ParserConfigurationException | FileNotFoundException ex) { LOGGER.debug("", ex); throw new SuppressionParseException(ex); @@ -149,14 +128,6 @@ public class SuppressionParser { } catch (IOException ex) { LOGGER.debug("", ex); throw new SuppressionParseException(ex); - } finally { - if (schemaStream != null) { - try { - schemaStream.close(); - } catch (IOException ex) { - LOGGER.debug("Error closing suppression file stream", ex); - } - } } } }