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

Reply via email to