From b7375b2488df93ba9df57ad13ec628bbff663819 Mon Sep 17 00:00:00 2001 From: vempo Date: Thu, 7 Sep 2017 10:52:29 +0300 Subject: Fixed a few static analysis violations Fixed mostly not closing resources (InputStream, ResultSet) and catching Throwable instead of Exception in some modules. Issue-ID: SDC-291 Change-Id: I34e331cc3b45c4bb3a71c301f50e1706a7b623fd Signed-off-by: vempo --- .../openecomp/core/utilities/file/FileUtils.java | 70 ++++++++++------------ .../json/JsonSchemaDataGeneratorTest.java | 23 ++++--- .../core/utilities/json/JsonUtilTest.java | 21 ++++--- 3 files changed, 58 insertions(+), 56 deletions(-) (limited to 'openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib') diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileUtils.java b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileUtils.java index 87ce8d37c3..e04f02cce5 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileUtils.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileUtils.java @@ -28,9 +28,12 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; -import java.util.ArrayList; +import java.util.Collections; import java.util.Enumeration; +import java.util.LinkedList; import java.util.List; +import java.util.Objects; +import java.util.function.Function; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; @@ -40,38 +43,29 @@ import java.util.zip.ZipInputStream; public class FileUtils { /** - * Gets file input stream. + * Allows to consume an input stream open against a resource with a given file name. * * @param fileName the file name - * @return the file input stream + * @param function logic to be applied to the input stream */ - public static InputStream getFileInputStream(String fileName) { - URL urlFile = FileUtils.class.getClassLoader().getResource(fileName); - InputStream is; - try { - assert urlFile != null; - is = urlFile.openStream(); - } catch (IOException exception) { - throw new RuntimeException(exception); - } - return is; + public static T readViaInputStream(String fileName, Function function) { + return readViaInputStream(FileUtils.class.getClassLoader().getResource(fileName), function); } /** - * Gets file input stream. + * Allows to consume an input stream open against a resource with a given URL. * * @param urlFile the url file - * @return the file input stream + * @param function logic to be applied to the input stream */ - public static InputStream getFileInputStream(URL urlFile) { - InputStream is; - try { - assert urlFile != null; - is = urlFile.openStream(); + public static T readViaInputStream(URL urlFile, Function function) { + + Objects.requireNonNull(urlFile); + try (InputStream is = urlFile.openStream()) { + return function.apply(is); } catch (IOException exception) { throw new RuntimeException(exception); } - return is; } /** @@ -80,24 +74,23 @@ public class FileUtils { * @param fileName the file name * @return the file input streams */ - public static List getFileInputStreams(String fileName) { + public static List getAllLocations(String fileName) { + + List urls = new LinkedList<>(); Enumeration urlFiles; - List streams = new ArrayList<>(); - InputStream is; - URL url; + try { urlFiles = FileUtils.class.getClassLoader().getResources(fileName); while (urlFiles.hasMoreElements()) { - url = urlFiles.nextElement(); - is = url.openStream(); - streams.add(is); + urls.add(urlFiles.nextElement()); } } catch (IOException exception) { throw new RuntimeException(exception); } - return streams; + + return urls.isEmpty() ? Collections.emptyList() : Collections.unmodifiableList(urls); } /** @@ -210,25 +203,22 @@ public class FileUtils { * @throws IOException the io exception */ public static FileContentHandler getFileContentMapFromZip(byte[] zipData) throws IOException { - ZipEntry zipEntry; - FileContentHandler mapFileContent = new FileContentHandler(); - try { - ZipInputStream inputZipStream; - byte[] fileByteContent; - String currentEntryName; - inputZipStream = new ZipInputStream(new ByteArrayInputStream(zipData)); + try (ZipInputStream inputZipStream = new ZipInputStream(new ByteArrayInputStream(zipData))) { + + FileContentHandler mapFileContent = new FileContentHandler(); + + ZipEntry zipEntry; while ((zipEntry = inputZipStream.getNextEntry()) != null) { - currentEntryName = zipEntry.getName(); - fileByteContent = FileUtils.toByteArray(inputZipStream); - mapFileContent.addFile(currentEntryName, fileByteContent); + mapFileContent.addFile(zipEntry.getName(), FileUtils.toByteArray(inputZipStream)); } + return mapFileContent; + } catch (RuntimeException exception) { throw new IOException(exception); } - return mapFileContent; } diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/json/JsonSchemaDataGeneratorTest.java b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/json/JsonSchemaDataGeneratorTest.java index ba34d07034..9b21f632cc 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/json/JsonSchemaDataGeneratorTest.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/json/JsonSchemaDataGeneratorTest.java @@ -28,14 +28,17 @@ import org.testng.annotations.Test; public class JsonSchemaDataGeneratorTest { - public static final String SCHEMA_WITHOUT_DEFAULTS = new String( - FileUtils.toByteArray(FileUtils.getFileInputStream("jsonUtil/json_schema/aSchema.json"))); - public static final String SCHEMA_WITH_REFS_AND_DEFAULTS = new String(FileUtils.toByteArray( - FileUtils.getFileInputStream("jsonUtil/json_schema/schemaWithRefsAndDefaults.json"))); - public static final String SCHEMA_WITH_INVALID_DEFAULT = new String(FileUtils.toByteArray( - FileUtils.getFileInputStream("jsonUtil/json_schema/schemaWithInvalidDefault.json"))); - public static final String SCHEMA_NIC = new String( - FileUtils.toByteArray(FileUtils.getFileInputStream("jsonUtil/json_schema/nicSchema.json"))); + public static final String SCHEMA_WITHOUT_DEFAULTS = + readFromFile("jsonUtil/json_schema/aSchema.json"); + + public static final String SCHEMA_WITH_REFS_AND_DEFAULTS = + readFromFile("jsonUtil/json_schema/schemaWithRefsAndDefaults.json"); + + public static final String SCHEMA_WITH_INVALID_DEFAULT = + readFromFile("jsonUtil/json_schema/schemaWithInvalidDefault.json"); + + public static final String SCHEMA_NIC = + readFromFile("jsonUtil/json_schema/nicSchema.json"); @Test public void testSchemaWithoutDefaults() { @@ -67,4 +70,8 @@ public class JsonSchemaDataGeneratorTest { JSONObject dataJson = new JSONObject(data); Assert.assertTrue(expectedData.similar(dataJson)); } + + private static String readFromFile(String filename) { + return FileUtils.readViaInputStream(filename, stream -> new String(FileUtils.toByteArray(stream))); + } } diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/json/JsonUtilTest.java b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/json/JsonUtilTest.java index 6b8805797a..d89019baec 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/json/JsonUtilTest.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/json/JsonUtilTest.java @@ -31,10 +31,14 @@ public class JsonUtilTest { @Test public void testValidJsonValidate() throws Exception { - String json = - new String(FileUtils.toByteArray(FileUtils.getFileInputStream("jsonUtil/json/a.json"))); - String jsonSchema = new String( - FileUtils.toByteArray(FileUtils.getFileInputStream("jsonUtil/json_schema/aSchema.json"))); + + + + String json = FileUtils.readViaInputStream("jsonUtil/json/a.json", + stream -> new String(FileUtils.toByteArray(stream))); + + String jsonSchema = FileUtils.readViaInputStream("jsonUtil/json_schema/aSchema.json", + stream -> new String(FileUtils.toByteArray(stream))); List validationErrors = JsonUtil.validate(json, jsonSchema); Assert.assertNull(validationErrors); @@ -42,10 +46,11 @@ public class JsonUtilTest { @Test public void testInValidJsonValidate() throws Exception { - String json = new String( - FileUtils.toByteArray(FileUtils.getFileInputStream("jsonUtil/json/a_invalid.json"))); - String jsonSchema = new String( - FileUtils.toByteArray(FileUtils.getFileInputStream("jsonUtil/json_schema/aSchema.json"))); + + String json = FileUtils.readViaInputStream("jsonUtil/json/a_invalid.json", + stream -> new String(FileUtils.toByteArray(stream))); + String jsonSchema = FileUtils.readViaInputStream("jsonUtil/json_schema/aSchema.json", + stream -> new String(FileUtils.toByteArray(stream))); List validationErrors = JsonUtil.validate(json, jsonSchema); Assert.assertNotNull(validationErrors); -- cgit 1.2.3-korg