You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/08/18 05:28:35 UTC

[isis] branch master updated: ISIS-3123: adds primitive templates; convert long showcase to generated

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 773505ac36 ISIS-3123: adds primitive templates; convert long showcase to generated
773505ac36 is described below

commit 773505ac36dc569cd77c5cb1b206f455e86dbae7
Author: andi-huber <ah...@apache.org>
AuthorDate: Thu Aug 18 05:43:26 2022 +0200

    ISIS-3123: adds primitive templates; convert long showcase to generated
---
 .../apache/isis/commons/internal/base/_Files.java  | 20 +++++++
 .../dom/types/isis/blobs/IsisBlobs-common.adoc     |  2 +-
 .../dom/types/isis/clobs/IsisClobs-common.adoc     |  2 +-
 .../IsisLocalResourcePaths-common.adoc             |  2 +-
 .../dom/types/isis/markups/IsisMarkups-common.adoc |  2 +-
 .../types/isis/passwords/IsisPasswords-common.adoc |  2 +-
 .../isisext/asciidocs/IsisAsciiDocs-common.adoc    |  2 +-
 .../isisext/markdowns/IsisMarkdowns-common.adoc    |  2 +-
 .../javalang/booleans/WrapperBooleans-common.adoc  |  2 +-
 .../types/javalang/bytes/WrapperBytes-common.adoc  |  2 +-
 .../characters/WrapperCharacters-common.adoc       |  2 +-
 .../javalang/doubles/WrapperDoubles-common.adoc    |  2 +-
 .../javalang/floats/WrapperFloats-common.adoc      |  2 +-
 .../javalang/integers/WrapperIntegers-common.adoc  |  2 +-
 .../types/javalang/longs/WrapperLongs-common.adoc  |  2 +-
 .../javalang/shorts/WrapperShorts-common.adoc      |  2 +-
 .../javalang/strings/JavaLangStrings-common.adoc   |  2 +-
 .../bigdecimals/JavaMathBigDecimals-common.adoc    |  2 +-
 .../bigintegers/JavaMathBigIntegers-common.adoc    |  2 +-
 .../dom/types/javanet/urls/JavaNetUrls-common.adoc |  2 +-
 .../javasqltimestamp/JavaSqlTimestamps-common.adoc |  2 +-
 .../JavaTimeLocalDates-common.adoc                 |  2 +-
 .../JavaTimeLocalDateTimes-common.adoc             |  2 +-
 .../JavaTimeLocalTimes-common.adoc                 |  2 +-
 .../JavaTimeOffsetDateTimes-common.adoc            |  2 +-
 .../JavaTimeOffsetTimes-common.adoc                |  2 +-
 .../JavaTimeZonedDateTimes-common.adoc             |  2 +-
 .../javautildate/JavaUtilDates-common.adoc         |  2 +-
 .../types/javautil/uuids/JavaUtilUuids-common.adoc |  2 +-
 .../jodadatetime/JodaDateTimes-common.adoc         |  2 +-
 .../jodalocaldate/JodaLocalDates-common.adoc       |  2 +-
 .../JodaLocalDateTimes-common.adoc                 |  2 +-
 .../booleans/PrimitiveBooleans-common.adoc         |  2 +-
 .../primitive/bytes/PrimitiveBytes-common.adoc     |  2 +-
 .../primitive/chars/PrimitiveChars-common.adoc     |  2 +-
 .../primitive/doubles/PrimitiveDoubles-common.adoc |  2 +-
 .../primitive/floats/PrimitiveFloats-common.adoc   |  2 +-
 .../types/primitive/ints/PrimitiveInts-common.adoc |  2 +-
 .../primitive/longs/PrimitiveLongs-common.adoc     | 14 ++++-
 .../longs/PrimitiveLongs-description.adoc          |  6 ++-
 .../dom/types/primitive/longs/PrimitiveLongs.java  | 15 +++---
 .../primitive/longs/PrimitiveLongs.layout.xml      |  2 +
 .../longs/holder/PrimitiveLongHolder.java          |  1 +
 .../longs/holder/PrimitiveLongHolder2.java         |  3 +-
 .../PrimitiveLongHolder_actionReturning.java       |  2 +-
 .../PrimitiveLongHolder_actionReturningArray.java  |  8 ++-
 .../holder/PrimitiveLongHolder_mixinProperty.java  |  2 +-
 ...PrimitiveLongHolder_updateReadOnlyProperty.java |  1 +
 ...ngHolder_updateReadOnlyPropertyWithChoices.java | 12 ++---
 .../longs/jdo/PrimitiveLongJdo-description.adoc    |  9 ++--
 .../primitive/longs/jdo/PrimitiveLongJdo.java      |  7 +--
 .../longs/jdo/PrimitiveLongJdoEntities.java        |  7 +--
 .../longs/jpa/PrimitiveLongJpa-description.adoc    | 16 +++---
 .../primitive/longs/jpa/PrimitiveLongJpa.java      |  7 +--
 .../longs/jpa/PrimitiveLongJpaEntities.java        |  7 +--
 .../longs/persistence/PrimitiveLongEntity.java     |  5 +-
 .../persistence/PrimitiveLongEntity.layout.xml     | 11 ++--
 .../longs/persistence/PrimitiveLongSeeding.java    |  6 ++-
 .../longs/vm/PrimitiveLongVm-description.adoc      | 11 ++--
 .../types/primitive/longs/vm/PrimitiveLongVm.java  |  7 +--
 .../primitive/longs/vm/PrimitiveLongVm.layout.xml  | 11 ++--
 .../primitive/shorts/PrimitiveShorts-common.adoc   |  2 +-
 .../demoshowcases/value/ValueTypeGenTemplate.java  | 62 ++++++++++++++++------
 .../src/main/resources/$Templates-common.adoc      |  2 +-
 ...ommon.adoc => $Templates-common~primitive.adoc} | 13 ++---
 .../$Templates-description~primitive.adoc          | 20 +++----
 ...teHolder_updateReadOnlyPropertyWithChoices.java |  4 +-
 .../holder/$TemplateHolder~primitive.java          | 15 +++---
 .../jdo/$TemplateJdo-description~primitive.adoc    |  9 ++--
 .../main/resources/jdo/$TemplateJdoEntities.java   |  4 +-
 .../main/resources/jdo/$TemplateJdo~primitive.java | 21 ++++----
 .../jpa/$TemplateJpa-description~primitive.adoc    | 14 ++---
 .../main/resources/jpa/$TemplateJpaEntities.java   |  4 +-
 .../main/resources/jpa/$TemplateJpa~primitive.java | 25 ++++-----
 .../$TemplateEntity~primitive.layout.xml           | 17 +++---
 .../vm/$TemplateVm-description~primitive.adoc      | 11 ++--
 .../main/resources/vm/$TemplateVm~primitive.java   | 23 ++++----
 .../resources/vm/$TemplateVm~primitive.layout.xml  | 17 +++---
 .../value/ValueTypeGenTemplateTest.java            | 10 ++--
 79 files changed, 305 insertions(+), 232 deletions(-)

diff --git a/commons/src/main/java/org/apache/isis/commons/internal/base/_Files.java b/commons/src/main/java/org/apache/isis/commons/internal/base/_Files.java
index 6dbcca2586..0e317fe55d 100644
--- a/commons/src/main/java/org/apache/isis/commons/internal/base/_Files.java
+++ b/commons/src/main/java/org/apache/isis/commons/internal/base/_Files.java
@@ -189,4 +189,24 @@ public class _Files {
         }
     }
 
+    /**
+     * Optionally given file, based on whether non-null and exists and is a file (not a directory).
+     */
+    public static Optional<File> existingFile(final @Nullable File file) {
+        return file!=null
+                && file.isFile()
+                ? Optional.of(file)
+                : Optional.empty();
+    }
+
+    /**
+     * Optionally given file, based on whether non-null and exists and is a directory (not a file).
+     */
+    public static Optional<File> existingDirectory(final @Nullable File file) {
+        return file!=null
+                && file.isDirectory()
+                ? Optional.of(file)
+                : Optional.empty();
+    }
+
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobs-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobs-common.adoc
index 540f6a0d57..507fb2150d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobs-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/IsisBlobs-common.adoc
@@ -61,6 +61,6 @@ include::holder/IsisBlobHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobs-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobs-common.adoc
index 3367aa2d19..035f168200 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobs-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/IsisClobs-common.adoc
@@ -62,4 +62,4 @@ include::holder/IsisClobHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePaths-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePaths-common.adoc
index 5659eb23a8..8102ef94ee 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePaths-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/IsisLocalResourcePaths-common.adoc
@@ -62,4 +62,4 @@ include::holder/IsisLocalResourcePathHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/IsisMarkups-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/IsisMarkups-common.adoc
index 32e361314b..49e7dfaacc 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/IsisMarkups-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/IsisMarkups-common.adoc
@@ -62,4 +62,4 @@ include::holder/IsisMarkupHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/IsisPasswords-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/IsisPasswords-common.adoc
index 11f37379ff..27d5bdfecd 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/IsisPasswords-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/IsisPasswords-common.adoc
@@ -62,4 +62,4 @@ include::holder/IsisPasswordHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/IsisAsciiDocs-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/IsisAsciiDocs-common.adoc
index 153cd940f9..79ab2320db 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/IsisAsciiDocs-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/IsisAsciiDocs-common.adoc
@@ -62,4 +62,4 @@ include::holder/IsisAsciiDocHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns-common.adoc
index 05ad1d24a2..95a55216b0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns-common.adoc
@@ -62,4 +62,4 @@ include::holder/IsisMarkdownHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/WrapperBooleans-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/WrapperBooleans-common.adoc
index 3cb01be621..c51af28329 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/WrapperBooleans-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/WrapperBooleans-common.adoc
@@ -60,4 +60,4 @@ include::holder/WrapperBooleanHolder2.java[tags=class]
 <.> Using `@PropertyLayout(fieldSetId=...)` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
 <.> Position label on top
 <.> Position label to the right
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/WrapperBytes-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/WrapperBytes-common.adoc
index 4f74660e3e..b02562ce6e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/WrapperBytes-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/WrapperBytes-common.adoc
@@ -64,5 +64,5 @@ include::holder/WrapperByteHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/WrapperCharacters-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/WrapperCharacters-common.adoc
index 40c9ef7542..8e9c57140d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/WrapperCharacters-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/WrapperCharacters-common.adoc
@@ -62,4 +62,4 @@ include::holder/WrapperCharacterHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/WrapperDoubles-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/WrapperDoubles-common.adoc
index 1b1323af76..b8174f1d1b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/WrapperDoubles-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/WrapperDoubles-common.adoc
@@ -64,5 +64,5 @@ include::holder/WrapperDoubleHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/WrapperFloats-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/WrapperFloats-common.adoc
index d1b738f478..eef0f4a644 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/WrapperFloats-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/WrapperFloats-common.adoc
@@ -64,5 +64,5 @@ include::holder/WrapperFloatHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/WrapperIntegers-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/WrapperIntegers-common.adoc
index db269f212a..8f22a06658 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/WrapperIntegers-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/WrapperIntegers-common.adoc
@@ -64,5 +64,5 @@ include::holder/WrapperIntegerHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/WrapperLongs-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/WrapperLongs-common.adoc
index 8c4e7e45a6..32f218a080 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/WrapperLongs-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/WrapperLongs-common.adoc
@@ -64,5 +64,5 @@ include::holder/WrapperLongHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/WrapperShorts-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/WrapperShorts-common.adoc
index 1e85e3c551..a4e11d74cf 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/WrapperShorts-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/WrapperShorts-common.adoc
@@ -64,5 +64,5 @@ include::holder/WrapperShortHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/JavaLangStrings-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/JavaLangStrings-common.adoc
index 467c76fd1d..856896be52 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/JavaLangStrings-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/JavaLangStrings-common.adoc
@@ -62,4 +62,4 @@ include::holder/JavaLangStringHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/JavaMathBigDecimals-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/JavaMathBigDecimals-common.adoc
index 4b79023a23..99ad4b4973 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/JavaMathBigDecimals-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/JavaMathBigDecimals-common.adoc
@@ -62,4 +62,4 @@ include::holder/JavaMathBigDecimalHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/JavaMathBigIntegers-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/JavaMathBigIntegers-common.adoc
index 9b9c560beb..869b59e3fd 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/JavaMathBigIntegers-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/JavaMathBigIntegers-common.adoc
@@ -62,4 +62,4 @@ include::holder/JavaMathBigIntegerHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/JavaNetUrls-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/JavaNetUrls-common.adoc
index 0e58bf4c02..0c5bc653c3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/JavaNetUrls-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/JavaNetUrls-common.adoc
@@ -62,4 +62,4 @@ include::holder/JavaNetUrlHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/JavaSqlTimestamps-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/JavaSqlTimestamps-common.adoc
index 0fa8818cbd..c1b736117f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/JavaSqlTimestamps-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/JavaSqlTimestamps-common.adoc
@@ -62,7 +62,7 @@ include::holder/JavaSqlTimestampHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
 
 == @PropertyLayout(renderDay=...)
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/JavaTimeLocalDates-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/JavaTimeLocalDates-common.adoc
index fbea379d2b..0acbc3cec4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/JavaTimeLocalDates-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/JavaTimeLocalDates-common.adoc
@@ -62,7 +62,7 @@ include::holder/JavaTimeLocalDateHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
 
 == @PropertyLayout(renderDay=...)
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldatetime/JavaTimeLocalDateTimes-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldatetime/JavaTimeLocalDateTimes-common.adoc
index 166997c74a..c42ab5be48 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldatetime/JavaTimeLocalDateTimes-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldatetime/JavaTimeLocalDateTimes-common.adoc
@@ -62,7 +62,7 @@ include::holder/JavaTimeLocalDateTimeHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
 == @PropertyLayout(renderDay=...)
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaltime/JavaTimeLocalTimes-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaltime/JavaTimeLocalTimes-common.adoc
index 6496a2d4a5..504cf03ac8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaltime/JavaTimeLocalTimes-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaltime/JavaTimeLocalTimes-common.adoc
@@ -62,7 +62,7 @@ include::holder/JavaTimeLocalTimeHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
 == @PropertyLayout(renderDay=...)
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsetdatetime/JavaTimeOffsetDateTimes-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsetdatetime/JavaTimeOffsetDateTimes-common.adoc
index 1330825852..629fc7c64c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsetdatetime/JavaTimeOffsetDateTimes-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsetdatetime/JavaTimeOffsetDateTimes-common.adoc
@@ -62,7 +62,7 @@ include::holder/JavaTimeOffsetDateTimeHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
 
 == @PropertyLayout(renderDay=...)
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsettime/JavaTimeOffsetTimes-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsettime/JavaTimeOffsetTimes-common.adoc
index 46ef21c5ca..eae7388dcb 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsettime/JavaTimeOffsetTimes-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsettime/JavaTimeOffsetTimes-common.adoc
@@ -62,7 +62,7 @@ include::holder/JavaTimeOffsetTimeHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
 
 == @PropertyLayout(renderDay=...)
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimezoneddatetime/JavaTimeZonedDateTimes-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimezoneddatetime/JavaTimeZonedDateTimes-common.adoc
index 147cfe25b4..1e0111fbc6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimezoneddatetime/JavaTimeZonedDateTimes-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimezoneddatetime/JavaTimeZonedDateTimes-common.adoc
@@ -62,7 +62,7 @@ include::holder/JavaTimeZonedDateTimeHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
 
 == @PropertyLayout(renderDay=...)
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/javautildate/JavaUtilDates-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/javautildate/JavaUtilDates-common.adoc
index afaceec399..c63eef6f07 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/javautildate/JavaUtilDates-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/javautildate/JavaUtilDates-common.adoc
@@ -62,7 +62,7 @@ include::holder/JavaUtilDateHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
 == @PropertyLayout(renderDay=...)
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/uuids/JavaUtilUuids-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/uuids/JavaUtilUuids-common.adoc
index 2aa125f646..8fd67b06db 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/uuids/JavaUtilUuids-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/uuids/JavaUtilUuids-common.adoc
@@ -64,5 +64,5 @@ include::holder/JavaUtilUuidHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodadatetime/JodaDateTimes-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodadatetime/JodaDateTimes-common.adoc
index e48948a2c4..4ad9c5e8da 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodadatetime/JodaDateTimes-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodadatetime/JodaDateTimes-common.adoc
@@ -62,7 +62,7 @@ include::holder/JodaDateTimeHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
 
 == @PropertyLayout(renderDay=...)
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaldate/JodaLocalDates-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaldate/JodaLocalDates-common.adoc
index 69fd97d012..895c77fbed 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaldate/JodaLocalDates-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaldate/JodaLocalDates-common.adoc
@@ -62,7 +62,7 @@ include::holder/JodaLocalDateHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
 
 == @PropertyLayout(renderDay=...)
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaldatetime/JodaLocalDateTimes-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaldatetime/JodaLocalDateTimes-common.adoc
index 24f573dd77..fa61d3f21c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaldatetime/JodaLocalDateTimes-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaldatetime/JodaLocalDateTimes-common.adoc
@@ -62,7 +62,7 @@ include::holder/JodaLocalDateTimeHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
 
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/PrimitiveBooleans-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/PrimitiveBooleans-common.adoc
index a339e7e4fc..8bc70a1192 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/PrimitiveBooleans-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/PrimitiveBooleans-common.adoc
@@ -44,4 +44,4 @@ include::holder/PrimitiveBooleanHolder2.java[tags=class]
 <.> Using `@PropertyLayout(fieldSetId=...)` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
 <.> Position label on top
 <.> Position label to the right
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes-common.adoc
index 20c876a5b2..302ab96b65 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes-common.adoc
@@ -46,4 +46,4 @@ include::holder/PrimitiveByteHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars-common.adoc
index ea01d3ba75..72b7030832 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars-common.adoc
@@ -46,4 +46,4 @@ include::holder/PrimitiveCharHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/PrimitiveDoubles-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/PrimitiveDoubles-common.adoc
index 300d895fba..b2c5aff35b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/PrimitiveDoubles-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/PrimitiveDoubles-common.adoc
@@ -46,4 +46,4 @@ include::holder/PrimitiveDoubleHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/PrimitiveFloats-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/PrimitiveFloats-common.adoc
index a29e072a4e..e92dfb02e1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/PrimitiveFloats-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/PrimitiveFloats-common.adoc
@@ -46,4 +46,4 @@ include::holder/PrimitiveFloatHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts-common.adoc
index 658ad20c2f..a233da12e0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts-common.adoc
@@ -46,4 +46,4 @@ include::holder/PrimitiveIntHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs-common.adoc
index 8615ad6ff1..43e3e36c1d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs-common.adoc
@@ -1,5 +1,7 @@
 :Notice: 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 ag [...]
 
+// // This file was GENERATED by the showcase generator (tooling). Do NOT edit!
+
 == Mixin actions
 
 A number of mixin actions contribute through the `PrimitiveLongHolder` interface, demonstrate the use of `long` as a parameter and as a return type.
@@ -19,6 +21,14 @@ include::holder/PrimitiveLongHolder_updateReadOnlyProperty.java[tags=class]
 include::holder/PrimitiveLongHolder_actionReturning.java[tags=class]
 ----
 
+
+* the `actionReturningArray` action is:
++
+[source,java]
+----
+include::holder/PrimitiveLongHolder_actionReturningArray.java[tags=class]
+----
+
 == Mixin properties
 
 We also use the interface to contribute a mixin property:
@@ -30,6 +40,7 @@ We also use the interface to contribute a mixin property:
 include::holder/PrimitiveLongHolder_mixinProperty.java[tags=class]
 ----
 
+
 == @PropertyLayout(labelPosition=...)
 
 To demonstrate support for label positions using `@PropertyLayout(labelPosition=...)`, the entity and view model objects both implement the extended `PrimitiveLongHolder2` interface:
@@ -46,4 +57,5 @@ include::holder/PrimitiveLongHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs-description.adoc
index 987cfbe0c6..0b40941924 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs-description.adoc
@@ -1,6 +1,8 @@
 :Notice: 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 ag [...]
 
-The framework has built-in support for all of the primitive data types, including `long`.
+// // This file was GENERATED by the showcase generator (tooling). Do NOT edit!
+
+The framework has built-in support for the (primitive) `long` data type.
 
 From here you can:
 
@@ -26,4 +28,4 @@ include::holder/PrimitiveLongHolder.java[tags=class]
 
 The `PrimitiveLongHolder2` interface is used to demonstrate support for label positions using `@PropertyLayout(labelPosition=...)`.
 
-Further details, along with the effect of this annotation, can be seen on the entity and view model object pages.
\ No newline at end of file
+Further details, along with the effect of this annotation, can be seen on the entity and view model object pages.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs.java
index 78ceff61b5..4c22bdb4b4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs.java
@@ -41,21 +41,21 @@ import org.apache.isis.applib.annotation.SemanticsOf;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
+import demoapp.dom.types.Samples;
 import demoapp.dom.types.primitive.longs.persistence.PrimitiveLongEntity;
 import demoapp.dom.types.primitive.longs.vm.PrimitiveLongVm;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @XmlRootElement(name = "Demo")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @Named("demo.PrimitiveLongs")
-@DomainObject(
-        nature=Nature.VIEW_MODEL,
-        editing=Editing.ENABLED)
+@DomainObject(nature=Nature.VIEW_MODEL, editing=Editing.ENABLED)
 //@Log4j2
 public class PrimitiveLongs implements HasAsciiDocDescription {
 
     @ObjectSupport public String title() {
-        return "long (primitive) data type";
+        return "long data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
@@ -64,7 +64,7 @@ public class PrimitiveLongs implements HasAsciiDocDescription {
         return new PrimitiveLongVm(initialValue);
     }
     @MemberSupport public long default0OpenViewModel() {
-        return 123_456_789_012L;
+        return samples.single();
     }
 
     @Collection
@@ -74,7 +74,10 @@ public class PrimitiveLongs implements HasAsciiDocDescription {
 
     @Inject
     @XmlTransient
-    ValueHolderRepository<Long, ? extends PrimitiveLongEntity> entities;
+    ValueHolderRepository<java.lang.Long, ? extends PrimitiveLongEntity> entities;
 
+    @Inject
+    @XmlTransient
+    Samples<java.lang.Long> samples;
 
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs.layout.xml
index 74e0160a87..247ed17506 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs.layout.xml
@@ -15,6 +15,8 @@
         xmlns:cpt="http://isis.apache.org/applib/layout/component"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
+	<!-- This file was GENERATED by the showcase generator (tooling). Do NOT edit! -->
+
 	<bs3:row>
 		<bs3:col span="10" unreferencedActions="true">
 			<cpt:domainObject />
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder.java
index 2b04da6ae2..1171c07c45 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.primitive.longs.holder;
 
 import javax.inject.Named;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Named("demo.PrimitiveLongHolder")
 //tag::class[]
 public interface PrimitiveLongHolder {
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder2.java
index 38a04e8f00..8b38448e86 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder2.java
@@ -23,6 +23,7 @@ import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 //tag::class[]
 public interface PrimitiveLongHolder2 extends PrimitiveLongHolder {
 
@@ -32,7 +33,7 @@ public interface PrimitiveLongHolder2 extends PrimitiveLongHolder {
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
         hidden = Where.ALL_TABLES,
-        fieldSetId = "label-positions", sequence = "1")  // <.>
+        fieldSetId = "label-positions", sequence = "1")     // <.>
     default long getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_actionReturning.java
index 14a046fb54..95a2813cb3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_actionReturning.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_actionReturning.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
 
-
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 //tag::class[]
 @Action(semantics = SemanticsOf.SAFE)
 @RequiredArgsConstructor
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_actionReturningArray.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_actionReturningArray.java
index 619c15c182..27ef5a8b7a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_actionReturningArray.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_actionReturningArray.java
@@ -24,13 +24,11 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.commons.functional.IndexedConsumer;
 
+import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
-import demoapp.dom.types.Samples;
-
-
-@SuppressWarnings("unused")
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 //tag::class[]
 @Action(semantics = SemanticsOf.SAFE)
 @RequiredArgsConstructor
@@ -46,7 +44,7 @@ public class PrimitiveLongHolder_actionReturningArray {
     }
 
     @Inject
-    Samples<Long> samples;
+    Samples<java.lang.Long> samples;
 
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_mixinProperty.java
index f83be24c2c..a47dd8e474 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_mixinProperty.java
@@ -24,7 +24,7 @@ import org.apache.isis.applib.annotation.Where;
 
 import lombok.RequiredArgsConstructor;
 
-
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 //tag::class[]
 @Property()
 @PropertyLayout(hidden = Where.ALL_TABLES, fieldSetId = "contributed", sequence = "1")
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyProperty.java
index f4d873a76e..74a76e7ed8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyProperty.java
@@ -26,6 +26,7 @@ import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyWithChoices.java
index 78e4924ba3..d550633997 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyWithChoices.java
@@ -29,10 +29,10 @@ import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
-import lombok.RequiredArgsConstructor;
-
 import demoapp.dom.types.Samples;
+import lombok.RequiredArgsConstructor;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -56,17 +56,13 @@ public class PrimitiveLongHolder_updateReadOnlyPropertyWithChoices {
         return holder.getReadOnlyProperty();
     }
 
-    @MemberSupport public List<Long> choices0Act() {
+    @MemberSupport public List<java.lang.Long> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
     }
 
-    @MemberSupport public boolean hideAct() {
-        return true; // TODO: choices doesn't seem to work for this datatype
-    }
-
     @Inject
-    Samples<Long> samples;
+    Samples<java.lang.Long> samples;
 
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdo-description.adoc
index feaeb25096..454a51af0a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdo-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdo-description.adoc
@@ -1,14 +1,15 @@
 :Notice: 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 ag [...]
 
-JDO supports `long` link:http://www.datanucleus.org:15080/products/accessplatform_5_2/jdo/mapping.html#_primitive_and_java_lang_types[out-of-the-box], so no special annotations are required.
+// // This file was GENERATED by the showcase generator (tooling). Do NOT edit!
+
+JDO supports `long` out-of-the-box, so no special annotations are required. see link:https://www.datanucleus.org/products/accessplatform_6_0/jdo/mapping.html#_primitive_and_java_lang_types[DataNucleus]
 
 [source,java]
 ----
-include::PrimitiveLongJdo.java[tags="class"]
+include::PrimitiveLongJdo.java[tags=class]
 ----
 <.> a no-arg constructor is introduced by JDO enhancer
 <.> no additional JDO annotations required.
 
 
-
-include::../PrimitiveLongs-common.adoc[]
\ No newline at end of file
+include::../PrimitiveLongs-common.adoc[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdo.java
index 79b3d4d607..3e2978a633 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdo.java
@@ -37,13 +37,14 @@ import lombok.Setter;
 
 import demoapp.dom.types.primitive.longs.persistence.PrimitiveLongEntity;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Profile("demo-jdo")
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
 @DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
 @Named("demo.PrimitiveLongEntity")
 @DomainObject
-public class PrimitiveLongJdo                                       // <.>
+public class PrimitiveLongJdo                                          // <.>
         extends PrimitiveLongEntity {
 
 //end::class[]
@@ -56,9 +57,9 @@ public class PrimitiveLongJdo                                       // <.>
     @Title(prepend = "long (primitive) JDO entity: ")
     @PropertyLayout(fieldSetId = "read-only-properties", sequence = "1")
     @Getter @Setter
-    private long readOnlyProperty;                                  // <.>
+    private long readOnlyProperty;                             // <.>
 
-    @Property(editing = Editing.ENABLED)
+    @Property(editing = Editing.ENABLED)                                        
     @PropertyLayout(fieldSetId = "editable-properties", sequence = "1")
     @Getter @Setter
     private long readWriteProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntities.java
index 31780fd88c..8c00749689 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntities.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntities.java
@@ -23,18 +23,19 @@ import org.springframework.stereotype.Service;
 
 import demoapp.dom._infra.values.ValueHolderRepository;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Profile("demo-jdo")
 @Service
 public class PrimitiveLongJdoEntities
-extends ValueHolderRepository<Long, PrimitiveLongJdo> {
+extends ValueHolderRepository<java.lang.Long, PrimitiveLongJdo> {
 
     protected PrimitiveLongJdoEntities() {
         super(PrimitiveLongJdo.class);
     }
 
     @Override
-    protected PrimitiveLongJdo newDetachedEntity(Long value) {
+    protected PrimitiveLongJdo newDetachedEntity(java.lang.Long value) {
         return new PrimitiveLongJdo(value);
     }
 
-}
\ No newline at end of file
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jpa/PrimitiveLongJpa-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jpa/PrimitiveLongJpa-description.adoc
index 4c19009013..04116fe2ca 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jpa/PrimitiveLongJpa-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jpa/PrimitiveLongJpa-description.adoc
@@ -1,19 +1,15 @@
 :Notice: 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 ag [...]
 
-[WARNING]
-==== 
-TODO this yet is just a copy from JDO
-====
+// // This file was GENERATED by the showcase generator (tooling). Do NOT edit!
 
-JDO supports `long` link:http://www.datanucleus.org:15080/products/accessplatform_5_2/jdo/mapping.html#_primitive_and_java_lang_types[out-of-the-box], so no special annotations are required.
+JDO supports `long` out-of-the-box, so no special annotations are required. see link:https://www.objectdb.com/java/jpa/entity/types#simple_java_data_types[ObjectDB]
 
 [source,java]
 ----
-include::PrimitiveLongJpa.java[tags="class"]
+include::PrimitiveLongJpa.java[tags=class]
 ----
-<.> a no-arg constructor is introduced by JDO enhancer
-<.> no additional JDO annotations required.
+<.> a no-arg constructor for convenience
+<.> no additional JPA annotations required.
 
 
-
-include::../PrimitiveLongs-common.adoc[]
\ No newline at end of file
+include::../PrimitiveLongs-common.adoc[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jpa/PrimitiveLongJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jpa/PrimitiveLongJpa.java
index c37afeaf00..8b1f0a6f0e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jpa/PrimitiveLongJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jpa/PrimitiveLongJpa.java
@@ -40,6 +40,7 @@ import lombok.Setter;
 
 import demoapp.dom.types.primitive.longs.persistence.PrimitiveLongEntity;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Profile("demo-jpa")
 //tag::class[]
 @Entity
@@ -50,7 +51,7 @@ import demoapp.dom.types.primitive.longs.persistence.PrimitiveLongEntity;
 @EntityListeners(IsisEntityListener.class)
 @Named("demo.PrimitiveLongEntity")
 @DomainObject
-@NoArgsConstructor
+@NoArgsConstructor                                                             // <.>
 public class PrimitiveLongJpa
         extends PrimitiveLongEntity {
 
@@ -68,9 +69,9 @@ public class PrimitiveLongJpa
     @Title(prepend = "long (primitive) JPA entity: ")
     @PropertyLayout(fieldSetId = "read-only-properties", sequence = "1")
     @Getter @Setter
-    private long readOnlyProperty;                                  // <.>
+    private long readOnlyProperty;                              // <.>
 
-    @Property(editing = Editing.ENABLED)
+    @Property(editing = Editing.ENABLED)                                        
     @PropertyLayout(fieldSetId = "editable-properties", sequence = "1")
     @Getter @Setter
     private long readWriteProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jpa/PrimitiveLongJpaEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jpa/PrimitiveLongJpaEntities.java
index 621bf5515f..309b4c2290 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jpa/PrimitiveLongJpaEntities.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jpa/PrimitiveLongJpaEntities.java
@@ -23,18 +23,19 @@ import org.springframework.stereotype.Service;
 
 import demoapp.dom._infra.values.ValueHolderRepository;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Profile("demo-jpa")
 @Service
 public class PrimitiveLongJpaEntities
-extends ValueHolderRepository<Long, PrimitiveLongJpa> {
+extends ValueHolderRepository<java.lang.Long, PrimitiveLongJpa> {
 
     protected PrimitiveLongJpaEntities() {
         super(PrimitiveLongJpa.class);
     }
 
     @Override
-    protected PrimitiveLongJpa newDetachedEntity(Long value) {
+    protected PrimitiveLongJpa newDetachedEntity(java.lang.Long value) {
         return new PrimitiveLongJpa(value);
     }
 
-}
\ No newline at end of file
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/persistence/PrimitiveLongEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/persistence/PrimitiveLongEntity.java
index 0ed64aefb6..7c37af0005 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/persistence/PrimitiveLongEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/persistence/PrimitiveLongEntity.java
@@ -26,16 +26,17 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolder;
 import demoapp.dom.types.primitive.longs.holder.PrimitiveLongHolder2;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Named("demo.PrimitiveLongEntity") // shared permissions with concrete sub class
 @DomainObject
 public abstract class PrimitiveLongEntity
 implements
     HasAsciiDocDescription,
     PrimitiveLongHolder2,
-    ValueHolder<Long> {
+    ValueHolder<java.lang.Long> {
 
     @Override
-    public Long value() {
+    public java.lang.Long value() {
         return getReadOnlyProperty();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/persistence/PrimitiveLongEntity.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/persistence/PrimitiveLongEntity.layout.xml
index c4a5e15c62..bf6c6ddd0c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/persistence/PrimitiveLongEntity.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/persistence/PrimitiveLongEntity.layout.xml
@@ -10,15 +10,18 @@
 	OF ANY KIND, either express or implied. See the License for the specific
 	language governing permissions and limitations under the License. -->
 <bs3:grid
-		xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd   http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
-		xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3"
-		xmlns:cpt="http://isis.apache.org/applib/layout/component"
-		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+        xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd   http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
+        xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3"
+        xmlns:cpt="http://isis.apache.org/applib/layout/component"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+	<!-- This file was GENERATED by the showcase generator (tooling). Do NOT edit! -->
 
 	<bs3:row>
 		<bs3:col span="10" unreferencedActions="true">
 			<cpt:domainObject />
 			<cpt:action id="actionReturning"/>
+			<cpt:action id="actionReturningArray"/>
 		</bs3:col>
 		<bs3:col span="2">
 			<cpt:fieldSet name="" id="sources" />
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/persistence/PrimitiveLongSeeding.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/persistence/PrimitiveLongSeeding.java
index 29ba173ff3..5ba2947409 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/persistence/PrimitiveLongSeeding.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/persistence/PrimitiveLongSeeding.java
@@ -25,11 +25,13 @@ import org.springframework.stereotype.Service;
 import demoapp.dom._infra.seed.SeedServiceAbstract;
 import demoapp.dom._infra.values.ValueHolderRepository;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Service
-public class PrimitiveLongSeeding extends SeedServiceAbstract {
+public class PrimitiveLongSeeding
+extends SeedServiceAbstract {
 
     @Inject
-    public PrimitiveLongSeeding(ValueHolderRepository<Long, ? extends PrimitiveLongEntity> entities) {
+    public PrimitiveLongSeeding(ValueHolderRepository<java.lang.Long, ? extends PrimitiveLongEntity> entities) {
         super(entities);
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm-description.adoc
index fb15c523bb..f8c28d7e37 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm-description.adoc
@@ -1,15 +1,14 @@
 :Notice: 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 ag [...]
 
-JAXB supports `long` link:https://docs.oracle.com/cd/E12840_01/wls/docs103/webserv/data_types.html#wp223908[out-of-the-box], so no special annotations are required.
+// // This file was GENERATED by the showcase generator (tooling). Do NOT edit!
+
+JAXB supports `long` out-of-the-box, so no special annotations are required. see link:https://docs.oracle.com/cd/E12840_01/wls/docs103/webserv/data_types.html#wp223908[Oracle]
 
 [source,java]
 ----
-include::PrimitiveLongVm.java[tags="class"]
+include::PrimitiveLongVm.java[tags=class]
 ----
 <.> a no-arg constructor is required by JAXB
 <.> no additional JAXB annotations required.
 
-
-
-
-include::../PrimitiveLongs-common.adoc[]
\ No newline at end of file
+include::../PrimitiveLongs-common.adoc[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm.java
index 1dfd0f07d9..85092a5532 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm.java
@@ -37,6 +37,7 @@ import lombok.Setter;
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.primitive.longs.holder.PrimitiveLongHolder2;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -44,7 +45,7 @@ import demoapp.dom.types.primitive.longs.holder.PrimitiveLongHolder2;
 @Named("demo.PrimitiveLongVm")
 @DomainObject(
         nature=Nature.VIEW_MODEL)
-@lombok.NoArgsConstructor                                           // <.>
+@lombok.NoArgsConstructor                                                       // <.>
 public class PrimitiveLongVm
         implements HasAsciiDocDescription, PrimitiveLongHolder2 {
 
@@ -58,9 +59,9 @@ public class PrimitiveLongVm
     @Title(prepend = "long (primitive) view model: ")
     @PropertyLayout(fieldSetId = "read-only-properties", sequence = "1")
     @Getter @Setter
-    private long readOnlyProperty;                                  // <.>
+    private long readOnlyProperty;                              // <.>
 
-    @Property(editing = Editing.ENABLED)
+    @Property(editing = Editing.ENABLED)                                        
     @PropertyLayout(fieldSetId = "editable-properties", sequence = "1")
     @Getter @Setter
     private long readWriteProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm.layout.xml
index c4a5e15c62..bf6c6ddd0c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm.layout.xml
@@ -10,15 +10,18 @@
 	OF ANY KIND, either express or implied. See the License for the specific
 	language governing permissions and limitations under the License. -->
 <bs3:grid
-		xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd   http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
-		xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3"
-		xmlns:cpt="http://isis.apache.org/applib/layout/component"
-		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+        xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd   http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
+        xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3"
+        xmlns:cpt="http://isis.apache.org/applib/layout/component"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+	<!-- This file was GENERATED by the showcase generator (tooling). Do NOT edit! -->
 
 	<bs3:row>
 		<bs3:col span="10" unreferencedActions="true">
 			<cpt:domainObject />
 			<cpt:action id="actionReturning"/>
+			<cpt:action id="actionReturningArray"/>
 		</bs3:col>
 		<bs3:col span="2">
 			<cpt:fieldSet name="" id="sources" />
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/PrimitiveShorts-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/PrimitiveShorts-common.adoc
index 1956da4809..f87eb75420 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/PrimitiveShorts-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/PrimitiveShorts-common.adoc
@@ -46,4 +46,4 @@ include::holder/PrimitiveShortHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
diff --git a/tooling/metaprog/src/main/java/org/apache/isis/tooling/metaprog/demoshowcases/value/ValueTypeGenTemplate.java b/tooling/metaprog/src/main/java/org/apache/isis/tooling/metaprog/demoshowcases/value/ValueTypeGenTemplate.java
index 8018ceae54..677d2776b4 100644
--- a/tooling/metaprog/src/main/java/org/apache/isis/tooling/metaprog/demoshowcases/value/ValueTypeGenTemplate.java
+++ b/tooling/metaprog/src/main/java/org/apache/isis/tooling/metaprog/demoshowcases/value/ValueTypeGenTemplate.java
@@ -24,16 +24,19 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 import java.util.function.Consumer;
-import java.util.function.Predicate;
+import java.util.stream.Stream;
 
 import org.springframework.util.ClassUtils;
 
-import org.apache.isis.commons.internal.assertions._Assert;
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.base._Files;
 import org.apache.isis.commons.internal.base._Refs;
+import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.base._Text;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
 
 import lombok.Builder;
+import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.Singular;
 import lombok.Value;
@@ -65,11 +68,9 @@ public class ValueTypeGenTemplate {
         @Singular
         final Map<String, String> templateVariables = new HashMap<>();
         @Builder.Default
-        final Predicate<Template> templatePredicate = template->template != Template.HOLDER_ACTION_RETURNING_ARRAY;
-
-        final boolean accepts(final Template template) {
-            return templatePredicate.test(template);
-        }
+        final Can<Template> templates = Template.REGULAR_SET;
+        @Builder.Default
+        final TemplateVariant templateVariant = TemplateVariant.DEFAULT;
     }
 
     @RequiredArgsConstructor
@@ -100,6 +101,14 @@ public class ValueTypeGenTemplate {
         abstract String formatAsTemplateVar(String key);
     }
 
+    @RequiredArgsConstructor
+    enum TemplateVariant {
+        DEFAULT(""),
+        PRIMITIVE("~primitive"),
+        ;
+        @Getter private final String suffix;
+    }
+
     @RequiredArgsConstructor
     enum Template {
         HOLDER("holder/%sHolder", Generator.JAVA),
@@ -130,8 +139,16 @@ public class ValueTypeGenTemplate {
         COLLECTION_LAYOUT("%ss", Generator.LAYOUT),
         ENTITY_LAYOUT("persistence/%sEntity", Generator.LAYOUT),
         VIEWMODEL_LAYOUT("vm/%sVm", Generator.LAYOUT)
-
         ;
+
+        public static Can<Template> REGULAR_SET = Can.ofArray(Template.values())
+            .remove(HOLDER_ACTION_RETURNING_ARRAY);
+
+        public static Can<Template> PRIMITIVE_SET = Can.ofArray(Template.values())
+                .remove(HOLDER_ACTION_RETURNING_COLLECTION)
+                .remove(HOLDER_UPDATE_READONLY_OPTIONAL_PROPERTY)
+                .remove(Template.SAMPLES);
+
         private final String pathTemplate;
         private final Generator generator;
         private final File file(final Config config) {
@@ -140,11 +157,22 @@ public class ValueTypeGenTemplate {
                     + generator.fileSuffix)
                     .getAbsoluteFile();
         }
-        private final File template(final Config config) {
-            return new File("src/main/resources",
+        private final File templateFile(final Config config) {
+            return _Files.existingFile(templateFile(config, config.templateVariant)) // existence is optional
+                    .orElseGet(()->{
+                        // existence is mandatory
+                        val defaultTemplateFile = templateFile(config, TemplateVariant.DEFAULT);
+                        return _Files.existingFile(defaultTemplateFile)
+                                .orElseThrow(()->_Exceptions.noSuchElement("template %s not found", defaultTemplateFile));
+                    });
+        }
+        private final File templateFile(final Config config, final TemplateVariant templateVariant) {
+            val templateFile = new File("src/main/resources",
                     String.format(pathTemplate, config.fileNamePlaceholderForShowcaseName)
+                    + templateVariant.suffix
                     + generator.fileSuffix)
                     .getAbsoluteFile();
+            return templateFile;
         }
         private final String javaPackage(final Config config) {
             return Optional.ofNullable(new File(String.format(pathTemplate, "X")).getParent())
@@ -175,14 +203,9 @@ public class ValueTypeGenTemplate {
 
     public void generate(final Consumer<File> onSourceGenerated) {
 
-        for(var template: Template.values()) {
-            if(!config.accepts(template)) {
-                continue;
-            }
-
-            val templateFile = template.template(config);
+        for(var template: config.getTemplates()) {
 
-            _Assert.assertTrue(templateFile.exists(), ()->String.format("template %s not found", templateFile));
+            val templateFile = template.templateFile(config);
 
             val genTarget = template.file(config);
 
@@ -210,6 +233,11 @@ public class ValueTypeGenTemplate {
             // that is referenced (template) files should exist
             if(template.generator.isDoc()) {
                 templateVars.putRaw("$Template", config.showcaseName);
+                // purge any TemplateVariant occurrences in ADOC templates
+                Stream.of(TemplateVariant.values())
+                .map(TemplateVariant::getSuffix)
+                .filter(_Strings::isNotEmpty)
+                .forEach(variantSuffix->templateVars.putRaw(variantSuffix, ""));
             }
 
             generateFromTemplate(templateVars, templateFile, genTarget);
diff --git a/tooling/metaprog/src/main/resources/$Templates-common.adoc b/tooling/metaprog/src/main/resources/$Templates-common.adoc
index 16088f3ffe..2636730940 100644
--- a/tooling/metaprog/src/main/resources/$Templates-common.adoc
+++ b/tooling/metaprog/src/main/resources/$Templates-common.adoc
@@ -64,5 +64,5 @@ include::holder/$TemplateHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
diff --git a/tooling/metaprog/src/main/resources/$Templates-common.adoc b/tooling/metaprog/src/main/resources/$Templates-common~primitive.adoc
similarity index 87%
copy from tooling/metaprog/src/main/resources/$Templates-common.adoc
copy to tooling/metaprog/src/main/resources/$Templates-common~primitive.adoc
index 16088f3ffe..4f361e493c 100644
--- a/tooling/metaprog/src/main/resources/$Templates-common.adoc
+++ b/tooling/metaprog/src/main/resources/$Templates-common~primitive.adoc
@@ -14,13 +14,6 @@ For example:
 include::holder/$TemplateHolder_updateReadOnlyProperty.java[tags=class]
 ----
 
-* the `updateReadOnlyOptionalProperty` action is:
-+
-[source,java]
-----
-include::holder/$TemplateHolder_updateReadOnlyOptionalProperty.java[tags=class]
-----
-
 * the `actionReturning` action is:
 +
 [source,java]
@@ -29,11 +22,11 @@ include::holder/$TemplateHolder_actionReturning.java[tags=class]
 ----
 
 
-* the `actionReturningCollection` action is:
+* the `actionReturningArray` action is:
 +
 [source,java]
 ----
-include::holder/$TemplateHolder_actionReturningCollection.java[tags=class]
+include::holder/$TemplateHolder_actionReturningArray.java[tags=class]
 ----
 
 == Mixin properties
@@ -64,5 +57,5 @@ include::holder/$TemplateHolder2.java[tags=class]
 <.> Position label to the right
 +
 CAUTION: currently not supported
-<.> Hide the label compleely.
+<.> Hide the label completely.
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs-description.adoc b/tooling/metaprog/src/main/resources/$Templates-description~primitive.adoc
similarity index 56%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs-description.adoc
copy to tooling/metaprog/src/main/resources/$Templates-description~primitive.adoc
index 987cfbe0c6..dc9174da6e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs-description.adoc
+++ b/tooling/metaprog/src/main/resources/$Templates-description~primitive.adoc
@@ -1,29 +1,31 @@
 :Notice: 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 ag [...]
 
-The framework has built-in support for all of the primitive data types, including `long`.
+//#{generated-file-notice}
+
+The framework has built-in support for the (primitive) `#{showcase-type}` data type.
 
 From here you can:
 
-* navigate to an entity that uses the `long` datatype
-* open a view model that uses the `long` datatype
+* navigate to an entity that uses the `#{showcase-type}` datatype
+* open a view model that uses the `#{showcase-type}` datatype
 
-Because `long` is a primitive value, the properties on these domain objects are mandatory.
+Because `#{showcase-type}` is a primitive value, the properties on these domain objects are mandatory.
 
 == Common interfaces
 
 The entity and view model types both implement some common interfaces.
 
-=== PrimitiveLongHolder
+=== #{showcase-name}Holder
 
-The `PrimitiveLongHolder` interface is used to contribute a number of mixins to both types:
+The `#{showcase-name}Holder` interface is used to contribute a number of mixins to both types:
 
 [source,java]
 ----
-include::holder/PrimitiveLongHolder.java[tags=class]
+include::holder/$TemplateHolder~primitive.java[tags=class]
 ----
 
-=== PrimitiveLongHolder2
+=== #{showcase-name}Holder2
 
-The `PrimitiveLongHolder2` interface is used to demonstrate support for label positions using `@PropertyLayout(labelPosition=...)`.
+The `#{showcase-name}Holder2` interface is used to demonstrate support for label positions using `@PropertyLayout(labelPosition=...)`.
 
 Further details, along with the effect of this annotation, can be seen on the entity and view model object pages.
\ No newline at end of file
diff --git a/tooling/metaprog/src/main/resources/holder/$TemplateHolder_updateReadOnlyPropertyWithChoices.java b/tooling/metaprog/src/main/resources/holder/$TemplateHolder_updateReadOnlyPropertyWithChoices.java
index 3dde506730..425c85ebf3 100644
--- a/tooling/metaprog/src/main/resources/holder/$TemplateHolder_updateReadOnlyPropertyWithChoices.java
+++ b/tooling/metaprog/src/main/resources/holder/$TemplateHolder_updateReadOnlyPropertyWithChoices.java
@@ -56,13 +56,13 @@ public class /*${showcase-name}*/Holder_updateReadOnlyPropertyWithChoices {
         return holder.getReadOnlyProperty();
     }
 
-    @MemberSupport public List</*${showcase-type}*/> choices0Act() {
+    @MemberSupport public List</*${showcase-type-boxed}*/> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
     }
 
     @Inject
-    Samples</*${showcase-type}*/> samples;
+    Samples</*${showcase-type-boxed}*/> samples;
 
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder.java b/tooling/metaprog/src/main/resources/holder/$TemplateHolder~primitive.java
similarity index 71%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder.java
copy to tooling/metaprog/src/main/resources/holder/$TemplateHolder~primitive.java
index 2b04da6ae2..86f09406a6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder.java
+++ b/tooling/metaprog/src/main/resources/holder/$TemplateHolder~primitive.java
@@ -16,19 +16,20 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.types.primitive.longs.holder;
+package /*${java-package}*/;
 
 import javax.inject.Named;
 
-@Named("demo.PrimitiveLongHolder")
+/*${generated-file-notice}*/
+@Named("demo./*${showcase-name}*/Holder")
 //tag::class[]
-public interface PrimitiveLongHolder {
+public interface /*${showcase-name}*/Holder {
 
-    long getReadOnlyProperty();
-    void setReadOnlyProperty(long c);
+    /*${showcase-type}*/ getReadOnlyProperty();
+    void setReadOnlyProperty(/*${showcase-type}*/ c);
 
-    long getReadWriteProperty();
-    void setReadWriteProperty(long c);
+    /*${showcase-type}*/ getReadWriteProperty();
+    void setReadWriteProperty(/*${showcase-type}*/ c);
 
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdo-description.adoc b/tooling/metaprog/src/main/resources/jdo/$TemplateJdo-description~primitive.adoc
similarity index 76%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdo-description.adoc
copy to tooling/metaprog/src/main/resources/jdo/$TemplateJdo-description~primitive.adoc
index feaeb25096..25a4dc18f6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdo-description.adoc
+++ b/tooling/metaprog/src/main/resources/jdo/$TemplateJdo-description~primitive.adoc
@@ -1,14 +1,15 @@
 :Notice: 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 ag [...]
 
-JDO supports `long` link:http://www.datanucleus.org:15080/products/accessplatform_5_2/jdo/mapping.html#_primitive_and_java_lang_types[out-of-the-box], so no special annotations are required.
+//#{generated-file-notice}
+
+#{jdo-type-support-notice}
 
 [source,java]
 ----
-include::PrimitiveLongJdo.java[tags="class"]
+include::$TemplateJdo~primitive.java[tags=class]
 ----
 <.> a no-arg constructor is introduced by JDO enhancer
 <.> no additional JDO annotations required.
 
 
-
-include::../PrimitiveLongs-common.adoc[]
\ No newline at end of file
+include::../$Templates-common.adoc[]
\ No newline at end of file
diff --git a/tooling/metaprog/src/main/resources/jdo/$TemplateJdoEntities.java b/tooling/metaprog/src/main/resources/jdo/$TemplateJdoEntities.java
index 5224c693d6..1c671269df 100644
--- a/tooling/metaprog/src/main/resources/jdo/$TemplateJdoEntities.java
+++ b/tooling/metaprog/src/main/resources/jdo/$TemplateJdoEntities.java
@@ -27,14 +27,14 @@ import demoapp.dom._infra.values.ValueHolderRepository;
 @Profile("demo-jdo")
 @Service
 public class /*${showcase-name}*/JdoEntities
-extends ValueHolderRepository</*${showcase-type}*/, /*${showcase-name}*/Jdo> {
+extends ValueHolderRepository</*${showcase-type-boxed}*/, /*${showcase-name}*/Jdo> {
 
     protected /*${showcase-name}*/JdoEntities() {
         super(/*${showcase-name}*/Jdo.class);
     }
 
     @Override
-    protected /*${showcase-name}*/Jdo newDetachedEntity(/*${showcase-type}*/ value) {
+    protected /*${showcase-name}*/Jdo newDetachedEntity(/*${showcase-type-boxed}*/ value) {
         return new /*${showcase-name}*/Jdo(value);
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdo.java b/tooling/metaprog/src/main/resources/jdo/$TemplateJdo~primitive.java
similarity index 74%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdo.java
copy to tooling/metaprog/src/main/resources/jdo/$TemplateJdo~primitive.java
index 79b3d4d607..c9e2e173d4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdo.java
+++ b/tooling/metaprog/src/main/resources/jdo/$TemplateJdo~primitive.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.types.primitive.longs.jdo;
+package /*${java-package}*/;
 
 import javax.inject.Named;
 import javax.jdo.annotations.DatastoreIdentity;
@@ -35,33 +35,34 @@ import org.apache.isis.applib.annotation.Title;
 import lombok.Getter;
 import lombok.Setter;
 
-import demoapp.dom.types.primitive.longs.persistence.PrimitiveLongEntity;
+import /*${showcase-java-package}*/.persistence./*${showcase-name}*/Entity;
 
+/*${generated-file-notice}*/
 @Profile("demo-jdo")
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
 @DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
-@Named("demo.PrimitiveLongEntity")
+@Named("demo./*${showcase-name}*/Entity")
 @DomainObject
-public class PrimitiveLongJdo                                       // <.>
-        extends PrimitiveLongEntity {
+public class /*${showcase-name}*/Jdo                                          // <.>
+        extends /*${showcase-name}*/Entity {
 
 //end::class[]
-    public PrimitiveLongJdo(final long initialValue) {
+    public /*${showcase-name}*/Jdo(final /*${showcase-type}*/ initialValue) {
         this.readOnlyProperty = initialValue;
         this.readWriteProperty = initialValue;
     }
 
 //tag::class[]
-    @Title(prepend = "long (primitive) JDO entity: ")
+    @Title(prepend = "/*${showcase-type}*/ (primitive) JDO entity: ")
     @PropertyLayout(fieldSetId = "read-only-properties", sequence = "1")
     @Getter @Setter
-    private long readOnlyProperty;                                  // <.>
+    private /*${showcase-type}*/ readOnlyProperty;                             // <.>
 
-    @Property(editing = Editing.ENABLED)
+    @Property(editing = Editing.ENABLED)                                        
     @PropertyLayout(fieldSetId = "editable-properties", sequence = "1")
     @Getter @Setter
-    private long readWriteProperty;
+    private /*${showcase-type}*/ readWriteProperty;
 
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm-description.adoc b/tooling/metaprog/src/main/resources/jpa/$TemplateJpa-description~primitive.adoc
similarity index 69%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm-description.adoc
copy to tooling/metaprog/src/main/resources/jpa/$TemplateJpa-description~primitive.adoc
index fb15c523bb..8a83592a5d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm-description.adoc
+++ b/tooling/metaprog/src/main/resources/jpa/$TemplateJpa-description~primitive.adoc
@@ -1,15 +1,15 @@
 :Notice: 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 ag [...]
 
-JAXB supports `long` link:https://docs.oracle.com/cd/E12840_01/wls/docs103/webserv/data_types.html#wp223908[out-of-the-box], so no special annotations are required.
+//#{generated-file-notice}
+
+#{jpa-type-support-notice}
 
 [source,java]
 ----
-include::PrimitiveLongVm.java[tags="class"]
+include::$TemplateJpa~primitive.java[tags=class]
 ----
-<.> a no-arg constructor is required by JAXB
-<.> no additional JAXB annotations required.
-
-
+<.> a no-arg constructor for convenience
+<.> no additional JPA annotations required.
 
 
-include::../PrimitiveLongs-common.adoc[]
\ No newline at end of file
+include::../$Templates-common.adoc[]
\ No newline at end of file
diff --git a/tooling/metaprog/src/main/resources/jpa/$TemplateJpaEntities.java b/tooling/metaprog/src/main/resources/jpa/$TemplateJpaEntities.java
index c6ea53ca3d..d2e694e7fa 100644
--- a/tooling/metaprog/src/main/resources/jpa/$TemplateJpaEntities.java
+++ b/tooling/metaprog/src/main/resources/jpa/$TemplateJpaEntities.java
@@ -27,14 +27,14 @@ import demoapp.dom._infra.values.ValueHolderRepository;
 @Profile("demo-jpa")
 @Service
 public class /*${showcase-name}*/JpaEntities
-extends ValueHolderRepository</*${showcase-type}*/, /*${showcase-name}*/Jpa> {
+extends ValueHolderRepository</*${showcase-type-boxed}*/, /*${showcase-name}*/Jpa> {
 
     protected /*${showcase-name}*/JpaEntities() {
         super(/*${showcase-name}*/Jpa.class);
     }
 
     @Override
-    protected /*${showcase-name}*/Jpa newDetachedEntity(/*${showcase-type}*/ value) {
+    protected /*${showcase-name}*/Jpa newDetachedEntity(/*${showcase-type-boxed}*/ value) {
         return new /*${showcase-name}*/Jpa(value);
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jpa/PrimitiveLongJpa.java b/tooling/metaprog/src/main/resources/jpa/$TemplateJpa~primitive.java
similarity index 72%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jpa/PrimitiveLongJpa.java
copy to tooling/metaprog/src/main/resources/jpa/$TemplateJpa~primitive.java
index c37afeaf00..af8c261977 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jpa/PrimitiveLongJpa.java
+++ b/tooling/metaprog/src/main/resources/jpa/$TemplateJpa~primitive.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.types.primitive.longs.jpa;
+package /*${java-package}*/;
 
 import javax.inject.Named;
 import javax.persistence.Entity;
@@ -38,24 +38,25 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import demoapp.dom.types.primitive.longs.persistence.PrimitiveLongEntity;
+import /*${showcase-java-package}*/.persistence./*${showcase-name}*/Entity;
 
+/*${generated-file-notice}*/
 @Profile("demo-jpa")
 //tag::class[]
 @Entity
 @Table(
       schema = "demo",
-      name = "PrimitiveLongJpa"
+      name = "/*${showcase-name}*/Jpa"
 )
 @EntityListeners(IsisEntityListener.class)
-@Named("demo.PrimitiveLongEntity")
+@Named("demo./*${showcase-name}*/Entity")
 @DomainObject
-@NoArgsConstructor
-public class PrimitiveLongJpa
-        extends PrimitiveLongEntity {
+@NoArgsConstructor                                                             // <.>
+public class /*${showcase-name}*/Jpa
+        extends /*${showcase-name}*/Entity {
 
 //end::class[]
-    public PrimitiveLongJpa(final long initialValue) {
+    public /*${showcase-name}*/Jpa(final /*${showcase-type}*/ initialValue) {
         this.readOnlyProperty = initialValue;
         this.readWriteProperty = initialValue;
     }
@@ -65,15 +66,15 @@ public class PrimitiveLongJpa
     @GeneratedValue
     private Long id;
 
-    @Title(prepend = "long (primitive) JPA entity: ")
+    @Title(prepend = "/*${showcase-type}*/ (primitive) JPA entity: ")
     @PropertyLayout(fieldSetId = "read-only-properties", sequence = "1")
     @Getter @Setter
-    private long readOnlyProperty;                                  // <.>
+    private /*${showcase-type}*/ readOnlyProperty;                              // <.>
 
-    @Property(editing = Editing.ENABLED)
+    @Property(editing = Editing.ENABLED)                                        
     @PropertyLayout(fieldSetId = "editable-properties", sequence = "1")
     @Getter @Setter
-    private long readWriteProperty;
+    private /*${showcase-type}*/ readWriteProperty;
 
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs.layout.xml b/tooling/metaprog/src/main/resources/persistence/$TemplateEntity~primitive.layout.xml
similarity index 82%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs.layout.xml
copy to tooling/metaprog/src/main/resources/persistence/$TemplateEntity~primitive.layout.xml
index 74e0160a87..4b26310073 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs.layout.xml
+++ b/tooling/metaprog/src/main/resources/persistence/$TemplateEntity~primitive.layout.xml
@@ -15,9 +15,13 @@
         xmlns:cpt="http://isis.apache.org/applib/layout/component"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
+	<!--${generated-file-notice}-->
+
 	<bs3:row>
 		<bs3:col span="10" unreferencedActions="true">
 			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
+			<cpt:action id="actionReturningArray"/>
 		</bs3:col>
 		<bs3:col span="2">
 			<cpt:fieldSet name="" id="sources" />
@@ -26,14 +30,10 @@
 
 	<bs3:row>
 		<bs3:col span="6">
-			<bs3:row>
-				<bs3:col span="12">
-					<cpt:collection id="entities"/>
-				</bs3:col>
-				<bs3:col span="12">
-					<cpt:action id="openViewModel"/>
-				</bs3:col>
-			</bs3:row>
+			<cpt:fieldSet name="Read Only Properties" id="read-only-properties"/>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
+			<cpt:fieldSet name="@PropertyLayout(labelPosition=...)" id="label-positions"/>
 			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
 		</bs3:col>
 		<bs3:col span="6">
@@ -44,6 +44,7 @@
 				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
 				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
                 <cpt:action id="recentCommands"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
 				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
 				<cpt:property id="description"/>
 			</cpt:fieldSet>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm-description.adoc b/tooling/metaprog/src/main/resources/vm/$TemplateVm-description~primitive.adoc
similarity index 77%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm-description.adoc
copy to tooling/metaprog/src/main/resources/vm/$TemplateVm-description~primitive.adoc
index fb15c523bb..3734e06350 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm-description.adoc
+++ b/tooling/metaprog/src/main/resources/vm/$TemplateVm-description~primitive.adoc
@@ -1,15 +1,14 @@
 :Notice: 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 ag [...]
 
-JAXB supports `long` link:https://docs.oracle.com/cd/E12840_01/wls/docs103/webserv/data_types.html#wp223908[out-of-the-box], so no special annotations are required.
+//#{generated-file-notice}
+
+#{jaxb-type-support-notice}
 
 [source,java]
 ----
-include::PrimitiveLongVm.java[tags="class"]
+include::$TemplateVm~primitive.java[tags=class]
 ----
 <.> a no-arg constructor is required by JAXB
 <.> no additional JAXB annotations required.
 
-
-
-
-include::../PrimitiveLongs-common.adoc[]
\ No newline at end of file
+include::../$Templates-common.adoc[]
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm.java b/tooling/metaprog/src/main/resources/vm/$TemplateVm~primitive.java
similarity index 75%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm.java
copy to tooling/metaprog/src/main/resources/vm/$TemplateVm~primitive.java
index 1dfd0f07d9..b0d60757a2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongVm.java
+++ b/tooling/metaprog/src/main/resources/vm/$TemplateVm~primitive.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.types.primitive.longs.vm;
+package /*${java-package}*/;
 
 import javax.inject.Named;
 import javax.xml.bind.annotation.XmlAccessType;
@@ -35,35 +35,36 @@ import lombok.Getter;
 import lombok.Setter;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.types.primitive.longs.holder.PrimitiveLongHolder2;
+import /*${showcase-java-package}*/.holder./*${showcase-name}*/Holder2;
 
+/*${generated-file-notice}*/
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
-@Named("demo.PrimitiveLongVm")
+@Named("demo./*${showcase-name}*/Vm")
 @DomainObject(
         nature=Nature.VIEW_MODEL)
-@lombok.NoArgsConstructor                                           // <.>
-public class PrimitiveLongVm
-        implements HasAsciiDocDescription, PrimitiveLongHolder2 {
+@lombok.NoArgsConstructor                                                       // <.>
+public class /*${showcase-name}*/Vm
+        implements HasAsciiDocDescription, /*${showcase-name}*/Holder2 {
 
 //end::class[]
-    public PrimitiveLongVm(final long initialValue) {
+    public /*${showcase-name}*/Vm(final /*${showcase-type}*/ initialValue) {
         this.readOnlyProperty = initialValue;
         this.readWriteProperty = initialValue;
     }
 
 //tag::class[]
-    @Title(prepend = "long (primitive) view model: ")
+    @Title(prepend = "/*${showcase-type}*/ (primitive) view model: ")
     @PropertyLayout(fieldSetId = "read-only-properties", sequence = "1")
     @Getter @Setter
-    private long readOnlyProperty;                                  // <.>
+    private /*${showcase-type}*/ readOnlyProperty;                              // <.>
 
-    @Property(editing = Editing.ENABLED)
+    @Property(editing = Editing.ENABLED)                                        
     @PropertyLayout(fieldSetId = "editable-properties", sequence = "1")
     @Getter @Setter
-    private long readWriteProperty;
+    private /*${showcase-type}*/ readWriteProperty;
 
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs.layout.xml b/tooling/metaprog/src/main/resources/vm/$TemplateVm~primitive.layout.xml
similarity index 82%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs.layout.xml
copy to tooling/metaprog/src/main/resources/vm/$TemplateVm~primitive.layout.xml
index 74e0160a87..4b26310073 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs.layout.xml
+++ b/tooling/metaprog/src/main/resources/vm/$TemplateVm~primitive.layout.xml
@@ -15,9 +15,13 @@
         xmlns:cpt="http://isis.apache.org/applib/layout/component"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
+	<!--${generated-file-notice}-->
+
 	<bs3:row>
 		<bs3:col span="10" unreferencedActions="true">
 			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
+			<cpt:action id="actionReturningArray"/>
 		</bs3:col>
 		<bs3:col span="2">
 			<cpt:fieldSet name="" id="sources" />
@@ -26,14 +30,10 @@
 
 	<bs3:row>
 		<bs3:col span="6">
-			<bs3:row>
-				<bs3:col span="12">
-					<cpt:collection id="entities"/>
-				</bs3:col>
-				<bs3:col span="12">
-					<cpt:action id="openViewModel"/>
-				</bs3:col>
-			</bs3:row>
+			<cpt:fieldSet name="Read Only Properties" id="read-only-properties"/>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
+			<cpt:fieldSet name="@PropertyLayout(labelPosition=...)" id="label-positions"/>
 			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
 		</bs3:col>
 		<bs3:col span="6">
@@ -44,6 +44,7 @@
 				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
 				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
                 <cpt:action id="recentCommands"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
 				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
 				<cpt:property id="description"/>
 			</cpt:fieldSet>
diff --git a/tooling/metaprog/src/test/java/org/apache/isis/tooling/metaprog/demoshowcases/value/ValueTypeGenTemplateTest.java b/tooling/metaprog/src/test/java/org/apache/isis/tooling/metaprog/demoshowcases/value/ValueTypeGenTemplateTest.java
index fe9f31de5a..4b413b97a0 100644
--- a/tooling/metaprog/src/test/java/org/apache/isis/tooling/metaprog/demoshowcases/value/ValueTypeGenTemplateTest.java
+++ b/tooling/metaprog/src/test/java/org/apache/isis/tooling/metaprog/demoshowcases/value/ValueTypeGenTemplateTest.java
@@ -9,7 +9,6 @@ import java.util.Objects;
 import java.util.Set;
 
 import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 import org.apache.isis.commons.collections.Can;
@@ -20,6 +19,7 @@ import org.apache.isis.commons.internal.functions._Predicates;
 import org.apache.isis.tooling.metaprog.demoshowcases.value.ValueTypeGenTemplate.Config;
 import org.apache.isis.tooling.metaprog.demoshowcases.value.ValueTypeGenTemplate.Config.ConfigBuilder;
 import org.apache.isis.tooling.metaprog.demoshowcases.value.ValueTypeGenTemplate.Template;
+import org.apache.isis.tooling.metaprog.demoshowcases.value.ValueTypeGenTemplate.TemplateVariant;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.fail;
@@ -59,7 +59,7 @@ class ValueTypeGenTemplateTest {
         testShowcase(config);
     }
 
-    @Test @Disabled("WIP")
+    @Test //@Disabled("WIP")
     void testPLong() throws IOException {
 
         val config = fundamentalTypeSupportNotice()
@@ -68,10 +68,8 @@ class ValueTypeGenTemplateTest {
                 .javaPackage("demoapp.dom.types.primitive.longs")
                 .showcaseValueType("long")
                 .showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.LongValueSemantics")
-                .templatePredicate(template->
-                    template != Template.HOLDER_UPDATE_READONLY_OPTIONAL_PROPERTY
-                    && template != Template.HOLDER_ACTION_RETURNING_COLLECTION
-                    && template != Template.SAMPLES)
+                .templates(Template.PRIMITIVE_SET)
+                .templateVariant(TemplateVariant.PRIMITIVE)
                 .build();
 
         testShowcase(config);