From b76d99d191c06e3aad6cba7162cb9012fc289305 Mon Sep 17 00:00:00 2001 From: Andreas Pfeil Date: Mon, 18 Jul 2022 17:51:19 +0200 Subject: [PATCH] Close streams properly. --- .../organizationprovider/RorProvider.java | 23 +++++++------- .../ro_crate/writer/ZipWriter.java | 30 +++++++++++-------- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/src/main/java/edu/kit/datamanager/ro_crate/externalproviders/organizationprovider/RorProvider.java b/src/main/java/edu/kit/datamanager/ro_crate/externalproviders/organizationprovider/RorProvider.java index a632df9..f734238 100644 --- a/src/main/java/edu/kit/datamanager/ro_crate/externalproviders/organizationprovider/RorProvider.java +++ b/src/main/java/edu/kit/datamanager/ro_crate/externalproviders/organizationprovider/RorProvider.java @@ -16,6 +16,8 @@ */ public class RorProvider { + private RorProvider() {} + /** * The method that parses a ror entry to a crate entity. * @@ -23,23 +25,22 @@ public class RorProvider { * @return the created Organization entity. */ public static OrganizationEntity getOrganization(String url) { - CloseableHttpClient httpClient = HttpClients.createDefault(); if (!url.startsWith("https://ror.org/")) { throw new IllegalArgumentException("Should provide ror url"); } String newUrl = "https://api.ror.org/organizations/" + url.replaceAll("https://ror.org/", ""); HttpGet request = new HttpGet(newUrl); - try { - CloseableHttpResponse response = httpClient.execute(request); - ObjectNode jsonNode = MyObjectMapper.getMapper().readValue(response.getEntity().getContent(), - ObjectNode.class); - return new OrganizationEntity.OrganizationEntityBuilder() - .setId(jsonNode.get("id").asText()) - .addProperty("name", jsonNode.get("name")) - .addProperty("email", jsonNode.get("email_address")) - .addProperty("url", jsonNode.get("links")) - .build(); + try (CloseableHttpClient httpClient = HttpClients.createDefault()) { + CloseableHttpResponse response = httpClient.execute(request); + ObjectNode jsonNode = MyObjectMapper.getMapper().readValue(response.getEntity().getContent(), + ObjectNode.class); + return new OrganizationEntity.OrganizationEntityBuilder() + .setId(jsonNode.get("id").asText()) + .addProperty("name", jsonNode.get("name")) + .addProperty("email", jsonNode.get("email_address")) + .addProperty("url", jsonNode.get("links")) + .build(); } catch (IOException e) { e.printStackTrace(); } diff --git a/src/main/java/edu/kit/datamanager/ro_crate/writer/ZipWriter.java b/src/main/java/edu/kit/datamanager/ro_crate/writer/ZipWriter.java index cbac129..bcc73f4 100644 --- a/src/main/java/edu/kit/datamanager/ro_crate/writer/ZipWriter.java +++ b/src/main/java/edu/kit/datamanager/ro_crate/writer/ZipWriter.java @@ -9,7 +9,6 @@ import edu.kit.datamanager.ro_crate.objectmapper.MyObjectMapper; import java.io.ByteArrayInputStream; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; @@ -25,9 +24,25 @@ public class ZipWriter implements WriterStrategy { @Override public void save(Crate crate, String destination) { - File file = new File(destination); - ZipFile zipFile = new ZipFile(destination); + try (ZipFile zipFile = new ZipFile(destination)) { + saveMetadataJson(crate, zipFile); + saveDataEntities(crate, zipFile); + } catch (IOException e) { + // can not close ZipFile (threw Exception) + } + } + + private void saveDataEntities(Crate crate, ZipFile zipFile) { + for (DataEntity dataEntity : crate.getAllDataEntities()) { + try { + dataEntity.saveToZip(zipFile); + } catch (ZipException e) { + System.out.println("could not save " + dataEntity.getId() + " to zip file!"); + } + } + } + private void saveMetadataJson(Crate crate, ZipFile zipFile) { try { // write the metadata.json file ZipParameters zipParameters = new ZipParameters(); @@ -49,14 +64,5 @@ public void save(Crate crate, String destination) { } catch (IOException e) { e.printStackTrace(); } - - // save all the data entities - for (DataEntity dataEntity : crate.getAllDataEntities()) { - try { - dataEntity.saveToZip(zipFile); - } catch (ZipException e) { - System.out.println("could not save " + dataEntity.getId() + " to zip file!"); - } - } } }