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

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

commit d6b161c898121b301f9b526b7121b721a04862d2
Author: Bertil Chapuis <[email protected]>
AuthorDate: Sat Jan 18 14:27:09 2025 +0100

    Make data collection closeable
---
 .../apache/baremaps/data/collection/AppendOnlyLog.java   |  5 +++++
 .../apache/baremaps/data/collection/DataCollection.java  |  3 ++-
 .../baremaps/data/collection/DataCollectionMapper.java   |  6 ++++++
 .../apache/baremaps/data/collection/DataConversions.java | 16 ++++++++++++++++
 4 files changed, 29 insertions(+), 1 deletion(-)

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 fbb549988..1a9830b1b 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
@@ -146,6 +146,11 @@ public class AppendOnlyLog<E> implements DataCollection<E> 
{
     return new AppendOnlyLogIterator(size);
   }
 
+  @Override
+  public void close() throws IOException {
+    memory.close();
+  }
+
   /**
    * 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..3d5924058 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
@@ -17,6 +17,7 @@
 
 package org.apache.baremaps.data.collection;
 
+import java.io.Closeable;
 import java.util.*;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
@@ -25,7 +26,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>, Closeable {
 
   /**
    * 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..355a76eb2 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
@@ -18,6 +18,7 @@
 package org.apache.baremaps.data.collection;
 
 
+import java.io.IOException;
 import java.util.Iterator;
 import java.util.function.Function;
 
@@ -58,4 +59,9 @@ public class DataCollectionMapper<S, T> implements 
DataCollection<T> {
   public void clear() {
     collection.clear();
   }
+
+  @Override
+  public void close() throws IOException {
+    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..75d5a1a51 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
@@ -17,6 +17,8 @@
 
 package org.apache.baremaps.data.collection;
 
+import java.io.Closeable;
+import java.io.IOException;
 import java.util.*;
 import java.util.Map.Entry;
 
@@ -163,6 +165,13 @@ public class DataConversions {
     public Iterator<E> iterator() {
       return collection.iterator();
     }
+
+    @Override
+    public void close() throws IOException {
+        if (collection instanceof Closeable closeable) {
+          closeable.close();
+        }
+    }
   }
 
   private static class ListAdapter<E> extends AbstractList<E> {
@@ -251,6 +260,13 @@ public class DataConversions {
     public int hashCode() {
       return list.hashCode();
     }
+
+    @Override
+    public void close() throws IOException {
+        if (list instanceof Closeable closeable) {
+          closeable.close();
+        }
+    }
   }
 
   private static class MapAdapter<K, V> extends AbstractMap<K, V> {

Reply via email to