You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2023/03/29 09:38:43 UTC

[causeway] branch spring6 updated (fc6c83cb97 -> 32ca3e89cd)

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a change to branch spring6
in repository https://gitbox.apache.org/repos/asf/causeway.git


    from fc6c83cb97 Merge pull request #1540 from apache/dependabot/maven/spring6/org.apache.maven.plugins-maven-scm-publish-plugin-3.2.1
     add 91684fc36c CAUSEWAY-3129: [RO] purge obsolete utils
     add 5666c5c7f1 CAUSEWAY-3129: [RO] encapsul. request param utils within their own type
     add 3c89434aef CAUSEWAY-3129: more utility cleanups
     add 2b22759dbb Bump vega/vega-lite:
     add 110fc6cfa6 Bump vega/vega-lite (typo in prev. commit)
     add cb4e34de80 CAUSEWAY-2485: wip - @DomainObject#introspection
     add 1293c1668d adds @DomainObject#introspection
     add 4a7a1d0616 Bump maven-scm-publish-plugin from 3.1.0 to 3.2.1
     add 4aaea4c8cd Merge pull request #1538 from apache/dependabot/maven/master/org.apache.maven.plugins-maven-scm-publish-plugin-3.2.1
     add 77842600b5 CAUSEWAY-3404: [Commons] adds data-source mapping and unzip/first
     new 32ca3e89cd Merge remote-tracking branch 'origin/master' into spring6

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/causeway/applib/value/Blob.java     |  3 +-
 .../commons/internal/collections/_Lists.java       | 14 ++++
 .../org/apache/causeway/commons/io/DataSource.java | 16 ++++
 .../org/apache/causeway/commons/io/ZipUtils.java   | 40 ++++++++++
 .../apache/causeway/commons/io/ZipUtilsTest.java   | 12 ++-
 .../src/main/java/demoapp/dom/DemoModuleJpa.java   |  7 ++
 .../demoapp/dom/_infra/values/ValueHolder.java     |  3 +
 .../objects/DomainObject/DomainObjectMenu.java     |  7 ++
 .../aliased/DomainObjectAliasedVm.layout.xml       |  7 +-
 .../aliased/jpa/DomainObjectAliasedJpa.java        |  7 +-
 .../DomainObjectAutoCompleteVm.layout.xml          |  7 +-
 .../jpa/DomainObjectAutoCompleteJpa.java           |  7 +-
 .../bounded/jpa/DomainObjectBoundingJpa.java       |  7 +-
 .../editing/DomainObjectEditingVm.layout.xml       |  7 +-
 .../editing/jpa/DomainObjectEditingJpa.java        | 11 ++-
 ...inObjectEntityChangePublishingEntity.layout.xml | 51 ++++++++----
 ...DomainObjectEntityChangePublishingVm.layout.xml |  7 +-
 .../jdo/DomainObjectEntityChangePublishingJdo.java |  7 +-
 .../jpa/DomainObjectEntityChangePublishingJpa.java | 15 ++--
 .../introspection/DomainObjectIntrospection.java   | 24 +++---
 .../DomainObjectIntrospectionVm.layout.xml         | 25 +++---
 ...inObjectIntrospectionVm_annotationOptional.java | 48 +++++++++++
 ...inObjectIntrospectionVm_annotationRequired.java | 48 +++++++++++
 .../DomainObjectIntrospectionAnnotOpt.java         | 27 ++++---
 .../DomainObjectIntrospectionAnnotOpt.layout.xml}  | 40 +++++++---
 .../DomainObjectIntrospectionAnnotOptSeeding.java  | 27 +++----
 ...ObjectIntrospectionAnnotOptJpa-description.adoc | 14 ++++
 .../jpa/DomainObjectIntrospectionAnnotOptJpa.java} | 46 +++++++----
 ...mainObjectIntrospectionAnnotOptJpaEntities.java | 27 ++++---
 .../DomainObjectIntrospectionAnnotReqd.java        | 27 ++++---
 .../DomainObjectIntrospectionAnnotReqd.layout.xml} | 40 +++++++---
 .../DomainObjectIntrospectionAnnotReqdSeeding.java | 26 +++---
 ...bjectIntrospectionAnnotReqdJpa-description.adoc | 14 ++++
 .../DomainObjectIntrospectionAnnotReqdJpa.java}    | 51 ++++++++----
 ...ainObjectIntrospectionAnnotReqdJpaEntities.java | 27 ++++---
 .../DomainObjectIntrospectionEncapsulated.java     | 25 +++---
 ...mainObjectIntrospectionEncapsulated.layout.xml} | 40 +++++++---
 ...mainObjectIntrospectionEncapsulatedSeeding.java | 26 +++---
 ...ctIntrospectionEncapsulatedJpa-description.adoc | 13 +++
 .../DomainObjectIntrospectionEncapsulatedJpa.java  | 93 ++++++++++++++++++++++
 ...ObjectIntrospectionEncapsulatedJpaEntities.java | 27 ++++---
 ...ObjectIntrospectionVm_encapsulationEnabled.java | 51 ++++++++++++
 .../src/main/java/demoapp/dom/menubars.layout.xml  |  1 +
 .../testdomain/rest/JsonValueEncoderTest.java      |  2 +-
 .../ui/wkt/components/js/VegaEmbedJsReference.java |  4 +-
 .../vega/ui/wkt/components/js/VegaJsReference.java |  4 +-
 .../ui/wkt/components/js/VegaLiteJsReference.java  |  4 +-
 .../vega/ui/wkt/components/js/vega-embed@6.21.0.js | 22 -----
 .../vega/ui/wkt/components/js/vega-embed@6.21.3.js |  7 ++
 .../vega/ui/wkt/components/js/vega-lite@5.5.0.js   |  2 -
 .../vega/ui/wkt/components/js/vega-lite@5.6.1.js   |  2 +
 .../vega/ui/wkt/components/js/vega@5.22.1.js       |  2 -
 .../vega/ui/wkt/components/js/vega@5.24.js         |  2 +
 .../restfulobjects/rendering/LinkFollowSpecs.java  | 16 +++-
 .../JsonValueEncoderServiceDefault.java            | 25 ++----
 .../service/valuerender/_JsonValueConverters.java  | 11 ++-
 .../rendering/util/JsonWriterUtil.java             | 21 ++---
 .../restfulobjects/rendering/util/MapUtils.java    | 48 -----------
 .../util/{Util.java => RequestParams.java}         | 82 +++++++++++--------
 .../JsonValueEncoderTestAbstract.java              |  2 +-
 .../rendering/util/MapUtilsTest.java               | 52 ------------
 .../viewer/context/ResourceContext.java            | 16 ++--
 .../resources/DomainObjectResourceServerside.java  | 16 ++--
 .../resources/DomainServiceResourceServerside.java |  7 +-
 .../resources/DomainTypeResourceServerside.java    | 10 +--
 .../viewer/resources/JsonParserHelper.java         |  6 +-
 .../viewer/resources/ResourceAbstract.java         | 12 +--
 .../context/ResourceContext_getArg_Test.java       |  5 +-
 .../DomainResourceHelper_readBodyAsMap_Test.java   | 25 +++---
 69 files changed, 923 insertions(+), 504 deletions(-)
 copy viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/ListUtils.java => examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/DomainObjectIntrospection.java (65%)
 create mode 100644 examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/DomainObjectIntrospectionVm_annotationOptional.java
 create mode 100644 examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/DomainObjectIntrospectionVm_annotationRequired.java
 copy viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/FollowSpecUtil.java => examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotOpt/DomainObjectIntrospectionAnnotOpt.java (54%)
 copy examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/{entityChangePublishing/DomainObjectEntityChangePublishingEntity.layout.xml => introspection/annotOpt/DomainObjectIntrospectionAnnotOpt.layout.xml} (66%)
 copy viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/FollowSpecUtil.java => examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotOpt/DomainObjectIntrospectionAnnotOptSeeding.java (56%)
 create mode 100644 examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotOpt/jpa/DomainObjectIntrospectionAnnotOptJpa-description.adoc
 copy examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/{autoComplete/jpa/DomainObjectAutoCompleteJpa.java => introspection/annotOpt/jpa/DomainObjectIntrospectionAnnotOptJpa.java} (59%)
 copy viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/FollowSpecUtil.java => examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotOpt/jpa/DomainObjectIntrospectionAnnotOptJpaEntities.java (55%)
 copy viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/ListUtils.java => examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotReqd/DomainObjectIntrospectionAnnotReqd.java (54%)
 copy examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/{entityChangePublishing/DomainObjectEntityChangePublishingEntity.layout.xml => introspection/annotReqd/DomainObjectIntrospectionAnnotReqd.layout.xml} (66%)
 copy viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/ListUtils.java => examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotReqd/DomainObjectIntrospectionAnnotReqdSeeding.java (60%)
 create mode 100644 examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotReqd/jpa/DomainObjectIntrospectionAnnotReqdJpa-description.adoc
 copy examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/{autoComplete/jpa/DomainObjectAutoCompleteJpa.java => introspection/annotReqd/jpa/DomainObjectIntrospectionAnnotReqdJpa.java} (52%)
 copy viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/FollowSpecUtil.java => examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotReqd/jpa/DomainObjectIntrospectionAnnotReqdJpaEntities.java (55%)
 copy viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/ListUtils.java => examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/encapsulated/DomainObjectIntrospectionEncapsulated.java (57%)
 copy examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/{entityChangePublishing/DomainObjectEntityChangePublishingEntity.layout.xml => introspection/encapsulated/DomainObjectIntrospectionEncapsulated.layout.xml} (66%)
 rename viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/ListUtils.java => examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/encapsulated/DomainObjectIntrospectionEncapsulatedSeeding.java (59%)
 create mode 100644 examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/encapsulated/jpa/DomainObjectIntrospectionEncapsulatedJpa-description.adoc
 create mode 100644 examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/encapsulated/jpa/DomainObjectIntrospectionEncapsulatedJpa.java
 rename viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/FollowSpecUtil.java => examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/encapsulated/jpa/DomainObjectIntrospectionEncapsulatedJpaEntities.java (54%)
 create mode 100644 examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/encapsulated/jpa/DomainObjectIntrospectionVm_encapsulationEnabled.java
 delete mode 100644 valuetypes/vega/ui/wicket/src/main/java/org/apache/causeway/valuetypes/vega/ui/wkt/components/js/vega-embed@6.21.0.js
 create mode 100644 valuetypes/vega/ui/wicket/src/main/java/org/apache/causeway/valuetypes/vega/ui/wkt/components/js/vega-embed@6.21.3.js
 delete mode 100644 valuetypes/vega/ui/wicket/src/main/java/org/apache/causeway/valuetypes/vega/ui/wkt/components/js/vega-lite@5.5.0.js
 create mode 100644 valuetypes/vega/ui/wicket/src/main/java/org/apache/causeway/valuetypes/vega/ui/wkt/components/js/vega-lite@5.6.1.js
 delete mode 100644 valuetypes/vega/ui/wicket/src/main/java/org/apache/causeway/valuetypes/vega/ui/wkt/components/js/vega@5.22.1.js
 create mode 100644 valuetypes/vega/ui/wicket/src/main/java/org/apache/causeway/valuetypes/vega/ui/wkt/components/js/vega@5.24.js
 delete mode 100644 viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/MapUtils.java
 rename viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/{Util.java => RequestParams.java} (54%)
 delete mode 100644 viewers/restfulobjects/rendering/src/test/java/org/apache/causeway/viewer/restfulobjects/rendering/util/MapUtilsTest.java


[causeway] 01/01: Merge remote-tracking branch 'origin/master' into spring6

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch spring6
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 32ca3e89cd348faeda29ef60eaacd46819b9a791
Merge: fc6c83cb97 77842600b5
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Mar 29 11:38:36 2023 +0200

    Merge remote-tracking branch 'origin/master' into spring6

 .../org/apache/causeway/applib/value/Blob.java     |  3 +-
 .../commons/internal/collections/_Lists.java       | 14 ++++
 .../org/apache/causeway/commons/io/DataSource.java | 16 ++++
 .../org/apache/causeway/commons/io/ZipUtils.java   | 40 ++++++++++
 .../apache/causeway/commons/io/ZipUtilsTest.java   | 12 ++-
 .../src/main/java/demoapp/dom/DemoModuleJpa.java   |  7 ++
 .../demoapp/dom/_infra/values/ValueHolder.java     |  3 +
 .../objects/DomainObject/DomainObjectMenu.java     |  7 ++
 .../aliased/DomainObjectAliasedVm.layout.xml       |  7 +-
 .../aliased/jpa/DomainObjectAliasedJpa.java        |  7 +-
 .../DomainObjectAutoCompleteVm.layout.xml          |  7 +-
 .../jpa/DomainObjectAutoCompleteJpa.java           |  7 +-
 .../bounded/jpa/DomainObjectBoundingJpa.java       |  7 +-
 .../editing/DomainObjectEditingVm.layout.xml       |  7 +-
 .../editing/jpa/DomainObjectEditingJpa.java        | 11 ++-
 ...inObjectEntityChangePublishingEntity.layout.xml | 51 ++++++++----
 ...DomainObjectEntityChangePublishingVm.layout.xml |  7 +-
 .../jdo/DomainObjectEntityChangePublishingJdo.java |  7 +-
 .../jpa/DomainObjectEntityChangePublishingJpa.java | 15 ++--
 .../introspection/DomainObjectIntrospection.java   | 24 +++---
 .../DomainObjectIntrospectionVm.layout.xml         | 25 +++---
 ...inObjectIntrospectionVm_annotationOptional.java | 48 +++++++++++
 ...inObjectIntrospectionVm_annotationRequired.java | 48 +++++++++++
 .../DomainObjectIntrospectionAnnotOpt.java         | 27 ++++---
 .../DomainObjectIntrospectionAnnotOpt.layout.xml}  | 40 +++++++---
 .../DomainObjectIntrospectionAnnotOptSeeding.java  | 27 +++----
 ...ObjectIntrospectionAnnotOptJpa-description.adoc | 14 ++++
 .../jpa/DomainObjectIntrospectionAnnotOptJpa.java} | 46 +++++++----
 ...mainObjectIntrospectionAnnotOptJpaEntities.java | 27 ++++---
 .../DomainObjectIntrospectionAnnotReqd.java        | 27 ++++---
 .../DomainObjectIntrospectionAnnotReqd.layout.xml} | 40 +++++++---
 .../DomainObjectIntrospectionAnnotReqdSeeding.java | 26 +++---
 ...bjectIntrospectionAnnotReqdJpa-description.adoc | 14 ++++
 .../DomainObjectIntrospectionAnnotReqdJpa.java}    | 51 ++++++++----
 ...ainObjectIntrospectionAnnotReqdJpaEntities.java | 27 ++++---
 .../DomainObjectIntrospectionEncapsulated.java     | 25 +++---
 ...mainObjectIntrospectionEncapsulated.layout.xml} | 40 +++++++---
 ...mainObjectIntrospectionEncapsulatedSeeding.java | 26 +++---
 ...ctIntrospectionEncapsulatedJpa-description.adoc | 13 +++
 .../DomainObjectIntrospectionEncapsulatedJpa.java  | 93 ++++++++++++++++++++++
 ...ObjectIntrospectionEncapsulatedJpaEntities.java | 27 ++++---
 ...ObjectIntrospectionVm_encapsulationEnabled.java | 51 ++++++++++++
 .../src/main/java/demoapp/dom/menubars.layout.xml  |  1 +
 .../testdomain/rest/JsonValueEncoderTest.java      |  2 +-
 .../ui/wkt/components/js/VegaEmbedJsReference.java |  4 +-
 .../vega/ui/wkt/components/js/VegaJsReference.java |  4 +-
 .../ui/wkt/components/js/VegaLiteJsReference.java  |  4 +-
 .../vega/ui/wkt/components/js/vega-embed@6.21.0.js | 22 -----
 .../vega/ui/wkt/components/js/vega-embed@6.21.3.js |  7 ++
 .../vega/ui/wkt/components/js/vega-lite@5.5.0.js   |  2 -
 .../vega/ui/wkt/components/js/vega-lite@5.6.1.js   |  2 +
 .../vega/ui/wkt/components/js/vega@5.22.1.js       |  2 -
 .../vega/ui/wkt/components/js/vega@5.24.js         |  2 +
 .../restfulobjects/rendering/LinkFollowSpecs.java  | 16 +++-
 .../JsonValueEncoderServiceDefault.java            | 25 ++----
 .../service/valuerender/_JsonValueConverters.java  | 11 ++-
 .../rendering/util/JsonWriterUtil.java             | 21 ++---
 .../restfulobjects/rendering/util/MapUtils.java    | 48 -----------
 .../util/{Util.java => RequestParams.java}         | 82 +++++++++++--------
 .../JsonValueEncoderTestAbstract.java              |  2 +-
 .../rendering/util/MapUtilsTest.java               | 52 ------------
 .../viewer/context/ResourceContext.java            | 16 ++--
 .../resources/DomainObjectResourceServerside.java  | 16 ++--
 .../resources/DomainServiceResourceServerside.java |  7 +-
 .../resources/DomainTypeResourceServerside.java    | 10 +--
 .../viewer/resources/JsonParserHelper.java         |  6 +-
 .../viewer/resources/ResourceAbstract.java         | 12 +--
 .../context/ResourceContext_getArg_Test.java       |  5 +-
 .../DomainResourceHelper_readBodyAsMap_Test.java   | 25 +++---
 69 files changed, 923 insertions(+), 504 deletions(-)

diff --cc examples/demo/domain/src/main/java/demoapp/dom/_infra/values/ValueHolder.java
index c2bba7f5bc,f9ee34d213..00c7b0370f
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/values/ValueHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/values/ValueHolder.java
@@@ -18,8 -18,10 +18,10 @@@
   */
  package demoapp.dom._infra.values;
  
 -import javax.inject.Named;
 +import jakarta.inject.Named;
  
+ import org.apache.causeway.applib.annotation.Programmatic;
+ 
  @Named("demo.ValueHolder")
  public interface ValueHolder<T> {
  
diff --cc examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/aliased/jpa/DomainObjectAliasedJpa.java
index 83df076683,39d4a23d9d..3c29c357a4
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/aliased/jpa/DomainObjectAliasedJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/aliased/jpa/DomainObjectAliasedJpa.java
@@@ -18,25 -18,20 +18,25 @@@
   */
  package demoapp.dom.domain.objects.DomainObject.aliased.jpa;
  
 -import demoapp.dom.domain.objects.DomainObject.aliased.DomainObjectAliased;
 -import lombok.Getter;
 -import lombok.NoArgsConstructor;
 -import lombok.Setter;
 +import jakarta.inject.Named;
 +import jakarta.persistence.Entity;
 +import jakarta.persistence.EntityListeners;
 +import jakarta.persistence.GeneratedValue;
 +import jakarta.persistence.Id;
 +import jakarta.persistence.Table;
  
 -import javax.inject.Named;
 -import javax.persistence.*;
 +import org.springframework.context.annotation.Profile;
  
  import org.apache.causeway.applib.annotation.DomainObject;
+ import org.apache.causeway.applib.annotation.Nature;
  import org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
 -import org.springframework.context.annotation.Profile;
 +
 +import demoapp.dom.domain.objects.DomainObject.aliased.DomainObjectAliased;
 +import lombok.Getter;
 +import lombok.NoArgsConstructor;
 +import lombok.Setter;
  
  @Profile("demo-jpa")
- //tag::class[]
  @Entity
  @Table(
      schema = "demo",
diff --cc examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/autoComplete/jpa/DomainObjectAutoCompleteJpa.java
index 71e6e19a3f,13e12b571e..9d40e11628
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/autoComplete/jpa/DomainObjectAutoCompleteJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/autoComplete/jpa/DomainObjectAutoCompleteJpa.java
@@@ -18,26 -18,21 +18,26 @@@
   */
  package demoapp.dom.domain.objects.DomainObject.autoComplete.jpa;
  
 -import demoapp.dom.domain.objects.DomainObject.autoComplete.DomainObjectAutoComplete;
 -import demoapp.dom.domain.objects.DomainObject.autoComplete.DomainObjectAutoCompleteRepository;
 -import lombok.Getter;
 -import lombok.NoArgsConstructor;
 -import lombok.Setter;
 +import jakarta.inject.Named;
 +import jakarta.persistence.Entity;
 +import jakarta.persistence.EntityListeners;
 +import jakarta.persistence.GeneratedValue;
 +import jakarta.persistence.Id;
 +import jakarta.persistence.Table;
  
 -import javax.inject.Named;
 -import javax.persistence.*;
 +import org.springframework.context.annotation.Profile;
  
  import org.apache.causeway.applib.annotation.DomainObject;
+ import org.apache.causeway.applib.annotation.Nature;
  import org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
 -import org.springframework.context.annotation.Profile;
 +
 +import demoapp.dom.domain.objects.DomainObject.autoComplete.DomainObjectAutoComplete;
 +import demoapp.dom.domain.objects.DomainObject.autoComplete.DomainObjectAutoCompleteRepository;
 +import lombok.Getter;
 +import lombok.NoArgsConstructor;
 +import lombok.Setter;
  
  @Profile("demo-jpa")
- //tag::class[]
  @Entity
  @Table(
      schema = "demo",
diff --cc examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/editing/jpa/DomainObjectEditingJpa.java
index 2efa7d0af8,97e8fe4454..21c28c6aec
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/editing/jpa/DomainObjectEditingJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/editing/jpa/DomainObjectEditingJpa.java
@@@ -23,12 -23,12 +23,12 @@@ import lombok.Getter
  import lombok.NoArgsConstructor;
  import lombok.Setter;
  
 -import javax.inject.Named;
 -import javax.persistence.*;
 +import jakarta.inject.Named;
 +import jakarta.persistence.*;
  
- import org.apache.causeway.applib.annotation.Bounding;
  import org.apache.causeway.applib.annotation.DomainObject;
  import org.apache.causeway.applib.annotation.Editing;
+ import org.apache.causeway.applib.annotation.Nature;
  import org.apache.causeway.applib.annotation.Property;
  import org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
  import org.springframework.context.annotation.Profile;
diff --cc examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/DomainObjectIntrospectionVm_annotationOptional.java
index 0000000000,af1154de82..caef1b17ba
mode 000000,100644..100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/DomainObjectIntrospectionVm_annotationOptional.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/DomainObjectIntrospectionVm_annotationOptional.java
@@@ -1,0 -1,49 +1,48 @@@
+ /*
+  *  Licensed to the Apache Software Foundation (ASF) under one
+  *  or more contributor license agreements.  See the NOTICE file
+  *  distributed with this work for additional information
+  *  regarding copyright ownership.  The ASF licenses this file
+  *  to you under the Apache License, Version 2.0 (the
+  *  "License"); you may not use this file except in compliance
+  *  with the License.  You may obtain a copy of the License at
+  *
+  *        http://www.apache.org/licenses/LICENSE-2.0
+  *
+  *  Unless required by applicable law or agreed to in writing,
+  *  software distributed under the License is distributed on an
+  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  *  KIND, either express or implied.  See the License for the
+  *  specific language governing permissions and limitations
+  *  under the License.
+  */
+ package demoapp.dom.domain.objects.DomainObject.introspection;
+ 
 -import demoapp.dom._infra.values.ValueHolderRepository;
 -import demoapp.dom.domain.objects.DomainObject.introspection.annotOpt.DomainObjectIntrospectionAnnotOpt;
 -import demoapp.dom.domain.objects.DomainObject.introspection.annotReqd.DomainObjectIntrospectionAnnotReqd;
 -import lombok.RequiredArgsConstructor;
 -
+ import java.util.List;
+ 
 -import javax.inject.Inject;
++import jakarta.inject.Inject;
+ 
+ import org.apache.causeway.applib.annotation.Collection;
+ import org.apache.causeway.applib.annotation.CollectionLayout;
+ import org.apache.causeway.applib.annotation.MemberSupport;
+ 
++import demoapp.dom._infra.values.ValueHolderRepository;
++import demoapp.dom.domain.objects.DomainObject.introspection.annotOpt.DomainObjectIntrospectionAnnotOpt;
++import lombok.RequiredArgsConstructor;
++
+ @Collection()
+ @CollectionLayout()
+ @RequiredArgsConstructor
+ public class DomainObjectIntrospectionVm_annotationOptional {
+ 
+     @SuppressWarnings("unused")
+     private final DomainObjectIntrospectionVm mixee;
+ 
+     @MemberSupport
+     public List<? extends DomainObjectIntrospectionAnnotOpt> coll() {
+         return entities.all();
+     }
+ 
+     @Inject ValueHolderRepository<String, ? extends DomainObjectIntrospectionAnnotOpt> entities;
+ 
+ }
diff --cc examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/DomainObjectIntrospectionVm_annotationRequired.java
index 0000000000,7c7cb3e4fc..1146227e72
mode 000000,100644..100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/DomainObjectIntrospectionVm_annotationRequired.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/DomainObjectIntrospectionVm_annotationRequired.java
@@@ -1,0 -1,48 +1,48 @@@
+ /*
+  *  Licensed to the Apache Software Foundation (ASF) under one
+  *  or more contributor license agreements.  See the NOTICE file
+  *  distributed with this work for additional information
+  *  regarding copyright ownership.  The ASF licenses this file
+  *  to you under the Apache License, Version 2.0 (the
+  *  "License"); you may not use this file except in compliance
+  *  with the License.  You may obtain a copy of the License at
+  *
+  *        http://www.apache.org/licenses/LICENSE-2.0
+  *
+  *  Unless required by applicable law or agreed to in writing,
+  *  software distributed under the License is distributed on an
+  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  *  KIND, either express or implied.  See the License for the
+  *  specific language governing permissions and limitations
+  *  under the License.
+  */
+ package demoapp.dom.domain.objects.DomainObject.introspection;
+ 
 -import demoapp.dom._infra.values.ValueHolderRepository;
 -import demoapp.dom.domain.objects.DomainObject.introspection.annotReqd.DomainObjectIntrospectionAnnotReqd;
 -import lombok.RequiredArgsConstructor;
 -
+ import java.util.List;
+ 
 -import javax.inject.Inject;
++import jakarta.inject.Inject;
+ 
+ import org.apache.causeway.applib.annotation.Collection;
+ import org.apache.causeway.applib.annotation.CollectionLayout;
+ import org.apache.causeway.applib.annotation.MemberSupport;
+ 
++import demoapp.dom._infra.values.ValueHolderRepository;
++import demoapp.dom.domain.objects.DomainObject.introspection.annotReqd.DomainObjectIntrospectionAnnotReqd;
++import lombok.RequiredArgsConstructor;
++
+ @Collection()
+ @CollectionLayout()
+ @RequiredArgsConstructor
+ public class DomainObjectIntrospectionVm_annotationRequired {
+ 
+     @SuppressWarnings("unused")
+     private final DomainObjectIntrospectionVm mixee;
+ 
+     @MemberSupport
+     public List<? extends DomainObjectIntrospectionAnnotReqd> coll() {
+         return entities.all();
+     }
+ 
+     @Inject ValueHolderRepository<String, ? extends DomainObjectIntrospectionAnnotReqd> entities;
+ 
+ }
diff --cc examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotOpt/DomainObjectIntrospectionAnnotOptSeeding.java
index 79f3f88b5d,f28f8050e9..64006c8fea
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotOpt/DomainObjectIntrospectionAnnotOptSeeding.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotOpt/DomainObjectIntrospectionAnnotOptSeeding.java
@@@ -16,24 -16,23 +16,23 @@@
   *  specific language governing permissions and limitations
   *  under the License.
   */
- package org.apache.causeway.viewer.restfulobjects.rendering.util;
+ package demoapp.dom.domain.objects.DomainObject.introspection.annotOpt;
  
- import java.util.List;
 -import demoapp.dom._infra.seed.SeedServiceAbstract;
 -import demoapp.dom._infra.values.ValueHolderRepository;
 -
 -import javax.inject.Inject;
++import jakarta.inject.Inject;
  
- import org.apache.causeway.commons.internal.collections._Lists;
- import org.apache.causeway.viewer.restfulobjects.applib.util.PathNode;
+ import org.springframework.stereotype.Service;
  
- public final class FollowSpecUtil {
++import demoapp.dom._infra.seed.SeedServiceAbstract;
++import demoapp.dom._infra.values.ValueHolderRepository;
 +
-     private FollowSpecUtil() {
-     }
- 
-     public static final List<List<PathNode>> asFollowSpecs(final List<List<String>> links) {
+ @Service
+ public class DomainObjectIntrospectionAnnotOptSeeding
+ extends SeedServiceAbstract {
  
-         final List<List<PathNode>> unmodifiable = _Lists.map(links, (List<String> pathParts) -> {
-             return _Lists.newArrayList(_Lists.map(pathParts, (String input)->PathNode.parse(input)));
-         });
- 
-         return _Lists.newArrayList(unmodifiable);
+     @Inject
+     public DomainObjectIntrospectionAnnotOptSeeding(
 -            ValueHolderRepository<String, ? extends DomainObjectIntrospectionAnnotOpt> entities) {
++            final ValueHolderRepository<String, ? extends DomainObjectIntrospectionAnnotOpt> entities) {
+         super(entities);
      }
+ 
  }
diff --cc examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotOpt/jpa/DomainObjectIntrospectionAnnotOptJpa.java
index 71e6e19a3f,b40176bf02..4a3d31626d
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotOpt/jpa/DomainObjectIntrospectionAnnotOptJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotOpt/jpa/DomainObjectIntrospectionAnnotOptJpa.java
@@@ -16,28 -16,22 +16,25 @@@
   *  specific language governing permissions and limitations
   *  under the License.
   */
- package demoapp.dom.domain.objects.DomainObject.autoComplete.jpa;
+ package demoapp.dom.domain.objects.DomainObject.introspection.annotOpt.jpa;
  
 -import demoapp.dom.domain.objects.DomainObject.introspection.annotOpt.DomainObjectIntrospectionAnnotOpt;
 -import lombok.Getter;
 -import lombok.NoArgsConstructor;
 -import lombok.Setter;
 +import jakarta.inject.Named;
 +import jakarta.persistence.Entity;
 +import jakarta.persistence.EntityListeners;
 +import jakarta.persistence.GeneratedValue;
 +import jakarta.persistence.Id;
 +import jakarta.persistence.Table;
  
 -import javax.inject.Named;
 -import javax.persistence.*;
 +import org.springframework.context.annotation.Profile;
  
  import org.apache.causeway.applib.annotation.DomainObject;
+ import org.apache.causeway.applib.annotation.Introspection;
  import org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
 -import org.springframework.context.annotation.Profile;
 +
- import demoapp.dom.domain.objects.DomainObject.autoComplete.DomainObjectAutoComplete;
- import demoapp.dom.domain.objects.DomainObject.autoComplete.DomainObjectAutoCompleteRepository;
- import lombok.Getter;
++import demoapp.dom.domain.objects.DomainObject.introspection.annotOpt.DomainObjectIntrospectionAnnotOpt;
 +import lombok.NoArgsConstructor;
- import lombok.Setter;
  
  @Profile("demo-jpa")
- //tag::class[]
  @Entity
  @Table(
      schema = "demo",
@@@ -54,18 -50,29 +53,31 @@@ public class DomainObjectIntrospectionA
      // ...
  //end::class[]
  
-     public DomainObjectAutoCompleteJpa(final String value) {
 -    public DomainObjectIntrospectionAnnotOptJpa(String value) {
++    public DomainObjectIntrospectionAnnotOptJpa(final String value) {
          setName(value);
      }
  
      @Id
      @GeneratedValue
      private Long id;
+ //tag::class[]
  
-     @Getter @Setter
-     private String name;
- 
+     private String name;                                                        // <.>
++    @Override
+     public String getName() {
+         return name;
+     }
 -    public void setName(String name) {
++    @Override
++    public void setName(final String name) {
+         this.name = name;
+     }
  
- //tag::class[]
+     public DomainObjectIntrospectionAnnotOptJpa updateName(final String name) { // <.>
+         setName(name);
+         return this;
+     }
+     public String default0UpdateName() {                                        // <.>
+         return getName();
+     }
  }
  //end::class[]
diff --cc examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotReqd/DomainObjectIntrospectionAnnotReqdSeeding.java
index 850b3a3bf4,21c3e8a1b8..7fead23df0
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotReqd/DomainObjectIntrospectionAnnotReqdSeeding.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotReqd/DomainObjectIntrospectionAnnotReqdSeeding.java
@@@ -16,23 -16,23 +16,23 @@@
   *  specific language governing permissions and limitations
   *  under the License.
   */
- package org.apache.causeway.viewer.restfulobjects.rendering.util;
+ package demoapp.dom.domain.objects.DomainObject.introspection.annotReqd;
  
- import java.util.ArrayList;
- import java.util.List;
 -import demoapp.dom._infra.seed.SeedServiceAbstract;
 -import demoapp.dom._infra.values.ValueHolderRepository;
 -
 -import javax.inject.Inject;
++import jakarta.inject.Inject;
  
- public final class ListUtils {
+ import org.springframework.stereotype.Service;
  
-     private ListUtils() {
-     }
++import demoapp.dom._infra.seed.SeedServiceAbstract;
++import demoapp.dom._infra.values.ValueHolderRepository;
++
+ @Service
+ public class DomainObjectIntrospectionAnnotReqdSeeding
+ extends SeedServiceAbstract {
  
-     @SuppressWarnings("unchecked")
-     public static <T> List<T> toList(final Object[] objects) {
-         final List<T> list = new ArrayList<T>();
-         for (final Object o : objects) {
-             list.add((T) o);
-         }
-         return list;
+     @Inject
+     public DomainObjectIntrospectionAnnotReqdSeeding(
 -            ValueHolderRepository<String, ? extends DomainObjectIntrospectionAnnotReqd> entities) {
++            final ValueHolderRepository<String, ? extends DomainObjectIntrospectionAnnotReqd> entities) {
+         super(entities);
      }
  
  }
diff --cc examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotReqd/jpa/DomainObjectIntrospectionAnnotReqdJpa.java
index 71e6e19a3f,9ee6c29769..b6ddf29fcc
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotReqd/jpa/DomainObjectIntrospectionAnnotReqdJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/annotReqd/jpa/DomainObjectIntrospectionAnnotReqdJpa.java
@@@ -16,28 -16,22 +16,29 @@@
   *  specific language governing permissions and limitations
   *  under the License.
   */
- package demoapp.dom.domain.objects.DomainObject.autoComplete.jpa;
+ package demoapp.dom.domain.objects.DomainObject.introspection.annotReqd.jpa;
  
 -import demoapp.dom.domain.objects.DomainObject.introspection.annotOpt.jpa.DomainObjectIntrospectionAnnotOptJpa;
 -import demoapp.dom.domain.objects.DomainObject.introspection.annotReqd.DomainObjectIntrospectionAnnotReqd;
 -import lombok.Getter;
 -import lombok.NoArgsConstructor;
 -import lombok.Setter;
 +import jakarta.inject.Named;
 +import jakarta.persistence.Entity;
 +import jakarta.persistence.EntityListeners;
 +import jakarta.persistence.GeneratedValue;
 +import jakarta.persistence.Id;
 +import jakarta.persistence.Table;
  
 -import javax.inject.Named;
 -import javax.persistence.*;
 +import org.springframework.context.annotation.Profile;
  
 -import org.apache.causeway.applib.annotation.*;
++import org.apache.causeway.applib.annotation.Action;
 +import org.apache.causeway.applib.annotation.DomainObject;
++import org.apache.causeway.applib.annotation.Introspection;
++import org.apache.causeway.applib.annotation.MemberSupport;
++import org.apache.causeway.applib.annotation.Property;
++import org.apache.causeway.applib.annotation.SemanticsOf;
  import org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
 -import org.springframework.context.annotation.Profile;
 +
- import demoapp.dom.domain.objects.DomainObject.autoComplete.DomainObjectAutoComplete;
- import demoapp.dom.domain.objects.DomainObject.autoComplete.DomainObjectAutoCompleteRepository;
- import lombok.Getter;
++import demoapp.dom.domain.objects.DomainObject.introspection.annotReqd.DomainObjectIntrospectionAnnotReqd;
 +import lombok.NoArgsConstructor;
- import lombok.Setter;
  
  @Profile("demo-jpa")
- //tag::class[]
  @Entity
  @Table(
      schema = "demo",
@@@ -54,18 -50,32 +57,34 @@@ public class DomainObjectIntrospectionA
      // ...
  //end::class[]
  
-     public DomainObjectAutoCompleteJpa(final String value) {
 -    public DomainObjectIntrospectionAnnotReqdJpa(String value) {
++    public DomainObjectIntrospectionAnnotReqdJpa(final String value) {
          setName(value);
      }
  
      @Id
      @GeneratedValue
      private Long id;
+ //tag::class[]
  
-     @Getter @Setter
      private String name;
++    @Override
+     @Property                                                                   // <.>
+     public String getName() {
+         return name;
+     }
 -    public void setName(String name) {
++    @Override
++    public void setName(final String name) {
+         this.name = name;
+     }
  
- 
- //tag::class[]
+     @Action(semantics = SemanticsOf.IDEMPOTENT)                                 // <.>
+     public DomainObjectIntrospectionAnnotReqdJpa updateName(final String name) {
+         setName(name);
+         return this;
+     }
+     @MemberSupport                                                              // <.>
+     public String default0UpdateName() {
+         return getName();
+     }
  }
  //end::class[]
diff --cc examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/encapsulated/DomainObjectIntrospectionEncapsulatedSeeding.java
index 850b3a3bf4,7a9568d78b..3672851640
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/encapsulated/DomainObjectIntrospectionEncapsulatedSeeding.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/encapsulated/DomainObjectIntrospectionEncapsulatedSeeding.java
@@@ -16,23 -16,23 +16,23 @@@
   *  specific language governing permissions and limitations
   *  under the License.
   */
- package org.apache.causeway.viewer.restfulobjects.rendering.util;
+ package demoapp.dom.domain.objects.DomainObject.introspection.encapsulated;
  
- import java.util.ArrayList;
- import java.util.List;
 -import demoapp.dom._infra.seed.SeedServiceAbstract;
 -import demoapp.dom._infra.values.ValueHolderRepository;
 -
 -import javax.inject.Inject;
++import jakarta.inject.Inject;
  
- public final class ListUtils {
+ import org.springframework.stereotype.Service;
  
-     private ListUtils() {
-     }
++import demoapp.dom._infra.seed.SeedServiceAbstract;
++import demoapp.dom._infra.values.ValueHolderRepository;
++
+ @Service
+ public class DomainObjectIntrospectionEncapsulatedSeeding
+ extends SeedServiceAbstract {
  
-     @SuppressWarnings("unchecked")
-     public static <T> List<T> toList(final Object[] objects) {
-         final List<T> list = new ArrayList<T>();
-         for (final Object o : objects) {
-             list.add((T) o);
-         }
-         return list;
+     @Inject
+     public DomainObjectIntrospectionEncapsulatedSeeding(
 -            ValueHolderRepository<String, ? extends DomainObjectIntrospectionEncapsulated> entities) {
++            final ValueHolderRepository<String, ? extends DomainObjectIntrospectionEncapsulated> entities) {
+         super(entities);
      }
  
  }
diff --cc examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/encapsulated/jpa/DomainObjectIntrospectionEncapsulatedJpa.java
index 0000000000,ac70594623..5f1258a23e
mode 000000,100644..100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/encapsulated/jpa/DomainObjectIntrospectionEncapsulatedJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/encapsulated/jpa/DomainObjectIntrospectionEncapsulatedJpa.java
@@@ -1,0 -1,85 +1,93 @@@
+ /*
+  *  Licensed to the Apache Software Foundation (ASF) under one
+  *  or more contributor license agreements.  See the NOTICE file
+  *  distributed with this work for additional information
+  *  regarding copyright ownership.  The ASF licenses this file
+  *  to you under the Apache License, Version 2.0 (the
+  *  "License"); you may not use this file except in compliance
+  *  with the License.  You may obtain a copy of the License at
+  *
+  *        http://www.apache.org/licenses/LICENSE-2.0
+  *
+  *  Unless required by applicable law or agreed to in writing,
+  *  software distributed under the License is distributed on an
+  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  *  KIND, either express or implied.  See the License for the
+  *  specific language governing permissions and limitations
+  *  under the License.
+  */
+ package demoapp.dom.domain.objects.DomainObject.introspection.encapsulated.jpa;
+ 
 -import demoapp.dom.domain.objects.DomainObject.introspection.encapsulated.DomainObjectIntrospectionEncapsulated;
 -import lombok.Getter;
 -import lombok.NoArgsConstructor;
 -import lombok.Setter;
++import jakarta.inject.Named;
++import jakarta.persistence.Entity;
++import jakarta.persistence.EntityListeners;
++import jakarta.persistence.GeneratedValue;
++import jakarta.persistence.Id;
++import jakarta.persistence.Table;
+ 
 -import javax.inject.Named;
 -import javax.persistence.*;
++import org.springframework.context.annotation.Profile;
+ 
 -import org.apache.causeway.applib.annotation.*;
++import org.apache.causeway.applib.annotation.Action;
++import org.apache.causeway.applib.annotation.DomainObject;
++import org.apache.causeway.applib.annotation.Introspection;
++import org.apache.causeway.applib.annotation.MemberSupport;
++import org.apache.causeway.applib.annotation.Property;
++import org.apache.causeway.applib.annotation.SemanticsOf;
+ import org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
 -import org.springframework.context.annotation.Profile;
++
++import demoapp.dom.domain.objects.DomainObject.introspection.encapsulated.DomainObjectIntrospectionEncapsulated;
++import lombok.NoArgsConstructor;
+ 
+ @Profile("demo-jpa")
+ @Entity
+ @Table(
+     schema = "demo",
+     name = "DomainObjectIntrospectionEncapsulatedJpa"
+ )
+ @EntityListeners(CausewayEntityListener.class)
+ @Named("demo.DomainObjectIntrospectionEncapsulatedJpa")
+ @NoArgsConstructor
+ //tag::class[]
+ // ...
+ @DomainObject(
+         introspection = Introspection.ENCAPSULATION_ENABLED
+ )
+ public class DomainObjectIntrospectionEncapsulatedJpa
+         extends DomainObjectIntrospectionEncapsulated {
+     // ...
+ //end::class[]
+ 
 -    public DomainObjectIntrospectionEncapsulatedJpa(String value) {
++    public DomainObjectIntrospectionEncapsulatedJpa(final String value) {
+         setName(value);
+     }
+ 
+     @Override
+     public String value() {
+         return getName();
+     }
+ 
+     @Id
+     @GeneratedValue
+     private Long id;
+ //tag::class[]
+ 
+     private String name;
+     @Property                                                                       // <.>
+     private String getName() {                                                      // <1>
+         return name;
+     }
 -    private void setName(String name) {
++    private void setName(final String name) {
+         this.name = name;
+     }
+ 
+     @Action(semantics = SemanticsOf.IDEMPOTENT)                                     // <.>
+     private DomainObjectIntrospectionEncapsulated updateName(final String name) {   // <2>
+         setName(name);
+         return this;
+     }
+     @MemberSupport                                                                  // <.>
+     private String default0UpdateName() {                                           // <3>
+         return getName();
+     }
+ }
+ //end::class[]
diff --cc examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/encapsulated/jpa/DomainObjectIntrospectionVm_encapsulationEnabled.java
index 0000000000,28d80ae196..e957617177
mode 000000,100644..100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/encapsulated/jpa/DomainObjectIntrospectionVm_encapsulationEnabled.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/introspection/encapsulated/jpa/DomainObjectIntrospectionVm_encapsulationEnabled.java
@@@ -1,0 -1,52 +1,51 @@@
+ /*
+  *  Licensed to the Apache Software Foundation (ASF) under one
+  *  or more contributor license agreements.  See the NOTICE file
+  *  distributed with this work for additional information
+  *  regarding copyright ownership.  The ASF licenses this file
+  *  to you under the Apache License, Version 2.0 (the
+  *  "License"); you may not use this file except in compliance
+  *  with the License.  You may obtain a copy of the License at
+  *
+  *        http://www.apache.org/licenses/LICENSE-2.0
+  *
+  *  Unless required by applicable law or agreed to in writing,
+  *  software distributed under the License is distributed on an
+  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  *  KIND, either express or implied.  See the License for the
+  *  specific language governing permissions and limitations
+  *  under the License.
+  */
+ package demoapp.dom.domain.objects.DomainObject.introspection.encapsulated.jpa;
+ 
 -import demoapp.dom._infra.values.ValueHolderRepository;
 -import demoapp.dom.domain.objects.DomainObject.introspection.DomainObjectIntrospectionVm;
 -import demoapp.dom.domain.objects.DomainObject.introspection.annotReqd.DomainObjectIntrospectionAnnotReqd;
 -import demoapp.dom.domain.objects.DomainObject.introspection.encapsulated.DomainObjectIntrospectionEncapsulated;
 -import lombok.RequiredArgsConstructor;
 -
+ import java.util.List;
+ 
 -import javax.inject.Inject;
++import jakarta.inject.Inject;
++
++import org.springframework.context.annotation.Profile;
+ 
+ import org.apache.causeway.applib.annotation.Collection;
+ import org.apache.causeway.applib.annotation.CollectionLayout;
+ import org.apache.causeway.applib.annotation.MemberSupport;
 -import org.springframework.context.annotation.Profile;
++
++import demoapp.dom._infra.values.ValueHolderRepository;
++import demoapp.dom.domain.objects.DomainObject.introspection.DomainObjectIntrospectionVm;
++import lombok.RequiredArgsConstructor;
+ 
+ @Profile("demo-jpa")
+ @Collection()
+ @CollectionLayout()
+ @RequiredArgsConstructor
+ public class DomainObjectIntrospectionVm_encapsulationEnabled {
+ 
+     @SuppressWarnings("unused")
+     private final DomainObjectIntrospectionVm mixee;
+ 
+     @MemberSupport
+     public List<DomainObjectIntrospectionEncapsulatedJpa> coll() {
+         return entities.all();
+     }
+ 
+     @Inject ValueHolderRepository<String, DomainObjectIntrospectionEncapsulatedJpa> entities;
+ 
+ }
diff --cc viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/JsonValueEncoderServiceDefault.java
index a8f7ef42c9,0f6777840c..54b8d6cd86
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/JsonValueEncoderServiceDefault.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/JsonValueEncoderServiceDefault.java
@@@ -22,10 -22,9 +22,9 @@@ import java.util.Map
  import java.util.Optional;
  import java.util.stream.Collectors;
  
- import jakarta.annotation.PostConstruct;
 -import javax.annotation.Priority;
 -import javax.inject.Inject;
 -import javax.inject.Named;
 +import jakarta.annotation.Priority;
 +import jakarta.inject.Inject;
 +import jakarta.inject.Named;
  
  import org.springframework.beans.factory.annotation.Qualifier;
  import org.springframework.lang.Nullable;
diff --cc viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/context/ResourceContext.java
index 84a1a0aefa,7927a2e212..d24795d020
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/context/ResourceContext.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/context/ResourceContext.java
@@@ -21,15 -21,16 +21,16 @@@ package org.apache.causeway.viewer.rest
  import java.util.Collections;
  import java.util.List;
  import java.util.Map;
+ import java.util.Optional;
  import java.util.Set;
  
 -import javax.servlet.http.HttpServletRequest;
 -import javax.servlet.http.HttpServletResponse;
 -import javax.ws.rs.core.HttpHeaders;
 -import javax.ws.rs.core.MediaType;
 -import javax.ws.rs.core.Request;
 -import javax.ws.rs.core.SecurityContext;
 -import javax.ws.rs.ext.Providers;
 +import jakarta.servlet.http.HttpServletRequest;
 +import jakarta.servlet.http.HttpServletResponse;
 +import jakarta.ws.rs.core.HttpHeaders;
 +import jakarta.ws.rs.core.MediaType;
 +import jakarta.ws.rs.core.Request;
 +import jakarta.ws.rs.core.SecurityContext;
 +import jakarta.ws.rs.ext.Providers;
  
  import org.apache.causeway.applib.annotation.Where;
  import org.apache.causeway.applib.services.bookmark.Bookmark;
diff --cc viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
index cc5cd4172d,5f7abd08bc..8666de7a94
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/causeway/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
@@@ -99,11 -98,9 +99,11 @@@ implements HasMetaModelContext 
  
      protected ResourceContext createResourceContext(
              final ResourceDescriptor resourceDescriptor,
-             final String urlUnencodedQueryString) {
+             final RequestParams requestParams) {
  
 -        if (!getInteractionService().isInInteraction()) {
 +        _Assert.assertNotNull(metaModelContext, ()->"injection points not resolved for " + this.getClass());
 +
 +        if (!metaModelContext.getInteractionService().isInInteraction()) {
              throw RestfulObjectsApplicationException.create(HttpStatusCode.UNAUTHORIZED);
          }