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 3fd2c50d6e Restructure top-level docs IA (Option C2) + marshall
Section 03 cleanup
3fd2c50d6e is described below
commit 3fd2c50d6efaf894814e9571fe44e13b3995e488
Author: James Bognar <[email protected]>
AuthorDate: Sat Jul 4 10:33:41 2026 -0400
Restructure top-level docs IA (Option C2) + marshall Section 03 cleanup
Reorganize the top-level information architecture into 6 grouping
categories, turn Section 8 into the REST category landing page, and
renumber sections 19-24 accordingly. Merge the standalone Bundles page
into Dependency Management, and regenerate the AI artifacts
(juneau-knowledge.jsonl, manifest.json, taxonomy.json) plus sidebar and
related page edits to match.
Co-authored-by: Cursor <[email protected]>
---
.../{08.JuneauRest.md => 08.00.JuneauRest.md} | 0
...0.JuneauPetstore.md => 19.00.JuneauPetstore.md} | 2 +-
pages/topics/20.00.DependencyManagement.md | 107 -------
...0.JuneauExamples.md => 20.00.JuneauExamples.md} | 2 +-
...00.Bundles.md => 21.00.DependencyManagement.md} | 109 ++++++-
...dJars.md => 21.01.NativeImageAndLayeredJars.md} | 0
...24.00.JuneauShaded.md => 23.00.JuneauShaded.md} | 2 +-
...neauShadedCore.md => 23.01.JuneauShadedCore.md} | 0
...stClient.md => 23.02.JuneauShadedRestClient.md} | 0
...stServer.md => 23.03.JuneauShadedRestServer.md} | 0
...d => 23.04.JuneauShadedRestServerSpringboot.md} | 0
...JuneauShadedAll.md => 23.05.JuneauShadedAll.md} | 0
...StarterProjects.md => 24.00.StarterProjects.md} | 2 +-
sidebars.ts | 325 +++++++++++----------
static/ai/juneau-knowledge.jsonl | 25 +-
static/ai/manifest.json | 6 +-
static/ai/taxonomy.json | 3 +-
17 files changed, 292 insertions(+), 291 deletions(-)
diff --git a/pages/topics/08.JuneauRest.md b/pages/topics/08.00.JuneauRest.md
similarity index 100%
rename from pages/topics/08.JuneauRest.md
rename to pages/topics/08.00.JuneauRest.md
diff --git a/pages/topics/22.00.JuneauPetstore.md
b/pages/topics/19.00.JuneauPetstore.md
similarity index 99%
rename from pages/topics/22.00.JuneauPetstore.md
rename to pages/topics/19.00.JuneauPetstore.md
index a36173842f..6cebac8dc7 100644
--- a/pages/topics/22.00.JuneauPetstore.md
+++ b/pages/topics/19.00.JuneauPetstore.md
@@ -1,5 +1,5 @@
---
-id: 22.juneau-petstore
+id: 19.juneau-petstore
title: "juneau-petstore"
slug: JuneauPetstore
---
diff --git a/pages/topics/20.00.DependencyManagement.md
b/pages/topics/20.00.DependencyManagement.md
deleted file mode 100644
index f2a0e446e4..0000000000
--- a/pages/topics/20.00.DependencyManagement.md
+++ /dev/null
@@ -1,107 +0,0 @@
----
-id: 20.DependencyManagement
-title: "Dependency Management (BOM & Bundles)"
-slug: DependencyManagement
----
-
-Apache Juneau ships two packaging aids that make it easy to depend on a
coherent, version-aligned slice
-of the framework without hand-maintaining a long list of `<version>` tags:
-
-- A **Bill of Materials (BOM)** — `org.apache.juneau:juneau-bom` — for version
alignment.
-- A small set of curated **dependency bundles** — one per deployment shape —
that transitively pull a
- coherent module set.
-
-Both are deliberately **dependency-only** aids. They register nothing and
discover nothing at runtime
-(see [Explicit over magic](#explicit-over-magic-no-auto-configuration) below).
-
-## The BOM
-
-Import `juneau-bom` (scope `import`, type `pom`) in your
`<dependencyManagement>` and then drop the
-explicit versions from every Juneau dependency — the BOM supplies them:
-
-```xml
-<dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.apache.juneau</groupId>
- <artifactId>juneau-bom</artifactId>
- <version>${juneau.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
-</dependencyManagement>
-
-<dependencies>
- <!-- No <version> needed - the BOM aligns it. -->
- <dependency>
- <groupId>org.apache.juneau</groupId>
- <artifactId>juneau-marshall</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.juneau</groupId>
- <artifactId>juneau-rest-server</artifactId>
- </dependency>
-</dependencies>
-```
-
-The BOM enumerates the **consumer-facing** Juneau modules (juneau-core
marshalling/config, juneau-rest,
-juneau-microservice, juneau-bean, juneau-sc). It excludes
internal/test/aggregate artifacts
-(`juneau-test-utils`, `juneau-shaded/*`, `juneau-examples`, `juneau-petstore`,
`juneau-distrib`).
-
-Beyond Juneau's own modules, the BOM also pins the small set of
starter-relevant third-party versions the
-bundles need to stay coherent — `micrometer-core`, `opentelemetry-api`,
`jakarta.servlet-api`, and
-`jakarta.validation-api`. It is **not** a whole-world third-party BOM (unlike
Spring Boot's), so it won't
-collide with a third-party BOM you import yourself.
-
-## The bundles
-
-Each bundle is a `pom`-packaged aggregator for one deployment shape. Depend on
a single bundle and you
-transitively pull a coherent module set plus the REST client:
-
-| Bundle | Deployment shape | Pulls (transitively) |
-| --- | --- | --- |
-| `juneau-microservice-jetty-bundle` | Embedded-Jetty microservice |
`juneau-microservice-jetty` → `juneau-microservice` + `juneau-rest-server`,
plus `juneau-rest-client` |
-| `juneau-microservice-tomcat-bundle` | Embedded-Tomcat microservice |
`juneau-microservice-tomcat` → `juneau-microservice` + `juneau-rest-server`,
plus `juneau-rest-client` |
-| `juneau-springboot-bundle` | Spring Boot bridge |
`juneau-rest-server-springboot` (brings `juneau-rest-server` +
`spring-boot-starter-web`), plus `juneau-rest-client` |
-
-```xml
-<dependency>
- <groupId>org.apache.juneau</groupId>
- <artifactId>juneau-microservice-jetty-bundle</artifactId>
- <version>${juneau.version}</version>
- <type>pom</type>
-</dependency>
-```
-
-The bundles internally import `juneau-bom`, so the modules they pull are
already version-aligned.
-
-> **Bundle vs. starter.** These `*-bundle` POMs are *dependency aggregators* —
add one dependency, get a
-> coherent module set. They are not to be confused with the external
clone-and-go
-> [starter project repos](/docs/topics/StarterProjects)
(`juneau-microservice-*-starter`), which are full
-> runnable project templates.
-
-## Explicit over magic (no auto-configuration)
-
-A bundle gives you the *classpath* for a deployment shape. It does **not**
wire anything up for you. Juneau
-keeps configuration registration **explicit** — you register your
configuration classes yourself through
-`Microservice.Builder.configurations(Class<?>...)`. There is no
`ServiceLoader` / `META-INF/services`
-scan and no `@ConditionalOnClass`-style classpath auto-discovery that decides
what to activate based on
-what happens to be on the classpath.
-
-This is a deliberate design choice, not a missing feature. In the maintainer's
words:
-
-> *"No, we want an explicit classpath-driven solution. I actually see
auto-configuration as a weakness in
-> Spring Boot that leads to applications with long startup times and
impossible-to-understand
-> architectures. We should make this distinction clear in our docs."*
-
-The two costs called out there are exactly what the explicit model avoids:
-
-- **Startup time.** No classpath scanning for conditional configuration to
evaluate at boot. What you
- register is what runs.
-- **Comprehensibility.** The set of active configurations is the literal list
you passed to
- `configurations(...)` — readable in one place, with no implicit behavior
toggled on by a transitive
- dependency you didn't realize was present.
-
-So the division of labor is clean: the **BOM** aligns versions, the
**bundles** assemble a coherent
-classpath, and **you** stay in explicit control of what gets wired up.
diff --git a/pages/topics/23.00.JuneauExamples.md
b/pages/topics/20.00.JuneauExamples.md
similarity index 99%
rename from pages/topics/23.00.JuneauExamples.md
rename to pages/topics/20.00.JuneauExamples.md
index ef89057093..3f3931e272 100644
--- a/pages/topics/23.00.JuneauExamples.md
+++ b/pages/topics/20.00.JuneauExamples.md
@@ -1,5 +1,5 @@
---
-id: 23.juneau-examples
+id: 20.juneau-examples
title: "juneau-examples-core"
slug: JuneauExamples
---
diff --git a/pages/topics/19.00.Bundles.md
b/pages/topics/21.00.DependencyManagement.md
similarity index 58%
rename from pages/topics/19.00.Bundles.md
rename to pages/topics/21.00.DependencyManagement.md
index 5f7e995521..e9a4e4728a 100644
--- a/pages/topics/19.00.Bundles.md
+++ b/pages/topics/21.00.DependencyManagement.md
@@ -1,17 +1,77 @@
---
-id: 19.Bundles
-title: "Dependency Bundles"
-slug: Bundles
+id: 21.DependencyManagement
+title: "Dependency Management"
+slug: DependencyManagement
---
-Juneau publishes **bundle** artifacts — `<packaging>pom</packaging>` Maven
coordinates that pull a curated,
-version-aligned set of Juneau modules (and their transitive dependencies) in a
single declaration.
+Apache Juneau ships two packaging aids that make it easy to depend on a
coherent, version-aligned slice
+of the framework without hand-maintaining a long list of `<version>` tags:
-Bundles are **dependency aggregators only**: they contain no code, register no
configurations, and perform no
-classpath auto-discovery. Every bean, server, and resource still needs to be
wired explicitly, exactly as if
-you had listed the individual modules yourself.
+- A **Bill of Materials (BOM)** — `org.apache.juneau:juneau-bom` — for version
alignment.
+- A small set of curated **dependency bundles** — one per deployment shape —
that transitively pull a
+ coherent module set.
-## Bundles vs shaded JARs vs individual modules
+Both are deliberately **dependency-only** aids. They register nothing and
discover nothing at runtime
+(see [Explicit over magic](#explicit-over-magic-no-auto-configuration) below).
+
+## The BOM
+
+Import `juneau-bom` (scope `import`, type `pom`) in your
`<dependencyManagement>` and then drop the
+explicit versions from every Juneau dependency — the BOM supplies them:
+
+```xml
+<dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.juneau</groupId>
+ <artifactId>juneau-bom</artifactId>
+ <version>${juneau.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+</dependencyManagement>
+
+<dependencies>
+ <!-- No <version> needed - the BOM aligns it. -->
+ <dependency>
+ <groupId>org.apache.juneau</groupId>
+ <artifactId>juneau-marshall</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.juneau</groupId>
+ <artifactId>juneau-rest-server</artifactId>
+ </dependency>
+</dependencies>
+```
+
+The BOM enumerates the **consumer-facing** Juneau modules (juneau-core
marshalling/config, juneau-rest,
+juneau-microservice, juneau-bean, juneau-sc). It excludes
internal/test/aggregate artifacts
+(`juneau-test-utils`, `juneau-shaded/*`, `juneau-examples`, `juneau-petstore`,
`juneau-distrib`).
+
+Beyond Juneau's own modules, the BOM also pins the small set of
starter-relevant third-party versions the
+bundles need to stay coherent — `micrometer-core`, `opentelemetry-api`,
`jakarta.servlet-api`, and
+`jakarta.validation-api`. It is **not** a whole-world third-party BOM (unlike
Spring Boot's), so it won't
+collide with a third-party BOM you import yourself.
+
+## The bundles
+
+Juneau also publishes **bundle** artifacts — `<packaging>pom</packaging>`
Maven coordinates that pull a
+curated, version-aligned set of Juneau modules (and their transitive
dependencies) in a single declaration.
+Each bundle targets one deployment shape: depend on a single bundle and you
transitively pull a coherent
+module set plus the REST client.
+
+Bundles are **dependency aggregators only**: they contain no code, register no
configurations, and perform
+no classpath auto-discovery. Every bean, server, and resource still needs to
be wired explicitly, exactly as
+if you had listed the individual modules yourself. Because each bundle
internally imports `juneau-bom`, the
+modules it pulls are already version-aligned.
+
+> **Bundle vs. starter.** These `*-bundle` POMs are *dependency aggregators* —
add one dependency, get a
+> coherent module set. They are not to be confused with the external
clone-and-go
+> [starter project repos](/docs/topics/StarterProjects)
(`juneau-microservice-*-starter`), which are full
+> runnable project templates.
+
+### Bundles vs shaded JARs vs individual modules
| Approach | What it is | Best for |
|---|---|---|
@@ -19,7 +79,7 @@ you had listed the individual modules yourself.
| **Shaded JAR** | A single fat JAR with Juneau modules merged in | Bazel
builds or environments that need a single-artifact classpath; see [Juneau
Shaded Artifacts](/docs/topics/JuneauShaded) |
| **Individual modules** | Each Juneau JAR declared explicitly | Libraries and
frameworks that want fine-grained transitive dependency control |
-## Available bundles
+### Available bundles
| Artifact | Use when |
|---|---|
@@ -148,7 +208,7 @@ See [Observability — Micrometer +
OpenTelemetry](/docs/topics/RestServerObserv
configuration guide including per-operation controls, W3C trace-context
propagation, and custom
`MetricsRecorder` / `TracerHook` implementations.
-## When to use bundles vs building your own assembly
+## When to use a bundle vs building your own assembly
### Use a bundle when:
@@ -167,8 +227,33 @@ configuration guide including per-operation controls, W3C
trace-context propagat
- **Minimizing JAR footprint** — a single microservice module is smaller than
the full microservice bundle
when you know exactly which Juneau features you use.
+## Explicit over magic (no auto-configuration)
+
+A bundle gives you the *classpath* for a deployment shape. It does **not**
wire anything up for you. Juneau
+keeps configuration registration **explicit** — you register your
configuration classes yourself through
+`Microservice.Builder.configurations(Class<?>...)`. There is no
`ServiceLoader` / `META-INF/services`
+scan and no `@ConditionalOnClass`-style classpath auto-discovery that decides
what to activate based on
+what happens to be on the classpath.
+
+This is a deliberate design choice, not a missing feature. In the maintainer's
words:
+
+> *"No, we want an explicit classpath-driven solution. I actually see
auto-configuration as a weakness in
+> Spring Boot that leads to applications with long startup times and
impossible-to-understand
+> architectures. We should make this distinction clear in our docs."*
+
+The two costs called out there are exactly what the explicit model avoids:
+
+- **Startup time.** No classpath scanning for conditional configuration to
evaluate at boot. What you
+ register is what runs.
+- **Comprehensibility.** The set of active configurations is the literal list
you passed to
+ `configurations(...)` — readable in one place, with no implicit behavior
toggled on by a transitive
+ dependency you didn't realize was present.
+
+So the division of labor is clean: the **BOM** aligns versions, the
**bundles** assemble a coherent
+classpath, and **you** stay in explicit control of what gets wired up.
+
## See also
-- [Dependency Management](/docs/topics/DependencyManagement) — the Juneau BOM
for pinning individual module versions
- [Juneau Shaded Artifacts](/docs/topics/JuneauShaded) — fat JARs as an
alternative to bundles (Bazel-friendly)
+- [Starter projects](/docs/topics/StarterProjects) — clone-and-go runnable
project templates
- [Observability — Micrometer +
OpenTelemetry](/docs/topics/RestServerObservability) — full guide for
`juneau-observability-otlp-bundle`
diff --git a/pages/topics/20.01.NativeImageAndLayeredJars.md
b/pages/topics/21.01.NativeImageAndLayeredJars.md
similarity index 100%
rename from pages/topics/20.01.NativeImageAndLayeredJars.md
rename to pages/topics/21.01.NativeImageAndLayeredJars.md
diff --git a/pages/topics/24.00.JuneauShaded.md
b/pages/topics/23.00.JuneauShaded.md
similarity index 99%
rename from pages/topics/24.00.JuneauShaded.md
rename to pages/topics/23.00.JuneauShaded.md
index cdd9bcc5aa..c1594bdb67 100644
--- a/pages/topics/24.00.JuneauShaded.md
+++ b/pages/topics/23.00.JuneauShaded.md
@@ -1,5 +1,5 @@
---
-id: 24.juneau-shaded
+id: 23.juneau-shaded
title: "Juneau Shaded Artifacts"
slug: JuneauShaded
---
diff --git a/pages/topics/24.01.JuneauShadedCore.md
b/pages/topics/23.01.JuneauShadedCore.md
similarity index 100%
rename from pages/topics/24.01.JuneauShadedCore.md
rename to pages/topics/23.01.JuneauShadedCore.md
diff --git a/pages/topics/24.02.JuneauShadedRestClient.md
b/pages/topics/23.02.JuneauShadedRestClient.md
similarity index 100%
rename from pages/topics/24.02.JuneauShadedRestClient.md
rename to pages/topics/23.02.JuneauShadedRestClient.md
diff --git a/pages/topics/24.03.JuneauShadedRestServer.md
b/pages/topics/23.03.JuneauShadedRestServer.md
similarity index 100%
rename from pages/topics/24.03.JuneauShadedRestServer.md
rename to pages/topics/23.03.JuneauShadedRestServer.md
diff --git a/pages/topics/24.04.JuneauShadedRestServerSpringboot.md
b/pages/topics/23.04.JuneauShadedRestServerSpringboot.md
similarity index 100%
rename from pages/topics/24.04.JuneauShadedRestServerSpringboot.md
rename to pages/topics/23.04.JuneauShadedRestServerSpringboot.md
diff --git a/pages/topics/24.05.JuneauShadedAll.md
b/pages/topics/23.05.JuneauShadedAll.md
similarity index 100%
rename from pages/topics/24.05.JuneauShadedAll.md
rename to pages/topics/23.05.JuneauShadedAll.md
diff --git a/pages/topics/21.00.StarterProjects.md
b/pages/topics/24.00.StarterProjects.md
similarity index 98%
rename from pages/topics/21.00.StarterProjects.md
rename to pages/topics/24.00.StarterProjects.md
index 94d968ae39..58894b8f8b 100644
--- a/pages/topics/21.00.StarterProjects.md
+++ b/pages/topics/24.00.StarterProjects.md
@@ -1,5 +1,5 @@
---
-id: 21.StarterProjects
+id: 24.StarterProjects
title: "Starter Projects"
slug: StarterProjects
---
diff --git a/sidebars.ts b/sidebars.ts
index 9b07389b58..c33b0ec2c7 100644
--- a/sidebars.ts
+++ b/sidebars.ts
@@ -53,6 +53,11 @@ const sidebars: SidebarsConfig = {
},
],
},
+ {
+ type: 'category',
+ label: 'Core & Data',
+ collapsed: false,
+ items: [
{
type: 'category',
label: '2. juneau-commons',
@@ -1198,11 +1203,17 @@ const sidebars: SidebarsConfig = {
id: 'topics/07.juneau-test',
},
},
- {
- type: 'doc',
- id: 'topics/08.juneau-rest',
- label: '8. juneau-rest',
+ ],
},
+ {
+ type: 'category',
+ label: 'REST',
+ collapsed: false,
+ link: {
+ type: 'doc',
+ id: 'topics/08.juneau-rest',
+ },
+ items: [
{
type: 'category',
label: '9. juneau-rest-common',
@@ -1992,7 +2003,14 @@ const sidebars: SidebarsConfig = {
type: 'doc',
id:
'topics/14.juneau-rest-mock',
},
+ },
+ ],
},
+ {
+ type: 'category',
+ label: 'Microservices',
+ collapsed: false,
+ items: [
{
type: 'category',
label: '15. juneau-microservice',
@@ -2157,184 +2175,191 @@ const sidebars: SidebarsConfig = {
id: 'topics/18.juneau-sc',
},
},
- {
- type: 'category',
- label: '19. Bundles',
- collapsed: true,
- items: [
- {
- type: 'doc',
- id: 'topics/19.Bundles',
- label: '19. Juneau
Bundle Artifacts',
- },
],
- link: {
- type: 'doc',
- id: 'topics/19.Bundles',
- },
- },
- {
- type: 'category',
- label: '20. Dependency Management',
- collapsed: true,
- items: [
- {
- type: 'doc',
- id:
'topics/20.01.NativeImageAndLayeredJars',
- label: '20.1. GraalVM
Native Image & Docker Layering',
- },
- ],
- link: {
- type: 'doc',
- id:
'topics/20.DependencyManagement',
- },
- },
- {
- type: 'category',
- label: '21. Starter Projects',
- collapsed: true,
- items: [
- {
- type: 'doc',
- id:
'topics/21.StarterProjects',
- label: '21. Starter
Projects',
- },
- ],
- link: {
- type: 'doc',
- id: 'topics/21.StarterProjects',
- },
},
{
type: 'category',
- label: '22. juneau-petstore',
- collapsed: true,
+ label: 'Examples & Showcases',
+ collapsed: false,
items: [
{
- type: 'doc',
- id:
'topics/22.juneau-petstore',
- label: '22.
juneau-petstore Overview',
+ type: 'category',
+ label: '19.
juneau-petstore',
+ collapsed: true,
+ items: [
+ {
+ type:
'doc',
+ id:
'topics/19.juneau-petstore',
+ label:
'19. juneau-petstore Overview',
+ },
+ ],
+ link: {
+ type: 'doc',
+ id:
'topics/19.juneau-petstore',
+ },
},
- ],
- link: {
- type: 'doc',
- id: 'topics/22.juneau-petstore',
- },
- },
- {
- type: 'category',
- label: '23. juneau-examples',
- collapsed: true,
- items: [
{
- type: 'doc',
- id:
'topics/23.juneau-examples',
- label: '23.
juneau-examples-core',
+ type: 'category',
+ label: '20.
juneau-examples',
+ collapsed: true,
+ items: [
+ {
+ type:
'doc',
+ id:
'topics/20.juneau-examples',
+ label:
'20. juneau-examples-core',
+ },
+ ],
+ link: {
+ type: 'doc',
+ id:
'topics/20.juneau-examples',
+ },
},
],
- link: {
- type: 'doc',
- id: 'topics/23.juneau-examples',
- },
},
{
type: 'category',
- label: '24. juneau-shaded',
- collapsed: true,
+ label: 'Packaging & Deployment',
+ collapsed: false,
items: [
{
- type: 'doc',
- id:
'topics/24.01.JuneauShadedCore',
- label: '24.1.
juneau-shaded-core',
- },
- {
- type: 'doc',
- id:
'topics/24.02.JuneauShadedRestClient',
- label: '24.2.
juneau-shaded-rest-client',
- },
- {
- type: 'doc',
- id:
'topics/24.03.JuneauShadedRestServer',
- label: '24.3.
juneau-shaded-rest-server',
+ type: 'category',
+ label: '21. Dependency
Management',
+ collapsed: true,
+ items: [
+ {
+ type:
'doc',
+ id:
'topics/21.01.NativeImageAndLayeredJars',
+ label:
'21.1. GraalVM Native Image & Docker Layering',
+ },
+ ],
+ link: {
+ type: 'doc',
+ id:
'topics/21.DependencyManagement',
+ },
},
{
- type: 'doc',
- id:
'topics/24.04.JuneauShadedRestServerSpringboot',
- label: '24.4.
juneau-shaded-rest-server-springboot',
+ type: 'category',
+ label: '23.
juneau-shaded',
+ collapsed: true,
+ items: [
+ {
+ type:
'doc',
+ id:
'topics/23.01.JuneauShadedCore',
+ label:
'23.1. juneau-shaded-core',
+ },
+ {
+ type:
'doc',
+ id:
'topics/23.02.JuneauShadedRestClient',
+ label:
'23.2. juneau-shaded-rest-client',
+ },
+ {
+ type:
'doc',
+ id:
'topics/23.03.JuneauShadedRestServer',
+ label:
'23.3. juneau-shaded-rest-server',
+ },
+ {
+ type:
'doc',
+ id:
'topics/23.04.JuneauShadedRestServerSpringboot',
+ label:
'23.4. juneau-shaded-rest-server-springboot',
+ },
+ {
+ type:
'doc',
+ id:
'topics/23.05.JuneauShadedAll',
+ label:
'23.5. juneau-shaded-all',
+ },
+ ],
+ link: {
+ type: 'doc',
+ id:
'topics/23.juneau-shaded',
+ },
},
{
- type: 'doc',
- id:
'topics/24.05.JuneauShadedAll',
- label: '24.5.
juneau-shaded-all',
+ type: 'category',
+ label: '24. Starter
Projects',
+ collapsed: true,
+ items: [
+ {
+ type:
'doc',
+ id:
'topics/24.StarterProjects',
+ label:
'24. Starter Projects',
+ },
+ ],
+ link: {
+ type: 'doc',
+ id:
'topics/24.StarterProjects',
+ },
},
],
- link: {
- type: 'doc',
- id: 'topics/24.juneau-shaded',
- },
},
{
type: 'category',
- label: '25. Security',
- collapsed: true,
+ label: 'Guides & Reference',
+ collapsed: false,
items: [
{
- type: 'doc',
- id:
'topics/25.01.MarshallingSecurity',
- label: '25.1.
Marshalling Security',
- },
- {
- type: 'doc',
- id:
'topics/25.02.SvlSecurity',
- label: '25.2. SVL
Security',
- },
- {
- type: 'doc',
- id:
'topics/25.03.RestSecurity',
- label: '25.3. REST
Security',
- },
- {
- type: 'doc',
- id:
'topics/25.04.ContentSecurityPolicy',
- label: '25.4. Content
Security Policy',
+ type: 'category',
+ label: '25. Security',
+ collapsed: true,
+ items: [
+ {
+ type:
'doc',
+ id:
'topics/25.01.MarshallingSecurity',
+ label:
'25.1. Marshalling Security',
+ },
+ {
+ type:
'doc',
+ id:
'topics/25.02.SvlSecurity',
+ label:
'25.2. SVL Security',
+ },
+ {
+ type:
'doc',
+ id:
'topics/25.03.RestSecurity',
+ label:
'25.3. REST Security',
+ },
+ {
+ type:
'doc',
+ id:
'topics/25.04.ContentSecurityPolicy',
+ label:
'25.4. Content Security Policy',
+ },
+ ],
+ link: {
+ type: 'doc',
+ id:
'topics/25.Security',
+ },
},
- ],
- link: {
- type: 'doc',
- id: 'topics/25.Security',
- },
- },
- {
- type: 'category',
- label: '26. V9.0 Migration Guide',
- collapsed: true,
- items: [
{
- type: 'doc',
- id:
'topics/26.V9MigrationGuide',
- label: '26. v9.0
Migration Guide',
+ type: 'category',
+ label: '26. V9.0
Migration Guide',
+ collapsed: true,
+ items: [
+ {
+ type:
'doc',
+ id:
'topics/26.V9MigrationGuide',
+ label:
'26. v9.0 Migration Guide',
+ },
+ ],
+ link: {
+ type: 'doc',
+ id:
'topics/26.V9MigrationGuide',
+ },
},
- ],
- link: {
- type: 'doc',
- id:
'topics/26.V9MigrationGuide',
- },
- },
- {
- type: 'category',
- label: '27. V10.0 Migration Guide',
- collapsed: true,
- items: [
{
- type: 'doc',
- id:
'topics/27.V10MigrationGuide',
- label: '27. v10.0
Migration Guide',
+ type: 'category',
+ label: '27. V10.0
Migration Guide',
+ collapsed: true,
+ items: [
+ {
+ type:
'doc',
+ id:
'topics/27.V10MigrationGuide',
+ label:
'27. v10.0 Migration Guide',
+ },
+ ],
+ link: {
+ type: 'doc',
+ id:
'topics/27.V10MigrationGuide',
+ },
},
],
- link: {
- type: 'doc',
- id:
'topics/27.V10MigrationGuide',
- },
},
],
},
diff --git a/static/ai/juneau-knowledge.jsonl b/static/ai/juneau-knowledge.jsonl
index 53d3a928de..b4b231795d 100644
--- a/static/ai/juneau-knowledge.jsonl
+++ b/static/ai/juneau-knowledge.jsonl
@@ -308,7 +308,7 @@
{"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/junit5/pac [...]
-{"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": "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.
Used by every `juneau-rest-*` module. | **No.** Zero
`org.apache.httpcomponents:*` on the classpath. |\n|
`juneau-rest-common-classic` [...]
{"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/HttpHeaders.html\"
target=\"_blank\">HttpHeaders</a></java-class> - Utility class for standard
HTTP headers.</node-0>\n<node-0><java-class><a href=\"/site/api [...]
{"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 [...]
@@ -481,18 +481,17 @@
{"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": "Juneau publishes **bundle** artifacts \u2014
`<packaging>pom</packaging>` Maven coordinates that pull a
curated,\nversion-aligned set of Juneau modules (and their transitive
dependencies) in a single declaration.\n\nBundles are **dependency aggregators
only**: they contain no code, register no configurations, and perform
no\nclasspath auto-discovery. Every bean, server, and resource still needs to
be wired explicitly, exactly as if\nyou had listed the individual modules [...]
-{"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": "Apache Juneau provides three minimal, clone-and-go **\"Hello
World\" starter projects** \u2014 one per\ndeployment type. They are
deliberately simpler than the [petstore
showcase](/docs/topics/JuneauPetstore):\nentry-point templates you can build
and run in under five minutes, then graduate from.\n\nEach starter is a
standalone public GitHub repo with its own docs site:\n\n| Starter | Deployment
| Repo | Docs |\n| --- | --- | --- | --- |\n| Jetty | Embedded Jetty, runnab
[...]
-{"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 provides practical examples demonstrating how to use Apache Juneau's
core marshalling capabilities for serialization and deserialization of Plain
Old Java Objects (POJOs).\n\n## Overview\n\nThis module focuses on the
fundamental serialization and deserialization features of Juneau Core, showing
developers how to:\n\n- Convert POJOs to various content types [...]
-{"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 [...]
-{"description": "The `juneau-shaded-core` artifact bundles all core Juneau
modules for general marshalling and configuration work. At 2.0 MB, it's the
smallest shaded artifact and ideal for applications that don't need REST
functionality.\n\n## What's Included\n\nThis artifact includes the following
Juneau modules:\n\n- **juneau-commons** - Core utilities and common classes\n-
**juneau-config** - Configuration file API\n- **juneau-marshall** - Serializers
and parsers (JSON, XML, HTML, Me [...]
-{"description": "The `juneau-shaded-rest-client` artifact bundles all core
Juneau modules plus REST client functionality. At 3.8 MB, it provides
everything needed for building REST client applications.\n\n## What's
Included\n\nThis artifact includes:\n\n- **All modules from
[juneau-shaded-core](/docs/topics/JuneauShadedCore)** (marshalling, config,
testing)\n- **juneau-rest-common** - REST APIs common to client and server\n-
**juneau-rest-client** - Transport-agnostic REST client (no Apa [...]
-{"description": "The `juneau-shaded-rest-server` artifact bundles all core
Juneau modules plus REST server functionality. At 3.8 MB, it provides
everything needed for building REST server applications.\n\n## What's
Included\n\nThis artifact includes:\n\n- **All modules from
[juneau-shaded-core](/docs/topics/JuneauShadedCore)** (marshalling, config,
testing)\n- **juneau-rest-common** - REST APIs common to client and server\n-
**juneau-rest-server** - Full-featured REST servlet API\n- **ju [...]
-{"description": "The `juneau-shaded-rest-server-springboot` artifact bundles
REST server functionality plus Spring Boot integration. At 3.8 MB, it provides
everything needed for building Juneau REST services with Spring Boot.\n\n##
What's Included\n\nThis artifact includes:\n\n- **All modules from
[juneau-shaded-rest-server](/docs/topics/JuneauShadedRestServer)** (core + REST
server)\n- **juneau-rest-server-springboot** - Spring Boot auto-configuration
and integration\n\n## Use Cases\n\n [...]
-{"description": "The `juneau-shaded-all` artifact is the complete Juneau
framework bundled in a single 4.0 MB JAR file. It includes all core modules,
REST client, REST server, Spring Boot integration, bean DTOs, and microservice
modules.\n\n## What's Included\n\nThis artifact includes **everything**:\n\n###
Core Modules\n- **juneau-commons** - Core utilities\n- **juneau-config** -
Configuration file API\n- **juneau-marshall** - All serializers/parsers (JSON,
XML, HTML, MessagePack, etc.) [...]
+{"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 provides practical examples demonstrating how to use Apache Juneau's
core marshalling capabilities for serialization and deserialization of Plain
Old Java Objects (POJOs).\n\n## Overview\n\nThis module focuses on the
fundamental serialization and deserialization features of Juneau Core, showing
developers how to:\n\n- Convert POJOs to various content types [...]
+{"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 [...]
+{"description": "The `juneau-shaded-core` artifact bundles all core Juneau
modules for general marshalling and configuration work. At 2.0 MB, it's the
smallest shaded artifact and ideal for applications that don't need REST
functionality.\n\n## What's Included\n\nThis artifact includes the following
Juneau modules:\n\n- **juneau-commons** - Core utilities and common classes\n-
**juneau-config** - Configuration file API\n- **juneau-marshall** - Serializers
and parsers (JSON, XML, HTML, Me [...]
+{"description": "The `juneau-shaded-rest-client` artifact bundles all core
Juneau modules plus REST client functionality. At 3.8 MB, it provides
everything needed for building REST client applications.\n\n## What's
Included\n\nThis artifact includes:\n\n- **All modules from
[juneau-shaded-core](/docs/topics/JuneauShadedCore)** (marshalling, config,
testing)\n- **juneau-rest-common** - REST APIs common to client and server\n-
**juneau-rest-client** - Transport-agnostic REST client (no Apa [...]
+{"description": "The `juneau-shaded-rest-server` artifact bundles all core
Juneau modules plus REST server functionality. At 3.8 MB, it provides
everything needed for building REST server applications.\n\n## What's
Included\n\nThis artifact includes:\n\n- **All modules from
[juneau-shaded-core](/docs/topics/JuneauShadedCore)** (marshalling, config,
testing)\n- **juneau-rest-common** - REST APIs common to client and server\n-
**juneau-rest-server** - Full-featured REST servlet API\n- **ju [...]
+{"description": "The `juneau-shaded-rest-server-springboot` artifact bundles
REST server functionality plus Spring Boot integration. At 3.8 MB, it provides
everything needed for building Juneau REST services with Spring Boot.\n\n##
What's Included\n\nThis artifact includes:\n\n- **All modules from
[juneau-shaded-rest-server](/docs/topics/JuneauShadedRestServer)** (core + REST
server)\n- **juneau-rest-server-springboot** - Spring Boot auto-configuration
and integration\n\n## Use Cases\n\n [...]
+{"description": "The `juneau-shaded-all` artifact is the complete Juneau
framework bundled in a single 4.0 MB JAR file. It includes all core modules,
REST client, REST server, Spring Boot integration, bean DTOs, and microservice
modules.\n\n## What's Included\n\nThis artifact includes **everything**:\n\n###
Core Modules\n- **juneau-commons** - Core utilities\n- **juneau-config** -
Configuration file API\n- **juneau-marshall** - All serializers/parsers (JSON,
XML, HTML, MessagePack, etc.) [...]
+{"description": "Apache Juneau provides three minimal, clone-and-go **\"Hello
World\" starter projects** \u2014 one per\ndeployment type. They are
deliberately simpler than the [petstore
showcase](/docs/topics/JuneauPetstore):\nentry-point templates you can build
and run in under five minutes, then graduate from.\n\nEach starter is a
standalone public GitHub repo with its own docs site:\n\n| Starter | Deployment
| Repo | Docs |\n| --- | --- | --- | --- |\n| Jetty | Embedded Jetty, runnab
[...]
{"description": "Security is always an ongoing concern in any library.\n\nIf
you discover any security vulnerabilities in this code, please refer to the
instructions found here:
[SECURITY](https://github.com/apache/juneau/blob/master/SECURITY.md)", "id":
"topic:8cd5d3cfa3c4", "module": "00", "related_ids": [], "source_path":
"pages/topics/25.00.Security.md", "source_type": "topic", "summary": "Security
is always an ongoing concern in any library.", "tags": ["topic", "00"],
"title": "Secu [...]
{"description": "## Demarshalling vulnerabilities\n\nOne common security
vulnerability is the ability to create arbitrary Java object instances through
crafted user input.\n\nFor example, support for constructing POJOs based on an
input attribute defining a fully-qualified class name
like\n`{class:'com.foo.MyBean',...}`\n\nFortunately, Juneau does not support an
open-ended `class` attribute.\n\nAs a rule, it should not be possible to create
arbitrary POJOs by any of the parsers.\n\nThe d [...]
{"description": "Care must be used when defining new <a
href=\"/site/apidocs/org/apache/juneau/commons/svl/Var.html\"
target=\"_blank\">Vars</a> using the SVL API since mistakes\ncould potentially
expose system properties, environment variables, or even file system
files.\n\nFor recap, the SVL support allows you to embed variables of the form
`$X{key}` inside strings that get resolved to other\nstrings.\n\nThe resolved
strings themselves can also contain variables that also get recursive [...]
diff --git a/static/ai/manifest.json b/static/ai/manifest.json
index 13984707ee..46dc8952bf 100644
--- a/static/ai/manifest.json
+++ b/static/ai/manifest.json
@@ -1,10 +1,10 @@
{
- "generated_at": "content-hash:aaff561ab340",
- "record_count": 502,
+ "generated_at": "content-hash:fa659e518d64",
+ "record_count": 501,
"schema_version": "1.0.0",
"source_commit": {
"juneau": "6bc3e08208a5dacdb5f8ae46a8f989437e8f38a9",
- "juneau_docs": "6a0b45bf254f30d362d2f7642f7672bc8b677a16"
+ "juneau_docs": "d6fc15c74cd5d2333d6b6adbc580d9c8bc9e9c1e"
},
"version": "10.0.0"
}
diff --git a/static/ai/taxonomy.json b/static/ai/taxonomy.json
index e67513bb19..9d625309cd 100644
--- a/static/ai/taxonomy.json
+++ b/static/ai/taxonomy.json
@@ -63,7 +63,6 @@
"60": 1,
"61": 1,
"62": 1,
- "JuneauRest": 1,
"api-metadata": 16,
"release-notes": 85
},
@@ -71,6 +70,6 @@
"source_types": {
"api-metadata": 16,
"release-note": 85,
- "topic": 401
+ "topic": 400
}
}