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 e656f144a0 TODO-351 B-marshall-4: rename XmlFormat.ELEMENTS to 
FREEFORM (10.0 breaking-change window)
e656f144a0 is described below

commit e656f144a0e226e38f97da2b4fecceba729af8aa
Author: James Bognar <[email protected]>
AuthorDate: Wed Aug 12 15:12:56 2026 -0400

    TODO-351 B-marshall-4: rename XmlFormat.ELEMENTS to FREEFORM (10.0 
breaking-change window)
---
 pages/topics/03.26.06.00.XmlFormatAnnotation.md |  8 ++--
 pages/topics/03.26.06.03.XmlFormatElements.md   | 12 ++---
 pages/topics/03.26.06.04.XmlFormatText.md       |  2 +-
 static/ai/juneau-knowledge.jsonl                | 59 +++++++++++++------------
 static/ai/manifest.json                         |  8 ++--
 static/ai/taxonomy.json                         |  3 +-
 6 files changed, 47 insertions(+), 45 deletions(-)

diff --git a/pages/topics/03.26.06.00.XmlFormatAnnotation.md 
b/pages/topics/03.26.06.00.XmlFormatAnnotation.md
index 970a95fb7d..64ab13e7d6 100644
--- a/pages/topics/03.26.06.00.XmlFormatAnnotation.md
+++ b/pages/topics/03.26.06.00.XmlFormatAnnotation.md
@@ -32,7 +32,7 @@ pages listed in the last column.
 <tr>
 <td><code>DEFAULT</code></td>
 <td>Class &amp; property</td>
-<td>Normal formatting. On a class it behaves like <code>ELEMENTS</code>; on a 
property it behaves like <code>ELEMENT</code>. This is the behavior when no 
<code>@Xml(format)</code> is specified.</td>
+<td>Normal formatting. On a class it behaves like <code>FREEFORM</code>; on a 
property it behaves like <code>ELEMENT</code>. This is the behavior when no 
<code>@Xml(format)</code> is specified.</td>
 <td>&mdash;</td>
 </tr>
 <tr>
@@ -60,7 +60,7 @@ pages listed in the last column.
 <td><a href="/docs/topics/XmlFormatCollapsed">Collapsed Format</a></td>
 </tr>
 <tr>
-<td><code>ELEMENTS</code></td>
+<td><code>FREEFORM</code></td>
 <td>Property</td>
 <td>Serialize free-form child elements. All other properties on the bean must 
be attributes.</td>
 <td><a href="/docs/topics/XmlFormatElements">Element &amp; Mixed 
Formats</a></td>
@@ -68,7 +68,7 @@ pages listed in the last column.
 <tr>
 <td><code>MIXED</code></td>
 <td>Property</td>
-<td>Like <code>ELEMENTS</code>, but element names are stripped from primitive 
values to produce mixed content.</td>
+<td>Like <code>FREEFORM</code>, but element names are stripped from primitive 
values to produce mixed content.</td>
 <td><a href="/docs/topics/XmlFormatElements">Element &amp; Mixed 
Formats</a></td>
 </tr>
 <tr>
@@ -109,6 +109,6 @@ The remaining <code>@Xml(format)</code> pages document each 
family with worked b
 
 - <a href="/docs/topics/XmlFormatAttrs">Attribute Formats</a> &mdash; `ATTR`, 
`ATTRS`, and `ELEMENT` for moving values between attributes and elements.
 - <a href="/docs/topics/XmlFormatCollapsed">Collapsed Format</a> &mdash; 
`COLLAPSED` for flattening arrays and collections into the bean element.
-- <a href="/docs/topics/XmlFormatElements">Element &amp; Mixed Formats</a> 
&mdash; `ELEMENTS`, `MIXED`, and `MIXED_PWS` for free-form and mixed content.
+- <a href="/docs/topics/XmlFormatElements">Element &amp; Mixed Formats</a> 
&mdash; `FREEFORM`, `MIXED`, and `MIXED_PWS` for free-form and mixed content.
 - <a href="/docs/topics/XmlFormatText">Text Formats</a> &mdash; `TEXT`, 
`TEXT_PWS`, and `XMLTEXT` for text-node and raw-XML content.
 - <a href="/docs/topics/XmlFormatWhitespace">Whitespace Handling</a> &mdash; 
how empty strings and whitespace are preserved (or lost) across the `MIXED` and 
`TEXT` families.
diff --git a/pages/topics/03.26.06.03.XmlFormatElements.md 
b/pages/topics/03.26.06.03.XmlFormatElements.md
index 9d3a8fe7eb..f0ba4a7f92 100644
--- a/pages/topics/03.26.06.03.XmlFormatElements.md
+++ b/pages/topics/03.26.06.03.XmlFormatElements.md
@@ -6,12 +6,12 @@ slug: XmlFormatElements
 The element-oriented <a 
href="/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html" 
target="_blank">XmlFormat</a>
 values let a single property produce free-form or mixed child content:
 
-- <a 
href="/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#ELEMENTS" 
target="_blank">XmlFormat.ELEMENTS</a> emits child elements for the property 
value.
+- <a 
href="/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#FREEFORM" 
target="_blank">XmlFormat.FREEFORM</a> emits child elements for the property 
value.
 - <a href="/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#MIXED" 
target="_blank">XmlFormat.MIXED</a> and <a 
href="/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#MIXED_PWS" 
target="_blank">XmlFormat.MIXED_PWS</a> produce mixed content by stripping 
element names from primitive values.
 
-## Free-form child elements — ELEMENTS
+## Free-form child elements — FREEFORM
 
-The <a 
href="/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#ELEMENTS" 
target="_blank">XmlFormat.ELEMENTS</a> format can be applied to
+The <a 
href="/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#FREEFORM" 
target="_blank">XmlFormat.FREEFORM</a> format can be applied to
 a single bean property of either a simple type or array/`Collection`.
 It allows free-form child elements to be formed.
 All other properties on the bean MUST be serialized as attributes.
@@ -29,7 +29,7 @@ All other properties on the bean MUST be serialized as 
attributes.
 class MyBean {
   @Xml(format=XmlFormat.ATTR)
   public String a;
-  @Xml(format=XmlFormat.ELEMENTS)
+  @Xml(format=XmlFormat.FREEFORM)
   public String b;
 }
 ```
@@ -62,7 +62,7 @@ class MyBean {
 class MyBean {
   @Xml(format=XmlFormat.ATTR)
   public String a;
-  @Xml(format=XmlFormat.ELEMENTS)
+  @Xml(format=XmlFormat.FREEFORM)
   public Object[] b;
 }
 ```
@@ -95,7 +95,7 @@ class MyBean {
 
 ## Mixed content — MIXED and MIXED_PWS
 
-The <a 
href="/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#MIXED" 
target="_blank">XmlFormat.MIXED</a> format is similar to <a 
href="/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#ELEMENTS" 
target="_blank">XmlFormat.ELEMENTS</a> except elements names on primitive types 
(string/number/boolean/null) are stripped from the output.
+The <a 
href="/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#MIXED" 
target="_blank">XmlFormat.MIXED</a> format is similar to <a 
href="/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#FREEFORM" 
target="_blank">XmlFormat.FREEFORM</a> except elements names on primitive types 
(string/number/boolean/null) are stripped from the output.
 This format particularly useful when combined with bean dictionaries to 
produce mixed content.
 The bean dictionary isn't used during serialization, but it is needed during 
parsing to resolve bean types.
 The <a 
href="/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#MIXED_PWS" 
target="_blank">XmlFormat.MIXED_PWS</a> format identical to <a 
href="/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#MIXED" 
target="_blank">XmlFormat.MIXED</a> except whitespace characters are preserved 
in the output.
diff --git a/pages/topics/03.26.06.04.XmlFormatText.md 
b/pages/topics/03.26.06.04.XmlFormatText.md
index 22fef5e04a..9752c1c47e 100644
--- a/pages/topics/03.26.06.04.XmlFormatText.md
+++ b/pages/topics/03.26.06.04.XmlFormatText.md
@@ -124,5 +124,5 @@ class MyBean {
 ## See also
 
 - <a href="/docs/topics/XmlFormatAnnotation">@Xml(format) Annotation</a> for 
the full list of `XmlFormat` values.
-- <a href="/docs/topics/XmlFormatElements">Element &amp; Mixed Formats</a> for 
`ELEMENTS`, `MIXED`, and `MIXED_PWS`.
+- <a href="/docs/topics/XmlFormatElements">Element &amp; Mixed Formats</a> for 
`FREEFORM`, `MIXED`, and `MIXED_PWS`.
 - <a href="/docs/topics/XmlFormatWhitespace">Whitespace Handling</a> for how 
empty strings and whitespace are preserved in `TEXT` output.
diff --git a/static/ai/juneau-knowledge.jsonl b/static/ai/juneau-knowledge.jsonl
index 689352fe75..b8e69f74e2 100644
--- a/static/ai/juneau-knowledge.jsonl
+++ b/static/ai/juneau-knowledge.jsonl
@@ -104,14 +104,14 @@
 {"description": "Apache Juneau\u2122 offers a unique combination of 
simplicity, power, and zero-dependency design that makes it an excellent choice 
for modern Java development. Here's why developers choose Juneau over 
alternatives.\n\n## The Juneau Advantage\n\n### **Zero Dependencies, Maximum 
Power**\n\nUnlike other frameworks that require multiple dependencies and 
complex configurations, Juneau provides comprehensive functionality with 
minimal external requirements:\n\n**Juneau:**\n``` [...]
 {"description": "The juneau-commons module is the foundational layer of the 
Juneau ecosystem.\nIt has no framework dependencies \u2014 just Java \u2014 and 
provides the low-level utilities, collections, I/O helpers,\nreflection tools, 
settings management, and dependency-injection support that all other Juneau 
modules build on top of.\nBecause every other Juneau module depends on it 
transitively, its classes are always on the classpath whenever you\nuse 
Juneau.\n\n<DependencyInfo artifact [...]
 {"description": "The 
[org.apache.juneau.commons.utils](/site/apidocs/org/apache/juneau/commons/utils/package-summary.html)
 package provides general-purpose utility classes for common operations 
including string manipulation, collection operations, class utilities, file 
operations, and more. It contains the most frequently used utility classes in 
the codebase \u2014 most notably 
[Shorts](/site/apidocs/org/apache/juneau/commons/utils/Shorts.html) (a terse 
one-import alias facade) and [Stri [...]
-{"description": "The 
[org.apache.juneau.commons.collections](/site/apidocs/org/apache/juneau/commons/collections/package-summary.html)
 package provides enhanced collection utilities that extend the standard Java 
Collections Framework with fluent APIs, specialized collection types, and 
caching capabilities.\n\n## Key Classes\n\n### Collection Builders\n\n### 
<java-class><a 
href=\"/site/apidocs/org/apache/juneau/commons/collections/Lists.html\" 
target=\"_blank\">Lists</a></java-class>\nFlu [...]
+{"description": "The 
[org.apache.juneau.commons.collections](/site/apidocs/org/apache/juneau/commons/collections/package-summary.html)
 package provides enhanced collection utilities that extend the standard Java 
Collections Framework with fluent APIs, specialized collection types, and 
caching capabilities.\n\n## Key Classes\n\n### Collection Builders\n\n### 
<java-class><a 
href=\"/site/apidocs/org/apache/juneau/commons/collections/Lists.html\" 
target=\"_blank\">Lists</a></java-class>\nFlu [...]
 {"description": "The 
[org.apache.juneau.commons.lang](/site/apidocs/org/apache/juneau/commons/lang/package-summary.html)
 package provides language utilities including value wrappers, version 
management, string formatting, state enums, and other common language 
constructs.\n\n## Key Classes\n\n### <java-class><a 
href=\"/site/apidocs/org/apache/juneau/commons/lang/Holder.html\" 
target=\"_blank\">Holder</a></java-class>\nA generic mutable value 
wrapper.\n\n```java\n// Basic usage\nHolder<St [...]
 {"description": "The 
[org.apache.juneau.commons.reflect](/site/apidocs/org/apache/juneau/commons/reflect/package-summary.html)
 package provides comprehensive reflection utilities for working with classes, 
methods, fields, constructors, and annotations in a more convenient and 
type-safe way than the standard Java reflection APIs.\n\n## Key Classes\n\n### 
<java-class><a 
href=\"/site/apidocs/org/apache/juneau/commons/reflect/ReflectionUtils.html\" 
target=\"_blank\">ReflectionUtils</a></java [...]
 {"description": "The 
[org.apache.juneau.commons.bean](/site/apidocs/org/apache/juneau/commons/bean/package-summary.html)
 package provides Juneau's bean-modeling layer \u2014 the annotations and 
introspection engine that describe how Java beans are recognized, read, 
written, and mapped, independently of any particular marshalling format. The 
marshalling modules build on this layer through a small set of SPI seams so the 
bean model stays decoupled from serialization concerns.\n\n## Bean Mo [...]
 {"description": "The 
[org.apache.juneau.commons.settings](/site/apidocs/org/apache/juneau/commons/settings/package-summary.html)
 package provides a thread-safe way to access system properties with support 
for global and per-thread overrides, making it useful for unit tests and 
configuration management.\n\n## Key Classes\n\n### <java-class><a 
href=\"/site/apidocs/org/apache/juneau/commons/settings/Settings.html\" 
target=\"_blank\">Settings</a></java-class>\nEncapsulates Java system proper 
[...]
 {"description": "The 
[org.apache.juneau.commons.function](/site/apidocs/org/apache/juneau/commons/function/package-summary.html)
 package extends the standard `java.util.function` toolkit with higher-arity 
functional interfaces, checked-exception\u2013friendly variants, small 
immutable tuples, and lazy/nullable suppliers used throughout the 
framework.\n\n## Higher-Arity Functional Interfaces\n\nTwo-to-five argument 
extensions of the standard `Consumer` and `Function` patterns.\n\n### <jav [...]
 {"description": "The 
[org.apache.juneau.commons.conversion](/site/apidocs/org/apache/juneau/commons/conversion/package-summary.html)
 package provides a lightweight, pluggable type-conversion engine for 
converting objects between types without requiring a full marshalling context 
or session.\n\n## Core API\n\n### <java-interface><a 
href=\"/site/apidocs/org/apache/juneau/commons/conversion/Converter.html\" 
target=\"_blank\">Converter</a></java-interface>\nThe primary interface for 
converti [...]
-{"description": "The 
[org.apache.juneau.commons.io](/site/apidocs/org/apache/juneau/commons/io/package-summary.html)
 package provides file and stream utilities, console support, MIME type 
detection, and path builders for working with files and I/O operations.\n\n## 
Key Classes\n\n### <java-class><a 
href=\"/site/apidocs/org/apache/juneau/commons/io/LocalFile.html\" 
target=\"_blank\">LocalFile</a></java-class>\nRepresents a file that can be 
located either on the classpath or in the file sy [...]
+{"description": "The 
[org.apache.juneau.commons.io](/site/apidocs/org/apache/juneau/commons/io/package-summary.html)
 package provides file and stream utilities, console support, MIME type 
detection, and path builders for working with files and I/O operations.\n\n## 
Key Classes\n\n### <java-class><a 
href=\"/site/apidocs/org/apache/juneau/commons/io/LocalFile.html\" 
target=\"_blank\">LocalFile</a></java-class>\nRepresents a file that can be 
located either on the classpath or in the file sy [...]
 {"description": "The 
[org.apache.juneau.commons.inject](/site/apidocs/org/apache/juneau/commons/inject/package-summary.html)
 package provides Juneau's lightweight injection model. The framework is 
**JSR-330\u2013aligned** (`jakarta.inject` / `javax.inject`) and layers a small 
set of Spring-flavored conveniences (`@Bean`, `@Configuration`, `@Primary`, 
`@Order`, `@Conditional`) on top \u2014 all under Juneau-owned annotations, and 
**without a compile-time dependency on `jakarta.inject-api` [...]
 {"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](/site/apidocs/org/apache/juneau/commons/inject/package-summary.html))
 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, [...]
 {"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 [...]
@@ -127,8 +127,8 @@
 {"description": "<a 
href=\"/site/apidocs/org/apache/juneau/marshall/marshaller/Marshaller.html\" 
target=\"_blank\">Marshallers</a> are simple pairings of a <a 
href=\"/site/apidocs/org/apache/juneau/marshall/serializer/Serializer.html\" 
target=\"_blank\">Serializer</a> \nand <a 
href=\"/site/apidocs/org/apache/juneau/marshall/parser/Parser.html\" 
target=\"_blank\">Parser</a> with convenience methods for serializing and 
parsing\nPOJOs.\n\n<tree>\n<node-0><java-abstract-class><a href=\"/site [...]
 {"description": "One of the goals of Juneau was to make serialization as 
simple as possible.\nIn a single line of code, you should be able to serialize 
and parse most POJOs.\n\nDespite this simplicity, Juneau provides lots of 
extensibility and configuration properties for tailoring how POJOs 
are\nserialized and parsed.\n\nThe built-in serializers in Juneau are fast, 
efficient, and highly configurable.\nThey work by serializing POJOs directly to 
streams instead of using intermediate Docum [...]
 {"description": "The **Bean Context** (BCT \u2014 _Bean Context Type_) is 
Juneau's core bean-introspection framework.\nIt provides a unified, highly 
configurable view of Java beans that all serializers, parsers, and\nother 
framework components share.\n\nEvery marshaller in Juneau extends 
`MarshallingContext`, which means a single set of bean-modeling\nsettings 
controls how beans are discovered, read, and written across all formats \u2014 
JSON, XML, YAML,\nCSV, MessagePack, and the rest \ [...]
-{"description": "Out-of-the-box, Juneau supports marshalling of Java beans 
with standard public getters and setters, public fields, and\nfluent setters 
(e.g.\n`withX` naming convention).\nThere are also many settings and 
annotations that can be used to customize how bean properties are 
detected.\n\nThe following is an example of some of the ways to define bean 
properties:\n\n```java\npublic class MyBean {\n\n    // Public field 
property.\n    public String property1;\n\n    // Standard p [...]
-{"description": "Juneau supports serialization and parsing of Java records out 
of the box.  Records are treated as beans whose\nproperties are derived from 
the record's components.  The canonical constructor is automatically detected 
for\nparsing, so no `@MarshalledCtor` annotation is needed.\n\n## Basic 
Usage\n\nRecords work seamlessly with all Juneau serializers and 
parsers:\n\n```java\npublic record Person(String name, int age) 
{}\n```\n\n```java\n// Serialization\nPerson person = new [...]
+{"description": "Out-of-the-box, Juneau supports marshalling of Java beans 
with standard public getters and setters, public fields, and\nfluent setters 
(e.g.\n`withX` naming convention).\nThere are also many settings and 
annotations that can be used to customize how bean properties are 
detected.\n\nThe following is an example of some of the ways to define bean 
properties:\n\n```java\npublic class MyBean {\n\n    // Public field 
property.\n    public String property1;\n\n    // Standard p [...]
+{"description": "Juneau supports serialization and parsing of Java records out 
of the box.  Records are treated as beans whose\nproperties are derived from 
the record's components.  The canonical constructor is automatically detected 
for\nparsing, so no `@BeanCtor` annotation is needed.\n\n## Basic 
Usage\n\nRecords work seamlessly with all Juneau serializers and 
parsers:\n\n```java\npublic record Person(String name, int age) 
{}\n```\n\n```java\n// Serialization\nPerson person = new Perso [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/commons/bean/BeanType.html\" 
target=\"_blank\">@BeanType</a> annotation is applied to classes to control 
bean introspection and modeling.\n\nThis is the **model-side** annotation in 
`juneau-commons`. It carries the attributes that describe the bean\nitself 
\u2014 which properties to include or exclude, how to name them, what stop 
class to use, and so on.\nFormat-side concerns (wire format, type names, 
dictionary, interceptors [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/commons/bean/BeanProp.html\" 
target=\"_blank\">@BeanProp</a> annotation is applied to bean fields, 
getter/setter methods, and constructor parameters\nto control bean 
introspection and property modeling.\n\nThis is the **model-side** annotation 
in `juneau-commons`. It carries the attributes that describe the bean\nproperty 
itself \u2014 its name, accessibility (read/write only), concrete type, generic 
type parameters, element\ [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/commons/bean/BeanCtor.html\" 
target=\"_blank\">@BeanCtor</a> annotation is applied to bean constructors to 
map constructor arguments to property\nnames on beans with read-only 
properties.\n\nSince method parameter names are lost during compilation, this 
annotation essentially redefines them so that\nthey are available at runtime 
and the framework can instantiate read-only beans during parsing.\n\nThis 
annotation lives in `jun [...]
@@ -151,10 +151,10 @@
 {"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": "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": "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/marshall/swap/spi/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`, `Iterab [...]
+{"description": "<a 
href=\"/site/apidocs/org/apache/juneau/marshall/swap/spi/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`, `Iterab [...]
 {"description": "By default, all serializers and parsers have built in 
`ObjectSwaps` defined for the following common data types:\n\n:::note\nAs of 
9.5.0, `Iterator`, `Iterable`, `Stream`, and `Enumeration` types are serialized 
natively without swaps.\nThe `IteratorSwap` and `EnumerationSwap` classes have 
been removed.\nSee [Release 9.5.0](/docs/release-notes/9.5.0) for 
details.\n:::\n\n:::note\nAs of 9.5.0, date/time types (`Calendar`, `Date`, 
`Temporal` subtypes, `XMLGregorianCalendar` [...]
 {"description": "Various methods can be defined on a class directly to affect 
how it gets serialized.\nThis can often be simpler than using 
`ObjectSwaps`.\n\nObjects serialized as `Strings` can be parsed back into their 
original objects by implementing one of the following methods on the 
class:\n\n- `public static T fromString(String)` method.\n  \n  Any of the 
following method names also work:\n  - `valueOf(String)`\n  - `parse(String)`\n 
 - `parseString(String)`\n  - `forName(String)`\ [...]
-{"description": "Swaps can also be defined per-media-type.\n\nThe <a 
href=\"/site/apidocs/org/apache/juneau/marshall/swap/spi/ObjectSwap.html#forMediaTypes()\"
 target=\"_blank\">ObjectSwap.forMediaTypes()</a> method can be\noverridden to 
provide a set of media types that the swap is invoked on.\n\nIt's also possible 
to define multiple swaps against the same object as long as they're 
differentiated by media type.\n\nWhen multiple swaps are defined, the 
best-match media type is used.\n\nIn [...]
+{"description": "Swaps can also be defined per-media-type.\n\nThe <a 
href=\"/site/apidocs/org/apache/juneau/marshall/swap/spi/ObjectSwap.html#forMediaTypes()\"
 target=\"_blank\">ObjectSwap.forMediaTypes()</a> method can be\noverridden to 
provide a set of media types that the swap is invoked on.\n\nIt's also possible 
to define multiple swaps against the same object as long as they're 
differentiated by media type.\n\nWhen multiple swaps are defined, the 
best-match media type is used.\n\nIn [...]
 {"description": "In the previous sections, we defined two-way swaps, meaning 
swaps where the original objects could be reconstructing\nduring 
parsing.\nHowever, there are certain kinds of objects that we may want to 
support for serializing but that are not possible to\nreconstruct during 
parsing.\nFor these, we can use one-way object swaps.\n\nA one-way swap is 
simply an object transform that only implements the `swap()` method.\nThe 
`unswap()` method is simply left unimplemented.\n\n::: [...]
 {"description": "<a 
href=\"/site/apidocs/org/apache/juneau/marshall/Swap.html\" 
target=\"_blank\">@Swap</a> can be used to associate a swap class using an 
annotation.\nThis is often cleaner than using the builder `swaps()` method 
since you can keep your swap class near your POJO 
class.\n\n```java\n@Swap(MyObjectSwap.class)\npublic class MyPojo {\n    
...\n}\n\n// Sample swap for converting MyPojo classes to a simple 
string.\npublic class MyObjectSwap extends ObjectSwap {\n    @Override / [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/Swap.html#template()\" 
target=\"_blank\">@Swap(template)</a> annotation allows you to 
associate\narbitrary contextual strings with swaps.\nThe primary purpose is for 
providing template names, such as for Apache FreeMarker, therefore the name 
'template'.\nHowever, the usage of the string is open-ended.\n\nFor example, 
you could pair a template string like 
so:\n\n```java\n@Swap(impl=FreeMarkerSwap.class, template=\"MyP [...]
@@ -188,10 +188,10 @@
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlParser.html\" 
target=\"_blank\">XmlParser</a> class is used to parse XML 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/marshall/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/marshall/Marsha [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/Marshalled.html#typeName()\" 
target=\"_blank\">@Marshalled(typeName)</a> annotation can be used to override 
the Juneau default name on bean elements.\n\nTypes names serve two distinct 
purposes:\n\n1. To override the element name.\n2. To serve as a class 
identifier so that the bean class can be inferred during parsing if it cannot 
automatically be inferred through reflection.\n\n:::tip Example\n<table 
class=\"code-tab [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/Xml.html#childName()\" 
target=\"_blank\">@Xml(childName)</a> annotation can be used to\nspecify the 
name of XML child elements for bean properties of type collection or 
array.\n\n:::tip Example\n\n<table class=\"code-table\">\n<tr>\n<th>Data 
type</th>\n<th>JSON example</th>\n<th>Without annotation</th>\n<th>With 
annotation</th>\n</tr>\n<tr>\n<td>\n\n```java\nclass MyBean {\n  
@Xml(childName=\"X\")\n  public Strin [...]
-{"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/Xml.html#format()\" 
target=\"_blank\">@Xml(format)</a> annotation\ntweaks how a POJO is rendered in 
XML.\nIts value is one of the enum constants defined in <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html\" 
target=\"_blank\">XmlFormat</a>,\nand it can be applied to both bean classes 
and individual bean properties.\n\nAt the class level, a format changes the 
default treatment of every property [...]
+{"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/Xml.html#format()\" 
target=\"_blank\">@Xml(format)</a> annotation\ntweaks how a POJO is rendered in 
XML.\nIts value is one of the enum constants defined in <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html\" 
target=\"_blank\">XmlFormat</a>,\nand it can be applied to both bean classes 
and individual bean properties.\n\nAt the class level, a format changes the 
default treatment of every property [...]
 {"description": "The attribute-oriented <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html\" 
target=\"_blank\">XmlFormat</a>\nvalues move bean-property values between XML 
attributes and child elements:\n\n- <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#ATTR\" 
target=\"_blank\">XmlFormat.ATTR</a> promotes a single property to an 
attribute.\n- <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#ATTRS\" 
target=\"_blank\">XmlFormat [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#COLLAPSED\" 
target=\"_blank\">XmlFormat.COLLAPSED</a> format can be applied\nto bean 
properties of type array/`Collection`.\nThis causes the child objects to be 
serialized directly inside the bean element.\nThis format must be used in 
conjunction with <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/Xml.html#childName()\" 
target=\"_blank\">@Xml(childName)</a> to differentiate which collection [...]
-{"description": "The element-oriented <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html\" 
target=\"_blank\">XmlFormat</a>\nvalues let a single property produce free-form 
or mixed child content:\n\n- <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#ELEMENTS\" 
target=\"_blank\">XmlFormat.ELEMENTS</a> emits child elements for the property 
value.\n- <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#MIXED\" 
target=\"_blank\">XmlForm [...]
+{"description": "The element-oriented <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html\" 
target=\"_blank\">XmlFormat</a>\nvalues let a single property produce free-form 
or mixed child content:\n\n- <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#FREEFORM\" 
target=\"_blank\">XmlFormat.FREEFORM</a> emits child elements for the property 
value.\n- <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#MIXED\" 
target=\"_blank\">XmlForm [...]
 {"description": "The text-oriented <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html\" 
target=\"_blank\">XmlFormat</a>\nvalues render a single property value directly 
as the character content of the element:\n\n- <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#TEXT\" 
target=\"_blank\">XmlFormat.TEXT</a> and <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#TEXT_PWS\" 
target=\"_blank\">XmlFormat.TEXT_PWS</a> serialize any strin [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#MIXED\" 
target=\"_blank\">XmlFormat.MIXED</a>,\n<a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#MIXED_PWS\" 
target=\"_blank\">XmlFormat.MIXED_PWS</a>,\n<a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#TEXT\" 
target=\"_blank\">XmlFormat.TEXT</a>, and\n<a 
href=\"/site/apidocs/org/apache/juneau/marshall/xml/XmlFormat.html#TEXT_PWS\" 
target=\"_blank\">XmlForma [...]
 {"description": "Let's go back to the example of our original `Person` bean 
class but add some namespace annotations:\n\n## Sample 
Beans\n\n```java\n@Xml(prefix=\"per\")\n@Marshalled(typeName=\"person\")\npublic
 class Person {\n\n    // Bean properties\n    public String name;\n    
@MarshalledProp(calendarFormat=CalendarFormat.ISO_INSTANT) public Calendar 
birthDate;\n    public List addresses;\n\n    // Getters/setters 
omitted\n}\n\n@Xml(prefix=\"addr\")\n@Marshalled(typeName=\"address\" [...]
@@ -263,8 +263,8 @@
 {"description": "The `juneau-bean-jsonschema` module provides Java beans for 
working with JSON Schema documents following the **JSON Schema Draft 2020-12** 
specification.\n\n## Overview\n\nThis module contains predefined POJOs for 
representing and manipulating JSON Schema documents programmatically. These 
beans can be serialized to any format supported by Juneau (JSON, XML, HTML, 
etc.), making it easy to generate and consume JSON Schema documents in your 
applications.\n\n### Key Features [...]
 {"description": "The `juneau-bean-openapi-v3` module provides Java beans for 
working with OpenAPI 3.0 documents and user interfaces.\n\n## Overview\n\nThis 
module contains predefined POJOs for:\n\n- OpenAPI 3.0 document structure\n- 
API documentation generation\n- OpenAPI UI rendering\n- Schema validation\n\n## 
OpenAPI Documents\n\nThe Juneau OpenAPI DTO beans are simply beans with 
fluent-style setters that allow you to quickly construct OpenAPI documents as 
Java objects. These objects c [...]
 {"description": "The `juneau-bean-common` module provides a small set of 
general-purpose Data Transfer Object (DTO) beans in the 
`org.apache.juneau.bean` package that don't belong to any single wire-format 
module.\n\n## Overview\n\nUnlike the format-specific bean modules 
(`juneau-bean-atom`, `juneau-bean-hal`, and so on), this module isn't a base 
library that the other `juneau-bean-X` modules build on \u2014 each of those 
depends directly on `juneau-marshall`, not on this module. Instead [...]
-{"description": "The `juneau-bean-swagger-v2` module provides Java beans for 
working with [Swagger 2.0](https://swagger.io/specification/v2/) documents and 
user interfaces.\n\n## Overview\n\nThis module contains predefined POJOs 
for:\n\n- Swagger 2.0 document structure\n- API documentation generation\n- 
Swagger UI rendering\n\nThe beans are simply POJOs with fluent-style 
`setX(...)` setters, so they can be serialized to JSON using any of the Juneau 
JSON serializers, or to other languages [...]
-{"description": "The `juneau-bean-mcp-v20250618` module provides Java beans 
modelling the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) 
`2025-06-18` wire format. It's paired with a separate, revision-neutral module, 
`juneau-bean-jsonrpc`, which carries the underlying JSON-RPC 2.0 
envelope.\n\n## Overview\n\nMCP is a JSON-RPC 2.0 protocol used by AI 
assistants and agents to interact with external tools, prompts, and resources. 
Two bean modules cover the wire format:\n\n [...]
+{"description": "The `juneau-bean-swagger-v2` module provides Java beans for 
working with [Swagger 2.0](https://swagger.io/specification/v2/) documents and 
user interfaces.\n\n## Overview\n\nThis module contains predefined POJOs 
for:\n\n- Swagger 2.0 document structure\n- API documentation generation\n- 
Swagger UI rendering\n\nThe beans are simply POJOs with fluent-style 
`setX(...)` setters, so they can be serialized to JSON using any of the Juneau 
JSON serializers, or to other languages [...]
+{"description": "The `juneau-bean-mcp-v20250618` module provides Java beans 
modelling the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) 
`2025-06-18` wire format. It's paired with a separate, revision-neutral module, 
`juneau-bean-jsonrpc`, which carries the underlying JSON-RPC 2.0 envelope, and 
with a `2026-07-28` sibling, `juneau-bean-mcp-v20260728`. See [Choosing your 
MCP 
setup](/docs/topics/JuneauMcpChoosingSetup#module-shape-3-shared-cores-6-per-revision-adapters)
 f [...]
 {"description": "The `juneau-bean-rfc7807` module provides Java beans for [RFC 
7807 \u2014 Problem Details for HTTP 
APIs](https://www.rfc-editor.org/rfc/rfc7807), the canonical machine-readable 
error format used by `application/problem+json`.\n\n## Overview\n\nRFC 7807 
standardises a five-field JSON document for carrying HTTP error details. Most 
modern REST stacks ship a `ProblemDetail`-style bean out of the box (Spring's 
`ProblemDetail`, ASP.NET's `ProblemDetails`, etc.); this module br [...]
 {"description": "The `juneau-bean-hal` module provides Java beans for the [HAL 
(Hypertext Application 
Language)](https://stateless.group/hal_specification.html) hypermedia format, 
also described in 
[draft-kelly-json-hal-08](https://datatracker.ietf.org/doc/html/draft-kelly-json-hal-08).
 HAL is a JSON-based wire format that lets a REST API describe its resources 
alongside the links and embedded sub-resources that surround them.\n\n## 
Overview\n\nHAL standardises two reserved members on ev [...]
 {"description": "The `juneau-bean-jsonapi` module provides Java beans for the 
[JSON:API v1.1](https://jsonapi.org/format/) wire format, used by APIs that 
serve `application/vnd.api+json`. JSON:API standardises a document shape, 
resource objects, relationships, errors, and link semantics so clients and 
servers can interoperate without ad-hoc per-API conventions.\n\n## 
Overview\n\nThis module models the JSON:API wire format as typed `@Marshalled` 
POJOs that round-trip through the default ` [...]
@@ -310,8 +310,8 @@
 {"description": "Swappers transform objects before they are processed by BCT 
assertions. They provide a way to unwrap, evaluate, or transform objects into 
more testable forms. Swappers are particularly useful for wrapper types like 
Optional, Supplier, and Future.\n\n## Built-in Swappers\n\nBCT comes with 
built-in swappers for common wrapper and lazy-evaluation types:\n\n```java\n// 
Optional types\nOptional<String> optional = 
Optional.of(\"Hello\");\nassertString(\"Hello\", optional);  // [...]
 {"description": "Property extractors define custom property access logic for 
objects that don't follow standard JavaBean patterns or require specialized 
property extraction. They provide a flexible way to access properties from any 
object structure.\n\n## Overview\n\nProperty extractors are used when:\n- 
Objects don't follow JavaBean getter conventions\n- You need to compute 
properties dynamically\n- You want to provide custom property names or 
aliases\n- Objects use non-standard propert [...]
 {"description": "The `juneau-test` module bundles a small JUnit 5 extension 
(formerly the standalone `juneau-junit5` module) for **test-time bean 
injection** \u2014 swapping production beans with test doubles inside a Juneau 
`BeanStore` for the duration of a JUnit 5 test, without modifying production 
code and without proxying. It is the Juneau-flavored answer to Spring's 
`@TestConfiguration` / `@MockBean`.\n\nThe extension lives in the <a 
href=\"/site/apidocs/org/apache/juneau/test/junit [...]
-{"description": "The `juneau-rest` family of modules provides a complete, 
end-to-end REST stack built on top of the Juneau marshalling\nAPIs. Because 
both the server and client sides share the same POJO-centric marshalling layer, 
you can create\nsophisticated Java-based REST communications layers that 
completely hide away the complexities of the REST protocol.\n\n## REST Module 
Family\n\n- [juneau-rest-common](/docs/topics/JuneauRestCommon) \u2014 Shared 
HTTP artifacts (headers, parts, e [...]
-{"description": "`juneau-rest-common` ships as two sibling Maven 
artifacts:\n\n| Artifact | Contents | Apache HttpClient 4.5 dependency? 
|\n|---|---|---|\n| `juneau-rest-common` | Transport-neutral types under 
`org.apache.juneau.http.*` and `org.apache.juneau.http.remote.*` \u2014 
annotations, lazy header beans, remote-proxy meta, transport-neutral parts, and 
transport-neutral response messages. Used by every `juneau-rest-*` module. | 
**No.** Zero `org.apache.httpcomponents:*` on the cla [...]
+{"description": "The `juneau-rest` family of modules provides a complete, 
end-to-end REST stack built on top of the Juneau marshalling\nAPIs. Because 
both the server and client sides share the same POJO-centric marshalling layer, 
you can create\nsophisticated Java-based REST communications layers that 
completely hide away the complexities of the REST protocol.\n\n## REST Module 
Family\n\n- [juneau-rest-common](/docs/topics/JuneauRestCommon) \u2014 Shared 
HTTP artifacts (headers, parts, e [...]
+{"description": "`juneau-rest-common` ships as two sibling Maven 
artifacts:\n\n| Artifact | Contents | Apache HttpClient 4.5 dependency? 
|\n|---|---|---|\n| `juneau-rest-common` | Transport-neutral types under 
`org.apache.juneau.http.*` and `org.apache.juneau.http.remote.*` \u2014 
annotations, lazy header beans, remote-proxy meta, transport-neutral parts, and 
transport-neutral response messages. Used by every `juneau-rest-*` module. | 
**No.** Zero `org.apache.httpcomponents:*` on the cla [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/http/header/package-summary.html\" 
target=\"_blank\">org.apache.juneau.http.header</a> package contains various 
convenience classes for creating\nstandard HTTP components using static 
imports.\n\n<tree>\n<node-0><java-class><a 
href=\"/site/apidocs/org/apache/juneau/http/classic/HttpHeaders.html\" 
target=\"_blank\">HttpHeaders</a></java-class> - Utility class for standard 
HTTP headers.</node-0>\n<node-0><java-class><a href=\"/ [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/http/package-summary.html\" 
target=\"_blank\">org.apache.juneau.http</a> package contains annotations for 
defining both\nserver and client side APIs.\n\nThe server-side APIs also use it 
for producing auto-generated Swagger documentation through the REST API 
itself.\n\n<tree>\n<node-0><javac-annotation><a 
href=\"/site/apidocs/org/apache/juneau/http/Contact.html\" 
target=\"_blank\">Contact</a></javac-annotation> <javac-annotati [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/http/header/package-summary.html\" 
target=\"_blank\">org.apache.juneau.http.header</a> package contains 
transport-neutral header beans\nfor all common HTTP headers.\nThese beans 
implement the <a href=\"/site/apidocs/org/apache/juneau/http/HttpHeader.html\" 
target=\"_blank\">HttpHeader</a> interface, which 
mirrors\n`org.apache.http.Header` semantics without the Apache HttpCore 
dependency.\n\n<tree>\n<node-0><javac-class><a hre [...]
@@ -344,7 +344,7 @@
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/http/Response.html\" 
target=\"_blank\">Response</a> annotation can be used to define beans 
that\nreturn HTTP response parts via annotations and methods.\n\nThey are used 
in combination with the following 
annotations:\n\n<tree>\n<node-0><javac-annotation><a 
href=\"/site/apidocs/org/apache/juneau/http/StatusCode.html\" 
target=\"_blank\">StatusCode</a></javac-annotation> <javac-annotation><a 
href=\"/site/apidocs/org/apache/junea [...]
 {"description": "Request HTTP parts can also be retrieved programmatically 
through the following classes that can be passed in as\nparameters or access 
through <a 
href=\"/site/apidocs/org/apache/juneau/rest/server/RestRequest.html\" 
target=\"_blank\">RestRequest</a> bean:\n\n<tree>\n<node-0><javac-class><a 
href=\"/site/apidocs/org/apache/juneau/rest/server/httppart/RequestHeaderList.html\"
 target=\"_blank\">RequestHeaderList</a></javac-class> <javac-class><a 
href=\"/site/apidocs/org/apac [...]
 {"description": "HTTP parts can be automatically validated against their 
schema definitions using format validation and Jakarta Bean Validation 
constraints.\n\n## Format Validation\n\nJuneau supports comprehensive format 
validation for HTTP parts based on JSON Schema Draft 2020-12 and OpenAPI 3.x 
specifications. When a `format` is specified in a `@Schema` annotation, the 
value is automatically validated against that format.\n\n### Supported 
Formats\n\nThe following format types are suppo [...]
-{"description": ":::warning Outdated examples (9.5)\nExamples on this page 
using `RestContext.Builder` is pre-9.5 and kept only for historical 
context.\nUse `@Rest(...serializers/parsers...)`, `@RestOp(...)`, or 
`@Bean(name=\"serializers\"|\"parsers\")`\nwith fully built sets. See the [v9.5 
Migration Guide](/docs/release-notes/9.5.0).\n:::\n\nJuneau uses <a 
href=\"/site/apidocs/org/apache/juneau/marshall/parser/Parser.html\" 
target=\"_blank\">Parsers</a> and <a href=\"/site/apidocs/org/a [...]
+{"description": ":::warning Outdated examples (9.5)\nExamples on this page 
using `RestContext.Builder` is pre-9.5 and kept only for historical 
context.\nUse `@Rest(...serializers/parsers...)`, `@RestOp(...)`, or 
`@Bean(name=\"serializers\"|\"parsers\")`\nwith fully built sets. See the [v9.5 
Migration Guide](/docs/release-notes/9.5.0).\n:::\n\nJuneau uses <a 
href=\"/site/apidocs/org/apache/juneau/marshall/parser/Parser.html\" 
target=\"_blank\">Parsers</a> and <a href=\"/site/apidocs/org/a [...]
 {"description": "HTTP form posts can be handled two ways:\n\n- By parsing the 
entire HTTP body into a POJO using the registered <a 
href=\"/site/apidocs/org/apache/juneau/marshall/urlencoding/UrlEncodingParser.html\"
 target=\"_blank\">UrlEncodingParser</a>\n- By access the form post entries as 
HTTP parts.\n\nThe following example shows the first approach of handling an 
`application/x-www-form-urlencoded` request of the form 
`aString=foo&aNumber=123&aDate=2001-07-04T15:30:45Z` and loading  [...]
 {"description": "Juneau REST servers ship two complementary composition / 
mounting primitives on the 
class-level\n[`@Rest`](/site/apidocs/org/apache/juneau/rest/server/Rest.html) 
annotation:\n\n- **`@Rest(mixins=Class<?>[])`** \u2014 *inline composition with 
per-mixin sub-contexts.* Graft every\n  `@RestOp`-group method (`@RestGet`, 
`@RestPost`, `@RestPut`, `@RestPatch`, `@RestDelete`,\n  `@RestOptions`, 
`@RestOp`) from a listed class into the importing resource's operation tree.\n  
Loca [...]
 {"description": "`@Rest(mixins=...)` got a structural upgrade in 9.5.0. The 
user-facing API is unchanged\n(`@Rest(mixins=Foo.class, Bar.class)` still 
grafts the listed classes' `@RestOp` methods into the\nimporting resource's 
operation tree), but the *implementation* now elevates each mixin from 
a\n\"method library absorbed into the host's `RestContext`\" to an \"embedded 
sub-resource with its own\n`RestContext` parent-linked to the 
host's.\"\n\nPre-9.5.0, mixin endpoints resolved serial [...]
@@ -359,15 +359,15 @@
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/rest/server/Rest.html#encoders()\" 
target=\"_blank\">@Rest(encoders)</a> annotation can be used to\nassociate 
character encoders with a servlet class.\nEncoders can be used to enable 
various kinds of compression (e.g. `gzip`) on requests and responses based on 
the request\n`Accept-Encoding` and `Content-Encoding` headers.\n\n:::tip 
Example\n```java\n// Servlet with automated support for GZIP 
compression\n@Rest(encoders={GzipE [...]
 {"description": ":::warning Outdated examples (9.5)\nExamples on this page 
using `RestContext.Builder` is pre-9.5 and kept only for historical 
context.\nUse `Config` parameter injection in `@RestOp` methods, `@Bean` beans, 
or `RestContext.getConfig()`\nfrom a supported `@RestInit` parameter. See the 
[v9.5 Migration Guide](/docs/release-notes/9.5.0).\n:::\n\nThe Server API 
provides methods for associating configuration files with REST servlets so that 
configuration properties\ncan be defi [...]
 {"description": ":::warning Outdated examples (9.5)\nExamples on this page 
using `RestContext.Builder` / `builder.vars(...)` is pre-9.5 and kept only\nfor 
historical context. Register custom vars through `@Bean(name=\"varResolver\")` 
with a\n`VarResolver` (or `VarResolver.Builder`) supplier. See the\n[v9.5 
Migration Guide](/docs/release-notes/9.5.0).\n:::\n\nIn the previous examples, 
there were several cases where embedded variables were contained within 
annotation values:\n\n```java\n@R [...]
-{"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/rest/server/servlet/BasicRestServlet.html\"
 target=\"_blank\">BasicRestServlet</a> and <a 
href=\"/site/apidocs/org/apache/juneau/rest/server/servlet/BasicRestResource.html\"
 target=\"_blank\">BasicRestResource</a> classes come with built-in support for 
serving up static files through the <a 
href=\"/site/apidocs/org/apache/juneau/rest/server/ops/HtdocMixin.html\" 
target=\"_blank\">HtdocMixin</a> op-mixin, which provides the fo [...]
-{"description": "The Juneau REST server ships with 
a\n[`StaticFilesMixin`](/site/apidocs/org/apache/juneau/rest/server/staticfile/StaticFilesMixin.html)\nmixin
 in the 
[`org.apache.juneau.rest.server.staticfile`](/site/apidocs/org/apache/juneau/rest/server/staticfile/package-summary.html)\npackage
 that wraps the existing 
[`BasicStaticFiles`](/site/apidocs/org/apache/juneau/rest/server/staticfile/BasicStaticFiles.html)\nplumbing
 (a `StaticFiles` implementation, not a servlet) in a servlet- [...]
+{"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/rest/server/servlet/BasicRestServlet.html\"
 target=\"_blank\">BasicRestServlet</a> and <a 
href=\"/site/apidocs/org/apache/juneau/rest/server/servlet/BasicRestResource.html\"
 target=\"_blank\">BasicRestResource</a> classes come with built-in support for 
serving up static files through the <a 
href=\"/site/apidocs/org/apache/juneau/rest/server/ops/HtdocMixin.html\" 
target=\"_blank\">HtdocMixin</a> op-mixin, which provides the fo [...]
+{"description": "The Juneau REST server ships with 
a\n[`StaticFilesMixin`](/site/apidocs/org/apache/juneau/rest/server/staticfile/StaticFilesMixin.html)\nmixin
 in the 
[`org.apache.juneau.rest.server.staticfile`](/site/apidocs/org/apache/juneau/rest/server/staticfile/package-summary.html)\npackage
 that wraps the existing 
[`BasicStaticFiles`](/site/apidocs/org/apache/juneau/rest/server/staticfile/BasicStaticFiles.html)\nplumbing
 (a `StaticFiles` implementation, not a servlet) in a servlet- [...]
 {"description": "The Juneau REST server ships with a four-class 
**convention-endpoints mixin pack** 
in\n[`org.apache.juneau.rest.server.convention`](/site/apidocs/org/apache/juneau/rest/server/convention/package-summary.html)\ncovering
 the small set of de-facto-standard URLs that every public-facing service 
eventually has\nto wire up by hand: the browser favicon, the SEO contracts 
(`robots.txt`, `sitemap.xml`), a\nJSON deployment-introspection endpoint, and 
the RFC 8615 `/.well-known/*`  [...]
 {"description": "The Juneau REST server ships with a three-class **ops / 
introspection mixin pack** 
in\n[`org.apache.juneau.rest.server.ops`](/site/apidocs/org/apache/juneau/rest/server/ops/package-summary.html)\ncovering
 the operational surface every long-running service eventually grows: a 
request-echo\nendpoint for round-trip debugging, a JVM admin surface for thread 
/ heap / cache /\nrate-limit visibility, and a route-index endpoint for 
navigation. Each mixin is a single-purpose\n`@R [...]
-{"description": "The `juneau-rest-server-view-jsp` module adds JSP (JavaServer 
Pages) view-rendering to\n`juneau-rest-server` without bleeding the JSP-engine 
dependency (Apache Jasper) into the core.\n\n> This page covers the 
JSP-specific bridge. For the engine-agnostic\n> 
[`View`](/site/apidocs/org/apache/juneau/rest/server/view/View.html) interface 
itself, see the\n> [9.5.0 release notes](/docs/release-notes/9.5.0) under the 
`juneau-rest-server` section.\n> Sibling view modules [Thymel [...]
-{"description": "The `juneau-rest-server-view-thymeleaf` module adds 
[Thymeleaf](https://www.thymeleaf.org/)\nview-rendering to `juneau-rest-server` 
without bleeding the Thymeleaf engine dependency into\nthe core.\n\n> This page 
covers the Thymeleaf-specific bridge. For the engine-agnostic\n> 
[`View`](/site/apidocs/org/apache/juneau/rest/server/view/View.html) interface 
itself, see the\n> [9.5.0 release notes](/docs/release-notes/9.5.0) under the 
`juneau-rest-server` section.\n> The sibl [...]
-{"description": "The `juneau-rest-server-view-mustache` module adds 
[Mustache](https://mustache.github.io/)\nview-rendering to `juneau-rest-server` 
without bleeding the Mustache engine dependency into\nthe core.\n\n> This page 
covers the Mustache-specific bridge. For the engine-agnostic\n> 
[`View`](/site/apidocs/org/apache/juneau/rest/server/view/View.html) interface 
itself, see the\n> [9.5.0 release notes](/docs/release-notes/9.5.0) under the 
`juneau-rest-server` section.\n> The sibling [...]
+{"description": "The `juneau-rest-server-view-jsp` module adds JSP (JavaServer 
Pages) view-rendering to\n`juneau-rest-server` without bleeding the JSP-engine 
dependency (Apache Jasper) into the core.\n\n> This page covers the 
JSP-specific bridge. For the engine-agnostic\n> 
[`View`](/site/apidocs/org/apache/juneau/rest/server/view/View.html) interface 
itself, see the\n> [9.5.0 release notes](/docs/release-notes/9.5.0) under the 
`juneau-rest-server` section.\n> Sibling view modules [Thymel [...]
+{"description": "The `juneau-rest-server-view-thymeleaf` module adds 
[Thymeleaf](https://www.thymeleaf.org/)\nview-rendering to `juneau-rest-server` 
without bleeding the Thymeleaf engine dependency into\nthe core.\n\n> This page 
covers the Thymeleaf-specific bridge. For the engine-agnostic\n> 
[`View`](/site/apidocs/org/apache/juneau/rest/server/view/View.html) interface 
itself, see the\n> [9.5.0 release notes](/docs/release-notes/9.5.0) under the 
`juneau-rest-server` section.\n> The sibl [...]
+{"description": "The `juneau-rest-server-view-mustache` module adds 
[Mustache](https://mustache.github.io/)\nview-rendering to `juneau-rest-server` 
without bleeding the Mustache engine dependency into\nthe core.\n\n> This page 
covers the Mustache-specific bridge. For the engine-agnostic\n> 
[`View`](/site/apidocs/org/apache/juneau/rest/server/view/View.html) interface 
itself, see the\n> [9.5.0 release notes](/docs/release-notes/9.5.0) under the 
`juneau-rest-server` section.\n> The sibling [...]
 {"description": "The `juneau-rest-server-view-freemarker` module adds\n[Apache 
FreeMarker](https://freemarker.apache.org/) view-rendering to 
`juneau-rest-server`\nwithout bleeding the FreeMarker engine dependency into 
the core.\n\n> This page covers the FreeMarker-specific bridge. For the 
engine-agnostic\n> 
[`View`](/site/apidocs/org/apache/juneau/rest/server/view/View.html) interface 
itself, see the\n> [9.5.0 release notes](/docs/release-notes/9.5.0) under the 
`juneau-rest-server` secti [...]
-{"description": "Client version headers are used to support backwards 
compatibility for breaking REST interface changes.\nUsing them, you're able to 
return different responses based on which client is making a request.\n\nThe 
APIs involved with defining client version headers 
are:\n\n<tree>\n<node-0><java-annotation><a 
href=\"/site/apidocs/org/apache/juneau/rest/server/Rest.html\" 
target=\"_blank\">Rest</a></java-annotation></node-0>\n<node-1><java-method-annotation><a
 href=\"/site/apido [...]
+{"description": "Client version headers are used to support backwards 
compatibility for breaking REST interface changes.\nUsing them, you're able to 
return different responses based on which client is making a request.\n\nThe 
APIs involved with defining client version headers 
are:\n\n<tree>\n<node-0><java-annotation><a 
href=\"/site/apidocs/org/apache/juneau/rest/server/Rest.html\" 
target=\"_blank\">Rest</a></java-annotation></node-0>\n<node-1><java-method-annotation><a
 href=\"/site/apido [...]
 {"description": "One of the most useful features of Juneau is the ability to 
generate Swagger-based OPTIONS pages for self-documenting\ndesigns (i.e.\nREST 
interfaces that document themselves).\n\nAs described previously, the 
`PetStore` example provides an example of auto-generated Swagger 
JSON:\n\n![Swagger JSON](/topics/SwaggerBasics.Swagger.1.png)\n\nUsing <a 
href=\"/site/apidocs/org/apache/juneau/bean/swagger/ui/SwaggerUI.html\" 
target=\"_blank\">SwaggerUI</a>, we're able to render t [...]
 {"description": "> **Migrating from 9.4.x?** The `@Rest(apiFormat=\u2026)` 
annotation member, the\n> `juneau.rest.apiFormat` system property, the 
`RestContext.getApiFormat()` accessor, and the\n> `?Swagger` / `?OpenApi` query 
mirrors on group resources are all **removed in 9.5.0**. Both\n> Swagger v2 and 
OpenAPI 3.1 are now always mounted via the four-class api-docs mixin pack on\n> 
`BasicRestServlet` / `BasicRestResource`. See the\n> [V9.5 Migration 
Guide](/docs/release-notes/9.5.0) for [...]
 {"description": "The Juneau REST server ships with a four-class **api-docs 
mixin pack** 
in\n[`org.apache.juneau.rest.server.docs`](/site/apidocs/org/apache/juneau/rest/server/docs/package-summary.html)\nthat
 drives every built-in Swagger / OpenAPI / Redoc endpoint on `BasicRestServlet` 
and\n`BasicRestResource`. Each class is a single-purpose `@Rest`-annotated 
resource designed to be\ngrafted into your servlet via 
[`@Rest(mixins=...)`](/docs/topics/RestServerComposition)\n&mdash; pick the 
[...]
@@ -385,7 +385,7 @@
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/rest/server/widget/package-summary.html\"
 target=\"_blank\">org.apache.juneau.rest.server.widget</a> package contains 
predefined reusable widgets.\n\n<tree>\n<node-0><java-package><a 
href=\"/site/apidocs/org/apache/juneau/rest/server/widget/package-summary.html\"
 
target=\"_blank\">org.apache.juneau.rest.server.widget</a></java-package></node-0>\n<node-1><javac-class><a
 href=\"/site/apidocs/org/apache/juneau/rest/server/widget [...]
 {"description": "The HTML views of POJOs can somewhat be considered a 
rudimentary User Interface.\nIn reality, a better term for them would be a 
Developer Interface as they're meant to be used primarily by developers\nand 
not end users.\nDespite that distinction, it is possible to 'brand' the HTML 
page to whatever you desire.\n\nThe sample root page below includes some 
default branding for Juneau and 
Apache:\n\n```text\nhttp://localhost:10000/helloWorld\n```\n\nThe Juneau REST 
framework  [...]
 {"description": "The sample root page renders in the default \"devops\" 
look-and-feel:\n\n![Devops 
Style](/topics/HtmlStylesheets.Stylesheets.0.png)\n\n```text\nhttp://localhost:10000\n```\n\nThe
 sample root page provides a dropdown widget to try out the other default 
look-and-feels: For example, the \"light\"\nlook-and-feel:\n\n![Light 
Style](/topics/HtmlStylesheets.Stylesheets.1.png)\n\n```text\nhttp://localhost:10000/?stylesheet=styles%2Flight.css\n```\n\nAnd
 the \"dark\" look-and-fee [...]
-{"description": "The REST APIs provides supports enabling logging of HTTP 
requests and responses through the following 
annotations:\n\n<tree>\n<node-0><java-annotation><a 
href=\"/site/apidocs/org/apache/juneau/rest/server/Rest.html\" 
target=\"_blank\">Rest</a></java-annotation></node-0>\n<node-1><java-method-annotation><a
 href=\"/site/apidocs/org/apache/juneau/rest/server/Rest.html#debug()\" 
target=\"_blank\">debug</a></java-method-annotation></node-1>\n<node-1><java-method-annotation><a
 [...]
+{"description": "The REST APIs provides supports enabling logging of HTTP 
requests and responses through the following 
annotations:\n\n<tree>\n<node-0><java-annotation><a 
href=\"/site/apidocs/org/apache/juneau/rest/server/Rest.html\" 
target=\"_blank\">Rest</a></java-annotation></node-0>\n<node-1><java-method-annotation><a
 href=\"/site/apidocs/org/apache/juneau/rest/server/Rest.html#debug()\" 
target=\"_blank\">debug</a></java-method-annotation></node-1>\n<node-0><java-annotation><a
 href=\ [...]
 {"description": "By default, a `200 (OK)` status is automatically set as the 
HTTP status when a Java method executes successfully.\n\nOther status codes can 
be generated by throwing a <a 
href=\"/site/apidocs/org/apache/juneau/http/response/BasicHttpException.html\" 
target=\"_blank\">BasicHttpException</a> with a specific HTTP status code, or 
calling <a 
href=\"https://jakarta.ee/specifications/servlet/6.0/apidocs/jakarta/servlet/http/HttpServletResponse.html#setStatus(int)\"
 target=\"_bla [...]
 {"description": "Juneau REST servers can emit machine-readable [RFC 7807 
\u2014 Problem Details for HTTP APIs](https://www.rfc-editor.org/rfc/rfc7807) 
responses (`application/problem+json`) end-to-end. The feature couples three 
pieces:\n\n- The typed `Problem` bean from 
[juneau-bean-rfc7807](/docs/topics/JuneauBeanRfc7807) \u2014 the wire shape.\n- 
An opt-in flag (`problemDetails`) on `@Rest` and every `@RestOp`-group 
annotation \u2014 turns on `application/problem+json` rendering of err [...]
 {"description": "Juneau REST servers ship a minimal but complete [RFC 7232 
\u2014 Conditional Requests](https://www.rfc-editor.org/rfc/rfc7232) helper 
layer so handlers no longer need to hand-roll `ETag` / `Last-Modified` / 
`If-None-Match` / `If-Match` plumbing. The feature couples three pieces:\n\n- A 
handful of fluent setters on <a 
href=\"/site/apidocs/org/apache/juneau/rest/server/RestResponse.html\" 
target=\"_blank\">RestResponse</a> \u2014 `eTag(...)`, `lastModified(...)`, 
`cacheCon [...]
@@ -400,7 +400,7 @@
 {"description": "The 
[org.apache.juneau.rest.server.auth](/site/apidocs/org/apache/juneau/rest/server/auth/package-summary.html)
 package provides a pluggable servlet-filter authentication framework that runs 
**at the servlet container layer** \u2014 before Juneau's request routing 
\u2014 so a single URL can support multiple overlapping authentication schemes, 
short-circuit on the first success, and aggregate roles when more than one 
scheme succeeds.\n\nThis framework is the natural peer  [...]
 {"description": "The `RestAuthenticator` SPI provides an ergonomic, 
**in-resource** way to resolve a request's `Principal` and roles for `@Rest` 
resources \u2014 so `roleGuard`, `RoleBasedRestGuard`, `@Auth Principal` 
injection, and `req.isUserInRole(...)` all \"just work\" without 
container-managed security or a servlet-layer filter.\n\nIt **complements** the 
[AuthN Filter Framework](/docs/topics/AuthFilterFramework): that framework 
authenticates at the servlet-container layer (before J [...]
 {"description": "The opt-in `juneau-rest-server-auth-saml` module adds SAML 
2.0 single-sign-on (Web Browser SSO Profile) to `juneau-rest-server` by 
wrapping [OpenSAML 5.x](https://shibboleth.atlassian.net/wiki/spaces/OS30) 
behind the [AuthFilter](/docs/topics/AuthFilterFramework) / 
[TokenValidator](/docs/topics/RestServerAuthGuards) SPIs that ship in 
`juneau-rest-server`.\n\nOpenSAML is an Apache 2.0-licensed library maintained 
by [Shibboleth](https://shibboleth.atlassian.net/). It is de [...]
-{"description": "The opt-in `juneau-rest-server-auth-oauth` module adds OAuth 
2.0 + OIDC bearer-token validation, RFC 7662 token introspection, RFC 6749 
client-side grant flows, and OIDC discovery to `juneau-rest-server` by wrapping 
the [Nimbus OAuth 2.0 
SDK](https://connect2id.com/products/nimbus-oauth-openid-connect-sdk) 
(`com.nimbusds:oauth2-oidc-sdk`) behind the 
[AuthFilter](/docs/topics/AuthFilterFramework) / 
[TokenValidator](/docs/topics/RestServerAuthGuards) SPIs.\n\nThe Nimbus SD [...]
+{"description": "The opt-in `juneau-rest-server-auth-oauth` module adds OAuth 
2.0 + OIDC bearer-token validation, RFC 7662 token introspection, RFC 6749 
client-side grant flows, and OIDC discovery to `juneau-rest-server` by wrapping 
the [Nimbus OAuth 2.0 
SDK](https://connect2id.com/products/nimbus-oauth-openid-connect-sdk) 
(`com.nimbusds:oauth2-oidc-sdk`) behind the 
[AuthFilter](/docs/topics/AuthFilterFramework) / 
[TokenValidator](/docs/topics/RestServerAuthGuards) SPIs.\n\nThe Nimbus SD [...]
 {"description": "The opt-in `juneau-rest-server-auth-oidc-rp` module turns a 
Juneau REST server into a complete OpenID Connect **Relying Party** &mdash; the 
\"Log in with Google / Okta / Entra ID / Keycloak\" end-to-end glue. It 
orchestrates the interactive browser login dance (authorization redirect &rarr; 
callback &rarr; session) on top of the building blocks in 
[juneau-rest-server-auth-oauth](/docs/topics/OAuthAuthSupport), wrapping the 
[Nimbus OAuth 2.0 SDK](https://connect2id.com/pr [...]
 {"description": "`@RestOp` handler methods may return reactive-streams values. 
**The feature is fully opt-in by adding a module to the classpath** \u2014 a 
bare `juneau-rest-server` has zero reactive behavior and its `DefaultConfig` 
wires no reactive processor.\n\nTwo layers stack on top of core:\n\n| Classpath 
| Enables |\n|---|---|\n| bare `juneau-rest-server` | *(no reactive behavior 
\u2014 a `Flow.Publisher` return is serialized as an ordinary object)* |\n| `+ 
juneau-rest-server-reac [...]
 {"description": "The following URL parameters have special meaning and can be 
passed in through the URL of the request:\n\n| GET Parameter | Description 
|\n|---------------|-------------|\n| `&plainText=true` | Response will always 
be `Content-Type: text/plain` and the returned text will be human-readable (<a 
href=\"/site/apidocs/org/apache/juneau/marshall/serializer/WriterSerializer.Builder.html#useWhitespace()\"
 target=\"_blank\">WriterSerializer.Builder.useWhitespace()</a> enabled).<b 
[...]
@@ -416,15 +416,16 @@
 {"description": "- Subclasses can use either <a 
href=\"https://jakarta.ee/specifications/servlet/6.0/apidocs/jakarta/servlet/http/HttpServlet.html#init(ServletConfig)\"
 target=\"_blank\">HttpServlet.init(ServletConfig)</a> or <a 
href=\"https://jakarta.ee/specifications/servlet/6.0/apidocs/jakarta/servlet/http/HttpServlet.html#init()\"
 target=\"_blank\">HttpServlet.init()</a> for initialization just like any 
other servlet.\n- The `X-Response-Headers` header can be used to pass through 
hea [...]
 {"description": "The REST API uses Java logging by default.\n\nIf you wish to 
use LOG4J logging, you simple need to add the following to your JVM arguments 
and maven dependencies:\n\n## Command-line 
argument\n\n```text\n-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager\n```\n\n##
 Maven dependency\n\n```xml\n<dependency>\n    
<groupId>org.apache.logging.log4j</groupId>\n    
<artifactId>log4j-jul</artifactId>\n</dependency>\n```", "id": 
"topic:681a9ac13ee9", "module": "61 [...]
 {"description": "The `juneau-rest-server-management-logging` module ships 
opt-in `LogBackend` adapters that let the `/loggers`\nmanagement endpoint drive 
**Logback** or **Log4j2** instead of the built-in `java.util.logging` 
default.\n\n## Background: the `/loggers` endpoint\n\nThe `/loggers` runtime 
log-level management endpoint is built into `juneau-rest-server` \u2014 no 
extra module is\nneeded to expose it. It surfaces as:\n\n| Method | Path | 
Effect |\n|---|---|---|\n| `GET` | `/logg [...]
-{"description": "Juneau provides both server-side and client-side support for 
the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/), a 
JSON-RPC 2.0 protocol that lets AI assistants and agents discover and invoke 
external **tools**, **prompts**, and **resources**.\n\nTwo protocol revisions 
are supported side-by-side as separate, revision-bound Maven modules: 
`2025-06-18` and `2026-07-28` (the current revision). A client/server pair 
picks one revision at compile time \u2014  [...]
+{"description": "The opt-in `juneau-rest-server-rdf` module adds RDF (Jena) 
marshalling to a `@Rest`-annotated resource by supplying a predefined config 
interface that mirrors the standard universal config but with the [RDF 
serializers and parsers](/docs/topics/Rdf) enabled.\n\n```xml\n<dependency>\n   
 <groupId>org.apache.juneau</groupId>\n    
<artifactId>juneau-rest-server-rdf</artifactId>\n    
<version>${juneau.version}</version>\n</dependency>\n```\n\n## At a glance\n\n| 
Component |  [...]
+{"description": "Juneau provides both server-side and client-side support for 
the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/), a 
JSON-RPC 2.0 protocol that lets AI assistants and agents discover and invoke 
external **tools**, **prompts**, and **resources**.\n\nTwo protocol revisions 
are supported side-by-side as separate, revision-bound Maven modules: 
`2025-06-18` and `2026-07-28` (the current revision). A client/server pair 
picks one revision at compile time \u2014  [...]
 {"description": "Get a working [Model Context Protocol 
(MCP)](https://modelcontextprotocol.io/) server and client talking to each 
other in about 5 minutes, using MCP revision `2026-07-28` (the current revision 
\u2014 see [Choosing your MCP setup](/docs/topics/JuneauMcpChoosingSetup) if 
you need `2025-06-18` instead).\n\n## 1. Add the 
dependency\n\n```xml\n<dependency>\n    <groupId>org.apache.juneau</groupId>\n  
  <artifactId>juneau-rest-server-mcp-v20260728</artifactId>\n    <version>${ 
[...]
-{"description": "Three independent decisions determine which classes you 
extend/implement and which Maven artifacts you depend on. They can be mixed 
freely \u2014 e.g. `2026-07-28` + mixin + Spring Boot is a perfectly normal 
combination.\n\n## 1. Which protocol revision: `2025-06-18` vs 
`2026-07-28`\n\nA client/server pair is revision-bound at compile time \u2014 
pick one adapter module per side. There is no automatic runtime revision 
switching.\n\n| | `2025-06-18` (v1) | `2026-07-28` (v [...]
+{"description": "Three independent decisions determine which classes you 
extend/implement and which Maven artifacts you depend on. They can be mixed 
freely \u2014 e.g. `2026-07-28` + mixin + Spring Boot is a perfectly normal 
combination.\n\n## Module shape: 3 shared cores, 6 per-revision adapters\n\nThe 
MCP ecosystem is **9 Maven artifacts, not 6 independent ones**. Three of them 
are revision-neutral **cores** \u2014 each has zero compile-time knowledge of 
`2025-06-18` vs `2026-07-28` \u [...]
 {"description": "Copy-pasteable snippets for common MCP tasks, targeting 
revision `2026-07-28` unless noted. Each recipe is self-contained: assume 
`config` is an `McpServerConfig` you're building up (as in the 
[Quickstart](/docs/topics/JuneauMcpQuickstart)), and paste imports as 
shown.\n\n- [Full example: 
`juneau-examples-mcp`](#full-example-juneau-examples-mcp)\n- [Writing a 
tool](#writing-a-tool)\n- [Writing a prompt](#writing-a-prompt)\n- [Serving a 
resource](#serving-a-resource)\n- [ [...]
-{"description": "New to MCP in Juneau? Start with the [MCP 
Quickstart](/docs/topics/JuneauMcpQuickstart) and [MCP 
Recipes](/docs/topics/JuneauMcpRecipes) \u2014 this page is the deep reference 
for lookup once you're past the basics.\n\n:::tip Want a runnable, end-to-end 
example 
instead?\n[`juneau-examples-mcp`](https://github.com/apache/juneau/tree/master/juneau-examples/juneau-examples-mcp)
 is a complete, copy-me Maven module exercising every major surface on this 
page \u2014 tools, eli [...]
-{"description": "New to MCP in Juneau? Start with the [MCP 
Quickstart](/docs/topics/JuneauMcpQuickstart) and [MCP 
Recipes](/docs/topics/JuneauMcpRecipes) \u2014 this page is the deep reference 
for lookup once you're past the basics.\n\n:::tip Want a runnable, end-to-end 
example 
instead?\n[`juneau-examples-mcp`](https://github.com/apache/juneau/tree/master/juneau-examples/juneau-examples-mcp)
 is a complete, copy-me Maven module pairing a `2026-07-28` MCP server with a 
guided `McpClient` w [...]
+{"description": "New to MCP in Juneau? Start with the [MCP 
Quickstart](/docs/topics/JuneauMcpQuickstart) and [MCP 
Recipes](/docs/topics/JuneauMcpRecipes) \u2014 this page is the deep reference 
for lookup once you're past the basics.\n\n:::tip Want a runnable, end-to-end 
example 
instead?\n[`juneau-examples-mcp`](https://github.com/apache/juneau/tree/master/juneau-examples/juneau-examples-mcp)
 is a complete, copy-me Maven module exercising every major surface on this 
page \u2014 tools, eli [...]
+{"description": "New to MCP in Juneau? Start with the [MCP 
Quickstart](/docs/topics/JuneauMcpQuickstart) and [MCP 
Recipes](/docs/topics/JuneauMcpRecipes) \u2014 this page is the deep reference 
for lookup once you're past the basics.\n\n:::tip Want a runnable, end-to-end 
example 
instead?\n[`juneau-examples-mcp`](https://github.com/apache/juneau/tree/master/juneau-examples/juneau-examples-mcp)
 is a complete, copy-me Maven module pairing a `2026-07-28` MCP server with a 
guided `McpClient` w [...]
 {"description": "<DependencyInfo artifact=\"juneau-rest-server-springboot\" 
bundle=\"org.apache.juneau.rest.server.springboot\" />\n\n## 
Contents/Features\n\nThe `juneau-rest-server-springboot` library provides 
classes to make it easy to integrate Juneau REST resources with\nSpring and 
Spring Boot.\n\n## Bean Precedence\n\nWhen a Juneau REST resource runs inside a 
Spring Boot application, framework-managed beans on 
`RestContext`\n(`CallLogger`, `EncoderSet`, `SerializerSet`, `ParserSet`, [...]
 {"description": "The Juneau REST servlet APIs are designed to work seamlessly 
with the Spring Boot framework.\n\nThe only restriction is that your top-level 
REST resource must extend from one of the following 
classes:\n\n<tree>\n<node-0><java-package><a 
href=\"/site/apidocs/org/apache/juneau/rest/server/springboot/package-summary.html\"
 
target=\"_blank\">org.apache.juneau.rest.server.springboot</a></java-package></node-0>\n<node-1><java-abstract-class><a
 href=\"/site/apidocs/org/apache/j [...]
-{"description": "<DependencyInfo artifact=\"juneau-rest-client\" 
bundle=\"org.apache.juneau.rest.client\" />\n\n## Contents/Features\n\nBuilt 
upon the feature-rich Apache HttpClient library, the Juneau RestClient API adds 
support for fluent-style REST \ncalls and the ability to perform marshalling of 
POJOs to and from HTTP parts.\n\n:::tip Example\n```java\n// Create a basic 
REST client with JSON support and download a bean.\nMyBean bean = 
RestClient.create()\n    .json5()\n    .build()\ [...]
+{"description": ":::note Classic stack \u2014 module renamed in 9.5.0\nThis 
page documents the classic, Apache HttpClient 4.5\u2013based `RestClient` 
(`org.apache.juneau.rest.client.classic.*`). As of Juneau 9.5.0 it ships in the 
**`juneau-rest-client-classic`** module. The `juneau-rest-client` artifact now 
holds the canonical, transport-agnostic next-generation client \u2014 see 
[Next-Generation REST 
Client](/docs/topics/NextGenRestClient).\n:::\n\n<DependencyInfo 
artifact=\"juneau-rest [...]
 {"description": "By default, JSON support is provided for HTTP request and 
response bodies.\n\nOther languages can be specified using any of the following 
builder methods:\n\n<tree>\n<node-0><java-class><a 
href=\"/site/apidocs/org/apache/juneau/rest/client/classic/RestClient.Builder.html\"
 
target=\"_blank\">RestClient.Builder</a></java-class></node-0>\n<node-1><java-method><a
 
href=\"/site/apidocs/org/apache/juneau/rest/client/classic/RestClient.Builder.html#json()\"
 target=\"_blank\">jso [...]
 {"description": "Per-client or per-request HTTP parts (headers, query/form 
data, path parameters) can be manipulated via the following\nmethods that 
return back builders for those parts:\n\n<tree>\n<node-0><java-class><a 
href=\"/site/apidocs/org/apache/juneau/rest/client/classic/RestClient.Builder.html\"
 
target=\"_blank\">RestClient.Builder</a></java-class></node-0>\n<node-1><javac-method><a
 
href=\"/site/apidocs/org/apache/juneau/rest/client/classic/RestClient.Builder.html#headers()\"
 ta [...]
 {"description": "The request body can either be passed in with the client 
creator method (e.g. <a 
href=\"/site/apidocs/org/apache/juneau/rest/client/classic/RestClient.html#post(java.lang.Object)\"
 target=\"_blank\">post(uri,body)</a>), or can be specified via the following 
methods:\n\n<tree>\n<node-0><java-class><a 
href=\"/site/apidocs/org/apache/juneau/rest/client/classic/RestRequest.html\" 
target=\"_blank\">RestRequest</a></java-class></node-0>\n<node-1><java-method><a
 href=\"/site/ap [...]
@@ -457,7 +458,7 @@
 {"description": ":::warning Beta API\nThis module is part of the 
[next-generation REST client](/docs/topics/NextGenRestClient). It is\n**beta**: 
source- and binary-incompatible changes may appear before a stable 
release.\n:::\n\n## Maven Dependencies\n\n```xml\n<!-- Juneau transport adapter 
-->\n<dependency>\n    <groupId>org.apache.juneau</groupId>\n    
<artifactId>juneau-rest-client-apache-httpclient-50</artifactId>\n    
<version>${juneau.version}</version>\n</dependency>\n\n<!-- Apach [...]
 {"description": ":::warning Beta API\nThis module is part of the 
[next-generation REST client](/docs/topics/NextGenRestClient). It is\n**beta**: 
source- and binary-incompatible changes may appear before a stable 
release.\n:::\n\n## Maven Dependencies\n\n```xml\n<!-- Juneau transport adapter 
-->\n<dependency>\n    <groupId>org.apache.juneau</groupId>\n    
<artifactId>juneau-rest-client-okhttp</artifactId>\n    
<version>${juneau.version}</version>\n</dependency>\n\n<!-- OkHttp 5 (transitiv 
[...]
 {"description": ":::warning Beta API\nThis module is part of the 
[next-generation REST client](/docs/topics/NextGenRestClient). It is\n**beta**: 
source- and binary-incompatible changes may appear before a stable 
release.\n:::\n\n## Maven Dependencies\n\n```xml\n<!-- Juneau transport adapter 
-->\n<dependency>\n    <groupId>org.apache.juneau</groupId>\n    
<artifactId>juneau-rest-client-jetty</artifactId>\n    
<version>${juneau.version}</version>\n</dependency>\n\n<!-- Jetty 12 HTTP 
Client [...]
-{"description": "The `Marshaller` class exposes streaming methods that let you 
consume a REST response as a\nlazy cursor instead of materializing the full 
response body into a single POJO.  This is the\nclient-side complement of the 
server-side\n<a href=\"/docs/topics/RestStreamingIntegration\">REST Streaming 
Integration</a> page.\n\n:::warning Beta API\nThese methods are part of the 
next-generation REST client (`org.apache.juneau.rest.client.*`).\nThe API is 
not yet frozen; source- and  [...]
+{"description": "The `Marshaller` class exposes streaming methods that let you 
consume a REST response as a\nlazy cursor instead of materializing the full 
response body into a single POJO.  This is the\nclient-side complement of the 
server-side\n<a href=\"/docs/topics/RestStreamingIntegration\">REST Streaming 
Integration</a> page.\n\n:::warning Beta API\nThese methods are part of the 
next-generation REST client (`org.apache.juneau.rest.client.*`).\nThe API is 
not yet frozen; source- and  [...]
 {"description": "`RestClient` supports multi-format content negotiation: it 
automatically sets `Accept` and\n`Content-Type` headers based on its configured 
serializer/parser registry, and selects the\nright parser for each response 
based on the server's `Content-Type` reply.\n\n:::warning Beta API\nThe 
`RestClient` described here is part of the next-generation stack 
(`org.apache.juneau.rest.client.*`).\nThe API is not yet frozen.\n:::\n\n> See 
<a href=\"/docs/topics/SerializerSetsParserS [...]
 {"description": "<DependencyInfo artifact=\"juneau-rest-mock\" 
bundle=\"org.apache.juneau.rest.mock\" />\n\n## Contents/Features\n\nThe 
`juneau-rest-mock` module contains convenience APIs for performing serverless 
unit testing of your REST APIs.\nEach of the APIs provides the ability to fully 
test your server and client REST interfaces without the need for a\nrunning 
servlet container.\n\nTests run entirely in-process.\nThe mock client performs 
full serialization and parsing of the HTTP  [...]
 {"description": "The <a 
href=\"/site/apidocs/org/apache/juneau/rest/mock/classic/MockRestClient.html\" 
target=\"_blank\">MockRestClient</a> class is used for performing\nserverless 
unit testing of <a 
href=\"/site/apidocs/org/apache/juneau/rest/server/Rest.html\" 
target=\"_blank\">@Rest</a>-annotated and <a 
href=\"/site/apidocs/org/apache/juneau/http/remote/Remote.html\" 
target=\"_blank\">@Remote</a>-annotated classes.\n\n:::info Two flavors of 
`MockRestClient`\n- `org.apache.juneau.rest. [...]
@@ -486,9 +487,9 @@
 {"description": "<DependencyInfo artifact=\"juneau-microservice-tomcat\" 
bundle=\"org.apache.juneau.microservice.tomcat\" />\n\n### 
Contents/Features\n\n`juneau-microservice-tomcat` is a Tomcat-embedded 
microservice launcher that mirrors the developer experience 
of\n[juneau-microservice-jetty](/docs/topics/JuneauMicroserviceJetty) but runs 
Juneau REST resources inside an\nembedded Apache Tomcat servlet container 
instead of Jetty. It is part of the [juneau-microservice](/docs/topics/Junea 
[...]
 {"description": "The `juneau-sc` group provides a **Git-backed configuration 
server/client pair** that exposes\n[juneau-config](/docs/topics/JuneauConfig) 
files stored in a remote Git repository over REST, enabling\ncentralised 
configuration management across a fleet of microservices.\n\n| Module | Role 
|\n|--------|------|\n| [juneau-sc-server](/docs/topics/ScServerOverview) | A 
standalone Juneau/Jetty microservice that clones a remote Git repo and serves 
`.cfg` files as JSON over a RES [...]
 {"description": "<DependencyInfo artifact=\"juneau-sc-server\" />\n\n### 
Contents/Features\n\n`juneau-sc-server` is the server component of the 
[juneau-sc](/docs/topics/JuneauSc) configuration\nserver. It is a **standalone 
Juneau microservice** built on `juneau-microservice-jetty` that:\n\n- Clones or 
pulls a remote Git repository containing `.cfg` files.\n- Exposes those files 
over a REST API at `GET /configs/{project}/{branch}`.\n- Returns a JSON map 
containing up to two configuration  [...]
-{"description": "<DependencyInfo artifact=\"juneau-sc-client\" 
/>\n\n:::note\n**Preview module** \u2014 `juneau-sc-client` is declared as a 
Maven module in the `juneau-sc` parent POM but\ncontains no Java source yet. 
The dependency can be declared, but no client API classes are available.\nThis 
page documents the intended design and a manual workaround using 
`juneau-rest-client`.\n:::\n\n## Intended Purpose\n\n`juneau-sc-client` will 
provide a high-level Java API for consuming the\n[june [...]
+{"description": "<DependencyInfo artifact=\"juneau-sc-client\" 
/>\n\n:::note\n**Preview module** \u2014 `juneau-sc-client` is declared as a 
Maven module in the `juneau-sc` parent POM but\ncontains no Java source yet. 
The dependency can be declared, but no client API classes are available.\nThis 
page documents the intended design and a manual workaround using 
`juneau-rest-client`.\n:::\n\n## Intended Purpose\n\n`juneau-sc-client` will 
provide a high-level Java API for consuming the\n[june [...]
 {"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": "The 
[juneau-examples-core](https://github.com/apache/juneau/tree/master/juneau-examples/juneau-examples-core)
 module is a collection of small, standalone `main()` programs that demonstrate 
Apache Juneau's core marshalling APIs \u2014 serializing Plain Old Java Objects 
(POJOs) to a format and parsing them back \u2014 plus a few extension points (a 
custom serializer/parser and a custom config store). Each example is 
self-contained: run it directly and read the inline comme [...]
+{"description": "The 
[juneau-examples-core](https://github.com/apache/juneau/tree/master/juneau-examples/juneau-examples-core)
 module is a collection of small, standalone `main()` programs that demonstrate 
Apache Juneau's core marshalling APIs \u2014 serializing Plain Old Java Objects 
(POJOs) to a format and parsing them back \u2014 plus a few extension points (a 
custom serializer/parser and a custom config store). Each example is 
self-contained: run it directly and read the inline comme [...]
 {"description": "Apache Juneau ships two packaging aids that make it easy to 
depend on a coherent, version-aligned slice\nof the framework without 
hand-maintaining a long list of `<version>` tags:\n\n- A **Bill of Materials 
(BOM)** \u2014 `org.apache.juneau:juneau-bom` \u2014 for version alignment.\n- 
A small set of curated **dependency bundles** \u2014 one per deployment shape 
\u2014 that transitively pull a\n  coherent module set.\n\nBoth are 
deliberately **dependency-only** aids. They [...]
 {"description": "This page covers two packaging concerns for Juneau 
applications: **Docker image layering** (a concrete recommendation you can 
apply today) and **GraalVM native-image** support (a feasibility assessment 
with a forward plan).\n\n## Docker image layering\n\nJuneau itself ships 
**libraries**, not runnable applications, so there is no Juneau-side fat-jar to 
layer. Layering happens in *your* deployable application image. Two practical 
levers:\n\n- **Spring Boot apps** \u2014 ` [...]
 {"description": "Juneau provides **shaded (uber) JAR artifacts** that bundle 
multiple Juneau modules into single JAR files. These artifacts simplify 
dependency management and are especially useful for build systems like Bazel 
that require explicit dependency declarations.\n\n## What Are Shaded 
Artifacts?\n\nShaded artifacts use the [Maven Shade 
Plugin](https://maven.apache.org/plugins/maven-shade-plugin/) to:\n- Bundle 
multiple Juneau modules into a single JAR\n- Merge service provider f [...]
diff --git a/static/ai/manifest.json b/static/ai/manifest.json
index ed99400a68..8a2090bd16 100644
--- a/static/ai/manifest.json
+++ b/static/ai/manifest.json
@@ -1,10 +1,10 @@
 {
-  "generated_at": "content-hash:8e8a079701b2",
-  "record_count": 507,
+  "generated_at": "content-hash:720bbcb9cdf1",
+  "record_count": 508,
   "schema_version": "1.0.0",
   "source_commit": {
-    "juneau": "9969df0d7a74449a7e51eaa08c2c718874144ce0",
-    "juneau_docs": "d04f52c9b0a4be6e705df172b858dd0a4a236ad8"
+    "juneau": "32713af68342eab55f3a6ddeba7ee7b7bf32804a",
+    "juneau_docs": "8f6d0f79993d83a636d842b81ed00cde67995ecf"
   },
   "version": "10.0.0"
 }
diff --git a/static/ai/taxonomy.json b/static/ai/taxonomy.json
index 175caf6e5c..43e0485fd0 100644
--- a/static/ai/taxonomy.json
+++ b/static/ai/taxonomy.json
@@ -63,6 +63,7 @@
     "60": 1,
     "61": 1,
     "62": 1,
+    "63": 1,
     "JuneauExamples": 1,
     "JuneauMicroserviceTomcat": 1,
     "JuneauPetstore": 1,
@@ -77,6 +78,6 @@
   "source_types": {
     "api-metadata": 16,
     "release-note": 85,
-    "topic": 406
+    "topic": 407
   }
 }

Reply via email to