You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by le...@apache.org on 2022/06/06 18:08:48 UTC

[datasketches-memory17] branch main updated: More cleanup.

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

leerho pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datasketches-memory17.git


The following commit(s) were added to refs/heads/main by this push:
     new a44d797  More cleanup.
a44d797 is described below

commit a44d797307956296db36b0c69da0f6f8f710376b
Author: Lee Rhodes <le...@users.noreply.github.com>
AuthorDate: Mon Jun 6 11:08:43 2022 -0700

    More cleanup.
---
 .../org/apache/datasketches/memory/BaseState.java  |  1 +
 .../org/apache/datasketches/memory/Buffer.java     |  3 -
 .../org/apache/datasketches/memory/Memory.java     | 51 +++++----------
 .../datasketches/memory/MemoryException.java       | 42 -------------
 .../datasketches/memory/ReadOnlyException.java     | 38 ------------
 .../apache/datasketches/memory/WritableBuffer.java |  6 +-
 .../apache/datasketches/memory/WritableMemory.java | 42 +++----------
 .../memory/internal/BaseBufferImpl.java            |  5 +-
 .../memory/internal/BaseStateImpl.java             | 56 ++++++++---------
 .../memory/internal/BaseWritableBufferImpl.java    | 27 +++++---
 .../memory/internal/BaseWritableMemoryImpl.java    | 72 ++++++++++------------
 .../apache/datasketches/memory/internal/Util.java  | 18 +++---
 .../internal/AllocateDirectMapMemoryTest.java      |  2 +-
 .../memory/internal/AllocateDirectMemoryTest.java  |  9 +--
 .../AllocateDirectWritableMapMemoryTest.java       | 22 +++----
 .../memory/internal/BaseBufferTest.java            |  4 +-
 .../memory/internal/BufferInvariantsTest.java      |  4 +-
 .../datasketches/memory/internal/BufferTest.java   |  4 +-
 .../memory/internal/CommonBufferTest.java          |  5 +-
 .../memory/internal/CommonMemoryTest.java          |  5 +-
 .../memory/internal/CopyMemoryOverlapTest.java     |  5 +-
 .../memory/internal/CopyMemoryTest.java            |  4 +-
 .../memory/internal/DruidIssue11544Test.java       | 18 ++----
 .../memory/internal/IgnoredArrayOverflowTest.java  |  4 +-
 .../datasketches/memory/internal/MemoryTest.java   |  3 +-
 .../memory/internal/MemoryWriteToTest.java         |  4 +-
 .../memory/internal/MurmurHash3v3Test.java         |  4 +-
 .../internal/NativeWritableBufferImplTest.java     | 16 +++--
 .../internal/NativeWritableMemoryImplTest.java     | 12 ++--
 .../memory/internal/SpecificLeafTest.java          |  3 +-
 .../memory/internal/WritableDirectCopyTest.java    |  4 +-
 .../memory/internal/ZeroCapacityTest.java          |  4 +-
 32 files changed, 174 insertions(+), 323 deletions(-)

diff --git a/src/main/java/org/apache/datasketches/memory/BaseState.java b/src/main/java/org/apache/datasketches/memory/BaseState.java
index 50e5cff..7bfbab8 100644
--- a/src/main/java/org/apache/datasketches/memory/BaseState.java
+++ b/src/main/java/org/apache/datasketches/memory/BaseState.java
@@ -42,6 +42,7 @@ public interface BaseState {
   static final ByteOrder NON_NATIVE_BYTE_ORDER =
       ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN
       ? ByteOrder.BIG_ENDIAN : ByteOrder.LITTLE_ENDIAN;
+  static final MemoryRequestServer defaultMemReqSvr = new DefaultMemoryRequestServer();
 
   /**
    * Returns a ByteBuffer view of this Memory object with the given ByteOrder.
diff --git a/src/main/java/org/apache/datasketches/memory/Buffer.java b/src/main/java/org/apache/datasketches/memory/Buffer.java
index f6da017..6726c2a 100644
--- a/src/main/java/org/apache/datasketches/memory/Buffer.java
+++ b/src/main/java/org/apache/datasketches/memory/Buffer.java
@@ -21,7 +21,6 @@ package org.apache.datasketches.memory;
 
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
-import java.util.Objects;
 
 import org.apache.datasketches.memory.internal.BaseWritableBufferImpl;
 
@@ -61,8 +60,6 @@ public interface Buffer extends BaseBuffer {
    * @return a new <i>Buffer</i> for read-only operations on the given ByteBuffer.
    */
   static Buffer wrap(ByteBuffer byteBuffer, ByteOrder byteOrder) {
-    Objects.requireNonNull(byteBuffer, "byteBuffer must not be null");
-    Objects.requireNonNull(byteOrder, "byteOrder must not be null");
     return BaseWritableBufferImpl.wrapByteBuffer(byteBuffer, true, byteOrder);
   }
 
diff --git a/src/main/java/org/apache/datasketches/memory/Memory.java b/src/main/java/org/apache/datasketches/memory/Memory.java
index 1c25d80..1c9e5e2 100644
--- a/src/main/java/org/apache/datasketches/memory/Memory.java
+++ b/src/main/java/org/apache/datasketches/memory/Memory.java
@@ -24,8 +24,6 @@ import java.io.File;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
-import java.nio.file.InvalidPathException;
-import java.util.Objects;
 
 import org.apache.datasketches.memory.internal.BaseWritableMemoryImpl;
 
@@ -64,8 +62,6 @@ public interface Memory extends BaseState {
    * @return a new <i>Memory</i> for read-only operations on the given <i>ByteBuffer</i>.
    */
   static Memory wrap(ByteBuffer byteBuffer, ByteOrder byteOrder) {
-    Objects.requireNonNull(byteBuffer, "byteBuffer must not be null");
-    Objects.requireNonNull(byteOrder, "byteOrder must not be null");
     return BaseWritableMemoryImpl.wrapByteBuffer(byteBuffer, true, byteOrder);
   }
 
@@ -81,17 +77,14 @@ public interface Memory extends BaseState {
    * @param scope the given ResourceScope. It must be non-null.
    * @return mapped Memory.
    * @throws IllegalArgumentException -- if file is not readable.
-   * @throws InvalidPathException for invalid path
    * @throws IllegalStateException - if scope has been already closed, or if access occurs from a thread other
    * than the thread owning scope.
-   * @throws UnsupportedOperationException - if an unsupported map mode is specified.
    * @throws IOException - if the specified path does not point to an existing file, or if some other I/O error occurs.
    * @throws SecurityException - If a security manager is installed and it denies an unspecified permission
    * required by the implementation.
    */
   static Memory map(File file, ResourceScope scope)
-      throws IllegalArgumentException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
-      IOException, SecurityException {
+      throws IllegalArgumentException, IllegalStateException, IOException, SecurityException {
     return map(file, 0, file.length(), scope, ByteOrder.nativeOrder());
   }
 
@@ -104,22 +97,14 @@ public interface Memory extends BaseState {
    * @param byteOrder the byte order to be used.  It must be non-null.
    * @return mapped Memory
    * @throws IllegalArgumentException -- if file is not readable.
-   * @throws InvalidPathException for invalid path
    * @throws IllegalStateException - if scope has been already closed, or if access occurs from a thread other
    * than the thread owning scope.
-   * @throws UnsupportedOperationException - if an unsupported map mode is specified.
    * @throws IOException - if the specified path does not point to an existing file, or if some other I/O error occurs.
    * @throws SecurityException - If a security manager is installed and it denies an unspecified permission
    * required by the implementation.
    */
-  @SuppressWarnings("resource")
   static Memory map(File file, long fileOffsetBytes, long capacityBytes, ResourceScope scope, ByteOrder byteOrder)
-      throws IllegalArgumentException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
-      IOException, SecurityException {
-    Objects.requireNonNull(file, "File must be non-null.");
-    Objects.requireNonNull(byteOrder, "ByteOrder must be non-null.");
-    Objects.requireNonNull(scope, "ResourceScope must be non-null.");
-    if (!file.canRead()) { throw new IllegalArgumentException("File must be readable."); }
+      throws IllegalArgumentException, IllegalStateException, IOException, SecurityException {
     return BaseWritableMemoryImpl.wrapMap(file, fileOffsetBytes, capacityBytes, scope, true, byteOrder);
   }
 
@@ -198,7 +183,6 @@ public interface Memory extends BaseState {
    * @return a new <i>Memory</i> for read operations
    */
   static Memory wrap(byte[] array) {
-    Objects.requireNonNull(array, "array must be non-null");
     return wrap(array, 0, array.length, ByteOrder.nativeOrder());
   }
 
@@ -221,7 +205,6 @@ public interface Memory extends BaseState {
    * @return a new <i>Memory</i> for read operations
    */
   static Memory wrap(byte[] array, int offsetBytes, int lengthBytes, ByteOrder byteOrder) {
-    Objects.requireNonNull(array, "array must be non-null");
     final MemorySegment slice = MemorySegment.ofArray(array).asSlice(offsetBytes, lengthBytes).asReadOnly();
     return BaseWritableMemoryImpl.wrapSegmentAsArray(slice, byteOrder, null);
   }
@@ -232,9 +215,8 @@ public interface Memory extends BaseState {
    * @return a new <i>Memory</i> for read operations
    */
   static Memory wrap(char[] array) {
-    Objects.requireNonNull(array, "array must be non-null");
-    final MemorySegment slice = MemorySegment.ofArray(array).asReadOnly();
-    return BaseWritableMemoryImpl.wrapSegmentAsArray(slice, ByteOrder.nativeOrder(), null);
+    final MemorySegment seg = MemorySegment.ofArray(array).asReadOnly();
+    return BaseWritableMemoryImpl.wrapSegmentAsArray(seg, ByteOrder.nativeOrder(), null);
   }
 
   /**
@@ -243,9 +225,8 @@ public interface Memory extends BaseState {
    * @return a new <i>Memory</i> for read operations
    */
   static Memory wrap(short[] array) {
-    Objects.requireNonNull(array, "arr must be non-null");
-    final MemorySegment slice = MemorySegment.ofArray(array).asReadOnly();
-    return BaseWritableMemoryImpl.wrapSegmentAsArray(slice, ByteOrder.nativeOrder(), null);
+    final MemorySegment seg = MemorySegment.ofArray(array).asReadOnly();
+    return BaseWritableMemoryImpl.wrapSegmentAsArray(seg, ByteOrder.nativeOrder(), null);
   }
 
   /**
@@ -254,9 +235,8 @@ public interface Memory extends BaseState {
    * @return a new <i>Memory</i> for read operations
    */
   static Memory wrap(int[] array) {
-    Objects.requireNonNull(array, "arr must be non-null");
-    final MemorySegment slice = MemorySegment.ofArray(array).asReadOnly();
-    return BaseWritableMemoryImpl.wrapSegmentAsArray(slice, ByteOrder.nativeOrder(), null);
+    final MemorySegment seg = MemorySegment.ofArray(array).asReadOnly();
+    return BaseWritableMemoryImpl.wrapSegmentAsArray(seg, ByteOrder.nativeOrder(), null);
   }
 
   /**
@@ -265,9 +245,8 @@ public interface Memory extends BaseState {
    * @return a new <i>Memory</i> for read operations
    */
   static Memory wrap(long[] array) {
-    Objects.requireNonNull(array, "arr must be non-null");
-    final MemorySegment slice = MemorySegment.ofArray(array).asReadOnly();
-    return BaseWritableMemoryImpl.wrapSegmentAsArray(slice, ByteOrder.nativeOrder(), null);
+    final MemorySegment seg = MemorySegment.ofArray(array).asReadOnly();
+    return BaseWritableMemoryImpl.wrapSegmentAsArray(seg, ByteOrder.nativeOrder(), null);
   }
 
   /**
@@ -276,9 +255,8 @@ public interface Memory extends BaseState {
    * @return a new <i>Memory</i> for read operations
    */
   static Memory wrap(float[] array) {
-    Objects.requireNonNull(array, "arr must be non-null");
-    final MemorySegment slice = MemorySegment.ofArray(array).asReadOnly();
-    return BaseWritableMemoryImpl.wrapSegmentAsArray(slice, ByteOrder.nativeOrder(), null);
+    final MemorySegment seg = MemorySegment.ofArray(array).asReadOnly();
+    return BaseWritableMemoryImpl.wrapSegmentAsArray(seg, ByteOrder.nativeOrder(), null);
   }
 
   /**
@@ -287,9 +265,8 @@ public interface Memory extends BaseState {
    * @return a new <i>Memory</i> for read operations
    */
   static Memory wrap(double[] array) {
-    Objects.requireNonNull(array, "arr must be non-null");
-    final MemorySegment slice = MemorySegment.ofArray(array).asReadOnly();
-    return BaseWritableMemoryImpl.wrapSegmentAsArray(slice, ByteOrder.nativeOrder(), null);
+    final MemorySegment seg = MemorySegment.ofArray(array).asReadOnly();
+    return BaseWritableMemoryImpl.wrapSegmentAsArray(seg, ByteOrder.nativeOrder(), null);
   }
   //END OF CONSTRUCTOR-TYPE METHODS
 
diff --git a/src/main/java/org/apache/datasketches/memory/MemoryException.java b/src/main/java/org/apache/datasketches/memory/MemoryException.java
deleted file mode 100644
index 6b3663c..0000000
--- a/src/main/java/org/apache/datasketches/memory/MemoryException.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.datasketches.memory;
-
-/**
- * Specific RuntimeExceptions for the datasketches-memory component.
- *
- * @author Lee Rhodes
- *
- */
-public class MemoryException extends RuntimeException {
-  private static final long serialVersionUID = 1L;
-
-  /**
-   * Constructs a new runtime exception with the specified detail message. The cause is not
-   * initialized, and may subsequently be initialized by a call to
-   * Throwable.initCause(java.lang.Throwable).
-   *
-   * @param message the detail message. The detail message is saved for later retrieval by the
-   * Throwable.getMessage() method.
-   */
-  public MemoryException(final String message) {
-    super(message);
-  }
-}
diff --git a/src/main/java/org/apache/datasketches/memory/ReadOnlyException.java b/src/main/java/org/apache/datasketches/memory/ReadOnlyException.java
deleted file mode 100644
index 3e14795..0000000
--- a/src/main/java/org/apache/datasketches/memory/ReadOnlyException.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.datasketches.memory;
-
-/**
- * The exception thrown when attempting to write into a read-only Resource.
- *
- * @author Praveenkumar Venkatesan
- */
-public class ReadOnlyException extends MemoryException {
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * Read Only Exception
-     * @param message the error message
-     */
-    public ReadOnlyException(final String message) {
-      super(message);
-    }
-}
-
diff --git a/src/main/java/org/apache/datasketches/memory/WritableBuffer.java b/src/main/java/org/apache/datasketches/memory/WritableBuffer.java
index a87b31e..e2df72d 100644
--- a/src/main/java/org/apache/datasketches/memory/WritableBuffer.java
+++ b/src/main/java/org/apache/datasketches/memory/WritableBuffer.java
@@ -22,7 +22,6 @@ package org.apache.datasketches.memory;
 
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
-import java.util.Objects;
 
 import org.apache.datasketches.memory.internal.BaseWritableBufferImpl;
 
@@ -60,12 +59,9 @@ public interface WritableBuffer extends Buffer {
    * @param byteBuffer the given ByteBuffer. It must be non-null and writable.
    * @param byteOrder the byte order to be used.  It must be non-null.
    * @return a new <i>WritableBuffer</i> for write operations on the given <i>ByteBuffer</i>.
-   * @throws ReadOnlyException if ByteBuffer is not writable
+   * @throws IllegalArgumentException if ByteBuffer is not writable
    */
   static WritableBuffer writableWrap(ByteBuffer byteBuffer, ByteOrder byteOrder) {
-    Objects.requireNonNull(byteBuffer, "ByteBuffer must not be null");
-    Objects.requireNonNull(byteOrder, "ByteOrder must not be null");
-    if (byteBuffer.isReadOnly()) { throw new ReadOnlyException("ByteBuffer must be writable."); }
     return BaseWritableBufferImpl.wrapByteBuffer(byteBuffer, false, byteOrder);
   }
 
diff --git a/src/main/java/org/apache/datasketches/memory/WritableMemory.java b/src/main/java/org/apache/datasketches/memory/WritableMemory.java
index 1e47296..4fe3895 100644
--- a/src/main/java/org/apache/datasketches/memory/WritableMemory.java
+++ b/src/main/java/org/apache/datasketches/memory/WritableMemory.java
@@ -23,8 +23,6 @@ import java.io.File;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
-import java.nio.file.InvalidPathException;
-import java.util.Objects;
 
 import org.apache.datasketches.memory.internal.BaseWritableMemoryImpl;
 
@@ -61,14 +59,10 @@ public interface WritableMemory extends Memory {
    * @param byteBuffer the given <i>ByteBuffer</i>. It must be non-null and writable.
    * @param byteOrder the byte order to be used. It must be non-null.
    * @return a new <i>WritableMemory</i> for write operations on the given <i>ByteBuffer</i>.
-   * @throws ReadOnlyException if ByteBuffer is not writable.
+   * @throws IllegalArgumentException if ByteBuffer is not writable.
    */
   static WritableMemory writableWrap(ByteBuffer byteBuffer, ByteOrder byteOrder) {
-    Objects.requireNonNull(byteBuffer, "ByteBuffer must not be null");
-    Objects.requireNonNull(byteOrder, "ByteOrder must not be null");
-    if (byteBuffer.isReadOnly()) { throw new ReadOnlyException("ByteBuffer must be writable."); }
-    final ByteBuffer byteBuf = byteBuffer.position(0).limit(byteBuffer.capacity());
-    return BaseWritableMemoryImpl.wrapByteBuffer(byteBuf, false, byteOrder);
+    return BaseWritableMemoryImpl.wrapByteBuffer(byteBuffer, false, byteOrder);
   }
 
   //Duplicates make no sense here
@@ -82,18 +76,16 @@ public interface WritableMemory extends Memory {
    * @param file the given file to map. It must be non-null with a non-negative length and writable.
    * @param scope the give Resource Scope. It must be non-null.
    * @return mapped WritableMemory
-   * @throws ReadOnlyException -- if file is not writable.
-   * @throws InvalidPathException for invalid path
+   * @throws IllegalArgumentException -- if file is not readable.
+   * @throws IllegalArgumentException -- if file is not writable.
    * @throws IllegalStateException - if scope has been already closed, or if access occurs from a thread other
    * than the thread owning scope.
-   * @throws UnsupportedOperationException - if an unsupported map mode is specified.
    * @throws IOException - if the specified path does not point to an existing file, or if some other I/O error occurs.
    * @throws SecurityException - If a security manager is installed and it denies an unspecified permission
    * required by the implementation.
    */
   static WritableMemory writableMap(File file, ResourceScope scope)
-      throws ReadOnlyException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
-      IOException, SecurityException {
+      throws IllegalArgumentException, IllegalStateException, IOException, SecurityException {
     return writableMap(file, 0, file.length(), scope, ByteOrder.nativeOrder());
   }
 
@@ -105,24 +97,16 @@ public interface WritableMemory extends Memory {
    * @param scope the give Resource Scope. It must be non-null.
    * @param byteOrder the byte order to be used.  It must be non-null.
    * @return mapped WritableMemory.
-   * @throws ReadOnlyException -- if file is not writable.
-   * @throws InvalidPathException for invalid path
+   * @throws IllegalArgumentException -- if file is not readable or writable.
+   * @throws IllegalArgumentException -- if file is not writable.
    * @throws IllegalStateException - if scope has been already closed, or if access occurs from a thread other
    * than the thread owning scope.
-   * @throws UnsupportedOperationException - if an unsupported map mode is specified.
    * @throws IOException - if the specified path does not point to an existing file, or if some other I/O error occurs.
    * @throws SecurityException - If a security manager is installed and it denies an unspecified permission
    * required by the implementation.
    */
-  @SuppressWarnings("resource")
   static WritableMemory writableMap(File file, long fileOffsetBytes, long capacityBytes, ResourceScope scope,
-      ByteOrder byteOrder)
-          throws ReadOnlyException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
-          IOException, SecurityException {
-    Objects.requireNonNull(file, "File must be non-null.");
-    Objects.requireNonNull(byteOrder, "ByteOrder must be non-null.");
-    Objects.requireNonNull(scope, "ResourceScope must be non-null.");
-    if (!file.canWrite()) { throw new ReadOnlyException("file must be writable."); }
+      ByteOrder byteOrder) throws IllegalArgumentException, IllegalStateException, IOException, SecurityException {
     return BaseWritableMemoryImpl.wrapMap(file, fileOffsetBytes, capacityBytes, scope, false, byteOrder);
   }
 
@@ -167,8 +151,6 @@ public interface WritableMemory extends Memory {
       ResourceScope scope,
       ByteOrder byteOrder,
       MemoryRequestServer memReqSvr) {
-    Objects.requireNonNull(scope, "ResourceScope must be non-null");
-    Objects.requireNonNull(byteOrder, "ByteOrder must be non-null");
     return BaseWritableMemoryImpl.wrapDirect(capacityBytes, alignmentBytes, scope, byteOrder, memReqSvr);
   }
 
@@ -331,8 +313,6 @@ public interface WritableMemory extends Memory {
    */
   static WritableMemory writableWrap(byte[] array, int offsetBytes, int lengthBytes, ByteOrder byteOrder,
       MemoryRequestServer memReqSvr) {
-    Objects.requireNonNull(array, "array must be non-null");
-    Objects.requireNonNull(byteOrder, "byteOrder must be non-null");
     final MemorySegment slice = MemorySegment.ofArray(array).asSlice(offsetBytes, lengthBytes);
     return BaseWritableMemoryImpl.wrapSegmentAsArray(slice, byteOrder, memReqSvr);
   }
@@ -343,7 +323,6 @@ public interface WritableMemory extends Memory {
    * @return a new WritableMemory for write operations on the given primitive array.
    */
   static WritableMemory writableWrap(char[] array) {
-    Objects.requireNonNull(array, "array must be non-null");
     final MemorySegment seg = MemorySegment.ofArray(array);
     return BaseWritableMemoryImpl.wrapSegmentAsArray(seg, ByteOrder.nativeOrder(), null);
   }
@@ -354,7 +333,6 @@ public interface WritableMemory extends Memory {
    * @return a new WritableMemory for write operations on the given primitive array.
    */
   static WritableMemory writableWrap(short[] array) {
-    Objects.requireNonNull(array, "array must be non-null");
     final MemorySegment seg = MemorySegment.ofArray(array);
     return BaseWritableMemoryImpl.wrapSegmentAsArray(seg, ByteOrder.nativeOrder(), null);
   }
@@ -365,7 +343,6 @@ public interface WritableMemory extends Memory {
    * @return a new WritableMemory for write operations on the given primitive array.
    */
   static WritableMemory writableWrap(int[] array) {
-    Objects.requireNonNull(array, "array must be non-null");
     final MemorySegment seg = MemorySegment.ofArray(array);
     return BaseWritableMemoryImpl.wrapSegmentAsArray(seg, ByteOrder.nativeOrder(), null);
   }
@@ -376,7 +353,6 @@ public interface WritableMemory extends Memory {
    * @return a new WritableMemory for write operations on the given primitive array.
    */
   static WritableMemory writableWrap(long[] array) {
-    Objects.requireNonNull(array, "array must be non-null");
     final MemorySegment seg = MemorySegment.ofArray(array);
     return BaseWritableMemoryImpl.wrapSegmentAsArray(seg, ByteOrder.nativeOrder(), null);
   }
@@ -387,7 +363,6 @@ public interface WritableMemory extends Memory {
    * @return a new WritableMemory for write operations on the given primitive array.
    */
   static WritableMemory writableWrap(float[] array) {
-    Objects.requireNonNull(array, "array must be non-null");
     final MemorySegment seg = MemorySegment.ofArray(array);
     return BaseWritableMemoryImpl.wrapSegmentAsArray(seg, ByteOrder.nativeOrder(), null);
   }
@@ -398,7 +373,6 @@ public interface WritableMemory extends Memory {
    * @return a new WritableMemory for write operations on the given primitive array.
    */
   static WritableMemory writableWrap(double[] array) {
-    Objects.requireNonNull(array, "array must be non-null");
     final MemorySegment seg = MemorySegment.ofArray(array);
     return BaseWritableMemoryImpl.wrapSegmentAsArray(seg, ByteOrder.nativeOrder(), null);
   }
diff --git a/src/main/java/org/apache/datasketches/memory/internal/BaseBufferImpl.java b/src/main/java/org/apache/datasketches/memory/internal/BaseBufferImpl.java
index 4166ed6..5d50d7c 100644
--- a/src/main/java/org/apache/datasketches/memory/internal/BaseBufferImpl.java
+++ b/src/main/java/org/apache/datasketches/memory/internal/BaseBufferImpl.java
@@ -25,7 +25,8 @@ import org.apache.datasketches.memory.MemoryRequestServer;
 import jdk.incubator.foreign.MemorySegment;
 
 /**
- * A new positional API. This is different from and simpler than Java BufferImpl positional approach.
+ * This implements the positional API.
+ * This is different from and simpler than Java BufferImpl positional approach.
  * <ul><li>All based on longs instead of ints.</li>
  * <li>Eliminated "mark". Rarely used and confusing with its silent side effects.</li>
  * <li>The invariants are {@code 0 <= start <= position <= end <= capacity}.</li>
@@ -41,7 +42,7 @@ import jdk.incubator.foreign.MemorySegment;
  *
  * @author Lee Rhodes
  */
-public abstract class BaseBufferImpl extends BaseStateImpl implements BaseBuffer {
+abstract class BaseBufferImpl extends BaseStateImpl implements BaseBuffer {
   private long capacity;
   private long start = 0;
   private long pos = 0;
diff --git a/src/main/java/org/apache/datasketches/memory/internal/BaseStateImpl.java b/src/main/java/org/apache/datasketches/memory/internal/BaseStateImpl.java
index 8783e68..3901ab0 100644
--- a/src/main/java/org/apache/datasketches/memory/internal/BaseStateImpl.java
+++ b/src/main/java/org/apache/datasketches/memory/internal/BaseStateImpl.java
@@ -41,40 +41,40 @@ import jdk.incubator.foreign.ResourceScope;
  * @author Lee Rhodes
  */
 @SuppressWarnings("restriction")
-public abstract class BaseStateImpl implements BaseState {
-  public static final String JDK; //must be at least "1.8"
-  public static final int JDK_MAJOR; //8, 11, 12, etc
-
-  public static final int BOOLEAN_SHIFT    = 0;
-  public static final int BYTE_SHIFT       = 0;
-  public static final long SHORT_SHIFT     = 1;
-  public static final long CHAR_SHIFT      = 1;
-  public static final long INT_SHIFT       = 2;
-  public static final long LONG_SHIFT      = 3;
-  public static final long FLOAT_SHIFT     = 2;
-  public static final long DOUBLE_SHIFT    = 3;
+abstract class BaseStateImpl implements BaseState {
+  static final String JDK; //must be at least "1.8"
+  static final int JDK_MAJOR; //8, 11, 12, etc
+
+  static final int BOOLEAN_SHIFT    = 0;
+  static final int BYTE_SHIFT       = 0;
+  static final long SHORT_SHIFT     = 1;
+  static final long CHAR_SHIFT      = 1;
+  static final long INT_SHIFT       = 2;
+  static final long LONG_SHIFT      = 3;
+  static final long FLOAT_SHIFT     = 2;
+  static final long DOUBLE_SHIFT    = 3;
 
   //class type IDs.
   // 0000 0XXX
-  public static final int READONLY  = 1;
-  public static final int REGION    = 1 << 1;
-  public static final int DUPLICATE = 1 << 2; //for Buffer only
+  static final int READONLY  = 1;
+  static final int REGION    = 1 << 1;
+  static final int DUPLICATE = 1 << 2; //for Buffer only
 
   // 000X X000
-  public static final int HEAP   = 0;
-  public static final int DIRECT = 1 << 3;
-  public static final int MAP    = 1 << 4; //Map is always Direct also
+  static final int HEAP   = 0;
+  static final int DIRECT = 1 << 3;
+  static final int MAP    = 1 << 4; //Map is always Direct also
 
   // 00X0 0000
-  public static final int NATIVE    = 0;
-  public static final int NONNATIVE = 1 << 5;
+  static final int NATIVE    = 0;
+  static final int NONNATIVE = 1 << 5;
 
   // 0X00 0000
-  public static final int MEMORY = 0;
-  public  static final int BUFFER = 1 << 6;
+  static final int MEMORY = 0;
+   static final int BUFFER = 1 << 6;
 
   // X000 0000
-  public static final int BYTEBUF = 1 << 7;
+  static final int BYTEBUF = 1 << 7;
 
   static {
     final String jdkVer = System.getProperty("java.version");
@@ -88,7 +88,7 @@ public abstract class BaseStateImpl implements BaseState {
 
   MemoryRequestServer memReqSvr;
 
-  public BaseStateImpl(final MemorySegment seg, final int typeId, final MemoryRequestServer memReqSvr) {
+  BaseStateImpl(final MemorySegment seg, final int typeId, final MemoryRequestServer memReqSvr) {
     this.seg = seg;
     this.typeId = typeId;
     this.memReqSvr = memReqSvr;
@@ -103,7 +103,7 @@ public abstract class BaseStateImpl implements BaseState {
    * @param allocSize the allocated size.
    * @throws IllegalArgumentException for exceeding address bounds
    */
-  public static void checkBounds(final long reqOff, final long reqLen, final long allocSize) {
+  static void checkBounds(final long reqOff, final long reqLen, final long allocSize) {
     if ((reqOff | reqLen | (reqOff + reqLen) | (allocSize - (reqOff + reqLen))) < 0) {
       throw new IllegalArgumentException(
           "reqOffset: " + reqOff + ", reqLength: " + reqLen
@@ -111,7 +111,7 @@ public abstract class BaseStateImpl implements BaseState {
     }
   }
 
-  public static void checkJavaVersion(final String jdkVer, final int p0) {
+  static void checkJavaVersion(final String jdkVer, final int p0) {
     if ( p0 != 17 ) {
       throw new IllegalArgumentException(
           "Unsupported JDK Major Version, must be 17; " + jdkVer);
@@ -124,7 +124,7 @@ public abstract class BaseStateImpl implements BaseState {
    * @return first two number groups of the java version string.
    * @throws IllegalArgumentException for an improper Java version string.
    */
-  public static int[] parseJavaVersion(final String jdkVer) {
+  static int[] parseJavaVersion(final String jdkVer) {
     final int p0, p1;
     try {
       String[] parts = jdkVer.trim().split("\\.");//grab only number groups and "."
@@ -143,7 +143,7 @@ public abstract class BaseStateImpl implements BaseState {
    * @param typeId the given typeId
    * @return a human readable string.
    */
-  public static final String typeDecode(final int typeId) {
+  static final String typeDecode(final int typeId) {
     final StringBuilder sb = new StringBuilder();
     final int group1 = typeId & 0x7;
     switch (group1) {
diff --git a/src/main/java/org/apache/datasketches/memory/internal/BaseWritableBufferImpl.java b/src/main/java/org/apache/datasketches/memory/internal/BaseWritableBufferImpl.java
index e8ba9db..c19c192 100644
--- a/src/main/java/org/apache/datasketches/memory/internal/BaseWritableBufferImpl.java
+++ b/src/main/java/org/apache/datasketches/memory/internal/BaseWritableBufferImpl.java
@@ -26,7 +26,6 @@ import java.util.Objects;
 import org.apache.datasketches.memory.Buffer;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.memory.MemoryRequestServer;
-import org.apache.datasketches.memory.ReadOnlyException;
 import org.apache.datasketches.memory.WritableBuffer;
 import org.apache.datasketches.memory.WritableMemory;
 
@@ -69,7 +68,21 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W
       final ByteBuffer byteBuffer,
       final boolean localReadOnly,
       final ByteOrder byteOrder) {
-    final ByteBuffer byteBuf = localReadOnly ? byteBuffer.asReadOnlyBuffer() : byteBuffer.duplicate();
+    Objects.requireNonNull(byteBuffer, "ByteBuffer must not be null");
+    Objects.requireNonNull(byteOrder, "ByteOrder must not be null");
+    final ByteBuffer byteBuf;
+    if (localReadOnly) {
+      if (byteBuffer.isReadOnly()) {
+        byteBuf = byteBuffer.duplicate();
+      } else { //bb writable
+        byteBuf = byteBuffer.asReadOnlyBuffer();
+      }
+    } else { //want writable
+      if (byteBuffer.isReadOnly()) {
+        throw new IllegalArgumentException("ByteBuffer must be writable.");
+      }
+      byteBuf = byteBuffer.duplicate();
+    }
     byteBuf.clear(); //resets position to zero and limit to capacity. Does not clear data.
     final MemorySegment seg = MemorySegment.ofByteBuffer(byteBuf); //from 0 to capacity
     int type = BUFFER | BYTEBUF
@@ -100,7 +113,7 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W
   @Override
   public WritableBuffer writableRegion(final long offsetBytes, final long capacityBytes, final ByteOrder byteOrder) {
     if (this.isReadOnly()) {
-      throw new ReadOnlyException("Cannot create a writable region from a read-only Memory.");
+      throw new IllegalArgumentException("Cannot create a writable region from a read-only Memory.");
     }
     return regionImpl(offsetBytes, capacityBytes, false, byteOrder);
   }
@@ -134,7 +147,7 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W
     return wbuf;
   }
 
-  //DUPLICATES
+  //DUPLICATES, DERIVED
   @Override
   public Buffer duplicate() {
     return duplicateImpl(true, getByteOrder());
@@ -148,7 +161,7 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W
   @Override
   public WritableBuffer writableDuplicate() {
     if (isReadOnly()) {
-      throw new ReadOnlyException("Cannot create a writable duplicate from a read-only Buffer.");
+      throw new IllegalArgumentException("Cannot create a writable duplicate from a read-only Buffer.");
     }
     return duplicateImpl(false, getByteOrder());
   }
@@ -156,7 +169,7 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W
   @Override
   public WritableBuffer writableDuplicate(final ByteOrder byteOrder) {
     if (isReadOnly()) {
-      throw new ReadOnlyException("Cannot create a writable duplicate from a read-only Buffer.");
+      throw new IllegalArgumentException("Cannot create a writable duplicate from a read-only Buffer.");
     }
     return duplicateImpl(false, byteOrder);
   }
@@ -193,7 +206,7 @@ public abstract class BaseWritableBufferImpl extends BaseBufferImpl implements W
   @Override
   public WritableMemory asWritableMemory(final ByteOrder byteOrder) {
     if (isReadOnly()) {
-      throw new ReadOnlyException(
+      throw new IllegalArgumentException(
           "Cannot create a writable Memory from a read-only Buffer.");
     }
     return asWritableMemoryImpl(false, byteOrder);
diff --git a/src/main/java/org/apache/datasketches/memory/internal/BaseWritableMemoryImpl.java b/src/main/java/org/apache/datasketches/memory/internal/BaseWritableMemoryImpl.java
index ae5bb9c..61a5a70 100644
--- a/src/main/java/org/apache/datasketches/memory/internal/BaseWritableMemoryImpl.java
+++ b/src/main/java/org/apache/datasketches/memory/internal/BaseWritableMemoryImpl.java
@@ -28,13 +28,11 @@ import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 import java.nio.channels.FileChannel;
-import java.nio.file.InvalidPathException;
 import java.util.Objects;
 
 import org.apache.datasketches.memory.Buffer;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.memory.MemoryRequestServer;
-import org.apache.datasketches.memory.ReadOnlyException;
 import org.apache.datasketches.memory.WritableBuffer;
 import org.apache.datasketches.memory.WritableMemory;
 
@@ -74,6 +72,7 @@ public abstract class BaseWritableMemoryImpl extends BaseStateImpl implements Wr
       final MemorySegment seg,
       final ByteOrder byteOrder,
       final MemoryRequestServer memReqSvr) {
+    Objects.requireNonNull(byteOrder, "byteOrder must be non-null");
     int type = MEMORY
         | (seg.isReadOnly() ? READONLY : 0);
     if (byteOrder == NON_NATIVE_BYTE_ORDER) {
@@ -89,40 +88,39 @@ public abstract class BaseWritableMemoryImpl extends BaseStateImpl implements Wr
       final ByteBuffer byteBuffer,
       final boolean localReadOnly,
       final ByteOrder byteOrder) {
-    final ByteBuffer byteBuf = localReadOnly ? byteBuffer.asReadOnlyBuffer() : byteBuffer.duplicate();
+    Objects.requireNonNull(byteBuffer, "ByteBuffer must not be null");
+    Objects.requireNonNull(byteOrder, "ByteOrder must not be null");
+    final ByteBuffer byteBuf;
+    if (localReadOnly) {
+      if (byteBuffer.isReadOnly()) {
+        byteBuf = byteBuffer.duplicate();
+      } else { //bb writable
+        byteBuf = byteBuffer.asReadOnlyBuffer();
+      }
+    } else { //want writable
+      if (byteBuffer.isReadOnly()) {
+        throw new IllegalArgumentException("ByteBuffer must be writable.");
+      }
+      byteBuf = byteBuffer.duplicate();
+    }
     byteBuf.clear(); //resets position to zero and limit to capacity. Does not clear data.
     final MemorySegment seg = MemorySegment.ofByteBuffer(byteBuf); //from 0 to capacity
     int type = MEMORY | BYTEBUF
         | (localReadOnly ? READONLY : 0)
         | (seg.isNative() ? DIRECT : 0)
         | (seg.isMapped() ? MAP : 0);
+    final WritableMemory wmem;
     if (byteOrder == NON_NATIVE_BYTE_ORDER) {
       type |= NONNATIVE;
-      return new NonNativeWritableMemoryImpl(seg, type, null);
+      wmem = new NonNativeWritableMemoryImpl(seg, type, null);
+    } else {
+      wmem = new NativeWritableMemoryImpl(seg, type, null);
     }
-    return new NativeWritableMemoryImpl(seg, type, null);
+    return wmem;
   }
 
-  //MAP RESOURCE
+  //MAP FILE RESOURCE
 
-  /**
-   * Maps the specified portion of the given file into Memory for write operations.
-   * This chooses the correct Map leaf node based on the byte order.
-   * @param file the file being wrapped. It must be non-null with length &gt; 0.
-   * @param fileOffsetBytes the position in the given file in bytes. It must not be negative.
-   * @param capacityBytes the size of the mapped Memory. It must be &ge; 0.
-   * @param scope the given ResourceScope. It must be non-null.
-   * @param localReadOnly the requested read-only state
-   * @param byteOrder the byte order to be used.  It must be non-null.
-   * @return mapped WritableMemory.
-   * @throws InvalidPathException for invalid path
-   * @throws IllegalStateException - if scope has been already closed, or if access occurs from a thread other
-   * than the thread owning scope.
-   * @throws UnsupportedOperationException - if an unsupported map mode is specified.
-   * @throws IOException - if the specified path does not point to an existing file, or if some other I/O error occurs.
-   * @throws SecurityException - If a security manager is installed and it denies an unspecified permission
-   * required by the implementation.
-   */
   @SuppressWarnings("resource")
   public static WritableMemory wrapMap(
       final File file,
@@ -131,19 +129,15 @@ public abstract class BaseWritableMemoryImpl extends BaseStateImpl implements Wr
       final ResourceScope scope,
       final boolean localReadOnly,
       final ByteOrder byteOrder)
-          throws InvalidPathException, IllegalStateException, UnsupportedOperationException, IOException,
-          SecurityException {
+          throws IllegalArgumentException, IllegalStateException, IOException, SecurityException {
+    Objects.requireNonNull(file, "File must be non-null.");
+    Objects.requireNonNull(byteOrder, "ByteOrder must be non-null.");
+    Objects.requireNonNull(scope, "ResourceScope must be non-null.");
+    if (!file.canRead()) { throw new IllegalArgumentException("File must be readable."); }
+    if (!localReadOnly && !file.canWrite()) { throw new IllegalArgumentException("File must be writable."); }
     final FileChannel.MapMode mapMode = (localReadOnly) ? READ_ONLY : READ_WRITE;
-    final MemorySegment seg;
-    try {
-      seg = MemorySegment.mapFile(
-          file.toPath(),
-          fileOffsetBytes,
-          capacityBytes,
-          mapMode,
-          scope); }
-    catch (final IllegalArgumentException | IllegalStateException | UnsupportedOperationException
-        | IOException | SecurityException e) { throw e; }
+
+    final MemorySegment seg = MemorySegment.mapFile(file.toPath(), fileOffsetBytes, capacityBytes, mapMode, scope);
     final boolean nativeBOType = byteOrder == ByteOrder.nativeOrder();
     final int type = MEMORY | MAP | DIRECT
         | (localReadOnly ? READONLY : 0)
@@ -173,6 +167,8 @@ public abstract class BaseWritableMemoryImpl extends BaseStateImpl implements Wr
       final ResourceScope scope,
       final ByteOrder byteOrder,
       final MemoryRequestServer memReqSvr) {
+    Objects.requireNonNull(scope, "ResourceScope must be non-null");
+    Objects.requireNonNull(byteOrder, "ByteOrder must be non-null");
     final MemorySegment seg = MemorySegment.allocateNative(
         capacityBytes,
         alignmentBytes,
@@ -195,7 +191,7 @@ public abstract class BaseWritableMemoryImpl extends BaseStateImpl implements Wr
   @Override
   public WritableMemory writableRegion(final long offsetBytes, final long capacityBytes, final ByteOrder byteOrder) {
     if (this.isReadOnly()) {
-      throw new ReadOnlyException("Cannot create a writable region from a read-only Memory.");
+      throw new IllegalArgumentException("Cannot create a writable region from a read-only Memory.");
     }
     return regionImpl(offsetBytes, capacityBytes, false, byteOrder);
   }
@@ -238,7 +234,7 @@ public abstract class BaseWritableMemoryImpl extends BaseStateImpl implements Wr
   @Override
   public WritableBuffer asWritableBuffer(final ByteOrder byteOrder) {
     if (isReadOnly()) {
-      throw new ReadOnlyException(
+      throw new IllegalArgumentException(
           "Cannot create a writable buffer from a read-only Memory.");
     }
     return asWritableBufferImpl(false, byteOrder);
diff --git a/src/main/java/org/apache/datasketches/memory/internal/Util.java b/src/main/java/org/apache/datasketches/memory/internal/Util.java
index 12cfc26..07c0a7a 100644
--- a/src/main/java/org/apache/datasketches/memory/internal/Util.java
+++ b/src/main/java/org/apache/datasketches/memory/internal/Util.java
@@ -32,8 +32,8 @@ import java.util.Objects;
  * @author Lee Rhodes
  */
 @SuppressWarnings("javadoc")
-public final class Util {
-  public static final String LS = System.getProperty("line.separator");
+final class Util {
+  static final String LS = System.getProperty("line.separator");
 
   private Util() { }
 
@@ -43,7 +43,7 @@ public final class Util {
    * @param bitMask defines the bits of interest
    * @return true if all the masked bits of value are zero
    */
-  public static final boolean isAllBitsClear(final long value, final long bitMask) {
+  static final boolean isAllBitsClear(final long value, final long bitMask) {
     return (~value & bitMask) == bitMask;
   }
 
@@ -53,7 +53,7 @@ public final class Util {
    * @param bitMask defines the bits of interest
    * @return true if all the masked bits of value are one
    */
-  public static final boolean isAllBitsSet(final long value, final long bitMask) {
+  static final boolean isAllBitsSet(final long value, final long bitMask) {
     return (value & bitMask) == bitMask;
   }
 
@@ -63,7 +63,7 @@ public final class Util {
    * @param bitMask defines the bits of interest
    * @return true if any the masked bits of value are zero
    */
-  public static final boolean isAnyBitsClear(final long value, final long bitMask) {
+  static final boolean isAnyBitsClear(final long value, final long bitMask) {
     return (~value & bitMask) != 0;
   }
 
@@ -73,7 +73,7 @@ public final class Util {
    * @param bitMask defines the bits of interest
    * @return true if any the masked bits of value are one
    */
-  public static final boolean isAnyBitsSet(final long value, final long bitMask) {
+  static final boolean isAnyBitsSet(final long value, final long bitMask) {
     return (value & bitMask) != 0;
   }
 
@@ -92,7 +92,7 @@ public final class Util {
    * @return the absolute path of the given resource file's shortName.
    * @throws IllegalArgumentException if resource cannot be found
    */
-  public static String getResourcePath(final String shortFileName) {
+  static String getResourcePath(final String shortFileName) {
     Objects.requireNonNull(shortFileName, "input parameter " + shortFileName + " cannot be null.");
     try {
       final URL url = Util.class.getClassLoader().getResource(shortFileName);
@@ -111,7 +111,7 @@ public final class Util {
    * @param shortFileName the last name in the pathname's name sequence.
    * @return the file defined by the given resource file's shortFileName.
    */
-  public static File getResourceFile(final String shortFileName) {
+  static File getResourceFile(final String shortFileName) {
     return new File(getResourcePath(shortFileName));
   }
 
@@ -121,7 +121,7 @@ public final class Util {
    * @return a byte array of the contents of the file defined by the given resource file's shortFileName.
    * @throws IllegalArgumentException if resource cannot be read.
    */
-  public static byte[] getResourceBytes(final String shortFileName) {
+  static byte[] getResourceBytes(final String shortFileName) {
     try {
       return Files.readAllBytes(Paths.get(getResourcePath(shortFileName)));
     } catch (final IOException e) {
diff --git a/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java b/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java
index 0b5c35e..161eb1b 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java
@@ -23,7 +23,7 @@
 
 package org.apache.datasketches.memory.internal;
 
-import static org.apache.datasketches.memory.internal.Util.*;
+import static org.apache.datasketches.memory.internal.Util.getResourceFile;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertTrue;
diff --git a/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMemoryTest.java b/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMemoryTest.java
index ceb6d67..b413797 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMemoryTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMemoryTest.java
@@ -24,7 +24,6 @@ import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertTrue;
 
 import org.apache.datasketches.memory.BaseState;
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
 import org.apache.datasketches.memory.MemoryRequestServer;
 import org.apache.datasketches.memory.WritableMemory;
 import org.testng.annotations.Test;
@@ -32,7 +31,7 @@ import org.testng.annotations.Test;
 import jdk.incubator.foreign.ResourceScope;
 
 public class AllocateDirectMemoryTest {
-  private final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
+  private static final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
 
   @SuppressWarnings("resource")
   @Test
@@ -53,7 +52,7 @@ public class AllocateDirectMemoryTest {
   }
 
   @Test
-  public void checkMemoryRequestServer() {
+  public void checkDefaultMemoryRequestServer() {
     int longs1 = 32;
     int bytes1 = longs1 << 3;
     WritableMemory wmem = null;
@@ -68,10 +67,6 @@ public class AllocateDirectMemoryTest {
 
       int longs2 = 64;
       int bytes2 = longs2 << 3;
-      MemoryRequestServer memReqSvr = wmem.getMemoryRequestServer();
-      if (memReqSvr == null) {
-        memReqSvr = new DefaultMemoryRequestServer();
-      }
       WritableMemory newWmem = memReqSvr.request(wmem, bytes2); //on the heap
       assertFalse(newWmem.isDirect()); //on heap by default
       for (int i = 0; i < longs2; i++) {
diff --git a/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectWritableMapMemoryTest.java b/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectWritableMapMemoryTest.java
index 2d03098..1f33854 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectWritableMapMemoryTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectWritableMapMemoryTest.java
@@ -38,10 +38,8 @@ import java.nio.ByteOrder;
 import java.nio.file.InvalidPathException;
 
 import org.apache.datasketches.memory.BaseState;
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.memory.MemoryRequestServer;
-import org.apache.datasketches.memory.ReadOnlyException;
 import org.apache.datasketches.memory.WritableMemory;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -50,7 +48,7 @@ import jdk.incubator.foreign.ResourceScope;
 
 public class AllocateDirectWritableMapMemoryTest {
   private static final String LS = System.getProperty("line.separator");
-  private static final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
+  private final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
 
   @BeforeClass
   public void setReadOnly() throws IOException {
@@ -59,7 +57,7 @@ public class AllocateDirectWritableMapMemoryTest {
 
   @Test
   public void simpleMap()
-      throws ReadOnlyException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
+      throws IllegalArgumentException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
       IOException, SecurityException {
     File file = getResourceFile("GettysburgAddress.txt");
     Memory mem = null;
@@ -75,7 +73,7 @@ public class AllocateDirectWritableMapMemoryTest {
 
   @Test
   public void copyOffHeapToMemoryMappedFile()
-      throws ReadOnlyException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
+      throws IllegalArgumentException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
       IOException, SecurityException {
     long numBytes = 1L << 10; //small for unit tests.  Make it larger than 2GB if you like.
     long numLongs = numBytes >>> 3;
@@ -110,7 +108,7 @@ public class AllocateDirectWritableMapMemoryTest {
 
   @Test
   public void checkNonNativeFile()
-      throws ReadOnlyException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
+      throws IllegalArgumentException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
       IOException, SecurityException {
     File file = new File("TestFile2.bin");
     if (file.exists()) {
@@ -133,7 +131,7 @@ public class AllocateDirectWritableMapMemoryTest {
   @SuppressWarnings("resource")
   @Test
   public void testMapExceptionNoTWR()
-      throws ReadOnlyException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
+      throws IllegalArgumentException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
       IOException, SecurityException {
     File dummy = createFile("dummy.txt", ""); //zero length
     ResourceScope scope = ResourceScope.newConfinedScope();
@@ -141,9 +139,9 @@ public class AllocateDirectWritableMapMemoryTest {
     scope.close();
   }
 
-  @Test(expectedExceptions = ReadOnlyException.class)
+  @Test(expectedExceptions = IllegalArgumentException.class)
   public void simpleMap2()
-      throws ReadOnlyException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
+      throws IllegalArgumentException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
       IOException, SecurityException {
     File file = getResourceFile("GettysburgAddress.txt");
     assertTrue(file.canRead());
@@ -155,9 +153,9 @@ public class AllocateDirectWritableMapMemoryTest {
     }
   }
 
-  @Test(expectedExceptions = ReadOnlyException.class)
+  @Test(expectedExceptions = IllegalArgumentException.class)
   public void checkReadException()
-      throws ReadOnlyException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
+      throws IllegalArgumentException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
       IOException, SecurityException {
     File file = getResourceFile("GettysburgAddress.txt");
     WritableMemory wmem = null;
@@ -170,7 +168,7 @@ public class AllocateDirectWritableMapMemoryTest {
 
   @Test
   public void testForce()
-      throws ReadOnlyException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
+      throws IllegalArgumentException, InvalidPathException, IllegalStateException, UnsupportedOperationException,
       IOException, SecurityException {
     String origStr = "Corectng spellng mistks";
     File origFile = createFile("force_original.txt", origStr); //23
diff --git a/src/test/java/org/apache/datasketches/memory/internal/BaseBufferTest.java b/src/test/java/org/apache/datasketches/memory/internal/BaseBufferTest.java
index 7c340ba..73cd01f 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/BaseBufferTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/BaseBufferTest.java
@@ -21,8 +21,8 @@ package org.apache.datasketches.memory.internal;
 
 import static org.testng.Assert.fail;
 
+import org.apache.datasketches.memory.BaseState;
 import org.apache.datasketches.memory.Buffer;
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.memory.MemoryRequestServer;
 import org.apache.datasketches.memory.WritableMemory;
@@ -34,7 +34,7 @@ import jdk.incubator.foreign.ResourceScope;
  * @author Lee Rhodes
  */
 public class BaseBufferTest {
-  private final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
+  private static final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
 
   @Test
   public void checkLimits() {
diff --git a/src/test/java/org/apache/datasketches/memory/internal/BufferInvariantsTest.java b/src/test/java/org/apache/datasketches/memory/internal/BufferInvariantsTest.java
index e90cd29..4b233be 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/BufferInvariantsTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/BufferInvariantsTest.java
@@ -24,8 +24,8 @@ import static org.testng.Assert.fail;
 
 import java.nio.ByteBuffer;
 
+import org.apache.datasketches.memory.BaseState;
 import org.apache.datasketches.memory.Buffer;
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
 import org.apache.datasketches.memory.MemoryRequestServer;
 import org.apache.datasketches.memory.WritableBuffer;
 import org.apache.datasketches.memory.WritableMemory;
@@ -37,7 +37,7 @@ import jdk.incubator.foreign.ResourceScope;
  * @author Lee Rhodes
  */
 public class BufferInvariantsTest {
-  private static final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
+  private static final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
 
   @Test
   public void testRegion() {
diff --git a/src/test/java/org/apache/datasketches/memory/internal/BufferTest.java b/src/test/java/org/apache/datasketches/memory/internal/BufferTest.java
index 084e352..c9e58f0 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/BufferTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/BufferTest.java
@@ -27,7 +27,6 @@ import java.util.List;
 
 import org.apache.datasketches.memory.BaseState;
 import org.apache.datasketches.memory.Buffer;
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.memory.MemoryRequestServer;
 import org.apache.datasketches.memory.WritableBuffer;
@@ -38,8 +37,7 @@ import org.testng.collections.Lists;
 import jdk.incubator.foreign.ResourceScope;
 
 public class BufferTest {
-  private final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
-
+  private final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
   @Test
   public void checkDirectRoundTrip() throws Exception {
     int n = 1024; //longs
diff --git a/src/test/java/org/apache/datasketches/memory/internal/CommonBufferTest.java b/src/test/java/org/apache/datasketches/memory/internal/CommonBufferTest.java
index 4b15890..8d3b519 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/CommonBufferTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/CommonBufferTest.java
@@ -21,7 +21,7 @@ package org.apache.datasketches.memory.internal;
 
 import static org.testng.Assert.assertEquals;
 
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
+import org.apache.datasketches.memory.BaseState;
 import org.apache.datasketches.memory.MemoryRequestServer;
 import org.apache.datasketches.memory.WritableBuffer;
 import org.apache.datasketches.memory.WritableMemory;
@@ -30,8 +30,7 @@ import org.testng.annotations.Test;
 import jdk.incubator.foreign.ResourceScope;
 
 public class CommonBufferTest {
-  private final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
-
+  private final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
   @Test
   public void checkSetGet() throws Exception {
     int memCapacity = 60; //must be at least 60
diff --git a/src/test/java/org/apache/datasketches/memory/internal/CommonMemoryTest.java b/src/test/java/org/apache/datasketches/memory/internal/CommonMemoryTest.java
index c2f58f6..9245a59 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/CommonMemoryTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/CommonMemoryTest.java
@@ -27,7 +27,7 @@ import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertTrue;
 
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
+import org.apache.datasketches.memory.BaseState;
 import org.apache.datasketches.memory.MemoryRequestServer;
 import org.apache.datasketches.memory.WritableMemory;
 import org.testng.annotations.Test;
@@ -35,8 +35,7 @@ import org.testng.annotations.Test;
 import jdk.incubator.foreign.ResourceScope;
 
 public class CommonMemoryTest {
-  private final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
-
+  private final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
   @Test
   public void checkSetGet() throws Exception {
     int memCapacity = 16; //must be at least 8
diff --git a/src/test/java/org/apache/datasketches/memory/internal/CopyMemoryOverlapTest.java b/src/test/java/org/apache/datasketches/memory/internal/CopyMemoryOverlapTest.java
index d7ec28b..8a4bdc0 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/CopyMemoryOverlapTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/CopyMemoryOverlapTest.java
@@ -21,7 +21,7 @@ package org.apache.datasketches.memory.internal;
 
 import static org.testng.Assert.assertEquals;
 
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
+import org.apache.datasketches.memory.BaseState;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.memory.MemoryRequestServer;
 import org.apache.datasketches.memory.WritableMemory;
@@ -33,6 +33,7 @@ import jdk.incubator.foreign.ResourceScope;
  * @author Lee Rhodes
  */
 public class CopyMemoryOverlapTest {
+  private static final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
 
   @Test
   public void checkOverlapUsingMemory() throws Exception {
@@ -67,7 +68,6 @@ public class CopyMemoryOverlapTest {
   }
 
   private static final void copyUsingDirectMemory(long copyLongs, double overlap, boolean copyUp) throws Exception {
-    final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
     println("Copy Using Direct Memory");
     long overlapLongs = (long) (overlap * copyLongs);
     long backingLongs = (2 * copyLongs) - overlapLongs;
@@ -108,7 +108,6 @@ public class CopyMemoryOverlapTest {
   }
 
   private static final void copyUsingDirectRegions(long copyLongs, double overlap, boolean copyUp) throws Exception {
-    final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
     println("Copy Using Direct Memory");
     long overlapLongs = (long) (overlap * copyLongs);
     long backingLongs = (2 * copyLongs) - overlapLongs;
diff --git a/src/test/java/org/apache/datasketches/memory/internal/CopyMemoryTest.java b/src/test/java/org/apache/datasketches/memory/internal/CopyMemoryTest.java
index 6ca469f..f0af8c4 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/CopyMemoryTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/CopyMemoryTest.java
@@ -23,7 +23,7 @@ import static org.testng.Assert.assertEquals;
 
 import java.util.concurrent.ThreadLocalRandom;
 
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
+import org.apache.datasketches.memory.BaseState;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.memory.MemoryRequestServer;
 import org.apache.datasketches.memory.WritableMemory;
@@ -33,6 +33,7 @@ import org.testng.annotations.Test;
 import jdk.incubator.foreign.ResourceScope;
 
 public class CopyMemoryTest {
+  private static final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
 
   @Test
   public void heapWSource() {
@@ -150,7 +151,6 @@ public class CopyMemoryTest {
 
   @SuppressWarnings("resource")
   private static WritableMemory genWmem(int longs, boolean empty) {
-    final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
     WritableMemory wmem = WritableMemory.allocateDirect(longs << 3, ResourceScope.newConfinedScope(), memReqSvr);
     if (empty) {
       wmem.clear();
diff --git a/src/test/java/org/apache/datasketches/memory/internal/DruidIssue11544Test.java b/src/test/java/org/apache/datasketches/memory/internal/DruidIssue11544Test.java
index 43dafac..a9fce8a 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/DruidIssue11544Test.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/DruidIssue11544Test.java
@@ -21,13 +21,12 @@ package org.apache.datasketches.memory.internal;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
+import org.apache.datasketches.memory.BaseState;
 import org.apache.datasketches.memory.MemoryRequestServer;
 import org.apache.datasketches.memory.WritableMemory;
 import org.testng.annotations.Test;
@@ -49,6 +48,7 @@ import org.testng.annotations.Test;
  *
  */
 public class DruidIssue11544Test {
+  private static final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
 
   @Test
   public void withByteBuffer() {
@@ -63,15 +63,9 @@ public class DruidIssue11544Test {
     WritableMemory mem1 = WritableMemory.writableWrap(bb);
     assertTrue(mem1.isDirect()); //confirm mem1 is off-heap
 
-    MemoryRequestServer svr = mem1.getMemoryRequestServer();
-    if (svr == null) {
-      svr = new DefaultMemoryRequestServer();
-    }
-    assertNotNull(svr);
-
     //Request Bigger Memory
     int size2 = size1 * 2;
-    WritableMemory mem2 = svr.request(mem1, size2);
+    WritableMemory mem2 = memReqSvr.request(mem1, size2);
 
     //Confirm that mem2 is on the heap (the default) and 2X size1
     assertFalse(mem2.isDirect());
@@ -82,13 +76,13 @@ public class DruidIssue11544Test {
 
     //Prepare to request deallocation
     //In the DefaultMemoryRequestServer, this is a no-op, so nothing is actually deallocated.
-    svr.requestClose(mem1, mem2);
+    memReqSvr.requestClose(mem1, mem2);
     assertTrue(mem1.isAlive());
     assertTrue(mem2.isAlive());
 
     //Now we are on the heap and need to grow again:
     int size3 = size2 * 2;
-    WritableMemory mem3 = svr.request(mem2, size3);
+    WritableMemory mem3 = memReqSvr.request(mem2, size3);
 
     //Confirm that mem3 is still on the heap and 2X of size2
     assertFalse(mem3.isDirect());
@@ -99,7 +93,7 @@ public class DruidIssue11544Test {
 
     //Prepare to request deallocation
 
-    svr.requestClose(mem2, mem3); //No-op
+    memReqSvr.requestClose(mem2, mem3); //No-op
     assertTrue(mem2.isAlive());
     assertTrue(mem3.isAlive());
   }
diff --git a/src/test/java/org/apache/datasketches/memory/internal/IgnoredArrayOverflowTest.java b/src/test/java/org/apache/datasketches/memory/internal/IgnoredArrayOverflowTest.java
index 9d2bcf8..c9d3b4b 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/IgnoredArrayOverflowTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/IgnoredArrayOverflowTest.java
@@ -21,7 +21,7 @@ package org.apache.datasketches.memory.internal;
 
 import java.nio.ByteOrder;
 
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
+import org.apache.datasketches.memory.BaseState;
 import org.apache.datasketches.memory.MemoryRequestServer;
 import org.apache.datasketches.memory.WritableMemory;
 import org.testng.annotations.AfterClass;
@@ -31,7 +31,7 @@ import org.testng.annotations.Test;
 import jdk.incubator.foreign.ResourceScope;
 
 public class IgnoredArrayOverflowTest {
-  private final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
+  private static final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
 
   private WritableMemory memory;
   private static final long MAX_SIZE = (1L << 10); // use 1L << 31 to test int overrange
diff --git a/src/test/java/org/apache/datasketches/memory/internal/MemoryTest.java b/src/test/java/org/apache/datasketches/memory/internal/MemoryTest.java
index 9e287a2..85e3663 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/MemoryTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/MemoryTest.java
@@ -35,7 +35,6 @@ import java.nio.ByteOrder;
 import java.util.List;
 
 import org.apache.datasketches.memory.BaseState;
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.memory.MemoryRequestServer;
 import org.apache.datasketches.memory.WritableBuffer;
@@ -48,7 +47,7 @@ import jdk.incubator.foreign.ResourceScope;
 
 public class MemoryTest {
   private static final String LS = System.getProperty("line.separator");
-  private final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
+  private static final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
 
 
   @BeforeClass
diff --git a/src/test/java/org/apache/datasketches/memory/internal/MemoryWriteToTest.java b/src/test/java/org/apache/datasketches/memory/internal/MemoryWriteToTest.java
index c74a862..f995154 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/MemoryWriteToTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/MemoryWriteToTest.java
@@ -26,7 +26,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.concurrent.ThreadLocalRandom;
 
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
+import org.apache.datasketches.memory.BaseState;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.memory.MemoryRequestServer;
 import org.apache.datasketches.memory.WritableMemory;
@@ -35,7 +35,7 @@ import org.testng.annotations.Test;
 import jdk.incubator.foreign.ResourceScope;
 
 public class MemoryWriteToTest {
-  private final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
+  private static final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
 
   @Test
   public void testOnHeapBytes() throws IOException {
diff --git a/src/test/java/org/apache/datasketches/memory/internal/MurmurHash3v3Test.java b/src/test/java/org/apache/datasketches/memory/internal/MurmurHash3v3Test.java
index f2c0dd1..3d4ce07 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/MurmurHash3v3Test.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/MurmurHash3v3Test.java
@@ -23,7 +23,7 @@ import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.datasketches.memory.MurmurHash3.*;
 import static org.testng.Assert.fail;
 
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
+import org.apache.datasketches.memory.BaseState;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.memory.MemoryRequestServer;
 import org.apache.datasketches.memory.WritableMemory;
@@ -40,7 +40,7 @@ import jdk.incubator.foreign.ResourceScope;
  * @author Lee Rhodes
  */
 public class MurmurHash3v3Test {
-  private final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
+  private static final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
 
   @Test
   public void checkByteArrRemainderGT8() { //byte[], remainder > 8
diff --git a/src/test/java/org/apache/datasketches/memory/internal/NativeWritableBufferImplTest.java b/src/test/java/org/apache/datasketches/memory/internal/NativeWritableBufferImplTest.java
index 272b4ec..42ee82d 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/NativeWritableBufferImplTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/NativeWritableBufferImplTest.java
@@ -29,10 +29,8 @@ import java.nio.ByteOrder;
 
 import org.apache.datasketches.memory.BaseState;
 import org.apache.datasketches.memory.Buffer;
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.memory.MemoryRequestServer;
-import org.apache.datasketches.memory.ReadOnlyException;
 import org.apache.datasketches.memory.WritableBuffer;
 import org.apache.datasketches.memory.WritableMemory;
 import org.testng.Assert;
@@ -41,7 +39,7 @@ import org.testng.annotations.Test;
 import jdk.incubator.foreign.ResourceScope;
 
 public class NativeWritableBufferImplTest {
-  private final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
+  private static final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
 
   //Simple Native direct
 
@@ -263,7 +261,7 @@ public class NativeWritableBufferImplTest {
     //println(mem.toHexString("HeapBB", 0, memCapacity));
   }
 
-  @Test(expectedExceptions = ReadOnlyException.class)
+  @Test(expectedExceptions = IllegalArgumentException.class)
   public void checkWrapWithBBReadonly2() {
     int memCapacity = 64;
     ByteBuffer byteBuf = ByteBuffer.allocate(memCapacity);
@@ -296,7 +294,7 @@ public class NativeWritableBufferImplTest {
     //println(mem.toHexString("HeapBB", 0, memCapacity));
   }
 
-  @Test(expectedExceptions = ReadOnlyException.class)
+  @Test(expectedExceptions = IllegalArgumentException.class)
   public void checkWrapWithDirectBBReadonlyPut() {
     int memCapacity = 64;
     ByteBuffer byteBuf = ByteBuffer.allocateDirect(memCapacity);
@@ -479,7 +477,7 @@ public class NativeWritableBufferImplTest {
       wbuf = (WritableBuffer) buf;
       wmem = wbuf.asWritableMemory();
       Assert.fail();
-    } catch (ReadOnlyException expected) {
+    } catch (IllegalArgumentException expected) {
       // expected
     }
   }
@@ -497,7 +495,7 @@ public class NativeWritableBufferImplTest {
       @SuppressWarnings("unused")
       WritableBuffer wdup2 = wbuf.writableDuplicate();
       Assert.fail();
-    } catch (ReadOnlyException expected) {
+    } catch (IllegalArgumentException expected) {
       // ignore
     }
   }
@@ -515,7 +513,7 @@ public class NativeWritableBufferImplTest {
       @SuppressWarnings("unused")
       WritableBuffer wreg2 = wbuf.writableRegion();
       Assert.fail();
-    } catch (ReadOnlyException expected) {
+    } catch (IllegalArgumentException expected) {
       // ignore
     }
   }
@@ -533,7 +531,7 @@ public class NativeWritableBufferImplTest {
       @SuppressWarnings("unused")
       WritableBuffer wreg2 = wbuf.writableRegion(0, 1, wbuf.getByteOrder());
       Assert.fail();
-    } catch (ReadOnlyException expected) {
+    } catch (IllegalArgumentException expected) {
       // ignore
     }
   }
diff --git a/src/test/java/org/apache/datasketches/memory/internal/NativeWritableMemoryImplTest.java b/src/test/java/org/apache/datasketches/memory/internal/NativeWritableMemoryImplTest.java
index 9dd98f1..e2adeff 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/NativeWritableMemoryImplTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/NativeWritableMemoryImplTest.java
@@ -29,10 +29,8 @@ import java.nio.ByteOrder;
 
 import org.apache.datasketches.memory.BaseState;
 import org.apache.datasketches.memory.Buffer;
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.memory.MemoryRequestServer;
-import org.apache.datasketches.memory.ReadOnlyException;
 import org.apache.datasketches.memory.WritableBuffer;
 import org.apache.datasketches.memory.WritableMemory;
 import org.testng.annotations.Test;
@@ -40,7 +38,7 @@ import org.testng.annotations.Test;
 import jdk.incubator.foreign.ResourceScope;
 
 public class NativeWritableMemoryImplTest {
-  private final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
+  private static final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
 
   //Simple Native direct
 
@@ -454,7 +452,7 @@ public class NativeWritableMemoryImplTest {
     //println(mem.toHexString("HeapBB", 0, memCapacity));
   }
 
-  @Test(expectedExceptions = ReadOnlyException.class)
+  @Test(expectedExceptions = IllegalArgumentException.class)
   public void checkWrapWithBBReadonly2() {
     int memCapacity = 64;
     ByteBuffer byteBuf = ByteBuffer.allocate(memCapacity);
@@ -485,7 +483,7 @@ public class NativeWritableMemoryImplTest {
     //println(mem.toHexString("HeapBB", 0, memCapacity));
   }
 
-  @Test(expectedExceptions = ReadOnlyException.class)
+  @Test(expectedExceptions = IllegalArgumentException.class)
   public void checkWrapWithDirectBBReadonlyPut() {
     int memCapacity = 64;
     ByteBuffer byteBuf = ByteBuffer.allocateDirect(memCapacity);
@@ -646,14 +644,14 @@ public class NativeWritableMemoryImplTest {
     assertEquals(wbuf.getEnd(), 64);
   }
 
-  @Test(expectedExceptions = ReadOnlyException.class)
+  @Test(expectedExceptions = IllegalArgumentException.class)
   public void checkAsWritableRegionRO() {
     ByteBuffer byteBuf = ByteBuffer.allocate(64);
     WritableMemory wmem = (WritableMemory) Memory.wrap(byteBuf);
     wmem.writableRegion(0, 1);
   }
 
-  @Test(expectedExceptions = ReadOnlyException.class)
+  @Test(expectedExceptions = IllegalArgumentException.class)
   public void checkAsWritableBufferRO() {
     ByteBuffer byteBuf = ByteBuffer.allocate(64);
     WritableMemory wmem = (WritableMemory) Memory.wrap(byteBuf);
diff --git a/src/test/java/org/apache/datasketches/memory/internal/SpecificLeafTest.java b/src/test/java/org/apache/datasketches/memory/internal/SpecificLeafTest.java
index 5876e03..962097d 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/SpecificLeafTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/SpecificLeafTest.java
@@ -30,7 +30,6 @@ import java.nio.ByteOrder;
 
 import org.apache.datasketches.memory.BaseState;
 import org.apache.datasketches.memory.Buffer;
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.memory.MemoryRequestServer;
 import org.apache.datasketches.memory.WritableMemory;
@@ -42,7 +41,7 @@ import jdk.incubator.foreign.ResourceScope;
  * @author Lee Rhodes
  */
 public class SpecificLeafTest {
-  private final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
+  private static final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
 
   @Test
   public void checkByteBufferLeafs() {
diff --git a/src/test/java/org/apache/datasketches/memory/internal/WritableDirectCopyTest.java b/src/test/java/org/apache/datasketches/memory/internal/WritableDirectCopyTest.java
index 2fda457..0c3afab 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/WritableDirectCopyTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/WritableDirectCopyTest.java
@@ -22,7 +22,7 @@ package org.apache.datasketches.memory.internal;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.fail;
 
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
+import org.apache.datasketches.memory.BaseState;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.memory.MemoryRequestServer;
 import org.apache.datasketches.memory.WritableMemory;
@@ -34,7 +34,7 @@ import jdk.incubator.foreign.ResourceScope;
  * @author Lee Rhodes
  */
 public class WritableDirectCopyTest {
-  private final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
+  private static final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
 
 //Copy Within tests
 
diff --git a/src/test/java/org/apache/datasketches/memory/internal/ZeroCapacityTest.java b/src/test/java/org/apache/datasketches/memory/internal/ZeroCapacityTest.java
index 4c03459..e54b6d9 100644
--- a/src/test/java/org/apache/datasketches/memory/internal/ZeroCapacityTest.java
+++ b/src/test/java/org/apache/datasketches/memory/internal/ZeroCapacityTest.java
@@ -23,7 +23,7 @@ import static org.testng.Assert.assertEquals;
 
 import java.nio.ByteBuffer;
 
-import org.apache.datasketches.memory.DefaultMemoryRequestServer;
+import org.apache.datasketches.memory.BaseState;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.memory.MemoryRequestServer;
 import org.apache.datasketches.memory.WritableMemory;
@@ -36,7 +36,7 @@ import jdk.incubator.foreign.ResourceScope;
  * @author Lee Rhodes
  */
 public class ZeroCapacityTest {
-  private final MemoryRequestServer memReqSvr = new DefaultMemoryRequestServer();
+  private static final MemoryRequestServer memReqSvr = BaseState.defaultMemReqSvr;
 
   @SuppressWarnings("resource")
   @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org