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 621f528cf6 ISIS-3123: converts int showcase to generated
621f528cf6 is described below

commit 621f528cf632d27b5ae8fa0307ec49af668b6f1f
Author: andi-huber <[email protected]>
AuthorDate: Thu Aug 18 08:10:27 2022 +0200

    ISIS-3123: converts int showcase to generated
---
 .../types/primitive/ints/PrimitiveInts-common.adoc |  12 ++
 .../primitive/ints/PrimitiveInts-description.adoc  |   6 +-
 .../dom/types/primitive/ints/PrimitiveInts.java    |  15 +-
 .../types/primitive/ints/PrimitiveInts.layout.xml  |   2 +
 .../primitive/ints/holder/PrimitiveIntHolder.java  |   1 +
 .../primitive/ints/holder/PrimitiveIntHolder2.java |   3 +-
 .../holder/PrimitiveIntHolder_actionReturning.java |   2 +-
 .../PrimitiveIntHolder_actionReturningArray.java   |   7 +-
 .../holder/PrimitiveIntHolder_mixinProperty.java   |   2 +-
 .../PrimitiveIntHolder_updateReadOnlyProperty.java |   1 +
 ...ntHolder_updateReadOnlyPropertyWithChoices.java |  13 +-
 .../ints/jdo/PrimitiveIntJdo-description.adoc      |   9 +-
 .../types/primitive/ints/jdo/PrimitiveIntJdo.java  |   7 +-
 .../ints/jdo/PrimitiveIntJdoEntities.java          |   7 +-
 .../ints/jpa/PrimitiveIntJpa-description.adoc      |  16 +--
 .../types/primitive/ints/jpa/PrimitiveIntJpa.java  |   7 +-
 .../ints/jpa/PrimitiveIntJpaEntities.java          |   7 +-
 .../ints/persistence/PrimitiveIntEntity.java       |   5 +-
 .../ints/persistence/PrimitiveIntEntity.layout.xml |  11 +-
 .../ints/persistence/PrimitiveIntSeeding.java      |   6 +-
 .../ints/vm/PrimitiveIntVm-description.adoc        |  10 +-
 .../types/primitive/ints/vm/PrimitiveIntVm.java    |   7 +-
 .../primitive/ints/vm/PrimitiveIntVm.layout.xml    |  11 +-
 tooling/metaprog/pom.xml                           |  27 ++++
 .../demoshowcases/value/ValueShowCase.java         | 102 ++++++++++++++
 .../$TemplateHolder_actionReturningArray.java      |   2 +-
 .../value/ValueTypeGenTemplateTest.java            | 151 ++-------------------
 27 files changed, 236 insertions(+), 213 deletions(-)

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 a233da12e0..fd443daec3 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
@@ -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 `PrimitiveIntHolder` 
interface, demonstrate the use of `int` as a parameter and as a return type.
@@ -19,6 +21,14 @@ 
include::holder/PrimitiveIntHolder_updateReadOnlyProperty.java[tags=class]
 include::holder/PrimitiveIntHolder_actionReturning.java[tags=class]
 ----
 
+
+* the `actionReturningArray` action is:
++
+[source,java]
+----
+include::holder/PrimitiveIntHolder_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/PrimitiveIntHolder_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 `PrimitiveIntHolder2` interface:
@@ -47,3 +58,4 @@ include::holder/PrimitiveIntHolder2.java[tags=class]
 +
 CAUTION: currently not supported
 <.> Hide the label completely.
+
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts-description.adoc
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts-description.adoc
index dab3166772..5ebab0ba80 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts-description.adoc
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts-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 `int`.
+// // This file was GENERATED by the showcase generator (tooling). Do NOT edit!
+
+The framework has built-in support for the (primitive) `int` data type.
 
 From here you can:
 
@@ -26,4 +28,4 @@ include::holder/PrimitiveIntHolder.java[tags=class]
 
 The `PrimitiveIntHolder2` 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/ints/PrimitiveInts.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts.java
index 7eb5625fde..78ab5d3d10 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts.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.ints.persistence.PrimitiveIntEntity;
 import demoapp.dom.types.primitive.ints.vm.PrimitiveIntVm;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @XmlRootElement(name = "Demo")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @Named("demo.PrimitiveInts")
-@DomainObject(
-        nature=Nature.VIEW_MODEL,
-        editing=Editing.ENABLED)
+@DomainObject(nature=Nature.VIEW_MODEL, editing=Editing.ENABLED)
 //@Log4j2
 public class PrimitiveInts implements HasAsciiDocDescription {
 
     @ObjectSupport public String title() {
-        return "int (primitive) data type";
+        return "int data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
@@ -64,7 +64,7 @@ public class PrimitiveInts implements HasAsciiDocDescription {
         return new PrimitiveIntVm(initialValue);
     }
     @MemberSupport public int default0OpenViewModel() {
-        return 123456;
+        return samples.single();
     }
 
     @Collection
@@ -74,7 +74,10 @@ public class PrimitiveInts implements HasAsciiDocDescription 
{
 
     @Inject
     @XmlTransient
-    ValueHolderRepository<Integer, ? extends PrimitiveIntEntity> entities;
+    ValueHolderRepository<java.lang.Integer, ? extends PrimitiveIntEntity> 
entities;
 
+    @Inject
+    @XmlTransient
+    Samples<java.lang.Integer> samples;
 
 }
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts.layout.xml
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts.layout.xml
index 74e0160a87..247ed17506 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts.layout.xml
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts.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/ints/holder/PrimitiveIntHolder.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder.java
index 475ce72575..490fc98279 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder.java
@@ -20,6 +20,7 @@ package demoapp.dom.types.primitive.ints.holder;
 
 import javax.inject.Named;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Named("demo.PrimitiveIntHolder")
 //tag::class[]
 public interface PrimitiveIntHolder {
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder2.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder2.java
index e5beb20362..1246f4b06f 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder2.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder2.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 PrimitiveIntHolder2 extends PrimitiveIntHolder {
 
@@ -32,7 +33,7 @@ public interface PrimitiveIntHolder2 extends 
PrimitiveIntHolder {
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
         hidden = Where.ALL_TABLES,
-        fieldSetId = "label-positions", sequence = "1")  // <.>
+        fieldSetId = "label-positions", sequence = "1")     // <.>
     default int getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_actionReturning.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_actionReturning.java
index 524a843819..0a046e2858 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_actionReturning.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_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/ints/holder/PrimitiveIntHolder_actionReturningArray.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_actionReturningArray.java
index f8563e37db..69bf08d9dc 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_actionReturningArray.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_actionReturningArray.java
@@ -24,12 +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
@@ -45,7 +44,7 @@ public class PrimitiveIntHolder_actionReturningArray {
     }
 
     @Inject
-    Samples<Integer> samples;
+    Samples<java.lang.Integer> samples;
 
 }
 //end::class[]
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_mixinProperty.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_mixinProperty.java
index c8cc53ad5e..dcca18b196 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_mixinProperty.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_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/ints/holder/PrimitiveIntHolder_updateReadOnlyProperty.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyProperty.java
index c97e21475b..f999a21f73 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyProperty.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_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/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyWithChoices.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyWithChoices.java
index 92b1be45e6..12c71859fc 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyWithChoices.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_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,16 +56,13 @@ public class 
PrimitiveIntHolder_updateReadOnlyPropertyWithChoices {
         return holder.getReadOnlyProperty();
     }
 
-    @MemberSupport public List<Integer> choices0Act() {
+    @MemberSupport public List<java.lang.Integer> 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<Integer> samples;
+    Samples<java.lang.Integer> samples;
+
 }
 //end::class[]
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdo-description.adoc
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdo-description.adoc
index d037b4cfc0..0d906cd5ba 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdo-description.adoc
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdo-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 `int` 
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 `int` 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::PrimitiveIntJdo.java[tags="class"]
+include::PrimitiveIntJdo.java[tags=class]
 ----
 <.> a no-arg constructor is introduced by JDO enhancer
 <.> no additional JDO annotations required.
 
 
-
-include::../PrimitiveInts-common.adoc[]
\ No newline at end of file
+include::../PrimitiveInts-common.adoc[]
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdo.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdo.java
index 2b5f80972c..2a300f5f70 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdo.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdo.java
@@ -37,13 +37,14 @@ import lombok.Setter;
 
 import demoapp.dom.types.primitive.ints.persistence.PrimitiveIntEntity;
 
+/* 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.PrimitiveIntEntity")
 @DomainObject
-public class PrimitiveIntJdo                                        // <.>
+public class PrimitiveIntJdo                                          // <.>
         extends PrimitiveIntEntity {
 
 //end::class[]
@@ -56,9 +57,9 @@ public class PrimitiveIntJdo                                  
      // <.>
     @Title(prepend = "int (primitive) JDO entity: ")
     @PropertyLayout(fieldSetId = "read-only-properties", sequence = "1")
     @Getter @Setter
-    private int readOnlyProperty;                                  // <.>
+    private int readOnlyProperty;                             // <.>
 
-    @Property(editing = Editing.ENABLED)
+    @Property(editing = Editing.ENABLED)                                       
 
     @PropertyLayout(fieldSetId = "editable-properties", sequence = "1")
     @Getter @Setter
     private int readWriteProperty;
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntities.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntities.java
index 83bdc68adf..ae8aad4770 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntities.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntities.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 PrimitiveIntJdoEntities
-extends ValueHolderRepository<Integer, PrimitiveIntJdo> {
+extends ValueHolderRepository<java.lang.Integer, PrimitiveIntJdo> {
 
     protected PrimitiveIntJdoEntities() {
         super(PrimitiveIntJdo.class);
     }
 
     @Override
-    protected PrimitiveIntJdo newDetachedEntity(Integer value) {
+    protected PrimitiveIntJdo newDetachedEntity(java.lang.Integer value) {
         return new PrimitiveIntJdo(value);
     }
 
-}
\ No newline at end of file
+}
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jpa/PrimitiveIntJpa-description.adoc
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jpa/PrimitiveIntJpa-description.adoc
index c017d2ef26..a99842bacb 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jpa/PrimitiveIntJpa-description.adoc
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jpa/PrimitiveIntJpa-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 `int` 
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 `int` 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::PrimitiveIntJpa.java[tags="class"]
+include::PrimitiveIntJpa.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::../PrimitiveInts-common.adoc[]
\ No newline at end of file
+include::../PrimitiveInts-common.adoc[]
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jpa/PrimitiveIntJpa.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jpa/PrimitiveIntJpa.java
index 5bacec5a43..a7df7fa64a 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jpa/PrimitiveIntJpa.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jpa/PrimitiveIntJpa.java
@@ -40,6 +40,7 @@ import lombok.Setter;
 
 import demoapp.dom.types.primitive.ints.persistence.PrimitiveIntEntity;
 
+/* 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.ints.persistence.PrimitiveIntEntity;
 @EntityListeners(IsisEntityListener.class)
 @Named("demo.PrimitiveIntEntity")
 @DomainObject
-@NoArgsConstructor
+@NoArgsConstructor                                                             
// <.>
 public class PrimitiveIntJpa
         extends PrimitiveIntEntity {
 
@@ -68,9 +69,9 @@ public class PrimitiveIntJpa
     @Title(prepend = "int (primitive) JPA entity: ")
     @PropertyLayout(fieldSetId = "read-only-properties", sequence = "1")
     @Getter @Setter
-    private int readOnlyProperty;                                  // <.>
+    private int readOnlyProperty;                              // <.>
 
-    @Property(editing = Editing.ENABLED)
+    @Property(editing = Editing.ENABLED)                                       
 
     @PropertyLayout(fieldSetId = "editable-properties", sequence = "1")
     @Getter @Setter
     private int readWriteProperty;
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jpa/PrimitiveIntJpaEntities.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jpa/PrimitiveIntJpaEntities.java
index a9e1f7a699..eba1288967 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jpa/PrimitiveIntJpaEntities.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jpa/PrimitiveIntJpaEntities.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 PrimitiveIntJpaEntities
-extends ValueHolderRepository<Integer, PrimitiveIntJpa> {
+extends ValueHolderRepository<java.lang.Integer, PrimitiveIntJpa> {
 
     protected PrimitiveIntJpaEntities() {
         super(PrimitiveIntJpa.class);
     }
 
     @Override
-    protected PrimitiveIntJpa newDetachedEntity(Integer value) {
+    protected PrimitiveIntJpa newDetachedEntity(java.lang.Integer value) {
         return new PrimitiveIntJpa(value);
     }
 
-}
\ No newline at end of file
+}
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/persistence/PrimitiveIntEntity.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/persistence/PrimitiveIntEntity.java
index cdcadb9764..d0d1c902e6 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/persistence/PrimitiveIntEntity.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/persistence/PrimitiveIntEntity.java
@@ -26,16 +26,17 @@ import 
demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolder;
 import demoapp.dom.types.primitive.ints.holder.PrimitiveIntHolder2;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Named("demo.PrimitiveIntEntity") // shared permissions with concrete sub class
 @DomainObject
 public abstract class PrimitiveIntEntity
 implements
     HasAsciiDocDescription,
     PrimitiveIntHolder2,
-    ValueHolder<Integer> {
+    ValueHolder<java.lang.Integer> {
 
     @Override
-    public Integer value() {
+    public java.lang.Integer value() {
         return getReadOnlyProperty();
     }
 
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/persistence/PrimitiveIntEntity.layout.xml
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/persistence/PrimitiveIntEntity.layout.xml
index c4a5e15c62..bf6c6ddd0c 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/persistence/PrimitiveIntEntity.layout.xml
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/persistence/PrimitiveIntEntity.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/ints/persistence/PrimitiveIntSeeding.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/persistence/PrimitiveIntSeeding.java
index 7a5ddea93a..333281b8de 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/persistence/PrimitiveIntSeeding.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/persistence/PrimitiveIntSeeding.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 PrimitiveIntSeeding extends SeedServiceAbstract {
+public class PrimitiveIntSeeding
+extends SeedServiceAbstract {
 
     @Inject
-    public PrimitiveIntSeeding(ValueHolderRepository<Integer, ? extends 
PrimitiveIntEntity> entities) {
+    public PrimitiveIntSeeding(ValueHolderRepository<java.lang.Integer, ? 
extends PrimitiveIntEntity> entities) {
         super(entities);
     }
 
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntVm-description.adoc
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntVm-description.adoc
index 52f83bfd71..734278940d 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntVm-description.adoc
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntVm-description.adoc
@@ -1,14 +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 `int` 
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 `int` 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::PrimitiveIntVm.java[tags="class"]
+include::PrimitiveIntVm.java[tags=class]
 ----
 <.> a no-arg constructor is required by JAXB
 <.> no additional JAXB annotations required.
 
-
-
-include::../PrimitiveInts-common.adoc[]
\ No newline at end of file
+include::../PrimitiveInts-common.adoc[]
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntVm.java
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntVm.java
index 07bad29fed..db13600bc6 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntVm.java
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntVm.java
@@ -37,6 +37,7 @@ import lombok.Setter;
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.primitive.ints.holder.PrimitiveIntHolder2;
 
+/* 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.ints.holder.PrimitiveIntHolder2;
 @Named("demo.PrimitiveIntVm")
 @DomainObject(
         nature=Nature.VIEW_MODEL)
[email protected]                                           // <.>
[email protected]                                                      
 // <.>
 public class PrimitiveIntVm
         implements HasAsciiDocDescription, PrimitiveIntHolder2 {
 
@@ -58,9 +59,9 @@ public class PrimitiveIntVm
     @Title(prepend = "int (primitive) view model: ")
     @PropertyLayout(fieldSetId = "read-only-properties", sequence = "1")
     @Getter @Setter
-    private int readOnlyProperty;                                   // <.>
+    private int readOnlyProperty;                              // <.>
 
-    @Property(editing = Editing.ENABLED)
+    @Property(editing = Editing.ENABLED)                                       
 
     @PropertyLayout(fieldSetId = "editable-properties", sequence = "1")
     @Getter @Setter
     private int readWriteProperty;
diff --git 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntVm.layout.xml
 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntVm.layout.xml
index c4a5e15c62..bf6c6ddd0c 100644
--- 
a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntVm.layout.xml
+++ 
b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntVm.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/tooling/metaprog/pom.xml b/tooling/metaprog/pom.xml
index 5fec1d726e..a06947f63e 100644
--- a/tooling/metaprog/pom.xml
+++ b/tooling/metaprog/pom.xml
@@ -60,6 +60,33 @@
             <artifactId>log4j-core</artifactId>
             <scope>test</scope>
         </dependency>
+        
+        <!-- TEST DEPENDENCIES -->
+               <dependency>
+                       <groupId>org.junit.jupiter</groupId>
+                       <artifactId>junit-jupiter-api</artifactId>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.junit.jupiter</groupId>
+                       <artifactId>junit-jupiter-engine</artifactId>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.junit.vintage</groupId>
+                       <artifactId>junit-vintage-engine</artifactId>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.junit.jupiter</groupId>
+                       <artifactId>junit-jupiter-params</artifactId>
+                       <scope>test</scope>
+               </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <scope>test</scope>
+        </dependency>
 
        </dependencies>
 
diff --git 
a/tooling/metaprog/src/main/java/org/apache/isis/tooling/metaprog/demoshowcases/value/ValueShowCase.java
 
b/tooling/metaprog/src/main/java/org/apache/isis/tooling/metaprog/demoshowcases/value/ValueShowCase.java
new file mode 100644
index 0000000000..32c0a7fc4c
--- /dev/null
+++ 
b/tooling/metaprog/src/main/java/org/apache/isis/tooling/metaprog/demoshowcases/value/ValueShowCase.java
@@ -0,0 +1,102 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.tooling.metaprog.demoshowcases.value;
+
+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 lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.val;
+
+@RequiredArgsConstructor
+public enum ValueShowCase {
+
+    UUID(Config.builder()
+            .showcaseName("JavaUtilUuid")
+            .javaPackage("demoapp.dom.types.javautil.uuids")
+            .showcaseValueType("java.util.UUID")
+            
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.UUIDValueSemantics")),
+    WLONG(fundamentalTypeSupportNotice()
+                .showcaseName("WrapperLong")
+                .javaPackage("demoapp.dom.types.javalang.longs")
+                .showcaseValueType("java.lang.Long")
+                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.LongValueSemantics")),
+    PLONG(fundamentalTypeSupportNotice()
+                .showcaseName("PrimitiveLong")
+                .javaPackage("demoapp.dom.types.primitive.longs")
+                .showcaseValueType("long")
+                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.LongValueSemantics")
+                .templates(Template.PRIMITIVE_SET)
+                .templateVariant(TemplateVariant.PRIMITIVE)),
+    WINT(fundamentalTypeSupportNotice()
+                .showcaseName("WrapperInteger")
+                .javaPackage("demoapp.dom.types.javalang.integers")
+                .showcaseValueType("java.lang.Integer")
+                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.IntValueSemantics")),
+    PINT(fundamentalTypeSupportNotice()
+            .showcaseName("PrimitiveInt")
+            .javaPackage("demoapp.dom.types.primitive.ints")
+            .showcaseValueType("int")
+            
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.IntValueSemantics")
+            .templates(Template.PRIMITIVE_SET)
+            .templateVariant(TemplateVariant.PRIMITIVE)),
+    WSHORT(fundamentalTypeSupportNotice()
+                .showcaseName("WrapperShort")
+                .javaPackage("demoapp.dom.types.javalang.shorts")
+                .showcaseValueType("java.lang.Short")
+                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.ShortValueSemantics")),
+    WBYTE(fundamentalTypeSupportNotice()
+                .showcaseName("WrapperByte")
+                .javaPackage("demoapp.dom.types.javalang.bytes")
+                .showcaseValueType("java.lang.Byte")
+                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.ByteValueSemantics")),
+    WDOUBLE(fundamentalTypeSupportNotice()
+                .showcaseName("WrapperDouble")
+                .javaPackage("demoapp.dom.types.javalang.doubles")
+                .showcaseValueType("java.lang.Double")
+                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.DoubleValueSemantics")),
+    WFLOAT(fundamentalTypeSupportNotice()
+                .showcaseName("WrapperFloat")
+                .javaPackage("demoapp.dom.types.javalang.floats")
+                .showcaseValueType("java.lang.Float")
+                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.FloatValueSemantics")),
+//    WBOOLEAN(fundamentalTypeSupportNotice()
+//                .showcaseName("WrapperBoolean")
+//                .javaPackage("demoapp.dom.types.javalang.booleans")
+//                .showcaseValueType("java.lang.Boolean")
+//                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.BooleanValueSemantics")),
+    ;
+
+    @Getter final ValueTypeGenTemplate.Config.ConfigBuilder configBuilder;
+
+    private static ConfigBuilder fundamentalTypeSupportNotice() {
+        val defaults = Config.builder().build();
+        return Config.builder()
+                .jdoTypeSupportNotice(defaults.getJdoTypeSupportNotice()
+                        + " see 
link:https://www.datanucleus.org/products/accessplatform_6_0/jdo/mapping.html#_primitive_and_java_lang_types[DataNucleus]";)
+                .jpaTypeSupportNotice(defaults.getJdoTypeSupportNotice()
+                        + " see 
link:https://www.objectdb.com/java/jpa/entity/types#simple_java_data_types[ObjectDB]";)
+                .jaxbTypeSupportNotice(defaults.getJaxbTypeSupportNotice()
+                        + " see 
link:https://docs.oracle.com/cd/E12840_01/wls/docs103/webserv/data_types.html#wp223908[Oracle]";);
+    }
+
+}
diff --git 
a/tooling/metaprog/src/main/resources/holder/$TemplateHolder_actionReturningArray.java
 
b/tooling/metaprog/src/main/resources/holder/$TemplateHolder_actionReturningArray.java
index 8b8f156181..139263bf08 100644
--- 
a/tooling/metaprog/src/main/resources/holder/$TemplateHolder_actionReturningArray.java
+++ 
b/tooling/metaprog/src/main/resources/holder/$TemplateHolder_actionReturningArray.java
@@ -37,7 +37,7 @@ public class /*${showcase-name}*/Holder_actionReturningArray {
     private final /*${showcase-name}*/Holder holder;
 
     public /*${showcase-type}*/[] act() {
-        val array = new long[(int)samples.stream().count()];
+        val array = new /*${showcase-type}*/[(int)samples.stream().count()];
         samples.stream()
             .forEach(IndexedConsumer.zeroBased((index, value)->array[index] = 
value));
         return array;
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 4b413b97a0..526a753994 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
@@ -1,7 +1,6 @@
 package org.apache.isis.tooling.metaprog.demoshowcases.value;
 
 import java.io.File;
-import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.Collection;
 import java.util.Comparator;
@@ -9,17 +8,14 @@ import java.util.Objects;
 import java.util.Set;
 
 import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.EnumSource;
 
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.base._Files;
 import org.apache.isis.commons.internal.base._Text;
 import org.apache.isis.commons.internal.collections._Sets;
 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;
@@ -31,147 +27,16 @@ import lombok.extern.log4j.Log4j2;
 @Log4j2
 class ValueTypeGenTemplateTest {
 
-    @Test
-    void testUuid() throws IOException {
-
-        val config = Config.builder()
-                .outputRootDir(outputDir("uuid"))
-                .showcaseName("JavaUtilUuid")
-                .javaPackage("demoapp.dom.types.javautil.uuids")
-                .showcaseValueType("java.util.UUID")
-                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.UUIDValueSemantics")
-                .build();
-
-        testShowcase(config);
+    @ParameterizedTest
+    @EnumSource(ValueShowCase.class)
+    void test(final ValueShowCase valueShowCase) {
+        testShowcase(valueShowCase.getConfigBuilder()
+                .outputRootDir(outputDir(valueShowCase.name().toLowerCase()))
+                .build());
     }
 
-    @Test
-    void testWLong() throws IOException {
-
-        val config = fundamentalTypeSupportNotice()
-                .outputRootDir(outputDir("wlong"))
-                .showcaseName("WrapperLong")
-                .javaPackage("demoapp.dom.types.javalang.longs")
-                .showcaseValueType("java.lang.Long")
-                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.LongValueSemantics")
-                .build();
-
-        testShowcase(config);
-    }
-
-    @Test //@Disabled("WIP")
-    void testPLong() throws IOException {
-
-        val config = fundamentalTypeSupportNotice()
-                .outputRootDir(outputDir("plong"))
-                .showcaseName("PrimitiveLong")
-                .javaPackage("demoapp.dom.types.primitive.longs")
-                .showcaseValueType("long")
-                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.LongValueSemantics")
-                .templates(Template.PRIMITIVE_SET)
-                .templateVariant(TemplateVariant.PRIMITIVE)
-                .build();
-
-        testShowcase(config);
-    }
-
-    @Test
-    void testWInt() throws IOException {
-
-        val config = fundamentalTypeSupportNotice()
-                .outputRootDir(outputDir("wint"))
-                .showcaseName("WrapperInteger")
-                .javaPackage("demoapp.dom.types.javalang.integers")
-                .showcaseValueType("java.lang.Integer")
-                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.IntValueSemantics")
-                .build();
-
-        testShowcase(config);
-    }
-
-    @Test
-    void testWShort() throws IOException {
-
-        val config = fundamentalTypeSupportNotice()
-                .outputRootDir(outputDir("wshort"))
-                .showcaseName("WrapperShort")
-                .javaPackage("demoapp.dom.types.javalang.shorts")
-                .showcaseValueType("java.lang.Short")
-                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.ShortValueSemantics")
-                .build();
-
-        testShowcase(config);
-    }
-
-    @Test
-    void testWByte() throws IOException {
-
-        val config = fundamentalTypeSupportNotice()
-                .outputRootDir(outputDir("wbyte"))
-                .showcaseName("WrapperByte")
-                .javaPackage("demoapp.dom.types.javalang.bytes")
-                .showcaseValueType("java.lang.Byte")
-                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.ByteValueSemantics")
-                .build();
-
-        testShowcase(config);
-    }
-
-    @Test
-    void testWDouble() throws IOException {
-
-        val config = fundamentalTypeSupportNotice()
-                .outputRootDir(outputDir("wdouble"))
-                .showcaseName("WrapperDouble")
-                .javaPackage("demoapp.dom.types.javalang.doubles")
-                .showcaseValueType("java.lang.Double")
-                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.DoubleValueSemantics")
-                .build();
-
-        testShowcase(config);
-    }
-
-    @Test
-    void testWFloat() throws IOException {
-
-        val config = fundamentalTypeSupportNotice()
-                .outputRootDir(outputDir("wfloat"))
-                .showcaseName("WrapperFloat")
-                .javaPackage("demoapp.dom.types.javalang.floats")
-                .showcaseValueType("java.lang.Float")
-                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.FloatValueSemantics")
-                .build();
-
-        testShowcase(config);
-    }
-
-//    @Test
-//    void testWBoolean() throws IOException {
-//
-//        val config = fundamentalTypeSupportNotice()
-//                .outputRootDir(outputDir("wbool"))
-//                .showcaseName("WrapperBoolean")
-//                .javaPackage("demoapp.dom.types.javalang.booleans")
-//                .showcaseValueType("java.lang.Boolean")
-//                
.showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.BooleanValueSemantics")
-//                .build();
-//
-//        testShowcase(config);
-//    }
-
     // -- HELPER
 
-    private ConfigBuilder fundamentalTypeSupportNotice() {
-        val defaults = Config.builder().build();
-        return Config.builder()
-                .jdoTypeSupportNotice(defaults.getJdoTypeSupportNotice()
-                        + " see 
link:https://www.datanucleus.org/products/accessplatform_6_0/jdo/mapping.html#_primitive_and_java_lang_types[DataNucleus]";)
-                .jpaTypeSupportNotice(defaults.getJdoTypeSupportNotice()
-                        + " see 
link:https://www.objectdb.com/java/jpa/entity/types#simple_java_data_types[ObjectDB]";)
-                .jaxbTypeSupportNotice(defaults.getJaxbTypeSupportNotice()
-                        + " see 
link:https://docs.oracle.com/cd/E12840_01/wls/docs103/webserv/data_types.html#wp223908[Oracle]";);
-    }
-
     @SneakyThrows
     void testShowcase(final ValueTypeGenTemplate.Config config) {
 

Reply via email to