From 78835e593e5777c4607778c9f595c9ef3a378373 Mon Sep 17 00:00:00 2001 From: Gary O'Neall Date: Thu, 17 Sep 2020 13:41:15 -0700 Subject: [PATCH] Add close to model store interface Signed-off-by: Gary O'Neall --- pom.xml | 2 +- src/main/java/org/spdx/library/DefaultModelStore.java | 7 +++++++ src/main/java/org/spdx/storage/IModelStore.java | 2 +- .../storage/listedlicense/SpdxListedLicenseLocalStore.java | 5 +++++ .../storage/listedlicense/SpdxListedLicenseWebStore.java | 5 +++++ .../java/org/spdx/storage/simple/ExtendedSpdxStore.java | 5 +++++ src/main/java/org/spdx/storage/simple/InMemSpdxStore.java | 5 +++++ 7 files changed, 29 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index ad30e755f..f0b84f9bf 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.spdx java-spdx-library - 0.0.2-SNAPSHOT + 0.0.3-SNAPSHOT jar java-spdx-library diff --git a/src/main/java/org/spdx/library/DefaultModelStore.java b/src/main/java/org/spdx/library/DefaultModelStore.java index 5b9a2aff9..cb4c79a8c 100644 --- a/src/main/java/org/spdx/library/DefaultModelStore.java +++ b/src/main/java/org/spdx/library/DefaultModelStore.java @@ -62,6 +62,13 @@ public static String getDefaultDocumentUri() { public static final void reset() { lock.writeLock().lock(); try { + if (Objects.nonNull(defaultModelStore)) { + try { + defaultModelStore.close(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } defaultModelStore = new InMemSpdxStore(); defaultCopyManager = new ModelCopyManager(); } finally { diff --git a/src/main/java/org/spdx/storage/IModelStore.java b/src/main/java/org/spdx/storage/IModelStore.java index 1f47acca9..61af85690 100644 --- a/src/main/java/org/spdx/storage/IModelStore.java +++ b/src/main/java/org/spdx/storage/IModelStore.java @@ -42,7 +42,7 @@ * @author Gary O'Neall * */ -public interface IModelStore { +public interface IModelStore extends AutoCloseable { public interface IModelStoreLock { public void unlock(); diff --git a/src/main/java/org/spdx/storage/listedlicense/SpdxListedLicenseLocalStore.java b/src/main/java/org/spdx/storage/listedlicense/SpdxListedLicenseLocalStore.java index 6859ebd11..625605df9 100644 --- a/src/main/java/org/spdx/storage/listedlicense/SpdxListedLicenseLocalStore.java +++ b/src/main/java/org/spdx/storage/listedlicense/SpdxListedLicenseLocalStore.java @@ -72,4 +72,9 @@ InputStream getExceptionTocInputStream() throws IOException { InputStream getExceptionInputStream(String exceptionId) throws IOException { return getLicenseInputStream(exceptionId); } + + @Override + public void close() throws Exception { + // Nothing to do for the either the in-memory or the web store + } } diff --git a/src/main/java/org/spdx/storage/listedlicense/SpdxListedLicenseWebStore.java b/src/main/java/org/spdx/storage/listedlicense/SpdxListedLicenseWebStore.java index 7cb2f063b..3bd549a9c 100644 --- a/src/main/java/org/spdx/storage/listedlicense/SpdxListedLicenseWebStore.java +++ b/src/main/java/org/spdx/storage/listedlicense/SpdxListedLicenseWebStore.java @@ -77,4 +77,9 @@ InputStream getExceptionTocInputStream() throws IOException { InputStream getExceptionInputStream(String exceptionId) throws IOException { return getLicenseInputStream(exceptionId); // Same URL using exception ID rather than license ID } + + @Override + public void close() throws Exception { + // Nothing to do for the either the in-memory or the web store + } } diff --git a/src/main/java/org/spdx/storage/simple/ExtendedSpdxStore.java b/src/main/java/org/spdx/storage/simple/ExtendedSpdxStore.java index a0c60fe51..9c8e03424 100644 --- a/src/main/java/org/spdx/storage/simple/ExtendedSpdxStore.java +++ b/src/main/java/org/spdx/storage/simple/ExtendedSpdxStore.java @@ -266,5 +266,10 @@ protected void clear(String documentUri) throws InvalidSPDXAnalysisException { public void delete(String documentUri, String elementId) throws InvalidSPDXAnalysisException { baseStore.delete(documentUri, elementId); } + + @Override + public void close() throws Exception { + baseStore.close(); + } } diff --git a/src/main/java/org/spdx/storage/simple/InMemSpdxStore.java b/src/main/java/org/spdx/storage/simple/InMemSpdxStore.java index c503c889e..684757aaf 100644 --- a/src/main/java/org/spdx/storage/simple/InMemSpdxStore.java +++ b/src/main/java/org/spdx/storage/simple/InMemSpdxStore.java @@ -410,4 +410,9 @@ public void delete(String documentUri, String id) throws InvalidSPDXAnalysisExce throw new SpdxIdNotFoundException("Error deleting - ID "+id+" does not exist."); } } + + @Override + public void close() throws Exception { + // Nothing to do for the in-memory store + } }