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 & 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>—</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 & 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 & 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> — `ATTR`,
`ATTRS`, and `ELEMENT` for moving values between attributes and elements.
- <a href="/docs/topics/XmlFormatCollapsed">Collapsed Format</a> —
`COLLAPSED` for flattening arrays and collections into the bean element.
-- <a href="/docs/topics/XmlFormatElements">Element & Mixed Formats</a>
— `ELEMENTS`, `MIXED`, and `MIXED_PWS` for free-form and mixed content.
+- <a href="/docs/topics/XmlFormatElements">Element & Mixed Formats</a>
— `FREEFORM`, `MIXED`, and `MIXED_PWS` for free-form and mixed content.
- <a href="/docs/topics/XmlFormatText">Text Formats</a> — `TEXT`,
`TEXT_PWS`, and `XMLTEXT` for text-node and raw-XML content.
- <a href="/docs/topics/XmlFormatWhitespace">Whitespace Handling</a> —
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 & Mixed Formats</a> for
`ELEMENTS`, `MIXED`, and `MIXED_PWS`.
+- <a href="/docs/topics/XmlFormatElements">Element & 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\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— 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\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\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** — the
\"Log in with Google / Okta / Entra ID / Keycloak\" end-to-end glue. It
orchestrates the interactive browser login dance (authorization redirect →
callback → 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
}
}