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
+ }
}