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 2c46026dc90afe7cb8ad2dacb2a29c03c7a805bc
Author: Bertil Chapuis <[email protected]>
AuthorDate: Sat Apr 5 09:39:06 2025 +0200

    Make DataCollection extend AutoCloseable
---
 .../org/apache/baremaps/data/collection/AppendOnlyLog.java |  9 +++++++++
 .../apache/baremaps/data/collection/DataCollection.java    |  2 +-
 .../baremaps/data/collection/DataCollectionMapper.java     |  5 +++++
 .../apache/baremaps/data/collection/DataConversions.java   | 14 ++++++++++++++
 .../apache/baremaps/data/collection/FixedSizeDataList.java |  9 +++++++++
 .../apache/baremaps/data/collection/IndexedDataList.java   | 10 ++++++++++
 .../baremaps/data/collection/MemoryAlignedDataList.java    |  8 ++++++++
 .../main/java/org/apache/baremaps/data/memory/Memory.java  |  3 +--
 8 files changed, 57 insertions(+), 3 deletions(-)

diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/AppendOnlyLog.java
 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/AppendOnlyLog.java
index 4be438bdc..44ecc2d1c 100644
--- 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/AppendOnlyLog.java
+++ 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/AppendOnlyLog.java
@@ -155,6 +155,15 @@ public class AppendOnlyLog<E> implements DataCollection<E> 
{
     return new AppendOnlyLogIterator(size);
   }
 
+  @Override
+  public void close() throws Exception {
+    try {
+      memory.close();
+    } catch (IOException e) {
+      throw new DataCollectionException(e);
+    }
+  }
+
   /**
    * An iterator over the values of the log that can be used to iterate over 
the values of the log
    * and to get the current position in the memory.
diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataCollection.java
 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataCollection.java
index 1189cd846..7df3aaf25 100644
--- 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataCollection.java
+++ 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataCollection.java
@@ -25,7 +25,7 @@ import java.util.stream.StreamSupport;
  * A {@code DataCollection<E>} is a group of elements that can be iterated 
over. It is similar to a
  * {@link java.util.Collection<E> Collection}, but can hold up to {@link 
Long#MAX_VALUE} elements.
  */
-public interface DataCollection<E> extends Iterable<E> {
+public interface DataCollection<E> extends Iterable<E>, AutoCloseable {
 
   /**
    * Returns the number of values stored in the data collection.
diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataCollectionMapper.java
 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataCollectionMapper.java
index 970407919..b8c545088 100644
--- 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataCollectionMapper.java
+++ 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/DataCollectionMapper.java
@@ -58,4 +58,9 @@ public class DataCollectionMapper<S, T> implements 
DataCollection<T> {
   public void clear() {
     collection.clear();
   }
+
+  @Override
+  public void close() throws Exception {
+    collection.close();
+  }
 }
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 593f6acd4..999c7d9d4 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
@@ -163,6 +163,13 @@ public class DataConversions {
     public Iterator<E> iterator() {
       return collection.iterator();
     }
+
+    @Override
+    public void close() throws Exception {
+      if (collection instanceof AutoCloseable) {
+        ((AutoCloseable) collection).close();
+      }
+    }
   }
 
   private static class ListAdapter<E> extends AbstractList<E> {
@@ -251,6 +258,13 @@ public class DataConversions {
     public int hashCode() {
       return list.hashCode();
     }
+
+    @Override
+    public void close() throws Exception {
+      if (list instanceof AutoCloseable) {
+        ((AutoCloseable) list).close();
+      }
+    }
   }
 
   private static class MapAdapter<K, V> extends AbstractMap<K, V> {
diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/FixedSizeDataList.java
 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/FixedSizeDataList.java
index 1d5d01dc9..88bcaf1ee 100644
--- 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/FixedSizeDataList.java
+++ 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/FixedSizeDataList.java
@@ -109,4 +109,13 @@ public class FixedSizeDataList<E> implements DataList<E> {
   public void clear() {
     size.set(0);
   }
+
+  @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/IndexedDataList.java
 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/IndexedDataList.java
index dbe7e555d..e79fa2eb3 100644
--- 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/IndexedDataList.java
+++ 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/IndexedDataList.java
@@ -86,4 +86,14 @@ public class IndexedDataList<E> implements DataList<E> {
     index.clear();
     values.clear();
   }
+
+  @Override
+  public void close() throws Exception {
+    try {
+      index.close();
+      values.close();
+    } catch (Exception e) {
+      throw new DataCollectionException(e);
+    }
+  }
 }
diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MemoryAlignedDataList.java
 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MemoryAlignedDataList.java
index e29f33839..f335f9bd3 100644
--- 
a/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MemoryAlignedDataList.java
+++ 
b/baremaps-data/src/main/java/org/apache/baremaps/data/collection/MemoryAlignedDataList.java
@@ -129,4 +129,12 @@ public class MemoryAlignedDataList<E> implements 
DataList<E> {
     }
   }
 
+  @Override
+  public void close() throws Exception {
+    try {
+      memory.close();
+    } catch (IOException e) {
+      throw new MemoryException(e);
+    }
+  }
 }
diff --git 
a/baremaps-data/src/main/java/org/apache/baremaps/data/memory/Memory.java 
b/baremaps-data/src/main/java/org/apache/baremaps/data/memory/Memory.java
index 6e9a36b76..56dd45a14 100644
--- a/baremaps-data/src/main/java/org/apache/baremaps/data/memory/Memory.java
+++ b/baremaps-data/src/main/java/org/apache/baremaps/data/memory/Memory.java
@@ -17,14 +17,13 @@
 
 package org.apache.baremaps.data.memory;
 
-import java.io.Closeable;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.List;
 
 /** A base class for managing on-heap, off-heap, or memory-mapped segments. */
-public abstract class Memory<T extends ByteBuffer> implements Closeable {
+public abstract class Memory<T extends ByteBuffer> implements AutoCloseable {
 
   private final int segmentSize;
 

Reply via email to