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 530b686037 TODO-239: Update petstore demo doc links + 10.0.0 release
note for ported/dropped legacy surface.
530b686037 is described below
commit 530b6860371f4e554ee4caa57fde143cc4159fa8
Author: James Bognar <[email protected]>
AuthorDate: Wed Jul 15 09:08:18 2026 -0400
TODO-239: Update petstore demo doc links + 10.0.0 release note for
ported/dropped legacy surface.
Co-authored-by: Cursor <[email protected]>
---
pages/release-notes/10.0.0.md | 18 ++++++++++++
pages/topics/10.05.Marshalling.md | 2 +-
pages/topics/10.58.UtilityBeans.md | 43 ++++++++---------------------
pages/topics/10.59.HtmlBeans.md | 56 +++++++++++++++++---------------------
4 files changed, 55 insertions(+), 64 deletions(-)
diff --git a/pages/release-notes/10.0.0.md b/pages/release-notes/10.0.0.md
index 352dcb02f4..d97dee2453 100644
--- a/pages/release-notes/10.0.0.md
+++ b/pages/release-notes/10.0.0.md
@@ -252,6 +252,24 @@ Launcher: `python3 scripts/start-petstore-springboot.py`.
The core-hosted surface (CRUD, view demos, React SPA demo, auth-gated subset)
is identical across both deployments by construction — it's shared code, not
parallel copies. The deployment-specific surface (Jetty's microservice console
+ admin resources vs Spring Boot's `@Autowired` injection demo) is
intentionally non-parity and documented as such.
+### Petstore legacy-surface completion
+
+The retired `juneau-examples-rest` family (see Breaking Changes below) carried
six REST-servlet demonstrations that hadn't yet been ported into petstore or
consciously dropped. That gap is now closed — three demos got petstore-flavored
equivalents, and three were consciously dropped:
+
+**Ported to `juneau-petstore-core`, wired into both the Jetty and Spring Boot
deployments:**
+
+- **`PetInfoResource`** (`/petstore-info`) — utility-beans demo:
`BeanDescription`/`Hyperlink`/`SeeOtherRoot` rendered against the petstore's
own `Pet` domain bean.
+- **`PetHtmlResource`** (`/petstore-html`) — HTML5 bean-builder demo:
hand-built HTML5 `Div`/`Table` fragments (a single-pet "card" and an all-pets
table) rendered from live petstore data.
+- **`GET`/`PUT /petstore/pets/{id}/photo`** (added to `PetStoreResource`) —
image upload/serve demo, backed by new petstore-local
`PetPhotoSerializer`/`PetPhotoParser` classes
(`org.apache.juneau.petstore.marshall`) and wired to the previously-unused
`Pet.photo` field.
+
+**Consciously dropped (rationale recorded in `TODO-239`, not ported):**
+
+- **ATOM-feed DTO serialization demo** — generic marshalling showcase with no
petstore-domain tie-in; Atom (de)serialization itself remains exhaustively
covered by `juneau-bean-atom`'s own test suite and docs.
+- **JSON-Schema DTO serialization demo** — same shape as the Atom case;
JSON-Schema generation is already exhaustively covered by
`juneau-bean-jsonschema`'s test suite and docs.
+- **Server-Sent-Events demo** — SSE transport mechanics are already
integration-tested independent of any demo resource; a petstore-flavored SSE
feature (e.g. live status updates) would be net-new feature work, out of scope
for a port-or-drop cleanup.
+
+The plan's remaining stretch scope — a `@Remote` typed-client demo and a
Config API + SVL var-resolver showcase — was split out to a separate follow-on
work item rather than folded in here.
+
### juneau-rest-common / juneau-rest-server
### Content Security Policy (CSP) support
diff --git a/pages/topics/10.05.Marshalling.md
b/pages/topics/10.05.Marshalling.md
index ab5713c708..610405f6d1 100644
--- a/pages/topics/10.05.Marshalling.md
+++ b/pages/topics/10.05.Marshalling.md
@@ -102,5 +102,5 @@ Config annotations are defined for all serializers and
parsers:
:::info See Also
<tree>
-<node-0><java-class><a
href="/site/apidocs/org/apache/juneau/examples/rest/PhotosResource.html"
target="_blank">PhotosResource</a></java-class> - An example of a REST resource
that uses a custom serializer and parser.</node-0>
+<node-0><java-class><a
href="/site/apidocs/org/apache/juneau/petstore/rest/PetStoreResource.html#getPetPhoto(long)"
target="_blank">PetStoreResource.getPetPhoto(long)</a></java-class> /
<java-class><a
href="/site/apidocs/org/apache/juneau/petstore/rest/PetStoreResource.html#putPetPhoto(long,java.awt.image.BufferedImage)"
target="_blank">putPetPhoto(long,BufferedImage)</a></java-class> - A petstore
example of REST endpoints that use a custom serializer and parser (<a
href="/site/apidocs/o [...]
</tree>
\ No newline at end of file
diff --git a/pages/topics/10.58.UtilityBeans.md
b/pages/topics/10.58.UtilityBeans.md
index c944d7c8a0..3501acf1d9 100644
--- a/pages/topics/10.58.UtilityBeans.md
+++ b/pages/topics/10.58.UtilityBeans.md
@@ -6,14 +6,14 @@ slug: UtilityBeans
The <a
href="/site/apidocs/org/apache/juneau/rest/server/beans/package-summary.html"
target="_blank">org.apache.juneau.rest.server.beans</a> package contains a set
of reusable utility beans meant to
help with putting together explorable REST interfaces.
-The <a
href="/site/apidocs/org/apache/juneau/examples/rest/UtilityBeansResource.html"
target="_blank">UtilityBeansResource</a> class shows how these
+The <a
href="/site/apidocs/org/apache/juneau/petstore/rest/PetInfoResource.html"
target="_blank">PetInfoResource</a> class shows how these
beans are used.
-The resource class is hosted in the example REST applications rendered below:
+The resource class is hosted in the petstore sample applications rendered
below:
## ResourceDescriptions
-The <a
href="/site/apidocs/org/apache/juneau/examples/rest/UtilityBeansResource.html#getChildDescriptions()"
target="_blank">getChildDescriptions()</a> method shows an example of
rendering a list of descriptive links for child endpoints.
+The <a
href="/site/apidocs/org/apache/juneau/petstore/rest/PetInfoResource.html#getChildDescriptions()"
target="_blank">getChildDescriptions()</a> method shows an example of
rendering a list of descriptive links for child endpoints.
```java
@RestGet("/")
@@ -36,20 +36,13 @@ public ResourceDescriptions getChildDescriptions() {
## BeanDescription
-The <a
href="/site/apidocs/org/apache/juneau/examples/rest/UtilityBeansResource.html#aBeanDescription()"
target="_blank">aBeanDescription()</a>
+The <a
href="/site/apidocs/org/apache/juneau/petstore/rest/PetInfoResource.html#getPetBeanDescription()"
target="_blank">getPetBeanDescription()</a>
method shows an example of rendering simple schema information about an
arbitrary bean class.
```java
@RestGet("/BeanDescription")
-@HtmlDocConfig(
- aside={
- "",
- " Example of serialized
org.apache.juneau.rest.server.utilitybeans.BeanDescription bean.",
- ""
- }
-)
-public BeanDescription aBeanDescription() {
- return BeanDescription.of(Address.class);
+public BeanDescription getPetBeanDescription() {
+ return BeanDescription.of(Pet.class);
}
```
@@ -63,20 +56,13 @@ public BeanDescription aBeanDescription() {
## Hyperlink
-The <a
href="/site/apidocs/org/apache/juneau/examples/rest/UtilityBeansResource.html#aHyperlink()"
target="_blank">aHyperlink()</a> method shows an
+The <a
href="/site/apidocs/org/apache/juneau/petstore/rest/PetInfoResource.html#getHyperlink()"
target="_blank">getHyperlink()</a> method shows an
example of rendering a simple hyperlink.
```java
@RestGet("/Hyperlink")
-@HtmlDocConfig(
- aside={
- "",
- " Example of serialized
org.apache.juneau.rest.server.utilitybeans.Hyperlink bean.",
- ""
- }
-)
-public Hyperlink aHyperlink() {
- return Hyperlink.create("/utilitybeans", "Back to /utilitybeans");
+public Hyperlink getHyperlink() {
+ return Hyperlink.create("/petstore-info", "Back to /petstore-info");
}
```
@@ -90,19 +76,12 @@ public Hyperlink aHyperlink() {
## SeeOtherRoot
-The <a
href="/site/apidocs/org/apache/juneau/examples/rest/UtilityBeansResource.html#aSeeOtherRoot()"
target="_blank">aSeeOtherRoot()</a> method
+The <a
href="/site/apidocs/org/apache/juneau/petstore/rest/PetInfoResource.html#getSeeOtherRoot()"
target="_blank">getSeeOtherRoot()</a> method
shows an example of sending a `303 See Other` with a `Location` header
pointing to the servlet root.
```java
@RestGet("/SeeOtherRoot")
-@HtmlDocConfig(
- aside={
- "",
- " Example of serialized
org.apache.juneau.rest.server.utilitybeans.SeeOtherRoot bean.",
- ""
- }
-)
-public SeeOtherRoot aSeeOtherRoot() {
+public SeeOtherRoot getSeeOtherRoot() {
return SeeOtherRoot.INSTANCE;
}
```
diff --git a/pages/topics/10.59.HtmlBeans.md b/pages/topics/10.59.HtmlBeans.md
index efccca1203..223d290a28 100644
--- a/pages/topics/10.59.HtmlBeans.md
+++ b/pages/topics/10.59.HtmlBeans.md
@@ -3,24 +3,21 @@ title: "Using with HTML Beans"
slug: HtmlBeans
---
-The <a
href="/site/apidocs/org/apache/juneau/examples/rest/HtmlBeansResource.html"
target="_blank">HtmlBeansResource</a> class shows how <a
href="/site/apidocs/org/apache/juneau/bean/html5/package-summary.html"
target="_blank">HTML5 beans</a> can be used to generate arbitrary HTML on REST
endpoints.
+The <a
href="/site/apidocs/org/apache/juneau/petstore/rest/PetHtmlResource.html"
target="_blank">PetHtmlResource</a> class shows how <a
href="/site/apidocs/org/apache/juneau/bean/html5/package-summary.html"
target="_blank">HTML5 beans</a> can be used to generate arbitrary HTML on REST
endpoints.
## table
-The <a
href="/site/apidocs/org/apache/juneau/examples/rest/HtmlBeansResource.html#aTable()"
target="_blank">aTable()</a> method shows an example of
-rendering an HTML table.
+The <a
href="/site/apidocs/org/apache/juneau/petstore/rest/PetHtmlResource.html#getPetTable()"
target="_blank">getPetTable()</a> method shows an example of
+rendering an HTML table, built from live petstore data.
```java
-@RestGet
-public Table aTable() {
- return table(
- tr(
- th("c1"), th("c2")
- ),
- tr(
- td("v1"), td("v2")
- )
- );
+@RestGet("/table")
+public Table getPetTable() {
+ var rows = new ArrayList<>();
+ rows.add(tr(th("Name"), th("Species"), th("Price"), th("Status")));
+ for (var pet : store.getPets())
+ rows.add(tr(td(pet.getName()), td(pet.getSpecies()),
td(pet.getPrice()), td(pet.getStatus())));
+ return table(rows.toArray());
}
```
@@ -34,24 +31,21 @@ public Table aTable() {
## div
-The <a
href="/site/apidocs/org/apache/juneau/examples/rest/HtmlBeansResource.html#aDiv()"
target="_blank">aDiv()</a> method shows an example of
-rendering a div tag with mixed content.
+The <a
href="/site/apidocs/org/apache/juneau/petstore/rest/PetHtmlResource.html#getPetCard(long)"
target="_blank">getPetCard(long)</a> method shows an example of
+rendering a div tag with mixed content — a hand-built "pet card" fragment for
a single petstore pet.
```java
-@RestGet
-@HtmlDocConfig(
- aside={
- "",
- " Example of serialized org.apache.juneau.bean.html5.Div bean.",
- ""
- }
-)
-public HtmlElement aDiv() {
- return div()
- .children(
- p("Juneau supports ", b(i("mixed")), " content!")
- )
- .onmouseover("alert(\"boo!\");");
+@RestGet("/card/{id}")
+public Div getPetCard(@Path("id") long id) {
+ var pet = store.getPet(id);
+ if (pet == null)
+ throw new NotFound("Pet not found: id={0}", id);
+ return div(
+ p(b(pet.getName())),
+ p("Species: " + pet.getSpecies()),
+ p("Price: $" + pet.getPrice()),
+ p("Status: " + pet.getStatus())
+ );
}
```
@@ -65,8 +59,8 @@ public HtmlElement aDiv() {
## form
-The <a
href="/site/apidocs/org/apache/juneau/examples/rest/HtmlBeansResource.html#aForm()"
target="_blank">aForm()</a> method shows an example of
-rendering an HTML form.
+The following method shows an example of
+rendering an HTML form using the <a
href="/site/apidocs/org/apache/juneau/bean/html5/Form.html"
target="_blank">Form</a> HTML5 bean. (The petstore samples don't currently host
a form-bean demo resource; this illustrates the bean API directly.)
```java
@RestGet