This is an automated email from the ASF dual-hosted git repository.

bchapuis pushed a commit to branch data-refactoring
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git

commit 27e71bf5897ebac11e138017ff4fc02d6f9c67c8
Author: Bertil Chapuis <[email protected]>
AuthorDate: Sat Apr 5 09:42:02 2025 +0200

    Make DataMap extend AutoCloseable
---
 .../org/apache/baremaps/data/collection/DataConversions.java   |  7 +++++++
 .../main/java/org/apache/baremaps/data/collection/DataMap.java |  2 +-
 .../org/apache/baremaps/data/collection/IndexedDataMap.java    |  9 +++++++++
 .../apache/baremaps/data/collection/MemoryAlignedDataMap.java  |  8 ++++++++
 .../org/apache/baremaps/data/collection/MonotonicDataMap.java  | 10 ++++++++++
 .../baremaps/data/collection/MonotonicFixedSizeDataMap.java    | 10 ++++++++++
 .../baremaps/data/collection/MonotonicPairedDataMap.java       | 10 ++++++++++
 7 files changed, 55 insertions(+), 1 deletion(-)

diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataConversions.java
 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataConversions.java
index 999c7d9d4..3e361d77f 100644
--- 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataConversions.java
+++ 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataConversions.java
@@ -375,6 +375,13 @@ public class DataConversions {
     public int hashCode() {
       return map.hashCode();
     }
+
+    @Override
+    public void close() throws Exception {
+      if (map instanceof AutoCloseable) {
+        ((AutoCloseable) map).close();
+      }
+    }
   }
 
 }
diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataMap.java 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataMap.java
index 1a9095246..1ae196bf3 100644
--- 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataMap.java
+++ 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataMap.java
@@ -31,7 +31,7 @@ import java.util.function.BiConsumer;
  * @param <K> The type of the keys.
  * @param <V> The type of the values.
  */
-public interface DataMap<K, V> {
+public interface DataMap<K, V> extends AutoCloseable {
 
   /**
    * Returns the number of values stored in the data map.
diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/IndexedDataMap.java
 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/IndexedDataMap.java
index f1c6d546f..346972200 100644
--- 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/IndexedDataMap.java
+++ 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/IndexedDataMap.java
@@ -121,4 +121,13 @@ public class IndexedDataMap<E> implements DataMap<Long, E> 
{
     index.clear();
     values.clear();
   }
+
+  @Override
+  public void close() throws Exception {
+    try {
+      values.close();
+    } catch (Exception e) {
+      throw new DataCollectionException(e);
+    }
+  }
 }
diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MemoryAlignedDataMap.java
 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MemoryAlignedDataMap.java
index aeeea0107..2d5080dea 100644
--- 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MemoryAlignedDataMap.java
+++ 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MemoryAlignedDataMap.java
@@ -210,4 +210,12 @@ public class MemoryAlignedDataMap<E> implements 
DataMap<Long, E> {
     };
   }
 
+  @Override
+  public void close() throws Exception {
+    try {
+      memory.close();
+    } catch (Exception e) {
+      throw new DataCollectionException(e);
+    }
+  }
 }
diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MonotonicDataMap.java
 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MonotonicDataMap.java
index f590e815c..557a10338 100644
--- 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MonotonicDataMap.java
+++ 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MonotonicDataMap.java
@@ -172,4 +172,14 @@ public class MonotonicDataMap<E> implements DataMap<Long, 
E> {
     values.clear();
   }
 
+  @Override
+  public void close() throws Exception {
+    try {
+      offsets.close();
+      keys.close();
+      values.close();
+    } catch (Exception e) {
+      throw new RuntimeException(e);
+    }
+  }
 }
diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MonotonicFixedSizeDataMap.java
 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MonotonicFixedSizeDataMap.java
index f0992cb94..611dd5daa 100644
--- 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MonotonicFixedSizeDataMap.java
+++ 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MonotonicFixedSizeDataMap.java
@@ -152,4 +152,14 @@ public class MonotonicFixedSizeDataMap<E> implements 
DataMap<Long, E> {
     values.clear();
   }
 
+  @Override
+  public void close() throws Exception {
+    try {
+      offsets.close();
+      keys.close();
+      values.close();
+    } catch (Exception e) {
+      throw new RuntimeException(e);
+    }
+  }
 }
diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MonotonicPairedDataMap.java
 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MonotonicPairedDataMap.java
index ae64e0ddb..619097058 100644
--- 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MonotonicPairedDataMap.java
+++ 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MonotonicPairedDataMap.java
@@ -151,4 +151,14 @@ public class MonotonicPairedDataMap<E> implements 
DataMap<Long, E> {
     offsets.clear();
     values.clear();
   }
+
+  @Override
+  public void close() throws Exception {
+    try {
+      offsets.close();
+      values.close();
+    } catch (Exception e) {
+      throw new RuntimeException(e);
+    }
+  }
 }

Reply via email to