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> {
