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 d58c212967a54c0f1fcab3b4efe19cfaeb0cc5fe
Author: Bertil Chapuis <[email protected]>
AuthorDate: Sat Apr 5 12:49:12 2025 +0200

    Use the builder pattern for the MemoryAlignedDataList
---
 .../apache/baremaps/workflow/WorkflowContext.java    | 15 +++++++++------
 .../baremaps/data/collection/IndexedDataList.java    |  4 +++-
 .../data/collection/MemoryAlignedDataList.java       | 17 ++++-------------
 .../baremaps/data/collection/MonotonicDataMap.java   | 20 +++++++++++++++-----
 .../data/collection/MonotonicFixedSizeDataMap.java   | 17 +++++++++++++----
 .../data/collection/MonotonicPairedDataMap.java      |  5 ++++-
 .../java/org/apache/baremaps/data/DataListTest.java  |  8 ++++++--
 .../java/org/apache/baremaps/data/DataMapTest.java   | 18 ++++++++++++------
 .../apache/baremaps/data/sort/BinarySearchTest.java  |  4 +++-
 .../baremaps/data/sort/ExternalMergeSortTest.java    |  5 ++++-
 10 files changed, 73 insertions(+), 40 deletions(-)

diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowContext.java 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowContext.java
index 6f10c1913..4f828d60f 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowContext.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowContext.java
@@ -84,9 +84,11 @@ public class WorkflowContext {
     Path mapDir = Files.createDirectories(cacheDir.resolve(name));
     Path keysDir = Files.createDirectories(mapDir.resolve("keys"));
     Path valuesDir = Files.createDirectories(mapDir.resolve("values"));
-    MemoryAlignedDataList<PairDataType.Pair<Long, Long>> keys = new 
MemoryAlignedDataList<>(
-        new PairDataType<>(new LongDataType(), new LongDataType()),
-        new MemoryMappedDirectory(keysDir));
+    MemoryAlignedDataList<PairDataType.Pair<Long, Long>> keys = 
MemoryAlignedDataList
+        .<PairDataType.Pair<Long, Long>>builder()
+        .dataType(new PairDataType<>(new LongDataType(), new LongDataType()))
+        .memory(new MemoryMappedDirectory(keysDir))
+        .build();
     AppendOnlyLog<T> values = AppendOnlyLog.<T>builder()
         .dataType(dataType)
         .values(new MemoryMappedDirectory(valuesDir))
@@ -102,9 +104,10 @@ public class WorkflowContext {
       throws IOException {
     Path mapDir = Files.createDirectories(cacheDir.resolve(name));
     return new MonotonicPairedDataMap<>(
-        new MemoryAlignedDataList<>(
-            new PairDataType<>(new LongDataType(), new LonLatDataType()),
-            new MemoryMappedDirectory(Files.createDirectories(mapDir))));
+        MemoryAlignedDataList.<PairDataType.Pair<Long, Coordinate>>builder()
+            .dataType(new PairDataType<>(new LongDataType(), new 
LonLatDataType()))
+            .memory(new MemoryMappedDirectory(Files.createDirectories(mapDir)))
+            .build());
   }
 
   public void cleanCache() throws IOException {
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 da973b83f..a383fa402 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,7 +86,9 @@ public class IndexedDataList<E> implements DataList<E> {
       }
 
       if (index == null) {
-        index = new MemoryAlignedDataList<>(new LongDataType());
+        index = MemoryAlignedDataList.<Long>builder()
+            .dataType(new LongDataType())
+            .build();
       }
       
       return new IndexedDataList<>(index, values);
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 bc9d20784..34216e8fb 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
@@ -100,20 +100,11 @@ public class MemoryAlignedDataList<E> implements 
DataList<E> {
       }
 
       if (memory == null) {
-        return new MemoryAlignedDataList<>(dataType);
-      } else {
-        return new MemoryAlignedDataList<>(dataType, memory);
+        memory = new OffHeapMemory();
       }
-    }
-  }
 
-  /**
-   * Constructs a {@link MemoryAlignedDataList}.
-   *
-   * @param dataType the data type
-   */
-  public MemoryAlignedDataList(FixedSizeDataType<E> dataType) {
-    this(dataType, new OffHeapMemory());
+      return new MemoryAlignedDataList<>(dataType, memory);
+    }
   }
 
   /**
@@ -122,7 +113,7 @@ public class MemoryAlignedDataList<E> implements 
DataList<E> {
    * @param dataType the data type
    * @param memory the memory
    */
-  public MemoryAlignedDataList(FixedSizeDataType<E> dataType, Memory<?> 
memory) {
+  private MemoryAlignedDataList(FixedSizeDataType<E> dataType, Memory<?> 
memory) {
     if (dataType.size() > memory.segmentSize()) {
       throw new DataCollectionException("The segment size is too small for the 
data type");
     }
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 eb4308bef..4424a2b14 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
@@ -109,10 +109,14 @@ public class MonotonicDataMap<E> implements DataMap<Long, 
E> {
       if (offsets == null && keys == null) {
         return new MonotonicDataMap<>(values);
       } else if (keys == null) {
-        keys = new MemoryAlignedDataList<>(new PairDataType<>(new 
LongDataType(), new LongDataType()));
+        keys = MemoryAlignedDataList.<Pair<Long, Long>>builder()
+            .dataType(new PairDataType<>(new LongDataType(), new 
LongDataType()))
+            .build();
         return new MonotonicDataMap<>(offsets, keys, values);
       } else if (offsets == null) {
-        offsets = new MemoryAlignedDataList<>(new LongDataType());
+        offsets = MemoryAlignedDataList.<Long>builder()
+            .dataType(new LongDataType())
+            .build();
         return new MonotonicDataMap<>(offsets, keys, values);
       } else {
         return new MonotonicDataMap<>(offsets, keys, values);
@@ -127,8 +131,12 @@ public class MonotonicDataMap<E> implements DataMap<Long, 
E> {
    */
   public MonotonicDataMap(AppendOnlyLog<E> values) {
     this(
-        new MemoryAlignedDataList<>(new LongDataType()),
-        new MemoryAlignedDataList<>(new PairDataType<>(new LongDataType(), new 
LongDataType())),
+        MemoryAlignedDataList.<Long>builder()
+            .dataType(new LongDataType())
+            .build(),
+        MemoryAlignedDataList.<Pair<Long, Long>>builder()
+            .dataType(new PairDataType<>(new LongDataType(), new 
LongDataType()))
+            .build(),
         values);
   }
 
@@ -140,7 +148,9 @@ public class MonotonicDataMap<E> implements DataMap<Long, 
E> {
    */
   public MonotonicDataMap(DataList<Pair<Long, Long>> keys, AppendOnlyLog<E> 
values) {
     this(
-        new MemoryAlignedDataList<>(new LongDataType()),
+        MemoryAlignedDataList.<Long>builder()
+            .dataType(new LongDataType())
+            .build(),
         keys,
         values);
   }
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 d9809250d..ad0bc195f 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
@@ -107,10 +107,14 @@ public class MonotonicFixedSizeDataMap<E> implements 
DataMap<Long, E> {
       if (offsets == null && keys == null) {
         return new MonotonicFixedSizeDataMap<>(values);
       } else if (offsets == null) {
-        offsets = new MemoryAlignedDataList<>(new LongDataType());
+        offsets = MemoryAlignedDataList.<Long>builder()
+            .dataType(new LongDataType())
+            .build();
         return new MonotonicFixedSizeDataMap<>(offsets, keys, values);
       } else if (keys == null) {
-        keys = new MemoryAlignedDataList<>(new LongDataType());
+        keys = MemoryAlignedDataList.<Long>builder()
+            .dataType(new LongDataType())
+            .build();
         return new MonotonicFixedSizeDataMap<>(offsets, keys, values);
       } else {
         return new MonotonicFixedSizeDataMap<>(offsets, keys, values);
@@ -124,8 +128,13 @@ public class MonotonicFixedSizeDataMap<E> implements 
DataMap<Long, E> {
    * @param values the list of values
    */
   public MonotonicFixedSizeDataMap(DataList<E> values) {
-    this(new MemoryAlignedDataList<>(new LongDataType()),
-        new MemoryAlignedDataList<>(new LongDataType()), values);
+    this(MemoryAlignedDataList.<Long>builder()
+            .dataType(new LongDataType())
+            .build(),
+        MemoryAlignedDataList.<Long>builder()
+            .dataType(new LongDataType())
+            .build(), 
+        values);
   }
 
   /**
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 781d8bb02..882c49903 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
@@ -107,7 +107,10 @@ public class MonotonicPairedDataMap<E> implements 
DataMap<Long, E> {
    * Constructs a {@link MonotonicPairedDataMap}.
    */
   public MonotonicPairedDataMap(MemoryAlignedDataList<Pair<Long, E>> values) {
-    this(new MemoryAlignedDataList<>(new LongDataType()), values);
+    this(MemoryAlignedDataList.<Long>builder()
+            .dataType(new LongDataType())
+            .build(),
+        values);
   }
 
   /**
diff --git 
a/baremaps-data/src/test/java/org/apache/baremaps/data/DataListTest.java 
b/baremaps-data/src/test/java/org/apache/baremaps/data/DataListTest.java
index 6b1a1db76..f242356af 100644
--- a/baremaps-data/src/test/java/org/apache/baremaps/data/DataListTest.java
+++ b/baremaps-data/src/test/java/org/apache/baremaps/data/DataListTest.java
@@ -79,11 +79,15 @@ class DataListTest {
                 .dataType(new LongDataType())
                 .build()),
         Arguments.of(IndexedDataList.<Long>builder()
-                .index(new MemoryAlignedDataList<>(new LongDataType()))
+                .index(MemoryAlignedDataList.<Long>builder()
+                    .dataType(new LongDataType())
+                    .build())
                 .values(AppendOnlyLog.<Long>builder()
                     .dataType(new LongDataType())
                     .build())
                 .build()),
-        Arguments.of(new MemoryAlignedDataList<>(new LongDataType())));
+        Arguments.of(MemoryAlignedDataList.<Long>builder()
+                .dataType(new LongDataType())
+                .build()));
   }
 }
diff --git 
a/baremaps-data/src/test/java/org/apache/baremaps/data/DataMapTest.java 
b/baremaps-data/src/test/java/org/apache/baremaps/data/DataMapTest.java
index 9529af8e7..70b8462be 100644
--- a/baremaps-data/src/test/java/org/apache/baremaps/data/DataMapTest.java
+++ b/baremaps-data/src/test/java/org/apache/baremaps/data/DataMapTest.java
@@ -172,17 +172,23 @@ class DataMapTest {
                         .build())
                     .build()),
             Arguments.of(new MonotonicFixedSizeDataMap<>(
-                new MemoryAlignedDataList<>(new LongDataType(), new 
OffHeapMemory()))),
+                MemoryAlignedDataList.<Long>builder()
+                    .dataType(new LongDataType())
+                    .memory(new OffHeapMemory())
+                    .build())),
             Arguments.of(new MonotonicDataMap<>(
-                new MemoryAlignedDataList<>(
-                    new PairDataType<>(new LongDataType(), new LongDataType()),
-                    new OffHeapMemory()),
+                MemoryAlignedDataList.<PairDataType.Pair<Long, Long>>builder()
+                    .dataType(new PairDataType<>(new LongDataType(), new 
LongDataType()))
+                    .memory(new OffHeapMemory())
+                    .build(),
                 AppendOnlyLog.<Long>builder()
                     .dataType(new LongDataType())
                     .memory(new OffHeapMemory())
                     .build())),
-            Arguments.of(new MonotonicPairedDataMap<>(new 
MemoryAlignedDataList<>(
-                new PairDataType<>(new LongDataType(), new LongDataType())))),
+            Arguments.of(new MonotonicPairedDataMap<>(
+                MemoryAlignedDataList.<PairDataType.Pair<Long, Long>>builder()
+                    .dataType(new PairDataType<>(new LongDataType(), new 
LongDataType()))
+                    .build())),
             Arguments.of(DirectHashDataMap.<Long>builder()
                 .keyType(new LongDataType())
                 .dataType(new LongDataType())
diff --git 
a/baremaps-data/src/test/java/org/apache/baremaps/data/sort/BinarySearchTest.java
 
b/baremaps-data/src/test/java/org/apache/baremaps/data/sort/BinarySearchTest.java
index 3182d5b36..4d0f0af54 100644
--- 
a/baremaps-data/src/test/java/org/apache/baremaps/data/sort/BinarySearchTest.java
+++ 
b/baremaps-data/src/test/java/org/apache/baremaps/data/sort/BinarySearchTest.java
@@ -28,7 +28,9 @@ class BinarySearchTest {
 
   @Test
   void binarySearch() {
-    var list = new MemoryAlignedDataList<>(new LongDataType());
+    var list = MemoryAlignedDataList.<Long>builder()
+        .dataType(new LongDataType())
+        .build();
     for (long i = 0; i < 1000; i++) {
       list.add(i);
     }
diff --git 
a/baremaps-data/src/test/java/org/apache/baremaps/data/sort/ExternalMergeSortTest.java
 
b/baremaps-data/src/test/java/org/apache/baremaps/data/sort/ExternalMergeSortTest.java
index c4c51f0cf..0bb72050b 100644
--- 
a/baremaps-data/src/test/java/org/apache/baremaps/data/sort/ExternalMergeSortTest.java
+++ 
b/baremaps-data/src/test/java/org/apache/baremaps/data/sort/ExternalMergeSortTest.java
@@ -54,7 +54,10 @@ class ExternalMergeSortTest {
     stringsDsc = strings.stream().sorted(Comparator.reverseOrder()).toList();
     stringsDistinct = stringsAsc.stream().distinct().toList();
     supplier = () -> IndexedDataList.<String>builder()
-        .index(new MemoryAlignedDataList<>(new LongDataType(), new 
OnHeapMemory()))
+        .index(MemoryAlignedDataList.<Long>builder()
+            .dataType(new LongDataType())
+            .memory(new OnHeapMemory())
+            .build())
         .values(AppendOnlyLog.<String>builder()
             .dataType(new StringDataType())
             .memory(new OnHeapMemory())

Reply via email to