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

jamesbognar pushed a commit to branch docs
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/docs by this push:
     new e90b8f39d5 docs: add release note for HoconTokenizer =+ lookahead bug 
fix (TODO-137)
e90b8f39d5 is described below

commit e90b8f39d597eaa651e84d15c7f7b4786426b10a
Author: James Bognar <[email protected]>
AuthorDate: Thu May 28 16:23:57 2026 -0400

    docs: add release note for HoconTokenizer =+ lookahead bug fix (TODO-137)
    
    Co-authored-by: Cursor <[email protected]>
---
 pages/release-notes/9.5.0.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/pages/release-notes/9.5.0.md b/pages/release-notes/9.5.0.md
index c0e74456cf..ec3a7428b3 100644
--- a/pages/release-notes/9.5.0.md
+++ b/pages/release-notes/9.5.0.md
@@ -198,6 +198,7 @@ Closes out the format-control extension work (TODO-4 / 
TODO-50 / TODO-52 / TODO-
   - **Parser dispatch for collection-element / top-level `byte[]` (Bug #12)** 
— Toml / Proto / Hjson / Hocon parsers now consult `BinarySwap.unswap` for 
`byte[]` collection elements and top-level values at non-`NOT_SET` formats, so 
wire forms like `"0001ff807f102030"` (HEX) decode to the correct 8-byte array 
instead of a 16-byte ASCII char array.
   - **`BinaryFormat.BASE64_URL` hint (Bug #9)** — `BinaryFormat.parse(String)` 
now honors the `BASE64_URL` constant directly (routing to 
`Base64.getUrlDecoder()` which accepts missing padding) before falling through 
to the format-agnostic wire-shape sniff. Non-3-aligned URL-safe payloads 
without `-` / `_` chars no longer fail with "Invalid BASE64 string length".
   - **Hocon parser-fragility (Bugs #10, #15)** — 
`HoconWriter.QUOTE_VALUE_CHARS` extended to cover `=` (BASE64 padding), `+` 
(`+NNNN` timezone offsets), and `$` (nested-class `BINARY_NAME`); 
`HoconTokenizer` recursion guard now throws a clean `IOException` instead of 
`StackOverflowError`; `HoconParserSession.parseArray` / `parseObject` 
array-flatten bug fixed (nested arrays no longer collapse via spurious 
array-concatenation).
+  - **`HoconTokenizer` `=+` lookahead bug (TODO-137)** — 
`HoconTokenizer.readTokenImmediate` incorrectly guarded the `EQUALS` emission 
with `peekChar() != '+'`, causing any `=+` character sequence in the input to 
throw `IOException("Unexpected character '='")` instead of emitting `EQUALS`. 
Since the `+=` (PLUS_EQUALS) operator is already handled by an independent 
branch that reads `+` first, the lookahead on the `=` branch was both 
unnecessary and wrong. The guard has been removed; `=` i [...]
   - **`ClassFormat.FQCN` nested-types / arrays parser-fragility (Bug #16)** — 
`ClassFormat.parse` now resolves nested types (`java.util.Map.Entry` → 
`java.util.Map$Entry`), array suffixes (`int[]`, `java.lang.String[][]`), and 
leaf primitives (`Class.forName("int")` previously rejected; now resolves 
through a primitive-name table).
   - **`Currency` default-swap registration (Bug #6)** — `Currency` added to 
`DefaultSwaps` (sibling of the existing `Locale` / `TimeZone` / `ZoneId` 
entries) so `Currency` bean properties round-trip at the default 
`CurrencyFormat.ISO_CODE` / `NOT_SET` levels.
   - **UrlEncoding-expanded empty `byte[]` (Bug #13)** — empty `byte[]` 
properties now round-trip as `byte[0]` instead of `null` through the 
expanded-params UrlEncoding flavor.

Reply via email to