From 37956ca03f86c858ef0d97b62f8549abb59dd7e6 Mon Sep 17 00:00:00 2001 From: austnwil Date: Tue, 30 Sep 2025 14:40:09 -0700 Subject: [PATCH 1/2] Specify that OversizedSymbolTableHandler is required for limited buffers --- .../java/com/amazon/ion/IonBufferConfiguration.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/com/amazon/ion/IonBufferConfiguration.java b/src/main/java/com/amazon/ion/IonBufferConfiguration.java index 12256bcfa8..98116e93eb 100644 --- a/src/main/java/com/amazon/ion/IonBufferConfiguration.java +++ b/src/main/java/com/amazon/ion/IonBufferConfiguration.java @@ -185,6 +185,18 @@ private IonBufferConfiguration(Builder builder) { } } + /** + * Requires that the maximum buffer size not be limited. + */ + @Override + protected void requireMaximumBufferSize() { + try { + super.requireMaximumBufferSize(); + } catch(IllegalArgumentException e) { + throw new IllegalArgumentException("Must specify both an OversizedValueHandler and OversizedSymbolTableHandler when a custom maximum buffer size is specified."); + } + } + /** * @return the handler that will be notified when oversized symbol tables are encountered. */ From be4714f9811e20fd884b32a188c7928b2fddd645 Mon Sep 17 00:00:00 2001 From: austnwil Date: Tue, 30 Sep 2025 15:49:03 -0700 Subject: [PATCH 2/2] Avoid catch-and-rethrow for missing OversizedValueHandler errors --- .../java/com/amazon/ion/BufferConfiguration.java | 2 +- .../java/com/amazon/ion/IonBufferConfiguration.java | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/amazon/ion/BufferConfiguration.java b/src/main/java/com/amazon/ion/BufferConfiguration.java index 69c6f795a8..53bad70974 100644 --- a/src/main/java/com/amazon/ion/BufferConfiguration.java +++ b/src/main/java/com/amazon/ion/BufferConfiguration.java @@ -231,7 +231,7 @@ protected BufferConfiguration(Builder builder) { /** * Requires that the maximum buffer size not be limited. */ - protected void requireMaximumBufferSize() { + private void requireMaximumBufferSize() { if (maximumBufferSize < _Private_IonConstants.ARRAY_MAXIMUM_SIZE) { throw new IllegalArgumentException( "Must specify an OversizedValueHandler when a custom maximum buffer size is specified." diff --git a/src/main/java/com/amazon/ion/IonBufferConfiguration.java b/src/main/java/com/amazon/ion/IonBufferConfiguration.java index 98116e93eb..efcfa49f63 100644 --- a/src/main/java/com/amazon/ion/IonBufferConfiguration.java +++ b/src/main/java/com/amazon/ion/IonBufferConfiguration.java @@ -3,6 +3,8 @@ package com.amazon.ion; +import com.amazon.ion.impl._Private_IonConstants; + /** * Configures buffers that hold Ion data. */ @@ -188,12 +190,11 @@ private IonBufferConfiguration(Builder builder) { /** * Requires that the maximum buffer size not be limited. */ - @Override - protected void requireMaximumBufferSize() { - try { - super.requireMaximumBufferSize(); - } catch(IllegalArgumentException e) { - throw new IllegalArgumentException("Must specify both an OversizedValueHandler and OversizedSymbolTableHandler when a custom maximum buffer size is specified."); + private void requireMaximumBufferSize() { + if (getMaximumBufferSize() < _Private_IonConstants.ARRAY_MAXIMUM_SIZE) { + throw new IllegalArgumentException( + "Must specify both an OversizedValueHandler and OversizedSymbolTableHandler when a custom maximum buffer size is specified." + ); } }