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 2023/02/25 01:13:25 UTC

[datasketches-memory] branch addJavadocThrows updated: Hopefully the last of major edits.

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

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


The following commit(s) were added to refs/heads/addJavadocThrows by this push:
     new 13e59fd  Hopefully the last of major edits.
13e59fd is described below

commit 13e59fd5332bc59194c64c98f273c7e90768eb54
Author: Lee Rhodes <le...@users.noreply.github.com>
AuthorDate: Fri Feb 24 17:13:12 2023 -0800

    Hopefully the last of major edits.
    
    This set of edits simplified the structure of the leaf nodes by moving
    some of the common internal variables to ResourceImpl, the bottom of the
    hierarchy.
    
    I also eliminated some duplication in methods such as
    getMemoryRequestServer, as well as simplified some of the check methods.
---
 .../org/apache/datasketches/memory/BaseBuffer.java |  2 +
 .../org/apache/datasketches/memory/Buffer.java     |  2 +
 .../org/apache/datasketches/memory/Memory.java     |  2 +
 .../org/apache/datasketches/memory/Resource.java   | 36 ++++++++++-
 .../apache/datasketches/memory/WritableBuffer.java | 22 +------
 .../apache/datasketches/memory/WritableMemory.java | 22 +------
 .../internal/BBNonNativeWritableBufferImpl.java    | 41 ++----------
 .../internal/BBNonNativeWritableMemoryImpl.java    | 31 +--------
 .../memory/internal/BBWritableBufferImpl.java      | 41 ++----------
 .../memory/internal/BBWritableMemoryImpl.java      | 31 +--------
 .../memory/internal/BaseBufferImpl.java            |  2 +-
 .../DirectNonNativeWritableBufferImpl.java         | 33 +---------
 .../DirectNonNativeWritableMemoryImpl.java         | 33 +---------
 .../memory/internal/DirectWritableBufferImpl.java  | 33 +---------
 .../memory/internal/DirectWritableMemoryImpl.java  | 33 +---------
 .../internal/HeapNonNativeWritableBufferImpl.java  | 31 +--------
 .../internal/HeapNonNativeWritableMemoryImpl.java  | 31 +--------
 .../memory/internal/HeapWritableBufferImpl.java    | 31 +--------
 .../memory/internal/HeapWritableMemoryImpl.java    | 31 +--------
 .../internal/MapNonNativeWritableBufferImpl.java   | 31 ---------
 .../internal/MapNonNativeWritableMemoryImpl.java   | 31 ---------
 .../memory/internal/MapWritableBufferImpl.java     | 31 ---------
 .../memory/internal/MapWritableMemoryImpl.java     | 31 ---------
 .../datasketches/memory/internal/ResourceImpl.java | 41 ++++++------
 .../apache/datasketches/memory/package-info.java   | 75 ++++------------------
 .../internal/AllocateDirectMapMemoryTest.java      |  2 -
 .../datasketches/memory/internal/LeafImplTest.java | 16 ++---
 .../datasketches/memory/internal/ResourceTest.java |  7 --
 28 files changed, 109 insertions(+), 644 deletions(-)

diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/BaseBuffer.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/BaseBuffer.java
index 09f4a49..4ba4ce0 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/BaseBuffer.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/BaseBuffer.java
@@ -22,6 +22,8 @@ package org.apache.datasketches.memory;
 /**
  * Defines the relative positional API.
  *
+ * <p>The classes in this package are not thread-safe.</p>
+ *
  * @author Lee Rhodes
  */
 public interface BaseBuffer extends Resource {
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/Buffer.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/Buffer.java
index 9c75edb..c6d4156 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/Buffer.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/Buffer.java
@@ -30,6 +30,8 @@ import org.apache.datasketches.memory.internal.BaseWritableBufferImpl;
 /**
  * Defines the read-only API for relative positional access to a resource.
  *
+ * <p>The classes in this package are not thread-safe.</p>
+ *
  * @author Lee Rhodes
  */
 public interface Buffer extends BaseBuffer {
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/Memory.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/Memory.java
index afe381e..ea12620 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/Memory.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/Memory.java
@@ -35,6 +35,8 @@ import org.apache.datasketches.memory.internal.ResourceImpl;
 /**
  * Defines the read-only API for offset access to a resource.
  *
+ * <p>The classes in this package are not thread-safe.</p>
+ *
  * @author Lee Rhodes
  */
 public interface Memory extends Resource {
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/Resource.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/Resource.java
index bb40d16..a7b27e2 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/Resource.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/Resource.java
@@ -19,11 +19,14 @@
 
 package org.apache.datasketches.memory;
 
+import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 
 /**
  *  Methods common to all memory access resources, including attributes like byte order and capacity.
  *
+ * <p>The classes in this package are not thread-safe.</p>
+ *
  * @author Lee Rhodes
  */
 public interface Resource extends AutoCloseable {
@@ -112,8 +115,35 @@ public interface Resource extends AutoCloseable {
   long getCapacity();
 
   /**
-   * Returns the MemoryRequestSever or null, if it has not been configured.
-   * @return the MemoryRequestSever or null, if it has not been configured.
+   * Gets the MemoryRequestServer object, if set, for the below resources to request additional memory.
+   *
+   * <p>WritableMemory enables this for ByteBuffer, Heap and Direct Memory backed resources.</p>
+   *
+   * <p>WritableBuffer enables this for ByteBuffer backed resources. However, the object returned is in the form of
+   * a WritableMemory. To convert to WritableBuffer use asWritableBuffer(). To enable for Heap and Direct Buffer
+   * resources, use the WritableMemory to configure and then call asWritableBuffer().</p>
+   *
+   * <p>Map backed resources will always return null.</p>
+   *
+   * <p>The user must customize the actions of the MemoryRequestServer by
+   * implementing the MemoryRequestServer interface.</p>
+   *
+   * <p>For WritableMemory, to enable at runtime set your custom MemoryRequestServer using one of these methods:</p>
+   * <ul><li>{@link WritableMemory#allocateDirect(long, ByteOrder, MemoryRequestServer)}</li>
+   * <li>{@link WritableMemory#allocate(int, ByteOrder, MemoryRequestServer)}</li>
+   * <li>{@link WritableMemory#writableWrap(ByteBuffer, ByteOrder, MemoryRequestServer)}</li>
+   * </ul>
+   *
+   * <p>ForWritableBuffer, to enable at runtime set your custom MemoryRequestServer using the following method:</p>
+   * <ul>
+   * <li>{@link WritableBuffer#writableWrap(ByteBuffer, ByteOrder, MemoryRequestServer)}</li>
+   * </ul>
+   *
+   * <p>Simple implementation examples include the DefaultMemoryRequestServer in the main source tree, as well as
+   * the ExampleMemoryRequestServerTest and the use with ByteBuffer documented in the DruidIssue11544Test
+   * in the test source tree.</p>
+   *
+   * @return the MemoryRequestServer object or null.
    */
   MemoryRequestServer getMemoryRequestServer();
 
@@ -236,7 +266,7 @@ public interface Resource extends AutoCloseable {
 
   /**
    * Returns true if this object is valid and has not been closed.
-   * This is relevant only for direct (off-heap) memory and Mapped Files.
+   * This is relevant only for direct (off-heap) memory and memory-mapped Files.
    * @return true if this object is valid and has not been closed.
    */
   boolean isValid();
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/WritableBuffer.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/WritableBuffer.java
index 027b26a..89c7845 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/WritableBuffer.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/WritableBuffer.java
@@ -29,6 +29,8 @@ import org.apache.datasketches.memory.internal.Util;
 /**
  * Defines the writable API for relative positional access to a resource
  *
+ * <p>The classes in this package are not thread-safe.</p>
+ *
  * @author Lee Rhodes
  */
 public interface WritableBuffer extends Buffer {
@@ -383,24 +385,4 @@ public interface WritableBuffer extends Buffer {
 
   //NO setBits(...)
 
-  //OTHER WRITABLE API METHODS
-  /**
-   * WritableBuffer enables this for ByteBuffer backed resources. However, the object returned is in the form of
-   * a WritableMemory. To convert to WritableBuffer use asWritableBuffer(). To enable for Heap and Direct Memory
-   * resources, use the WritableMemory to configure and then call asWritableBuffer().
-   * Map backed resources will always return null.
-   * Gets the MemoryRequestServer object, if set, for the above resources to request additional memory.
-   * The user must customize the actions of the MemoryRequestServer by
-   * implementing the MemoryRequestServer interface and set using the following method:
-   * <ul>
-   * <li>{@link WritableBuffer#writableWrap(ByteBuffer, ByteOrder, MemoryRequestServer)}</li>
-   * </ul>
-   * Simple implementation examples include the DefaultMemoryRequestServer in the main tree, as well as
-   * the ExampleMemoryRequestServerTest and the use with ByteBuffer documented in the DruidIssue11544Test
-   * in the test tree.
-   * @return the MemoryRequestServer object or null.
-   */
-  @Override
-  public MemoryRequestServer getMemoryRequestServer();
-
 }
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/WritableMemory.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/WritableMemory.java
index 844f4ff..e2dcdd0 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/WritableMemory.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/WritableMemory.java
@@ -33,6 +33,8 @@ import org.apache.datasketches.memory.internal.ResourceImpl;
 /**
  * Defines the writable API for offset access to a resource.
  *
+ * <p>The classes in this package are not thread-safe.</p>
+ *
  * @author Lee Rhodes
  */
 public interface WritableMemory extends Memory {
@@ -587,24 +589,4 @@ public interface WritableMemory extends Memory {
    */
   void setBits(long offsetBytes, byte bitMask);
 
-
-  //OTHER WRITABLE API METHODS
-  /**
-   * WritableMemory enables this for ByteBuffer, Heap and Direct Memory backed resources.
-   * Map backed resources will always return null.
-   * Gets the MemoryRequestServer object, if set, for the above resources to request additional memory.
-   * The user must customize the actions of the MemoryRequestServer by
-   * implementing the MemoryRequestServer interface and set using one of these methods:
-   * <ul><li>{@link WritableMemory#allocateDirect(long, ByteOrder, MemoryRequestServer)}</li>
-   * <li>{@link WritableMemory#allocate(int, ByteOrder, MemoryRequestServer)}</li>
-   * <li>{@link WritableMemory#writableWrap(ByteBuffer, ByteOrder, MemoryRequestServer)}</li>
-   * </ul>
-   * Simple implementation examples include the DefaultMemoryRequestServer in the main tree, as well as
-   * the ExampleMemoryRequestServerTest and the use with ByteBuffer documented in the DruidIssue11544Test
-   * in the test tree.
-   * @return the MemoryRequestServer object or null.
-   */
-  @Override
-  MemoryRequestServer getMemoryRequestServer();
-
 }
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBNonNativeWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBNonNativeWritableBufferImpl.java
index c209eb8..01605f4 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBNonNativeWritableBufferImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBNonNativeWritableBufferImpl.java
@@ -35,10 +35,6 @@ final class BBNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl {
   private final ByteBuffer byteBuf; //holds a reference to a ByteBuffer until we are done with it.
   private final Object unsafeObj;
   private final long nativeBaseOffset; //raw off-heap address of allocation base if ByteBuffer direct, else 0
-  private final long offsetBytes;      //from the root resource including original ByteBuffer position or region offset
-  private final long capacityBytes;
-  private final int typeId;
-  private long cumOffsetBytes;         //includes array header if heap, and nativeBaseOffset if off-heap
 
   BBNonNativeWritableBufferImpl(
       final Object unsafeObj,
@@ -52,16 +48,16 @@ final class BBNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl {
     super(capacityBytes);
     this.unsafeObj = unsafeObj;
     this.nativeBaseOffset = nativeBaseOffset;
-    this.offsetBytes = offsetBytes;
-    this.capacityBytes = capacityBytes;
-    this.typeId = removeNnBuf(typeId) | BYTEBUF | BUFFER | NONNATIVE;
-    this.cumOffsetBytes = cumOffsetBytes;
-    this.memReqSvr = memReqSvr;
+    this.offsetBytes = offsetBytes; //in ResourceImpl
+    this.capacityBytes = capacityBytes; //in ResourceImpl
+    this.typeId = removeNnBuf(typeId) | BYTEBUF | BUFFER | NONNATIVE; //in ResourceImpl
+    this.cumOffsetBytes = cumOffsetBytes; //in ResourceImpl
+    this.memReqSvr = memReqSvr; //in ResourceImpl
     this.byteBuf = byteBuf;
     if ((this.owner != null) && (this.owner != Thread.currentThread())) {
       throw new IllegalStateException(THREAD_EXCEPTION_TEXT);
     }
-    this.owner = Thread.currentThread();
+    this.owner = Thread.currentThread(); //in ResourceImpl
   }
 
   @Override
@@ -120,31 +116,6 @@ final class BBNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl {
     return byteBuf;
   }
 
-  @Override
-  public long getCapacity() {
-    return capacityBytes;
-  }
-
-  @Override
-  public long getCumulativeOffset() {
-    return cumOffsetBytes;
-  }
-
-  @Override
-  public long getNativeBaseOffset() {
-    return nativeBaseOffset;
-  }
-
-  @Override
-  public long getTotalOffset() {
-    return offsetBytes;
-  }
-
-  @Override
-  int getTypeId() {
-    return typeId;
-  }
-
   @Override
   Object getUnsafeObject() {
     return unsafeObj;
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBNonNativeWritableMemoryImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBNonNativeWritableMemoryImpl.java
index 976fc5d..7d4d39d 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBNonNativeWritableMemoryImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBNonNativeWritableMemoryImpl.java
@@ -35,10 +35,6 @@ final class BBNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl {
   private final ByteBuffer byteBuf; //holds a reference to a ByteBuffer until we are done with it.
   private final Object unsafeObj;
   private final long nativeBaseOffset; //raw off-heap address of allocation base if ByteBuffer direct, else 0
-  private final long offsetBytes;      //from the root resource including original ByteBuffer position or region offset
-  private final long capacityBytes;
-  private final int typeId;
-  private long cumOffsetBytes;         //includes array header if heap, and nativeBaseOffset if off-heap
 
   BBNonNativeWritableMemoryImpl(
       final Object unsafeObj,
@@ -56,7 +52,7 @@ final class BBNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl {
     this.capacityBytes = capacityBytes;
     this.typeId = removeNnBuf(typeId) | BYTEBUF | MEMORY | NONNATIVE;
     this.cumOffsetBytes = cumOffsetBytes;
-    this.memReqSvr = memReqSvr;
+    this.memReqSvr = memReqSvr; //in ResourceImpl
     this.byteBuf = byteBuf;
     if ((this.owner != null) && (this.owner != Thread.currentThread())) {
       throw new IllegalStateException(THREAD_EXCEPTION_TEXT);
@@ -105,31 +101,6 @@ final class BBNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl {
     return byteBuf;
   }
 
-  @Override
-  public long getCapacity() {
-    return capacityBytes;
-  }
-
-  @Override
-  public long getCumulativeOffset() {
-    return cumOffsetBytes;
-  }
-
-  @Override
-  public long getNativeBaseOffset() {
-    return nativeBaseOffset;
-  }
-
-  @Override
-  public long getTotalOffset() {
-    return offsetBytes;
-  }
-
-  @Override
-  int getTypeId() {
-    return typeId;
-  }
-
   @Override
   Object getUnsafeObject() {
     return unsafeObj;
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBWritableBufferImpl.java
index 7aedb79..b1b4b5c 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBWritableBufferImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBWritableBufferImpl.java
@@ -35,10 +35,6 @@ final class BBWritableBufferImpl extends NativeWritableBufferImpl {
   private final ByteBuffer byteBuf;    //holds a reference to a ByteBuffer until we are done with it.
   private final Object unsafeObj;
   private final long nativeBaseOffset; //raw off-heap address of allocation base if ByteBuffer direct, else 0
-  private final long offsetBytes;      //from the root resource including original ByteBuffer position or split offset
-  private final long capacityBytes;
-  private final int typeId;
-  private long cumOffsetBytes;         //includes array header if heap, and nativeBaseOffset if off-heap
 
   BBWritableBufferImpl(
       final Object unsafeObj,
@@ -52,16 +48,16 @@ final class BBWritableBufferImpl extends NativeWritableBufferImpl {
     super(capacityBytes);
     this.unsafeObj = unsafeObj;
     this.nativeBaseOffset = nativeBaseOffset;
-    this.offsetBytes = offsetBytes;
-    this.capacityBytes = capacityBytes;
-    this.typeId = removeNnBuf(typeId) | BYTEBUF | BUFFER | NATIVE;
-    this.cumOffsetBytes = cumOffsetBytes;
-    this.memReqSvr = memReqSvr;
+    this.offsetBytes = offsetBytes; //in ResourceImpl
+    this.capacityBytes = capacityBytes; //in ResourceImpl
+    this.typeId = removeNnBuf(typeId) | BYTEBUF | BUFFER | NATIVE; //in ResourceImpl
+    this.cumOffsetBytes = cumOffsetBytes; //in ResourceImpl
+    this.memReqSvr = memReqSvr; //in ResourceImpl
     this.byteBuf = byteBuf;
     if ((this.owner != null) && (this.owner != Thread.currentThread())) {
       throw new IllegalStateException(THREAD_EXCEPTION_TEXT);
     }
-    this.owner = Thread.currentThread();
+    this.owner = Thread.currentThread(); //in ResourceImpl
   }
 
   @Override
@@ -120,31 +116,6 @@ final class BBWritableBufferImpl extends NativeWritableBufferImpl {
     return byteBuf;
   }
 
-  @Override
-  public long getCapacity() {
-    return capacityBytes;
-  }
-
-  @Override
-  public long getCumulativeOffset() {
-    return cumOffsetBytes;
-  }
-
-  @Override
-  public long getNativeBaseOffset() {
-    return nativeBaseOffset;
-  }
-
-  @Override
-  public long getTotalOffset() {
-    return offsetBytes;
-  }
-
-  @Override
-  int getTypeId() {
-    return typeId;
-  }
-
   @Override
   Object getUnsafeObject() {
     return unsafeObj;
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBWritableMemoryImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBWritableMemoryImpl.java
index bb77a1e..ed6b349 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBWritableMemoryImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BBWritableMemoryImpl.java
@@ -35,10 +35,6 @@ final class BBWritableMemoryImpl extends NativeWritableMemoryImpl {
   private final ByteBuffer byteBuf; //holds a reference to a ByteBuffer until we are done with it.
   private final Object unsafeObj;
   private final long nativeBaseOffset; //raw off-heap address of allocation base if ByteBuffer direct, else 0
-  private final long offsetBytes;      //from the root resource including original ByteBuffer position or region offset
-  private final long capacityBytes;
-  private final int typeId;
-  private long cumOffsetBytes;         //includes array header if heap, and nativeBaseOffset if off-heap
 
   BBWritableMemoryImpl(
       final Object unsafeObj,
@@ -56,7 +52,7 @@ final class BBWritableMemoryImpl extends NativeWritableMemoryImpl {
     this.capacityBytes = capacityBytes;
     this.typeId = removeNnBuf(typeId) | BYTEBUF | MEMORY | NATIVE;
     this.cumOffsetBytes = cumOffsetBytes;
-    this.memReqSvr = memReqSvr;
+    this.memReqSvr = memReqSvr; //in ResourceImpl
     this.byteBuf = byteBuf;
     if ((this.owner != null) && (this.owner != Thread.currentThread())) {
       throw new IllegalStateException(THREAD_EXCEPTION_TEXT);
@@ -105,31 +101,6 @@ final class BBWritableMemoryImpl extends NativeWritableMemoryImpl {
     return byteBuf;
   }
 
-  @Override
-  public long getCapacity() {
-    return capacityBytes;
-  }
-
-  @Override
-  public long getCumulativeOffset() {
-    return cumOffsetBytes;
-  }
-
-  @Override
-  public long getNativeBaseOffset() {
-    return nativeBaseOffset;
-  }
-
-  @Override
-  public long getTotalOffset() {
-    return offsetBytes;
-  }
-
-  @Override
-  int getTypeId() {
-    return typeId;
-  }
-
   @Override
   Object getUnsafeObject() {
     return unsafeObj;
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BaseBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BaseBufferImpl.java
index 75f9dae..74bfdab 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BaseBufferImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/BaseBufferImpl.java
@@ -23,7 +23,7 @@ import org.apache.datasketches.memory.BaseBuffer;
 import org.apache.datasketches.memory.BufferPositionInvariantsException;
 
 /**
- * A new positional API. This is different from and simpler than Java BufferImpl positional approach.
+ * A new positional API. This is different from and simpler than Java Buffer 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>
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectNonNativeWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectNonNativeWritableBufferImpl.java
index f4da0d3..5a1dd68 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectNonNativeWritableBufferImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectNonNativeWritableBufferImpl.java
@@ -32,10 +32,6 @@ import org.apache.datasketches.memory.WritableBuffer;
  */
 final class DirectNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl {
   private final AllocateDirect direct;
-  private final long offsetBytes;
-  private final long capacityBytes;
-  private final int typeId;
-  private long cumOffsetBytes;
 
   DirectNonNativeWritableBufferImpl(
       final AllocateDirect direct,
@@ -50,7 +46,7 @@ final class DirectNonNativeWritableBufferImpl extends NonNativeWritableBufferImp
     this.capacityBytes = capacityBytes;
     this.typeId = removeNnBuf(typeId) | DIRECT | BUFFER | NONNATIVE; //initially cannot be ReadOnly
     this.cumOffsetBytes = cumOffsetBytes;
-    this.memReqSvr = memReqSvr;
+    this.memReqSvr = memReqSvr; //in ResourceImpl
     if ((this.owner != null) && (this.owner != Thread.currentThread())) {
       throw new IllegalStateException(THREAD_EXCEPTION_TEXT);
     }
@@ -115,33 +111,6 @@ final class DirectNonNativeWritableBufferImpl extends NonNativeWritableBufferImp
     direct.close();
   }
 
-  @Override
-  public long getCapacity() {
-    checkValid();
-    return capacityBytes;
-  }
-
-  @Override
-  public long getCumulativeOffset() {
-    return cumOffsetBytes;
-  }
-
-  @Override
-  public long getNativeBaseOffset() {
-    return direct.getNativeBaseOffset();
-  }
-
-  @Override
-  public long getTotalOffset() {
-    checkValid();
-    return offsetBytes;
-  }
-
-  @Override
-  int getTypeId() {
-    return typeId;
-  }
-
   @Override
   Object getUnsafeObject() {
     return null;
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectNonNativeWritableMemoryImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectNonNativeWritableMemoryImpl.java
index 59b1059..f9b9d3f 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectNonNativeWritableMemoryImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectNonNativeWritableMemoryImpl.java
@@ -32,10 +32,6 @@ import org.apache.datasketches.memory.WritableMemory;
  */
 final class DirectNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl {
   private final AllocateDirect direct;
-  private final long offsetBytes;
-  private final long capacityBytes;
-  private final int typeId;
-  private long cumOffsetBytes;
 
   DirectNonNativeWritableMemoryImpl(
       final AllocateDirect direct,
@@ -50,7 +46,7 @@ final class DirectNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImp
     this.capacityBytes = capacityBytes;
     this.typeId = removeNnBuf(typeId) | DIRECT | MEMORY | NONNATIVE; //initially cannot be ReadOnly
     this.cumOffsetBytes = cumOffsetBytes;
-    this.memReqSvr = memReqSvr;
+    this.memReqSvr = memReqSvr; //in ResourceImpl
     if ((this.owner != null) && (this.owner != Thread.currentThread())) {
       throw new IllegalStateException(THREAD_EXCEPTION_TEXT);
     }
@@ -100,33 +96,6 @@ final class DirectNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImp
     direct.close();
   }
 
-  @Override
-  public long getCapacity() {
-    checkValid();
-    return capacityBytes;
-  }
-
-  @Override
-  public long getCumulativeOffset() {
-    return cumOffsetBytes;
-  }
-
-  @Override
-  public long getNativeBaseOffset() {
-    return direct.getNativeBaseOffset();
-  }
-
-  @Override
-  public long getTotalOffset() {
-    checkValid();
-    return offsetBytes;
-  }
-
-  @Override
-  int getTypeId() {
-    return typeId;
-  }
-
   @Override
   Object getUnsafeObject() {
     return null;
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectWritableBufferImpl.java
index 125b235..02911b2 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectWritableBufferImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectWritableBufferImpl.java
@@ -32,10 +32,6 @@ import org.apache.datasketches.memory.WritableBuffer;
  */
 final class DirectWritableBufferImpl extends NativeWritableBufferImpl {
   private final AllocateDirect direct;
-  private final long offsetBytes;
-  private final long capacityBytes;
-  private final int typeId;
-  private long cumOffsetBytes;
 
   DirectWritableBufferImpl(
       final AllocateDirect direct,
@@ -50,7 +46,7 @@ final class DirectWritableBufferImpl extends NativeWritableBufferImpl {
     this.capacityBytes = capacityBytes;
     this.typeId = removeNnBuf(typeId) | DIRECT | BUFFER | NATIVE; //initially cannot be ReadOnly
     this.cumOffsetBytes = cumOffsetBytes;
-    this.memReqSvr = memReqSvr;
+    this.memReqSvr = memReqSvr; //in ResourceImpl
     if ((this.owner != null) && (this.owner != Thread.currentThread())) {
       throw new IllegalStateException(THREAD_EXCEPTION_TEXT);
     }
@@ -115,33 +111,6 @@ final class DirectWritableBufferImpl extends NativeWritableBufferImpl {
     direct.close();
   }
 
-  @Override
-  public long getCapacity() {
-    checkValid();
-    return capacityBytes;
-  }
-
-  @Override
-  public long getCumulativeOffset() {
-    return cumOffsetBytes;
-  }
-
-  @Override
-  public long getNativeBaseOffset() {
-    return direct.getNativeBaseOffset();
-  }
-
-  @Override
-  public long getTotalOffset() {
-    checkValid();
-    return offsetBytes;
-  }
-
-  @Override
-  int getTypeId() {
-    return typeId;
-  }
-
   @Override
   Object getUnsafeObject() {
     return null;
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectWritableMemoryImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectWritableMemoryImpl.java
index c2a6b97..2c1c1b1 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectWritableMemoryImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/DirectWritableMemoryImpl.java
@@ -32,10 +32,6 @@ import org.apache.datasketches.memory.WritableMemory;
  */
 final class DirectWritableMemoryImpl extends NativeWritableMemoryImpl {
   private final AllocateDirect direct;
-  private final long offsetBytes;
-  private final long capacityBytes;
-  private final int typeId;
-  private long cumOffsetBytes;
 
   DirectWritableMemoryImpl(
       final AllocateDirect direct,
@@ -50,7 +46,7 @@ final class DirectWritableMemoryImpl extends NativeWritableMemoryImpl {
     this.capacityBytes = capacityBytes;
     this.typeId = removeNnBuf(typeId) | DIRECT | MEMORY | NATIVE; //initially cannot be ReadOnly
     this.cumOffsetBytes = cumOffsetBytes;
-    this.memReqSvr = memReqSvr;
+    this.memReqSvr = memReqSvr; //in ResourceImpl
     if ((this.owner != null) && (this.owner != Thread.currentThread())) {
       throw new IllegalStateException(THREAD_EXCEPTION_TEXT);
     }
@@ -100,33 +96,6 @@ final class DirectWritableMemoryImpl extends NativeWritableMemoryImpl {
     direct.close();
   }
 
-  @Override
-  public long getCapacity() {
-    checkValid();
-    return capacityBytes;
-  }
-
-  @Override
-  public long getCumulativeOffset() {
-    return cumOffsetBytes;
-  }
-
-  @Override
-  public long getNativeBaseOffset() {
-    return direct.getNativeBaseOffset();
-  }
-
-  @Override
-  public long getTotalOffset() {
-    checkValid();
-    return offsetBytes;
-  }
-
-  @Override
-  int getTypeId() {
-    return typeId;
-  }
-
   @Override
   Object getUnsafeObject() {
     return null;
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapNonNativeWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapNonNativeWritableBufferImpl.java
index 9ad30b3..c78ecdc 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapNonNativeWritableBufferImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapNonNativeWritableBufferImpl.java
@@ -32,10 +32,6 @@ import org.apache.datasketches.memory.WritableBuffer;
  */
 final class HeapNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl {
   private final Object unsafeObj;
-  private final long offsetBytes;
-  private final long capacityBytes;
-  private final int typeId;
-  private long cumOffsetBytes;
 
   HeapNonNativeWritableBufferImpl(
       final Object unsafeObj,
@@ -50,7 +46,7 @@ final class HeapNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl
     this.capacityBytes = capacityBytes;
     this.typeId = removeNnBuf(typeId) | HEAP | BUFFER | NONNATIVE;
     this.cumOffsetBytes = cumOffsetBytes;
-    this.memReqSvr = memReqSvr;
+    this.memReqSvr = memReqSvr; //in ResourceImpl
     if ((this.owner != null) && (this.owner != Thread.currentThread())) {
       throw new IllegalStateException(THREAD_EXCEPTION_TEXT);
     }
@@ -108,31 +104,6 @@ final class HeapNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl
     }
   }
 
-  @Override
-  public long getCapacity() {
-    return capacityBytes;
-  }
-
-  @Override
-  public long getCumulativeOffset() {
-    return cumOffsetBytes;
-  }
-
-  @Override
-  public long getNativeBaseOffset() {
-    return 0;
-  }
-
-  @Override
-  public long getTotalOffset() {
-    return offsetBytes;
-  }
-
-  @Override
-  int getTypeId() {
-    return typeId;
-  }
-
   @Override
   Object getUnsafeObject() {
     return unsafeObj;
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapNonNativeWritableMemoryImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapNonNativeWritableMemoryImpl.java
index f900925..3c4e07b 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapNonNativeWritableMemoryImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapNonNativeWritableMemoryImpl.java
@@ -32,10 +32,6 @@ import org.apache.datasketches.memory.WritableMemory;
  */
 final class HeapNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl {
   private final Object unsafeObj;
-  private final long offsetBytes;
-  private final long capacityBytes;
-  private final int typeId;
-  private long cumOffsetBytes;
 
   HeapNonNativeWritableMemoryImpl(
       final Object unsafeObj,
@@ -50,7 +46,7 @@ final class HeapNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl
     this.capacityBytes = capacityBytes;
     this.typeId = removeNnBuf(typeId) | HEAP | MEMORY | NONNATIVE;
     this.cumOffsetBytes = cumOffsetBytes;
-    this.memReqSvr = memReqSvr;
+    this.memReqSvr = memReqSvr; //in ResourceImpl
     if ((this.owner != null) && (this.owner != Thread.currentThread())) {
       throw new IllegalStateException(THREAD_EXCEPTION_TEXT);
     }
@@ -93,31 +89,6 @@ final class HeapNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl
     }
   }
 
-  @Override
-  public long getCapacity() {
-    return capacityBytes;
-  }
-
-  @Override
-  public long getCumulativeOffset() {
-    return cumOffsetBytes;
-  }
-
-  @Override
-  public long getNativeBaseOffset() {
-    return 0;
-  }
-
-  @Override
-  public long getTotalOffset() {
-    return offsetBytes;
-  }
-
-  @Override
-  int getTypeId() {
-    return typeId;
-  }
-
   @Override
   Object getUnsafeObject() {
     return unsafeObj;
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapWritableBufferImpl.java
index fcfea49..782ef75 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapWritableBufferImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapWritableBufferImpl.java
@@ -32,10 +32,6 @@ import org.apache.datasketches.memory.WritableBuffer;
  */
 final class HeapWritableBufferImpl extends NativeWritableBufferImpl {
   private final Object unsafeObj;
-  private final long offsetBytes;
-  private final long capacityBytes;
-  private final int typeId;
-  private long cumOffsetBytes;
 
   HeapWritableBufferImpl(
       final Object unsafeObj,
@@ -50,7 +46,7 @@ final class HeapWritableBufferImpl extends NativeWritableBufferImpl {
     this.capacityBytes = capacityBytes;
     this.typeId = removeNnBuf(typeId) | HEAP | BUFFER | NATIVE;
     this.cumOffsetBytes = cumOffsetBytes;
-    this.memReqSvr = memReqSvr;
+    this.memReqSvr = memReqSvr; //in ResourceImpl
     if ((this.owner != null) && (this.owner != Thread.currentThread())) {
       throw new IllegalStateException(THREAD_EXCEPTION_TEXT);
     }
@@ -108,31 +104,6 @@ final class HeapWritableBufferImpl extends NativeWritableBufferImpl {
     }
   }
 
-  @Override
-  public long getCapacity() {
-    return capacityBytes;
-  }
-
-  @Override
-  public long getCumulativeOffset() {
-    return cumOffsetBytes;
-  }
-
-  @Override
-  public long getNativeBaseOffset() {
-    return 0;
-  }
-
-  @Override
-  public long getTotalOffset() {
-    return offsetBytes;
-  }
-
-  @Override
-  int getTypeId() {
-    return typeId;
-  }
-
   @Override
   Object getUnsafeObject() {
     return unsafeObj;
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapWritableMemoryImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapWritableMemoryImpl.java
index 7cca142..f3b8f87 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapWritableMemoryImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/HeapWritableMemoryImpl.java
@@ -32,10 +32,6 @@ import org.apache.datasketches.memory.WritableMemory;
  */
 final class HeapWritableMemoryImpl extends NativeWritableMemoryImpl {
   private final Object unsafeObj;
-  private final long offsetBytes;
-  private final long capacityBytes;
-  private final int typeId;
-  private long cumOffsetBytes;
 
   HeapWritableMemoryImpl(
       final Object unsafeObj,
@@ -50,7 +46,7 @@ final class HeapWritableMemoryImpl extends NativeWritableMemoryImpl {
     this.capacityBytes = capacityBytes;
     this.typeId = removeNnBuf(typeId) | HEAP | MEMORY | NATIVE;
     this.cumOffsetBytes = cumOffsetBytes;
-    this.memReqSvr = memReqSvr;
+    this.memReqSvr = memReqSvr; //in ResourceImpl
     if ((this.owner != null) && (this.owner != Thread.currentThread())) {
       throw new IllegalStateException(THREAD_EXCEPTION_TEXT);
     }
@@ -93,31 +89,6 @@ final class HeapWritableMemoryImpl extends NativeWritableMemoryImpl {
     }
   }
 
-  @Override
-  public long getCapacity() {
-    return capacityBytes;
-  }
-
-  @Override
-  public long getCumulativeOffset() {
-    return cumOffsetBytes;
-  }
-
-  @Override
-  public long getNativeBaseOffset() {
-    return 0;
-  }
-
-  @Override
-  public long getTotalOffset() {
-    return offsetBytes;
-  }
-
-  @Override
-  int getTypeId() {
-    return typeId;
-  }
-
   @Override
   Object getUnsafeObject() {
     return unsafeObj;
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapNonNativeWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapNonNativeWritableBufferImpl.java
index 692c5ca..4871c3f 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapNonNativeWritableBufferImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapNonNativeWritableBufferImpl.java
@@ -31,10 +31,6 @@ import org.apache.datasketches.memory.WritableBuffer;
  */
 final class MapNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl {
   private final AllocateDirectWritableMap dirWMap;
-  private final long offsetBytes;
-  private final long capacityBytes;
-  private final int typeId;
-  private long cumOffsetBytes;
 
   MapNonNativeWritableBufferImpl(
       final AllocateDirectWritableMap dirWMap,
@@ -120,33 +116,6 @@ final class MapNonNativeWritableBufferImpl extends NonNativeWritableBufferImpl {
     dirWMap.force(); //checksValidAndThread
   }
 
-  @Override
-  public long getCapacity() {
-    checkValid();
-    return capacityBytes;
-  }
-
-  @Override
-  public long getCumulativeOffset() {
-    return cumOffsetBytes;
-  }
-
-  @Override
-  public long getNativeBaseOffset() {
-    return dirWMap.nativeBaseOffset;
-  }
-
-  @Override
-  public long getTotalOffset() {
-    checkValid();
-    return offsetBytes;
-  }
-
-  @Override
-  int getTypeId() {
-    return typeId;
-  }
-
   @Override
   Object getUnsafeObject() {
     return null;
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapNonNativeWritableMemoryImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapNonNativeWritableMemoryImpl.java
index f0fc5ef..1801935 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapNonNativeWritableMemoryImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapNonNativeWritableMemoryImpl.java
@@ -31,10 +31,6 @@ import org.apache.datasketches.memory.WritableMemory;
  */
 final class MapNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl {
   private final AllocateDirectWritableMap dirWMap;
-  private final long offsetBytes;
-  private final long capacityBytes;
-  private final int typeId;
-  private long cumOffsetBytes;
 
   MapNonNativeWritableMemoryImpl(
       final AllocateDirectWritableMap dirWMap,
@@ -105,33 +101,6 @@ final class MapNonNativeWritableMemoryImpl extends NonNativeWritableMemoryImpl {
     dirWMap.force(); //checksValidAndThread
   }
 
-  @Override
-  public long getCapacity() {
-    checkValid();
-    return capacityBytes;
-  }
-
-  @Override
-  public long getCumulativeOffset() {
-    return cumOffsetBytes;
-  }
-
-  @Override
-  public long getNativeBaseOffset() {
-    return dirWMap.nativeBaseOffset;
-  }
-
-  @Override
-  public long getTotalOffset() {
-    checkValid();
-    return offsetBytes;
-  }
-
-  @Override
-  int getTypeId() {
-    return typeId;
-  }
-
   @Override
   Object getUnsafeObject() {
     return null;
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapWritableBufferImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapWritableBufferImpl.java
index 04c6ade..6e12e66 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapWritableBufferImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapWritableBufferImpl.java
@@ -31,10 +31,6 @@ import org.apache.datasketches.memory.WritableBuffer;
  */
 final class MapWritableBufferImpl extends NativeWritableBufferImpl {
   private final AllocateDirectWritableMap dirWMap;
-  private final long offsetBytes;
-  private final long capacityBytes;
-  private final int typeId;
-  private long cumOffsetBytes;
 
   MapWritableBufferImpl(
       final AllocateDirectWritableMap dirWMap,
@@ -120,33 +116,6 @@ final class MapWritableBufferImpl extends NativeWritableBufferImpl {
     dirWMap.force(); //checksValidAndThread
   }
 
-  @Override
-  public long getCapacity() {
-    checkValid();
-    return capacityBytes;
-  }
-
-  @Override
-  public long getCumulativeOffset() {
-    return cumOffsetBytes;
-  }
-
-  @Override
-  public long getNativeBaseOffset() {
-    return dirWMap.nativeBaseOffset;
-  }
-
-  @Override
-  public long getTotalOffset() {
-    checkValid();
-    return offsetBytes;
-  }
-
-  @Override
-  int getTypeId() {
-    return typeId;
-  }
-
   @Override
   Object getUnsafeObject() {
     return null;
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapWritableMemoryImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapWritableMemoryImpl.java
index c34ee2e..cb9aca2 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapWritableMemoryImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/MapWritableMemoryImpl.java
@@ -31,10 +31,6 @@ import org.apache.datasketches.memory.WritableMemory;
  */
 final class MapWritableMemoryImpl extends NativeWritableMemoryImpl {
   private final AllocateDirectWritableMap dirWMap;
-  private final long offsetBytes;
-  private final long capacityBytes;
-  private final int typeId;
-  private long cumOffsetBytes;
 
   MapWritableMemoryImpl(
       final AllocateDirectWritableMap dirWMap,
@@ -105,33 +101,6 @@ final class MapWritableMemoryImpl extends NativeWritableMemoryImpl {
     dirWMap.force(); //checksValidAndThread
   }
 
-  @Override
-  public long getCapacity() {
-    checkValid();
-    return capacityBytes;
-  }
-
-  @Override
-  public long getCumulativeOffset() {
-    return cumOffsetBytes;
-  }
-
-  @Override
-  public long getNativeBaseOffset() {
-    return dirWMap.nativeBaseOffset;
-  }
-
-  @Override
-  public long getTotalOffset() {
-    checkValid();
-    return offsetBytes;
-  }
-
-  @Override
-  int getTypeId() {
-    return typeId;
-  }
-
   @Override
   Object getUnsafeObject() {
     return null;
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/ResourceImpl.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/ResourceImpl.java
index afdeafa..2f4796b 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/ResourceImpl.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/internal/ResourceImpl.java
@@ -94,9 +94,13 @@ public abstract class ResourceImpl implements Resource {
     JDK_MAJOR = (p[0] == 1) ? p[1] : p[0];
   }
 
-  MemoryRequestServer memReqSvr = null; //set by the user.
-
-  Thread owner = null; //set by the leaf nodes.
+  //set by the leaf nodes
+  long capacityBytes;
+  long cumOffsetBytes;
+  long offsetBytes;
+  int typeId;
+  MemoryRequestServer memReqSvr = null; //set by the user via the leaf nodes
+  Thread owner = null;
 
   /**
    * The root of the Memory inheritance hierarchy
@@ -219,38 +223,37 @@ public abstract class ResourceImpl implements Resource {
     return isNativeOrder(getTypeId()) ? NATIVE_BYTE_ORDER : NON_NATIVE_BYTE_ORDER;
   }
 
-  /**
-   * Gets the cumulative offset in bytes of this object from the backing resource.
-   * This offset may also include other offset components such as the native off-heap
-   * memory address, DirectByteBuffer split offsets, region offsets, and unsafe arrayBaseOffsets.
-   *
-   * @return the cumulative offset in bytes of this object from the backing resource.
-   */
-  abstract long getCumulativeOffset();
+  @Override
+  public long getCapacity() {
+    checkValid();
+    return capacityBytes;
+  }
 
   /**
    * Gets the cumulative offset in bytes of this object from the backing resource including the given
    * localOffsetBytes. This offset may also include other offset components such as the native off-heap
    * memory address, DirectByteBuffer split offsets, region offsets, and object arrayBaseOffsets.
    *
-   * @param localOffsetBytes offset to be added to the cumulative offset.
+   * @param addOffsetBytes offset to be added to the cumulative offset.
    * @return the cumulative offset in bytes of this object from the backing resource including the
    * given offsetBytes.
    */
-  public long getCumulativeOffset(final long localOffsetBytes) {
-    return getCumulativeOffset() + localOffsetBytes;
+  long getCumulativeOffset(final long addOffsetBytes) {
+    return cumOffsetBytes + addOffsetBytes;
   }
 
-  //Documented in WritableMemory and WritableBuffer interfaces.
-  //Implemented in the Leaf nodes; Required here by toHex(...).
   @Override
   public MemoryRequestServer getMemoryRequestServer() { return memReqSvr; }
 
-  //Overridden by ByteBuffer, Direct and Map Leaves
-  abstract long getNativeBaseOffset();
+  @Override
+  public long getTotalOffset() {
+    return offsetBytes;
+  }
 
   //Overridden by all leaves
-  abstract int getTypeId();
+  int getTypeId() {
+    return typeId;
+  }
 
   //Overridden by Heap and ByteBuffer leaves. Made public as getArray() in WritableMemoryImpl and
   // WritableBufferImpl
diff --git a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/package-info.java b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/package-info.java
index 4dd76ca..497fec0 100644
--- a/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/package-info.java
+++ b/datasketches-memory-java8/src/main/java/org/apache/datasketches/memory/package-info.java
@@ -19,7 +19,7 @@
 
 /**
  * <p>This package provides high performance primitive and primitive array access to direct (native),
- * off-heap memory and memory-mapped file resources, and consistent views into
+ * off-heap memory and memory-mapped file resources, consistent views into
  * {@link java.nio.ByteBuffer}, and on-heap primitive arrays. It can be used as a more
  * comprehensive and flexible replacement for {@link java.nio.ByteBuffer}.
  * </p>
@@ -60,7 +60,7 @@
  * </ul>
  *
  * <p>More specifically, this package provides access to four different types of resources using
- * two different access APIs. These resources are contiguous blobs of bytes that provide at least
+ * two different access APIs. These resources can be viewed as contiguous blobs of bytes that provide at least
  * byte-level read and write access. The four resources are:</p>
  *
  * <ul><li>Direct (a.k.a. Native) off-heap memory allocated by the user.</li>
@@ -82,72 +82,22 @@
  * <p>The resources don't know or care about the access APIs, and the access
  * APIs don't really know or care what resource they are accessing.</p>
  *
- * <p>An access API is joined with
- * a resource either with a static factory method or in combination with a
- * {@link org.apache.datasketches.memory.Handle}, which is used exclusively for resources that are
- * external to the JVM, such as allocation of direct memory and memory-mapped files.</p>
- *
- * <p>The role of a Handle is to hold onto the reference of a resource that is outside the control
- * of the JVM. The resource is obtained from the handle with {@code get()}.</p>
- *
- * <p>When a handle is extended for an AutoCloseable resource and then joined with an access API
- * it becomes an <i>implementation handle</i>. There are 3 implementation handles:</p>
- *
- * <ul><li>{@link org.apache.datasketches.memory.MapHandle}
- * for read-only access to a memory-mapped file</li>
- * <li>{@link org.apache.datasketches.memory.WritableMapHandle}
- * for writable access to a memory-mapped file</li>
- * <li>{@link org.apache.datasketches.memory.WritableHandle}
- * for writable access to off-heap memory.</li>
- * </ul>
- *
- * <p>As long as the implementation handle is valid the JVM will not attempt to close the resource.</p>
- *
- * <p>An implementation handle implements {@link java.lang.AutoCloseable},
- * which also enables compile-time checks for non-closed resources. If a Handle is acquired
- * in a try-with-resources (TWR) block, it's associated resource will be automatically closed by
- * the JVM at the end of the block.
- * The resource can also be explicitly closed by the user by calling {@code Handle.close()}.</p>
+ * <p>A Direct or memory-mapped file resource can also be explicitly closed by the user</p>
  * <blockquote><pre>
  *     //Using try-with-resources block:
- *     try (WritableyMapHandle handle = WritableMemory.map(File file)) {
- *       WritableMemory wMem = handle.get();
+ *     try (WritableMemory wmem = WritableMemory.map(File file)) {
  *       doWork(wMem) // read and write to memory mapped file.
  *     }
  *
  *     //Using explicit close():
- *     WritableMapHandle handle = WritableMemory.map(File file);
- *     WritableMemory wMem = handle.get();
+ *     WritableMemory wmem = WritableMemory.map(File file);
  *     doWork(wMem) // read and write to memory mapped file.
- *     handle.close();
+ *     wmem.close();
  * </pre></blockquote>
  *
- * <p>Where it is desirable to pass ownership of the resource (and the {@code close()}
- * responsibility) one can not use the TWR block. Instead:</p>
- * <blockquote><pre>
- *     WritableMapHandle handler = WritableMemory.map(File file);
- *     doWorkAndClose(handle); //passes the handle to object that closes the resource.
- * </pre></blockquote>
- *
- * <p>Whatever part of your process is responsible for allocating a resource external
- * to the JVM must be responsible for closing it or making sure it gets closed.
- * Since only the implementation Handles implement AutoCloseable, you must not let go of the
- * handle reference until you are done with its associated resource.</p>
- *
- * <p>As mentioned above, there are two ways to do this:</p>
- * <ul><li>Use a try-with-resources block.  At the end of the block, the JVM will automatically
- * close the resource.</li>
- *
- * <li>If you need to pass an external resource, pass the implementation resource handle, not the
- * access API. This means you are also passing the responsibility to close the resource.
- * If you have different parts of your code holding references to the same handle,
- * whichever one closes it first will make all the other resources invalid, so be careful.
- * As long as there is at least one reference to the handle that is still valid and the resource
- * has not been closed, the resource will remain valid. If you drop all references to all handles,
- * the JVM will eventually close the resource, making it invalid, but it is possible that you might
- * run out of memory first. Depending on this is a bad idea and a could be a serious,
- * hard-to-find bug.</li>
- * </ul>
+ * <p>Whatever thread of your process is responsible for allocating a direct or memory-mapped resource
+ * must be responsible for closing it or making sure it gets closed. This is also true for the special
+ * memory-mapping methods load(), isLoaded() and force().</p>
  *
  *<p>Moving back and forth between <i>Memory</i> and <i>Buffer</i>:</p>
  *<blockquote><pre>
@@ -162,11 +112,12 @@
  * <blockquote><pre>
  *     WritableMemory wMem = ...
  *     WritableMemory wReg = wMem.writableRegion(offset, length); //OR
- *     Memory reg = wMem.region(offset, length);
+ *     Memory region = wMem.region(offset, length);
  * </pre></blockquote>
  *
- * <p>With asserts enabled in the JVM, all methods are checked for bounds and
- * use-after-close violations.</p>
+ * <p>All methods are checked for bounds violations.</p>
+ *
+ * <p>The classes in this package are not thread-safe.</p>
  *
  * @author Lee Rhodes
  */
diff --git a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java
index a506bbf..423e59a 100644
--- a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java
+++ b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/AllocateDirectMapMemoryTest.java
@@ -58,7 +58,6 @@ public class AllocateDirectMapMemoryTest {
     try (Memory mem = Memory.map(file))
     {
       println("Mem Cap:       " + mem.getCapacity());
-      println("Native Off:    " + ((ResourceImpl)mem).getNativeBaseOffset());
       println("Total Offset:  " + mem.getTotalOffset());
       println("Cum Offset:    " + ((ResourceImpl)mem).getCumulativeOffset(0));
       println("Total Offset: " + mem.getTotalOffset());
@@ -69,7 +68,6 @@ public class AllocateDirectMapMemoryTest {
       println("");
       Memory mem2 = mem.region(43 + 76, 20);
       println("Mem Cap:       " + mem2.getCapacity());
-      println("Native Off:    " + ((ResourceImpl)mem).getNativeBaseOffset());
       println("Offset:        " + mem.getTotalOffset());
       println("Cum Offset:    " + ((ResourceImpl)mem2).getCumulativeOffset(0));
       println("Total Offset: " + mem2.getTotalOffset());
diff --git a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/LeafImplTest.java b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/LeafImplTest.java
index 1bd16df..7951492 100644
--- a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/LeafImplTest.java
+++ b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/LeafImplTest.java
@@ -187,11 +187,11 @@ public class LeafImplTest {
     if (direct) {
       assertTrue(mem.isDirectResource());
       assertNull(obj);
-      assertTrue(((ResourceImpl)mem).getNativeBaseOffset() != 0);
+      assertTrue(((ResourceImpl)mem).getCumulativeOffset(0) != 0);
     } else {
       assertFalse(mem.isDirectResource());
       assertNotNull(obj);
-      assertTrue(((ResourceImpl)mem).getNativeBaseOffset() == 0);
+      assertTrue(((ResourceImpl)mem).getCumulativeOffset(0) != 0);
     }
 
     assertTrue(mem.isValid() == true);
@@ -216,11 +216,11 @@ public class LeafImplTest {
     if (direct) {
       assertTrue(buf.isDirectResource());
       assertNull(obj);
-      assertTrue(((ResourceImpl)buf).getNativeBaseOffset() != 0);
+      assertTrue(((ResourceImpl)buf).getCumulativeOffset(0) != 0);
     } else {
       assertFalse(buf.isDirectResource());
       assertNotNull(obj);
-      assertTrue(((ResourceImpl)buf).getNativeBaseOffset() == 0);
+      assertTrue(((ResourceImpl)buf).getCumulativeOffset(0) != 0);
     }
 
     assertTrue(buf.isValid() == true);
@@ -243,11 +243,11 @@ public class LeafImplTest {
     if (direct) {
       assertTrue(nnMem.isDirectResource());
       assertNull(obj);
-      assertTrue(((ResourceImpl)nnMem).getNativeBaseOffset() != 0);
+      assertTrue(((ResourceImpl)nnMem).getCumulativeOffset(0) != 0);
     } else {
       assertFalse(nnMem.isDirectResource());
       assertNotNull(obj);
-      assertTrue(((ResourceImpl)nnMem).getNativeBaseOffset() == 0);
+      assertTrue(((ResourceImpl)nnMem).getCumulativeOffset(0) != 0);
     }
 
     assertTrue(nnMem.isValid() == true);
@@ -270,11 +270,11 @@ public class LeafImplTest {
     if (direct) {
       assertTrue(nnBuf.isDirectResource());
       assertNull(obj);
-      assertTrue(((ResourceImpl)nnBuf).getNativeBaseOffset() != 0);
+      assertTrue(((ResourceImpl)nnBuf).getCumulativeOffset(0) != 0);
     } else {
       assertFalse(nnBuf.isDirectResource());
       assertNotNull(obj);
-      assertTrue(((ResourceImpl)nnBuf).getNativeBaseOffset() == 0);
+      assertTrue(((ResourceImpl)nnBuf).getCumulativeOffset(0) != 0);
     }
 
     assertTrue(nnBuf.isValid() == true);
diff --git a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/ResourceTest.java b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/ResourceTest.java
index 8b0fedf..f63cad4 100644
--- a/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/ResourceTest.java
+++ b/datasketches-memory-java8/src/test/java/org/apache/datasketches/memory/internal/ResourceTest.java
@@ -86,13 +86,6 @@ public class ResourceTest {
     assertEquals(Prim.DOUBLE.scale(), ARRAY_DOUBLE_INDEX_SCALE);
   }
 
-  @Test
-  public void checkGetNativeBaseOffset_Heap() {
-    WritableMemory wmem = WritableMemory.allocate(8); //heap
-    final long offset = ((ResourceImpl)wmem).getNativeBaseOffset();
-    assertEquals(offset, 0L);
-  }
-
   @Test
   public void checkIsByteOrderCompatible() {
     WritableMemory wmem = WritableMemory.allocate(8);


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