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 c3847ad70e feat(marshall): JSON5L (JSON5 + JSONL) line-delimited format
c3847ad70e is described below

commit c3847ad70e26ba516beb8b3593d34c38703b03de
Author: James Bognar <[email protected]>
AuthorDate: Wed Jun 17 08:53:23 2026 -0400

    feat(marshall): JSON5L (JSON5 + JSONL) line-delimited format
---
 pages/release-notes/10.0.0.md         |  17 +++++-
 pages/topics/02.25.04.Json5.md        |   2 +
 pages/topics/02.38.01.JsonlBasics.md  |   1 +
 pages/topics/02.38.02.Json5lBasics.md | 109 ++++++++++++++++++++++++++++++++++
 sidebars.ts                           |   5 ++
 static/ai/juneau-knowledge.jsonl      |  22 +++++--
 static/ai/manifest.json               |   8 +--
 static/ai/taxonomy.json               |  18 +++---
 8 files changed, 161 insertions(+), 21 deletions(-)

diff --git a/pages/release-notes/10.0.0.md b/pages/release-notes/10.0.0.md
index f9d95a68cd..c3dd7308d6 100644
--- a/pages/release-notes/10.0.0.md
+++ b/pages/release-notes/10.0.0.md
@@ -200,19 +200,19 @@ This feature was inspired by an earlier proposal from 
**Gary Gregory** ([@garydg
 Juneau 10.0 introduces a public low-level streaming surface that complements 
the POJO databind path with cursor-based push and pull primitives, layered:
 
 - **<a href="/docs/topics/RecordStreaming">RecordReader</a> / <a 
href="/docs/topics/RecordStreaming">RecordWriter</a>** — whole-value record 
cursor (`canRead()` / `read(Class)` / `write(Object)`). Format-neutral, works 
on every Juneau format.
-- **<a href="/docs/topics/TokenStreaming">TokenReader</a> / <a 
href="/docs/topics/TokenStreaming">TokenWriter</a>** — fine-grained structural 
cursor (`next()`, `startObject()`, `fieldName(...)`, etc.). For formats whose 
wire encoding is already token-shaped: JSON, JSON5, JSONL, CBOR, MsgPack.
+- **<a href="/docs/topics/TokenStreaming">TokenReader</a> / <a 
href="/docs/topics/TokenStreaming">TokenWriter</a>** — fine-grained structural 
cursor (`next()`, `startObject()`, `fieldName(...)`, etc.). For formats whose 
wire encoding is already token-shaped: JSON, JSON5, JSONL, JSON5L, CBOR, 
MsgPack.
 
 `TokenReader extends RecordReader` and `TokenWriter extends RecordWriter`, so 
token-capable formats inherit record-stream semantics for free; record-only 
formats expose only the record surface so the type system enforces "no nested 
structure visible at the cursor."
 
 Capability is expressed through **role interfaces** in 
`org.apache.juneau.marshall.stream` and detected with `instanceof` (there is no 
capability enum):
 
 - **`RecordReadable` / `RecordWritable`** — `parseRecords(input)` / 
`serializeRecords(output)`; implemented by every streaming format.
-- **`TokenReadable` / `TokenWritable`** — `parseTokens(input)` / 
`serializeTokens(output)`; implemented by json, json5, jsonl, cbor, msgpack. 
(These extend the record roles.)
+- **`TokenReadable` / `TokenWritable`** — `parseTokens(input)` / 
`serializeTokens(output)`; implemented by json, json5, jsonl, json5l, cbor, 
msgpack. (These extend the record roles.)
 - **`ArrayRecordReadable` / `ArrayRecordWritable`** — 
`parseArrayRecords(input)` / `serializeArrayRecords(output)`; implemented by 
json, json5, cbor, msgpack, bson, parquet, yaml, xml, html.
 
 A cursor-quality signal (`isRecordStreaming()` / `isArrayRecordStreaming()`) 
distinguishes a true O(1) streaming cursor from a buffered one. Writer-only 
formats (jsonschema, jcs, soap-xml) implement only the `*Writable` roles.
 
-Naturally-multi-record formats (jsonl, csv, sse) expose 
`parseRecords`/`serializeRecords` as a true multi-record cursor: N read calls 
yield N records; N write calls produce wire output equivalent to 
`serialize(List.of(records))`.
+Naturally-multi-record formats (jsonl, json5l, csv, sse) expose 
`parseRecords`/`serializeRecords` as a true multi-record cursor: N read calls 
yield N records; N write calls produce wire output equivalent to 
`serialize(List.of(records))`.
 
 Opt-in <a href="/docs/topics/ArrayRecordStreaming">parseArrayRecords / 
serializeArrayRecords</a> for streaming the elements of a top-level wire array 
on JSON / JSON5 / CBOR (actually streaming, O(1) memory in array length), plus 
MsgPack / BSON / Parquet / YAML / XML / HTML (buffered). MsgPack offers a 
count-overload `serializeArrayRecords(output, expectedCount)` that writes the 
length-prefix header up front and serializes each element directly to the 
output stream — no per-element buffer [...]
 
@@ -228,6 +228,17 @@ A full topic-page family lives under "2.50. Token / Record 
Streaming" in the Mar
 
 The streaming surface is **purely structural** — object swaps and `@Schema` 
annotations apply only on the POJO databind path, never at the token layer. 
Both surfaces are additive; the existing POJO ↔ document API remains the 
primary, recommended path.
 
+#### JSON5L line-delimited format
+
+Juneau 10.0 adds **JSON5L** — a new line-delimited format combining the 
relaxed [JSON5](/docs/topics/Json5) dialect with 
[JSONL](/docs/topics/JsonlBasics)'s one-document-per-line framing. It ships as 
a new `org.apache.juneau.marshall.json5l` package (`Json5lSerializer` / 
`Json5lParser` / sessions / `Json5lTokenReader`), a `Json5l` marshaller, and a 
`@Json5lConfig` annotation.
+
+- **Strict by default, sugar opt-in** — the serializer emits strict RFC-8259 
JSON per line by default (byte-identical to `JsonlSerializer`), keeping output 
maximally portable. `Json5lSerializer.create().json5Sugar()` switches the 
per-line output to JSON5 sugar (single-quoted strings, unquoted field names 
where safe).
+- **Full JSON5 parse leniency** — the parser accepts the full JSON5 dialect on 
each line (comments, unquoted/single-quoted keys, trailing commas, relaxed 
numbers). Because JSON5 is a strict superset of JSON, it also reads plain JSONL 
input unchanged. Blank and comment-only lines are skipped; inline comments are 
tolerated; `/* ... */` block comments must open and close on the same line.
+- **Token-streaming and array-record streaming parity** with JSONL (O(1) 
memory line cursor).
+- **First-class REST media type** `application/json5l` (`text/json5l`, plus 
reduced-q-value cross-acceptance of the JSONL family), registered in 
`BasicUniversalConfig` and the `RestClient.universal()` set.
+
+See the new <a href="/docs/topics/Json5lBasics">JSON5L Basics</a> topic page.
+
 #### Inclusion knob: `nonDefault()` on `Serializer.Builder`
 
 Juneau 10.0 adds a new serializer-side inclusion knob to suppress properties 
whose value equals the type's
diff --git a/pages/topics/02.25.04.Json5.md b/pages/topics/02.25.04.Json5.md
index 9dcd267522..13ccc578de 100644
--- a/pages/topics/02.25.04.Json5.md
+++ b/pages/topics/02.25.04.Json5.md
@@ -63,4 +63,6 @@ assertEquals("{foo:'bar',baz:123}", 
serializer.toString(myPojo));
 <node-0><java-class><a 
href="/site/apidocs/org/apache/juneau/marshall/json/Json5Serializer.html" 
target="_blank">Json5Serializer</a></java-class></node-0>
 <node-0><java-class><a 
href="/site/apidocs/org/apache/juneau/marshall/json/Json5Parser.html" 
target="_blank">Json5Parser</a></java-class></node-0>
 </tree>
+
+- [JSON5L Basics](/docs/topics/Json5lBasics) — JSON5 combined with 
newline-delimited (one document per line) framing.
 :::
\ No newline at end of file
diff --git a/pages/topics/02.38.01.JsonlBasics.md 
b/pages/topics/02.38.01.JsonlBasics.md
index 4a8188aba4..41a391a176 100644
--- a/pages/topics/02.38.01.JsonlBasics.md
+++ b/pages/topics/02.38.01.JsonlBasics.md
@@ -107,6 +107,7 @@ public class MyResource extends RestServlet implements 
BasicUniversalConfig { ..
 :::info See Also
 
 - [JSON Lines Specification](https://jsonlines.org/) for the full format 
definition.
+- [JSON5L Basics](/docs/topics/Json5lBasics) — the relaxed-dialect sibling 
that tolerates comments, unquoted keys, and single quotes per line.
 - [Marshallers](/docs/topics/Marshalling) for the marshaller API overview.
 - [Token-Streaming Basics](/docs/topics/TokenStreamingBasics) — JSONL is a 
`FULL` streaming format because each line is itself a JSON value that maps 
cleanly onto the token cursor.
 
diff --git a/pages/topics/02.38.02.Json5lBasics.md 
b/pages/topics/02.38.02.Json5lBasics.md
new file mode 100644
index 0000000000..812911506e
--- /dev/null
+++ b/pages/topics/02.38.02.Json5lBasics.md
@@ -0,0 +1,109 @@
+---
+title: "JSON5L Basics"
+slug: Json5lBasics
+---
+
+Juneau supports converting arbitrary POJOs to and from JSON5L — a combination 
of the relaxed [JSON5](/docs/topics/Json5) dialect and 
[JSONL](/docs/topics/JsonlBasics)'s newline-delimited framing (one document per 
line). JSON5L is a good fit for human-edited line-delimited config and data 
files: it keeps JSONL's "one record per line" streaming model while tolerating 
comments, unquoted keys, single-quoted strings, and trailing commas on each 
line.
+
+The <a 
href="/site/apidocs/org/apache/juneau/marshall/json5l/Json5lSerializer.html" 
target="_blank">Json5lSerializer</a> converts POJOs to JSON5L, and the <a 
href="/site/apidocs/org/apache/juneau/marshall/json5l/Json5lParser.html" 
target="_blank">Json5lParser</a> creates POJOs from JSON5L by parsing each line 
as a JSON5 value.
+
+##### Maven Dependency
+
+JSON5L support is included in `juneau-marshall`:
+
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-marshall</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+```
+
+##### Quick Start
+
+```java
+// A simple bean
+public class Person {
+    public String name;
+    public int age;
+    public Person() {}
+    public Person(String name, int age) { this.name = name; this.age = age; }
+}
+
+// Serialize a list of beans to JSON5L
+List<Person> people = List.of(new Person("Alice", 30), new Person("Bob", 25));
+String json5l = Json5l.of(people);
+```
+
+By default the output is strict RFC-8259 JSON per line — byte-identical to 
JSONL:
+
+```json
+{"name":"Alice","age":30}
+{"name":"Bob","age":25}
+```
+
+##### Strict by default, JSON5 sugar opt-in
+
+The serializer emits strict JSON per line by default, keeping output maximally 
portable (any JSONL or JSON consumer can read it). Enable `json5Sugar()` to 
emit JSON5 sugar — single-quoted strings and unquoted field names where safe:
+
+```java
+Json5lSerializer s = Json5lSerializer.create().json5Sugar().build();
+String json5l = s.serialize(people);
+```
+
+Produces:
+
+```json
+{name:'Alice',age:30}
+{name:'Bob',age:25}
+```
+
+##### Parsing
+
+The parser accepts the full JSON5 dialect on each line. Because JSON5 is a 
strict superset of JSON, it also reads plain JSONL input unchanged:
+
+```java
+// Strict JSONL, JSON5-sugared, or mixed lines all parse
+String input =
+    "// a header comment\n" +
+    "{name:'Alice',age:30}\n" +
+    "{\"name\":\"Bob\",\"age\":25}  // trailing comment\n";
+
+List<Person> parsed = Json5l.to(input, List.class, Person.class);
+```
+
+##### Comment handling
+
+JSON5L follows JSON5 comment rules line-by-line:
+
+- A line that is **blank** or **contains only a comment** (`// ...` or a 
single-line `/* ... */`) is skipped, like a blank line.
+- **Inline comments** within a record's JSON are tolerated (e.g. `{a:1} // 
note`).
+- A `/* ... */` **block comment must open and close on the same physical 
line** — block comments cannot span record boundaries, since each line is 
parsed independently.
+
+##### Media Types
+
+- **Produces**: `application/json5l`
+- **Accepts**: `application/json5l`, `text/json5l`, and (at a reduced q-value) 
the JSONL family `application/jsonl`, `application/x-ndjson`, `text/jsonl`.
+
+##### REST Integration
+
+```java
+// JSON5L is included in BasicUniversalConfig
+@Rest
+public class MyResource extends RestServlet implements BasicUniversalConfig { 
... }
+```
+
+##### Limitations
+
+- **No pretty-printing**: Each value must fit on a single line; 
`useWhitespace()` is always suppressed.
+- **First-line-only for single-object targets**: When parsing to a single 
non-collection type, only the first non-blank, non-comment line is parsed; 
trailing lines are ignored.
+- **No record-spanning block comments**: A `/* ... */` comment must begin and 
end on the same line.
+
+:::info See Also
+
+- [JSONL Basics](/docs/topics/JsonlBasics) — the strict line-delimited sibling 
format.
+- [JSON5](/docs/topics/Json5) — the relaxed JSON dialect JSON5L parses per 
line.
+- [JSON Lines Specification](https://jsonlines.org/) and [JSON5 
Specification](https://json5.org/) for the underlying formats.
+- [Token-Streaming Basics](/docs/topics/TokenStreamingBasics) — JSON5L is a 
`FULL` streaming format; each line maps cleanly onto the token cursor.
+
+:::
diff --git a/sidebars.ts b/sidebars.ts
index f23d57bde2..35fefb18e3 100644
--- a/sidebars.ts
+++ b/sidebars.ts
@@ -687,6 +687,11 @@ const sidebars: SidebarsConfig = {
                                                                        id: 
'topics/02.38.01.JsonlBasics',
                                                                        label: 
'2.38.1. JSONL Basics',
                                                                },
+                                                               {
+                                                                       type: 
'doc',
+                                                                       id: 
'topics/02.38.02.Json5lBasics',
+                                                                       label: 
'2.38.2. JSON5L Basics',
+                                                               },
                                                        ],
                                                },
                                                {
diff --git a/static/ai/juneau-knowledge.jsonl b/static/ai/juneau-knowledge.jsonl
index 0e438e74b8..0e22b8db67 100644
--- a/static/ai/juneau-knowledge.jsonl
+++ b/static/ai/juneau-knowledge.jsonl
@@ -14,7 +14,7 @@
 {"description": "Detected summary()/su() annotation attributes used by Juneau 
schema and HTTP metadata annotations. These fields provide short descriptions 
intended for compact AI/LLM consumption.", "id": "api-metadata:650bc860a2c3", 
"module": "api-metadata", "related_ids": [], "source_path": 
"juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/server/RestPatch.java",
 "source_type": "api-metadata", "summary": "RestPatch exposes summary/su 
metadata fields for concise AI-or [...]
 {"description": "Detected summary()/su() annotation attributes used by Juneau 
schema and HTTP metadata annotations. These fields provide short descriptions 
intended for compact AI/LLM consumption.", "id": "api-metadata:7e1bb7a3a947", 
"module": "api-metadata", "related_ids": [], "source_path": 
"juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/server/RestPost.java",
 "source_type": "api-metadata", "summary": "RestPost exposes summary/su 
metadata fields for concise AI-orie [...]
 {"description": "Detected summary()/su() annotation attributes used by Juneau 
schema and HTTP metadata annotations. These fields provide short descriptions 
intended for compact AI/LLM consumption.", "id": "api-metadata:8b1ffe4e4b64", 
"module": "api-metadata", "related_ids": [], "source_path": 
"juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/server/RestPut.java",
 "source_type": "api-metadata", "summary": "RestPut exposes summary/su metadata 
fields for concise AI-orient [...]
-{"description": "# Release 10.0.0\n\n**Date:** TBD\n\nJuneau 10.0.0 is a major 
version release representing a significant milestone for the Apache Juneau 
project. This release continues the feature work introduced in 9.5.0 while also 
delivering a broad code-quality and maintainability uplift via an extensive 
SonarQube/SonarLint cleanup pass across the entire codebase.\n\n### Major 
version bump note\n\nThis is the first release in the 10.x line. The jump from 
9.x to 10.0 reflects accumula [...]
+{"description": "# Release 10.0.0\n\n**Date:** TBD\n\nJuneau 10.0.0 is a major 
version release representing a significant milestone for the Apache Juneau 
project. This release continues the feature work introduced in 9.5.0 while also 
delivering a broad code-quality and maintainability uplift via an extensive 
SonarQube/SonarLint cleanup pass across the entire codebase.\n\n### Major 
version bump note\n\nThis is the first release in the 10.x line. The jump from 
9.x to 10.0 reflects accumula [...]
 {"description": "# Release 5.0.0.0\n\n**Date:** Jun 11, 2012\n\nVersion 5.0 
marks a major release milestone for the Juno/JJSON library.  \n\nIt is now 
available for download from iRAM under the name \"Juno (previously JJSON)\".  
\n\nThe Juno Starters Guide has been updated to reflect new functionality in 
this release.\n\n- New name. Unfortunately, \"JJSON\" was already trademarked 
by another similar library. Therefore, it's been renamed \"Juno\" (after the 
Roman goddess and wife of Jupit [...]
 {"description": "# Release 5.0.0.1\n\n**Date:** Jun 14, 2012\n\nJuno 5.0.0.1 
is a moderate update.\n\n- New support for generating XML-Schema documents from 
POJO models.\n\n- New support for serializing to RDF/XML.", "id": 
"release-note:907dd2e70994", "module": "release-notes", "related_ids": [], 
"source_path": "pages/release-notes/5.0.0.01.md", "source_type": 
"release-note", "summary": "**Date:** Jun 14, 2012", "tags": ["release-note", 
"release-notes"], "title": "Release 5.0.0.1", "upda [...]
 {"description": "# Release 5.0.0.2\n\n**Date:** Sept 28, 2012\n\nJuno 5.0.0.2 
is a minor update.\n\n- Improvements to Javadocs.\n  Most of the information in 
the Juno Starters Guide wiki has been moved into the overview and package-level 
javadocs.\n  Since the information is now written in HTML, you can now copy and 
paste the code examples directly from the\n  Javadocs.\n  The code examples are 
also syntax-highlighted using CSS.\n\n- Support for defining default XML 
namespaces on package [...]
@@ -124,10 +124,14 @@
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/annotation/ParentProperty.html\" 
target=\"_blank\">@ParentProperty</a> annotation is used to identify a setter 
method or field for adding a parent reference to a child object.\n\nThis 
annotation is used by parsers to automatically establish parent-child 
relationships when parsing nested objects. When a child object is created 
within a parent object (e.g., in a list or as a property), the parser 
automatically sets the parent r [...]
 {"description": "Juneau parsers can use builders to instantiate POJOs.\nThis 
is useful in cases where you want to create beans with read-only 
properties.\n\nNote that while it's possible to do this using the <a 
href=\"/site/apidocs/org/apache/juneau/annotation/MarshalledCtor.html\" 
target=\"_blank\">@MarshalledCtor</a>\nannotation, using builders can often be 
cleaner.\n\nA typical builder usage is shown below:\n\n```java\nMyBean bean = 
MyBean.create().foo(\"foo\").bar(123).build();\n```\ [...]
 {"description": "Juneau serializers treat instances of `Readers` and 
`InputStreams` special by simply serializing their contents directly\nto the 
output stream or writer.\nThis allows you to embed fully customized serializer 
output.\n\n```java\npublic class MyBean {\n    // A bean property that produces 
raw JSON.\n    public Reader f1 = new StringReader(\"{'foo':'bar'}\");\n}\n\n// 
Produces \"{f1:{'foo':'bar'}}\"\nString json = Json5.of(new 
MyBean());\n```\n\nNote that if you're serializ [...]
+{"description": "View-based projection lets you define named **views** \u2014 
property subsets \u2014 on a bean and choose which view\nis active per 
serialize/parse call. Only the properties belonging to the active view are 
emitted on\nserialization; on parsing, out-of-view properties are silently 
discarded (or rejected, depending on your\nunknown-property policy).\n\nThis is 
the Juneau equivalent of Jackson's `@JsonView` / 
`MapperFeature.DEFAULT_VIEW_INCLUSION`.\n\n---\n\n## Declaring v [...]
 {"description": "There is a separate set of serializers and parsers for 
marshalling HTTP parts (query, form-data, headers, path\nvariables, and 
plain-text request bodies).\nThe distinction is that these are designed to 
marshall directly to-and-from strings based on OpenAPI 
schema\ninformation.\n\n```java\n// Schema information about our 
part.\nHttpPartSchema schema = HttpPartSchema\n    .tArrayPipes()\n    
.items(\n        HttpPartSchema\n            .tArrayCsv()\n            
.items(\n   [...]
+{"description": "Juneau gives you fine-grained control over **what gets 
emitted on the wire** and **what happens when a `null`\narrives during 
parsing**. The two surfaces are co-designed so the round-trip behavior is 
predictable across\nevery format (JSON, JSON5, XML, HTML, YAML, MsgPack, 
\u2026).\n\nThis page documents:\n\n- The serializer **inclusion knobs** that 
suppress empty / default values.\n- The parser **`Nulls` policy** that decides 
what to do when an incoming `null` reaches a  [...]
 {"description": "Serializers and parsers have a wide variety of configurable 
settings.\nTheir builders all extend from the <a 
href=\"/site/apidocs/org/apache/juneau/MarshallingContext.Builder.html\" 
target=\"_blank\">MarshallingContext.Builder</a> class\nthat allows you to 
easily construct new instances from scratch or build upon existing 
instances.\n\nFor example, the following code shows how to configure a JSON 
serializer:\n\n```java\nWriterSerializer serializer = JsonSerializer\n    . 
[...]
 {"description": "All configurable properties described in the previous section 
have annotation equivalents that can be applied on classes\nor methods.\n\nIn 
the section on the REST server API, we describe how to configure serializers 
and parsers using `@XConfig` annotations\nlike those shown 
below:\n\n```java\n@Rest(\n    path=\"/addressBook\",\n    title=\"Address Book 
REST API\"\n    
...\n)\n@SerializerConfig(quoteChar=\"'\")\n@RdfConfig(rdfxml_tab=\"5\", 
addRootProperty=\"true\")\n@Ma [...]
-{"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/collections/JsonMap.html\" 
target=\"_blank\">JsonMap</a> and <a 
href=\"/site/apidocs/org/apache/juneau/collections/JsonList.html\" 
target=\"_blank\">JsonList</a> classes are generic Java representations of JSON 
objects and arrays.\nThese classes can be used to create \"unstructured\" 
models for serialization (as opposed to \"structured\" models\nconsisting of 
beans).\n\nIf you want to quickly generate JSON/XML/HTML from gener [...]
+{"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/collections/MarshalledNode.html\"
 target=\"_blank\">MarshalledNode</a> class is a typed tree\n**fa\u00e7ade** 
layered over the generic-collections model \u2014 <a 
href=\"/site/apidocs/org/apache/juneau/marshall/collections/MarshalledMap.html\"
 target=\"_blank\">MarshalledMap</a> /\n<a 
href=\"/site/apidocs/org/apache/juneau/marshall/collections/MarshalledList.html\"
 target=\"_blank\">MarshalledList</a> and their\n<a h [...]
+{"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/collections/JsonMap.html\" 
target=\"_blank\">JsonMap</a> and <a 
href=\"/site/apidocs/org/apache/juneau/marshall/collections/JsonList.html\" 
target=\"_blank\">JsonList</a> classes are generic Java representations of JSON 
objects and arrays.\nThese classes can be used to create \"unstructured\" 
models for serialization (as opposed to \"structured\" models\nconsisting of 
beans).\n\nIf you want to quickly generate JSON/X [...]
+{"description": "Juneau provides **first-class, direct serializer/parser 
support** for a wide range of JDK datatypes \u2014 no\nextra modules, no opt-in 
registration, no swap setup required for the common cases. This page enumerates 
the\nsupported types, their default wire forms, and the per-type knobs that let 
you adjust the wire form across\nall formats.\n\n## Design principle: 
first-class > swaps\n\nJuneau handles common JDK datatypes through **direct 
serializer/parser code paths plus [...]
 {"description": "The Juneau parsers have the ability to parse into complex 
data types that consist of multidimensional arrays and nested\n`Maps` and 
`Collections` using the methods below:\n\n<tree>\n<node-0><java-class><a 
href=\"/site/apidocs/org/apache/juneau/marshall/parser/Parser.html\" 
target=\"_blank\">Parser</a></java-class></node-0>\n<node-1><java-method><a 
href=\"/site/apidocs/org/apache/juneau/marshall/parser/Parser.html#<init>(org.apache.juneau.marshall.parser.Parser.Builder)\"
 [...]
 {"description": "On top of the serializers and parsers are the <a 
href=\"/site/apidocs/org/apache/juneau/marshall/serializer/SerializerSet.html\" 
target=\"_blank\">SerializerSet</a> and <a 
href=\"/site/apidocs/org/apache/juneau/marshall/parser/ParserSet.html\" 
target=\"_blank\">ParserSet</a> classes.\nThese classes allow serializers and 
parsers to be grouped and retrieved by W3C-compliant HTTP `Accept` 
and\n`Content-Type` values...\n\n```java\n// Construct a new serializer group 
with con [...]
 {"description": "<a 
href=\"/site/apidocs/org/apache/juneau/swap/ObjectSwap.html\" 
target=\"_blank\">Swaps</a> are a critical component of Juneau.\nThey allow the 
serializers and parsers to handle Java objects that wouldn't normally be 
serializable.\n\nSwaps are, simply put, 'object swappers' that swap in 
serializable objects for non-serializable ones during serialization, and 
vis-versa during parsing.\n\nSome examples of non-serializable objects are 
`File`, `Reader`, `Iterable`, etc...\n [...]
@@ -157,11 +161,11 @@
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/commons/inject/Value.html\" 
target=\"_blank\">@Value</a> annotation\n(introduced in 9.5.0, package 
`org.apache.juneau.commons.inject`) is a declarative way to inject 
configuration\nvalues into beans created by <a 
href=\"/site/apidocs/org/apache/juneau/commons/inject/BeanInstantiator.html\" 
target=\"_blank\">BeanInstantiator</a> \u2014 constructor parameters, setter 
parameters, and fields.\n\nIt complements <a href=\"/site/api [...]
 {"description": "This page documents the framework-internal sites that read 
configuration through the\n`@Value` seam (introduced in 9.5.0). It is a 
reference for users who:\n\n- Used to import the deleted `CallLogger.SP_xxx` 
constants directly.\n- Want to know which framework defaults are now 
`@Value`-driven (and therefore overridable\n  through the standard `Settings` 
precedence chain \u2014 system properties, environment\n  variables, registered 
`PropertySource`s, and `Settings.setGlob [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/encoders/package-summary.html\" 
target=\"_blank\">org.apache.juneau.encoders</a> package defines an API for 
handling encoding-based matching\nof `Accept-Encoding`/`Content-Encoding` HTTP 
headers.\n\nIt consists of the following 
classes:\n\n<tree>\n<node-0><java-class><a 
href=\"/site/apidocs/org/apache/juneau/encoders/EncoderSet.html\" 
target=\"_blank\">EncoderSet</a></java-class></node-0>\n<node-0><java-abstract-class><a
 href [...]
-{"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/objecttools/package-summary.html\" 
target=\"_blank\">org.apache.juneau.objecttools</a> package defines convenience 
utility\nclasses for accessing and manipulating POJOs.\n\nIt consists of the 
following classes:\n\n<tree>\n<node-0><java-class><a 
href=\"/site/apidocs/org/apache/juneau/objecttools/ObjectRest.html\" 
target=\"_blank\">ObjectRest</a></java-class></node-0>\n<node-0><java-class><a 
href=\"/site/apidocs/org/apache/june [...]
+{"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/objecttools/package-summary.html\" 
target=\"_blank\">org.apache.juneau.objecttools</a> package defines convenience 
utility\nclasses for accessing and manipulating POJOs.\n\nIt consists of the 
following classes:\n\n<tree>\n<node-0><java-class><a 
href=\"/site/apidocs/org/apache/juneau/objecttools/ObjectSearcher.html\" 
target=\"_blank\">ObjectSearcher</a></java-class></node-0>\n<node-0><java-class><a
 href=\"/site/apidocs/org/apa [...]
 {"description": "Juneau supports converting arbitrary POJOs to and from JSON 
using ultra-efficient serializers and parsers.\nThe <a 
href=\"/site/apidocs/org/apache/juneau/marshall/json/JsonSerializer.html\" 
target=\"_blank\">JsonSerializer</a> converts POJOs directly to strict RFC 8259 
JSON (double quotes) without intermediate DOM objects.\nThe <a 
href=\"/site/apidocs/org/apache/juneau/marshall/json/JsonParser.html\" 
target=\"_blank\">JsonParser</a> creates POJOs from strict JSON only. F [...]
 {"description": "The JSON data type produced depends on the Java object type 
being serialized.\n\n- Primitives and primitive objects are converted to JSON 
primitives.\n- Beans and `Maps` are converted to JSON objects.\n- `Collections` 
and arrays are converted to JSON arrays.\n- Anything else is converted to JSON 
strings.\n\n##### Data type conversions:\n\n| POJO type | JSON type | Example | 
Serialized form |\n|-----------|-----------|---------|----------------|\n| 
String | String | `seri [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/json/JsonSerializer.html\" 
target=\"_blank\">JsonSerializer</a> class is used to serialize POJOs 
into\nJSON.\n\nThe class hierarchy for the builder of this serializer 
is:\n\n<tree>\n<node-0><java-abstract-class><a 
href=\"/site/apidocs/org/apache/juneau/Context.Builder.html\" 
target=\"_blank\">Context.Builder</a></java-abstract-class></node-0>\n<node-1><java-abstract-class><a
 href=\"/site/apidocs/org/apache/juneau/Mar [...]
-{"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/json/Json5Serializer.html\" 
target=\"_blank\">Json5Serializer</a> class can be used to serialized 
POJOs\ninto JSON 5 notation.\n\nJSON 5 is similar to JSON except for the 
following:\n\n- JSON attributes are only quoted when necessary.\n- Uses 
single-quotes for quoting.\n\n:::tip Examples\n```java\n// Some free-form 
JSON.\nJsonMap map = JsonMap.of(\n    \"foo\", \"x1\",\n    \"_bar\", \"x2\",\n 
   \" baz \", \"x3\",\n [...]
+{"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/json/Json5Serializer.html\" 
target=\"_blank\">Json5Serializer</a> class can be used to serialized 
POJOs\ninto JSON 5 notation.\n\nJSON 5 is similar to JSON except for the 
following:\n\n- JSON attributes are only quoted when necessary.\n- Uses 
single-quotes for quoting.\n\n:::tip Examples\n```java\n// Some free-form 
JSON.\nJsonMap map = JsonMap.of(\n    \"foo\", \"x1\",\n    \"_bar\", \"x2\",\n 
   \" baz \", \"x3\",\n [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/json/JsonParser.html\" 
target=\"_blank\">JsonParser</a> class is used to parse JSON into POJOs.\n\nThe 
class hierarchy for the builder of this parser 
is:\n\n<tree>\n<node-0><java-abstract-class><a 
href=\"/site/apidocs/org/apache/juneau/Context.Builder.html\" 
target=\"_blank\">Context.Builder</a></java-abstract-class></node-0>\n<node-1><java-abstract-class><a
 href=\"/site/apidocs/org/apache/juneau/MarshallingContextab [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/json/Json.html\" 
target=\"_blank\">@Json</a> annotation is used to override the behavior of <a 
href=\"/site/apidocs/org/apache/juneau/marshall/json/JsonSerializer.html\" 
target=\"_blank\">JsonSerializer</a> on individual bean classes or 
properties.\n\nThe annotation can be applied to beans as well as other objects 
serialized to other types (e.g. 
strings).\n\n<tree>\n<node-0><java-annotation><a href=\"/site/apidocs/or [...]
 {"description": "Juneau provides the <a 
href=\"/site/apidocs/org/apache/juneau/marshall/json/JsonSchemaSerializer.html\"
 target=\"_blank\">JsonSchemaSerializer</a> class for\ngenerating JSON-Schema 
documents that describe the output generated by the <a 
href=\"/site/apidocs/org/apache/juneau/marshall/json/JsonSerializer.html\" 
target=\"_blank\">JsonSerializer</a> class.\nThis class shares the same 
properties as `JsonSerializer`.\n\nFor convenience the <a 
href=\"/site/apidocs/org/apache/ju [...]
@@ -200,8 +204,9 @@
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/oapi/OpenApiSerializer.html\" 
target=\"_blank\">OpenApiSerializer</a> class is used to convert POJOs to\nHTTP 
parts.\n\nThe class hierarchy for the builder of this serializer 
is:\n\n<tree>\n<node-0><java-abstract-class><a 
href=\"/site/apidocs/org/apache/juneau/Context.Builder.html\" 
target=\"_blank\">Context.Builder</a></java-abstract-class></node-0>\n<node-1><java-abstract-class><a
 href=\"/site/apidocs/org/apache/ju [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/oapi/OpenApiParser.html\" 
target=\"_blank\">OpenApiParser</a> class is used to convert HTTP parts 
back\ninto POJOs.\n\nThe class hierarchy for the builder of this parser 
is:\n\n<tree>\n<node-0><java-abstract-class><a 
href=\"/site/apidocs/org/apache/juneau/Context.Builder.html\" 
target=\"_blank\">Context.Builder</a></java-abstract-class></node-0>\n<node-1><java-abstract-class><a
 href=\"/site/apidocs/org/apache/juneau/ [...]
 {"description": "Juneau supports converting arbitrary POJOs to and from TOML 
(Tom's Obvious Minimal Language) using native serializers and parsers 
implemented without any external dependencies.\nTOML is a configuration file 
format that maps unambiguously to hash tables, widely used in projects like 
Cargo (Rust) and Python's `pyproject.toml`.\nThe <a 
href=\"/site/apidocs/org/apache/juneau/marshall/toml/TomlSerializer.html\" 
target=\"_blank\">TomlSerializer</a> converts POJOs directly to T [...]
-{"description": "Juneau supports converting arbitrary POJOs to and from the 
**Protobuf Text Format** using native serializers and parsers implemented 
without any external dependencies. This is the human-readable text format (not 
the binary wire format) used for protobuf configuration files, debugging, and 
interop with tools like `protoc --decode`. The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/prototext/PrototextSerializer.html\"
 target=\"_blank\">PrototextSerializer</a> converts [...]
+{"description": "Juneau supports converting arbitrary POJOs to and from the 
**Protobuf Text Format** using native serializers and parsers implemented 
without any external dependencies. This is the human-readable text format (not 
the binary wire format) used for protobuf configuration files, debugging, and 
interop with tools like `protoc --decode`. The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/prototext/PrototextSerializer.html\"
 target=\"_blank\">PrototextSerializer</a> converts [...]
 {"description": "The `org.apache.juneau.marshall.parquet` package provides 
Juneau serializer and parser implementations for the\n[Apache 
Parquet](https://parquet.apache.org/docs/file-format/) columnar storage 
format.\n\nThe `ParquetSerializer` and `ParquetParser` classes integrate with 
the standard Juneau\n`Serializer` / `Parser` APIs and support the `@Parquet` 
and `@ParquetConfig` annotations for\nformat-specific 
configuration.\n\n:::note\nFull documentation for the Parquet serializer/p [...]
+{"description": "Juneau supports converting arbitrary POJOs to and from the 
Protocol Buffers **binary** wire format using native, bean-driven serializers 
and parsers. No `.proto` schema file or code generation is required &mdash; the 
field-number/type schema is derived directly from Juneau bean metadata.\n\nThe 
<a 
href=\"/site/apidocs/org/apache/juneau/marshall/protobuf/ProtobufSerializer.html\"
 target=\"_blank\">ProtobufSerializer</a> converts POJOs directly to protobuf 
binary bytes, an [...]
 {"description": "Juneau supports converting arbitrary POJOs to and from YAML 
using native serializers and parsers implemented\nwithout any external 
dependencies.\nThe YAML serializer converts POJOs directly to YAML block-style 
output using indentation-based structure.\nThe YAML parser creates POJOs 
directly from YAML using an indentation-aware state machine.\n\nThe following 
example shows YAML for a typical bean:\n\n##### Sample Beans\n\n```java\npublic 
class Person {\n\n    // Bean prop [...]
 {"description": "The YAML data type produced depends on the Java object type 
being serialized.\n\n- Primitives and primitive objects are converted to YAML 
scalars.\n- Beans and `Maps` are converted to YAML block mappings.\n- 
`Collections` and arrays are converted to YAML block sequences.\n- Anything 
else is converted to YAML string scalars (with quoting if necessary).\n\n##### 
Data type conversions:\n\n| POJO type | YAML type | Example | Serialized form 
|\n|-----------|-----------|------ [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/yaml/YamlSerializer.html\" 
target=\"_blank\">YamlSerializer</a> class is used to serialize POJOs 
into\nYAML.\n\nThe class hierarchy for the builder of this serializer 
is:\n\n<tree>\n<node-0><java-abstract-class><a 
href=\"/site/apidocs/org/apache/juneau/Context.Builder.html\" 
target=\"_blank\">Context.Builder</a></java-abstract-class></node-0>\n<node-1><java-abstract-class><a
 href=\"/site/apidocs/org/apache/juneau/Mar [...]
@@ -212,6 +217,7 @@
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/csv/CsvParser.html\" 
target=\"_blank\">CsvParser</a> class is used to parse CSV into POJOs.\n\nThe 
class hierarchy for the builder of this parser 
is:\n\n<tree>\n<node-0><java-abstract-class><a 
href=\"/site/apidocs/org/apache/juneau/Context.Builder.html\" 
target=\"_blank\">Context.Builder</a></java-abstract-class></node-0>\n<node-1><java-abstract-class><a
 href=\"/site/apidocs/org/apache/juneau/MarshallingContextable.B [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/markdown/package-summary.html\" 
target=\"_blank\">org.apache.juneau.marshall.markdown</a>\npackage provides 
Markdown serialization and parsing for POJOs. Output is optimized for human 
readability and LLM/AI consumption.\n\n##### Maven Dependency\n\nMarkdown 
support is included in `juneau-marshall`:\n\n```xml\n<dependency>\n    
<groupId>org.apache.juneau</groupId>\n    
<artifactId>juneau-marshall</artifactId>\n    <ve [...]
 {"description": "Juneau supports converting arbitrary POJOs to and from JSONL 
(JSON Lines, also called NDJSON) using native serializers and parsers. JSONL is 
a text format where each line is a valid JSON value, separated by newlines. It 
is the standard format for LLM fine-tuning datasets, streaming AI inference, 
log aggregation, and bulk data pipelines.\n\nThe <a 
href=\"/site/apidocs/org/apache/juneau/marshall/jsonl/JsonlSerializer.html\" 
target=\"_blank\">JsonlSerializer</a> converts PO [...]
+{"description": "Juneau supports converting arbitrary POJOs to and from JSON5L 
\u2014 a combination of the relaxed [JSON5](/docs/topics/Json5) dialect and 
[JSONL](/docs/topics/JsonlBasics)'s newline-delimited framing (one document per 
line). JSON5L is a good fit for human-edited line-delimited config and data 
files: it keeps JSONL's \"one record per line\" streaming model while 
tolerating comments, unquoted keys, single-quoted strings, and trailing commas 
on each line.\n\nThe <a href=\"/ [...]
 {"description": "Juneau supports converting arbitrary POJOs to and from Hjson 
(Human JSON) using native serializers and parsers. Hjson is a syntax extension 
of JSON designed for human-friendly configuration files and hand-edited data. 
It extends JSON with quoteless strings, multiline strings, comments, optional 
commas, and unquoted keys.\n\nThe <a 
href=\"/site/apidocs/org/apache/juneau/marshall/hjson/HjsonSerializer.html\" 
target=\"_blank\">HjsonSerializer</a> converts POJOs directly to  [...]
 {"description": "Juneau supports converting arbitrary POJOs to canonical JSON 
per [RFC 8785](https://www.rfc-editor.org/rfc/rfc8785) (JCS - JSON 
Canonicalization Scheme) using a native serializer. JCS produces a 
deterministic, byte-for-byte representation suitable for cryptographic 
operations such as hashing and digital signing.\n\nThe <a 
href=\"/site/apidocs/org/apache/juneau/marshall/json/JcsSerializer.html\" 
target=\"_blank\">JcsSerializer</a> converts POJOs to canonical JSON. The <a  
[...]
 {"description": "Juneau supports converting arbitrary POJOs to and from BSON 
(Binary JSON) using native serializers and parsers. BSON is the binary 
serialization format used by MongoDB, extending JSON with typed integers 
(int32/int64), native datetime, decimal128, and binary data. It uses 
little-endian byte order and length-prefixed documents.\n\nThe <a 
href=\"/site/apidocs/org/apache/juneau/marshall/bson/BsonSerializer.html\" 
target=\"_blank\">BsonSerializer</a> converts POJOs directly  [...]
@@ -219,6 +225,11 @@
 {"description": "Juneau supports converting arbitrary POJOs to and from HOCON 
(Human-Optimized Config Object Notation) using native serializers and parsers. 
HOCON is a superset of JSON used extensively in the JVM ecosystem (Akka, Play 
Framework, sbt, Apache Spark, Kafka, Flink) for configuration files. It extends 
JSON with path expressions, `=` as key-value separator, unquoted strings, 
object merging, substitutions (`${var}`), triple-quoted multi-line strings, and 
optional root braces.\n [...]
 {"description": "The `org.apache.juneau.marshall.ini` package provides Juneau 
serializer and parser implementations for the INI\nconfiguration file 
format.\n\nThe `IniSerializer` and `IniParser` classes integrate with the 
standard Juneau `Serializer` / `Parser` APIs and\nsupport the `@Ini` and 
`@IniConfig` annotations for format-specific configuration.\n\n:::note\nFull 
documentation for the INI serializer/parser is coming soon. In the meantime, 
refer to the\n[Marshallers overview](/docs/ [...]
 {"description": "Juneau supports the [Server-Sent Events 
(SSE)](https://html.spec.whatwg.org/multipage/server-sent-events.html)\nwire 
format (`text/event-stream`) via native serializer and parser implementations 
under\n`org.apache.juneau.marshall.sse`. SSE is the one-way push channel used 
by browsers (`EventSource`) and\nmost LLM streaming APIs (OpenAI, Anthropic, 
etc.) for progress events, partial responses,\nheartbeats, and other long-lived 
telemetry feeds.\n\nThe <a href=\"/site/apido [...]
+{"description": "Juneau exposes a public low-level streaming API that 
complements the POJO databind path\n(<code>Serializer.serialize(...)</code> / 
<code>Parser.parse(...)</code>) with cursor-based\npush and pull primitives. 
Two surfaces, layered:\n\n##### Surfaces at a glance\n\n| Surface | Returns | 
Methods | When to use |\n|---|---|---|---|\n| <a 
href=\"/site/apidocs/org/apache/juneau/marshall/stream/RecordReader.html\" 
target=\"_blank\">RecordReader</a> / <a href=\"/site/apidocs/org/ [...]
+{"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/stream/RecordReader.html\" 
target=\"_blank\">RecordReader</a> /\n<a 
href=\"/site/apidocs/org/apache/juneau/marshall/stream/RecordWriter.html\" 
target=\"_blank\">RecordWriter</a>\nsurface yields one whole-value record per 
call. It works uniformly across every Juneau format\nthat implements the <a 
href=\"/site/apidocs/org/apache/juneau/marshall/stream/RecordReadable.html\" 
target=\"_blank\">RecordReadable</a> /\n<a hre [...]
+{"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/stream/TokenReader.html\" 
target=\"_blank\">TokenReader</a> /\n<a 
href=\"/site/apidocs/org/apache/juneau/marshall/stream/TokenWriter.html\" 
target=\"_blank\">TokenWriter</a>\nsurface exposes structural events one at a 
time \u2014 `START_OBJECT`, `FIELD_NAME`, `VALUE_STRING`,\n`END_OBJECT`, etc. 
\u2014 for formats whose wire encoding is already token-shaped.\n\nAvailable on 
formats that implement the <a href=\"/site/a [...]
+{"description": "The `parseArrayRecords(...)` / `serializeArrayRecords(...)` 
factories \u2014 declared by the\n<a 
href=\"/site/apidocs/org/apache/juneau/marshall/stream/ArrayRecordReadable.html\"
 target=\"_blank\">ArrayRecordReadable</a> /\n<a 
href=\"/site/apidocs/org/apache/juneau/marshall/stream/ArrayRecordWritable.html\"
 target=\"_blank\">ArrayRecordWritable</a>\nroles \u2014 yield a multi-record 
cursor over the **elements of a top-level wire array**, without\nmaterializing 
the whole  [...]
+{"description": "`TokenReader`, `TokenWriter`, `RecordReader`, and 
`RecordWriter` are first-class\n`@RestOp`-method parameter types. Declare one 
in your method signature and the framework picks\nthe matching 
parser/serializer based on the request `Content-Type` / response `Accept` 
and\nhands you the cursor.\n\n> See the <a 
href=\"/site/topics/TokenStreamingBasics#per-format-capability-matrix\">per-format
 capability matrix</a>\n> for which formats can satisfy a `RecordReader` / 
`TokenRead [...]
 {"description": "- Reuse instances of serializers and parsers whenever 
possible.  \nThey are designed to be thread safe and maintain internal caches 
of bean metadata to increase performance.\n\n- The <a 
href=\"/site/apidocs/org/apache/juneau/MarshallingTraverseContext.Builder.html#detectRecursions()\"
 target=\"_blank\">MarshallingTraverseContext.Builder.detectRecursions()</a> 
option can cause a performance penalty of around 20%.\nTherefore, it's 
recommended that this option be used only  [...]
 {"description": "#### Maven Dependency\n\n```xml\n<dependency>\n    
<groupId>org.apache.juneau</groupId>\n    
<artifactId>juneau-marshall-rdf</artifactId>\n    
<version>${juneau.version}</version>\n</dependency>\n```\n\n#### Java 
Library\n\n```text\njuneau-marshall-rdf-0.0.0.jar\n```\n\n#### OSGi 
Module\n\n```text\norg.apache.juneau.marshall.marshaller.rdf_0.0.0.jar\n```\n\n####
 Contents/Features\n\nThe `juneau-marshall-rdf` library provides additional 
serializers and parsers for RDF.\nT [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/marshaller/package-summary.html\"
 target=\"_blank\">org.apache.juneau.marshall.marshaller</a> and\n<a 
href=\"/site/apidocs/org/apache/juneau/marshall/jena/package-summary.html\" 
target=\"_blank\">org.apache.juneau.marshall.jena</a> packages provide\nRDF 
(Resource Description Framework) serializers and parsers for converting POJOs 
to and from RDF formats.\nThese rely on the Apache Jena library and support 
both text-ba [...]
@@ -434,6 +445,7 @@
 {"description": "The Microservice project contains a `files/htdocs` folder 
with predefined stylesheets and images.\nThese files can be used to tailor the 
look-and-feel of your 
microservice.\n\n```text\nhttp://localhost:10000/helloWorld\n```\n\nThe REST 
configuration section of your microservice configuration file can be used to 
tailor the header and footer on\nthe 
pages:\n\n```ini\n#==========================================================================================================
 [...]
 {"description": "As of 10.0, `JettyMicroservice` was reshaped \u2014 the 
legacy *subclass* form was retired, and a thin static-call facade\nwas 
introduced to collapse the standard `Microservice` + `JettyConfiguration` 
bootstrap. 
See\n[JuneauMicroserviceJettyBasics](/docs/topics/JuneauMicroserviceJettyBasics)
 for the new entry point.\n\n`juneau-microservice-jetty` contributes a single 
[JettyConfiguration](MicroserviceJettyOverview) class that wires Jetty\ninto 
the standard [Microservice]( [...]
 {"description": "> **See also:** [REST Server \u2014 Mixins and Multi-Mount 
Paths](/docs/topics/RestServerCompositionMixinsAndPaths) \u2014 the underlying 
`@Rest(mixins=...)` and `@Rest(paths=...)` composition primitives this page is 
built on.\n\nStarting with **9.5.0**, Juneau provides an opt-in probe surface 
for Jetty microservices:\n\n- `GET /healthz`\n- `GET /readyz`\n- `GET 
/livez`\n\nProbe routing now has two supported integration styles:\n\n- 
**Preferred:** mix probe operations in [...]
+{"description": "> **See also:** [Health / Readiness / Liveness 
Probes](/docs/topics/HealthProbes) \u2014 the probe surface (`/healthz`, 
`/readyz`, `/livez`) this page gates during shutdown.\n\nStarting with 
**10.0.0**, both embedded-server microservice flavors \u2014 
`juneau-microservice-jetty` and `juneau-microservice-tomcat` \u2014 perform a 
**zero-downtime graceful shutdown** suitable for rolling Kubernetes 
deployments. The two servers share one identical shutdown contract.\n\nWhen a 
[...]
 {"description": "# Starter Projects\n\nApache Juneau provides three minimal, 
clone-and-go **\"Hello World\" starter projects** \u2014 one per\ndeployment 
type. They are deliberately simpler than the [petstore 
showcase](/docs/topics/JuneauPetstoreOverview):\nentry-point templates you can 
build and run in under five minutes, then graduate from.\n\nEach starter is a 
standalone public GitHub repo with its own docs site:\n\n| Starter | Deployment 
| Repo | Docs |\n| --- | --- | --- | --- |\n|  [...]
 {"description": "The **juneau-petstore** family is the canonical Apache Juneau 
showcase application. It packages a small, complete sample petstore (pets, 
orders, users) and deploys it under two runtimes \u2014 Jetty/`Microservice` 
and Spring Boot \u2014 using the *exact same* REST surface, demonstrating that 
a Juneau service is just a `Servlet` and travels unchanged across deployment 
containers.\n\n> **In-tree, no external repo.** The petstore lives directly in 
the Juneau reactor under ` [...]
 {"description": "# juneau-examples-core\n\nThe 
[juneau-examples-core](https://github.com/apache/juneau/tree/master/juneau-examples/juneau-examples-core)
 module provides practical examples demonstrating how to use Apache Juneau's 
core marshalling capabilities for serialization and deserialization of Plain 
Old Java Objects (POJOs).\n\n## Overview\n\nThis module focuses on the 
fundamental serialization and deserialization features of Juneau Core, showing 
developers how to:\n\n- Convert POJO [...]
diff --git a/static/ai/manifest.json b/static/ai/manifest.json
index 7b1e914703..15412d675b 100644
--- a/static/ai/manifest.json
+++ b/static/ai/manifest.json
@@ -1,10 +1,10 @@
 {
-  "generated_at": "content-hash:730c3316f71f",
-  "record_count": 452,
+  "generated_at": "content-hash:fac31384af5d",
+  "record_count": 464,
   "schema_version": "1.0.0",
   "source_commit": {
-    "juneau": "dc43675d69d905600e2eb490be8edbe38a25ee46",
-    "juneau_docs": "851287993dc57619afd2711d16e8c2ffae134a22"
+    "juneau": "2487121feb3ee201c6a27e9791481db0c13b64a1",
+    "juneau_docs": "624834ba134ac4e8b1146e377970dfdf88375c29"
   },
   "version": "10.0.0"
 }
diff --git a/static/ai/taxonomy.json b/static/ai/taxonomy.json
index 8189fa72cb..79000b5c97 100644
--- a/static/ai/taxonomy.json
+++ b/static/ai/taxonomy.json
@@ -3,14 +3,14 @@
     "01": 23,
     "02": 24,
     "03": 26,
-    "04": 32,
+    "04": 33,
     "05": 18,
-    "06": 10,
+    "06": 11,
     "07": 12,
-    "08": 9,
-    "09": 8,
+    "08": 10,
+    "09": 9,
     "10": 17,
-    "11": 17,
+    "11": 18,
     "12": 5,
     "13": 5,
     "14": 7,
@@ -33,11 +33,11 @@
     "31": 11,
     "32": 4,
     "33": 5,
-    "34": 4,
+    "34": 5,
     "35": 6,
     "36": 4,
     "37": 2,
-    "38": 2,
+    "38": 3,
     "39": 2,
     "40": 2,
     "41": 2,
@@ -49,7 +49,7 @@
     "47": 1,
     "48": 1,
     "49": 1,
-    "50": 1,
+    "50": 6,
     "51": 2,
     "52": 1,
     "53": 1,
@@ -65,6 +65,6 @@
   "source_types": {
     "api-metadata": 16,
     "release-note": 85,
-    "topic": 351
+    "topic": 363
   }
 }

Reply via email to