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;
