You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2020/06/26 07:06:44 UTC

[isis] branch ISIS-2222 updated (98d1f84 -> cf0d54e)

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

danhaywood pushed a change to branch ISIS-2222
in repository https://gitbox.apache.org/repos/asf/isis.git.


 discard 98d1f84  ISIS-2222: renames PrimitivesDemo to WrapperDemo
 discard adc015d  ISIS-2222: removes the XxxNavigable mixins for primitive types.
 discard 0effa0a  ISIS-2222: adds in pages for other 6 primitive data types.
 discard d1925d1  ISIS-2222: adds in pages for other 6 primitive data types.
 discard fc31257  ISIS-2222: standardize objectType prefix to just 'demo.'
 discard 76e6094  ISIS-2222: primitive byte demo pages, same as primitive char
     add e75f49a  ISIS-2340: InteractionEvent: store conversationId
     new 97b6f7d  ISIS-2222: primitive byte demo pages, same as primitive char
     new 42d5047  ISIS-2222: standardize objectType prefix to just 'demo.'
     new 8188908  ISIS-2222: adds in pages for other 6 primitive data types.
     new e374a82  ISIS-2222: adds in pages for other 6 primitive data types.
     new f66862b  ISIS-2222: removes the XxxNavigable mixins for primitive types.
     new cf0d54e  ISIS-2222: renames PrimitivesDemo to WrapperDemo

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (98d1f84)
            \
             N -- N -- N   refs/heads/ISIS-2222 (cf0d54e)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

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


Summary of changes:
 .../core/runtime/events/RuntimeEventService.java   | 15 ++++--
 .../iactn/IsisInteractionLifecycleEvent.java       |  1 +
 .../javafx/model/action/ActionUiModelFx.java       |  3 +-
 .../incubator/viewer/javafx/model/util/_fx.java    |  3 +-
 .../javafx/ui/IsisModuleIncViewerJavaFxUi.java     |  4 +-
 .../viewer/javafx/ui/main/UiActionHandler.java     | 63 ++++++++++++++++++++++
 .../incubator/viewer/javafx/ui/main/UiBuilder.java | 40 ++++++++++----
 .../viewer/javafx/ui/main/UiController.java        | 27 +---------
 8 files changed, 114 insertions(+), 42 deletions(-)
 create mode 100644 incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiActionHandler.java


[isis] 06/06: ISIS-2222: renames PrimitivesDemo to WrapperDemo

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

danhaywood pushed a commit to branch ISIS-2222
in repository https://gitbox.apache.org/repos/asf/isis.git

commit cf0d54ec293941f56fe27fbeb222b271ef27ade8
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jun 26 08:05:52 2020 +0100

    ISIS-2222: renames PrimitivesDemo to WrapperDemo
---
 .../src/main/java/demoapp/dom/menubars.layout.xml  |  8 ++---
 .../main/java/demoapp/dom/types/DataTypesMenu.java | 39 +++++++++++-----------
 .../WrapperDemo-description.adoc}                  |  0
 .../WrapperDemo.java}                              |  6 ++--
 .../WrapperDemo.layout.xml}                        |  0
 5 files changed, 25 insertions(+), 28 deletions(-)

diff --git a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
index 8c5e59e..af24e6a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
@@ -26,12 +26,8 @@
                 <mb3:serviceAction objectType="demo.DataTypesMenu" id="primitiveBooleans"/>
             </mb3:section>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.DataTypesMenu" id="text">
-                    <cpt:named>Text</cpt:named>
-                </mb3:serviceAction>
-                <mb3:serviceAction objectType="demo.DataTypesMenu" id="primitives">
-                    <cpt:named>Primitives</cpt:named>
-                </mb3:serviceAction>
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="text"/>
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="wrappers"/>
                 <mb3:serviceAction objectType="demo.DataTypesMenu" id="temporals">
                     <cpt:named>Temporal Types</cpt:named>
                 </mb3:serviceAction>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/DataTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/DataTypesMenu.java
index c9fa3f5..dd828b6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/DataTypesMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/DataTypesMenu.java
@@ -32,6 +32,7 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainObjectLayout;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.value.Blob;
 import org.apache.isis.applib.value.Clob;
@@ -48,7 +49,7 @@ import lombok.extern.log4j.Log4j2;
 import demoapp.dom.types.blob.BlobDemo;
 import demoapp.dom.types.clob.ClobDemo;
 import demoapp.dom.types.markup.MarkupDemo;
-import demoapp.dom.types.primitive.PrimitivesDemo;
+import demoapp.dom.types.wrapper.WrapperDemo;
 import demoapp.dom.types.primitive.booleans.PrimitiveBooleans;
 import demoapp.dom.types.primitive.bytes.PrimitiveBytes;
 import demoapp.dom.types.primitive.chars.PrimitiveChars;
@@ -82,10 +83,10 @@ public class DataTypesMenu {
         return demo;
     }
     
-    @Action
+    @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
-    public PrimitivesDemo primitives(){
-        val demo = factoryService.viewModel(PrimitivesDemo.class);
+    public WrapperDemo wrappers(){
+        val demo = factoryService.viewModel(WrapperDemo.class);
 
         demo.setJavaLangByte(Byte.MAX_VALUE);
         demo.setJavaLangShort(Short.MAX_VALUE);
@@ -98,7 +99,7 @@ public class DataTypesMenu {
         return demo;
     }
 
-    @Action
+    @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-clock")
     public TemporalDemo temporals(){
         val demo = factoryService.viewModel(TemporalDemo.class);
@@ -114,7 +115,7 @@ public class DataTypesMenu {
         return demo;
     }
 
-    @Action
+    @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-at")
     public UuidDemo uuid(){
         val demo = factoryService.viewModel(UuidDemo.class);
@@ -122,7 +123,7 @@ public class DataTypesMenu {
         return demo;
     }
 
-    @Action
+    @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-cloud")
     public BlobDemo blobs(){
         val demo = factoryService.viewModel(BlobDemo.class);
@@ -136,8 +137,8 @@ public class DataTypesMenu {
 
         return demo;
     }
-    
-    @Action
+
+    @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-cloud")
     public ClobDemo clobs(){
         val demo = factoryService.viewModel(ClobDemo.class);
@@ -151,8 +152,8 @@ public class DataTypesMenu {
 
         return demo;
     }
-    
-    @Action
+
+    @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-code")
     public MarkupDemo markup(){
         val demo = factoryService.viewModel(MarkupDemo.class);
@@ -168,49 +169,49 @@ public class DataTypesMenu {
     }
 
 
-    @Action
+    @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
     public PrimitiveBytes primitiveBytes(){
         return new PrimitiveBytes();
     }
 
-    @Action
+    @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
     public PrimitiveShorts primitiveShorts(){
         return new PrimitiveShorts();
     }
 
-    @Action
+    @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
     public PrimitiveInts primitiveInts(){
         return new PrimitiveInts();
     }
 
-    @Action
+    @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
     public PrimitiveLongs primitiveLongs(){
         return new PrimitiveLongs();
     }
 
-    @Action
+    @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
     public PrimitiveFloats primitiveFloats(){
         return new PrimitiveFloats();
     }
 
-    @Action
+    @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
     public PrimitiveDoubles primitiveDoubles(){
         return new PrimitiveDoubles();
     }
 
-    @Action
+    @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
     public PrimitiveChars primitiveChars(){
         return new PrimitiveChars();
     }
 
-    @Action
+    @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
     public PrimitiveBooleans primitiveBooleans(){
         return new PrimitiveBooleans();
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/PrimitivesDemo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/WrapperDemo-description.adoc
similarity index 100%
rename from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/PrimitivesDemo-description.adoc
rename to examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/WrapperDemo-description.adoc
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/PrimitivesDemo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/WrapperDemo.java
similarity index 97%
rename from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/PrimitivesDemo.java
rename to examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/WrapperDemo.java
index 819c155..1bbe2ec 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/PrimitivesDemo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/WrapperDemo.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.types.primitive;
+package demoapp.dom.types.wrapper;
 
 import java.util.List;
 
@@ -45,7 +45,7 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.Primitives", editing=Editing.ENABLED)
 @Log4j2
-public class PrimitivesDemo implements HasAsciiDocDescription {
+public class WrapperDemo implements HasAsciiDocDescription {
 
     public String title() {
         return "Primitives Demo";
@@ -63,7 +63,7 @@ public class PrimitivesDemo implements HasAsciiDocDescription {
     }
     
     @Action
-    public PrimitivesDemo calculateNull() {
+    public WrapperDemo calculateNull() {
         return null;
     }
     
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/PrimitivesDemo.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/WrapperDemo.layout.xml
similarity index 100%
rename from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/PrimitivesDemo.layout.xml
rename to examples/demo/domain/src/main/java/demoapp/dom/types/wrapper/WrapperDemo.layout.xml


[isis] 01/06: ISIS-2222: primitive byte demo pages, same as primitive char

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

danhaywood pushed a commit to branch ISIS-2222
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 97b6f7d6db594037becc14c8db7da13774d6de88
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jun 26 06:30:35 2020 +0100

    ISIS-2222: primitive byte demo pages, same as primitive char
---
 .../bytes/PrimitiveBytes-description.adoc          | 89 ++++++++++++++++++++--
 .../primitive/bytes/PrimitiveBytes.layout.xml      |  3 +
 .../bytes/holder/PrimitiveByteHolder.java          | 40 +++++++++-
 .../PrimitiveByteHolder_actionReturning.java       |  4 +-
 ...veByteHolder_mixinPropertyNamedNotEscaped.java} | 12 ++-
 ...rimitiveByteHolder_mixinPropertyNavigable.java} | 16 ++--
 ...itiveByteHolder_mixinPropertyWithCssClass.java} | 11 ++-
 ...dateReadOnlyProperty2PromptInlineAsIfEdit.java} | 13 +++-
 ...older_updateReadOnlyPropertyPositionPanel.java} |  8 +-
 ...r_updateReadOnlyPropertyPromptStyleInline.java} |  7 +-
 ...er_updateReadOnlyPropertyPromptStyleModal.java} |  9 ++-
 ...eReadOnlyPropertyPromptStylePanelDropDown.java} |  8 +-
 ..._updateReadOnlyPropertyPromptStyleSidebar.java} |  9 ++-
 ...teHolder_updateReadOnlyPropertyWithChoices.java | 11 ++-
 .../jdo/PrimitiveByteJdoEntity-description.adoc    | 17 +++--
 .../bytes/jdo/PrimitiveByteJdoEntity.java          | 14 +++-
 .../bytes/jdo/PrimitiveByteJdoEntity.layout.xml    | 18 +++--
 .../vm/PrimitiveByteViewModel-description.adoc     | 13 ++--
 .../primitive/bytes/vm/PrimitiveByteViewModel.java |  8 ++
 .../bytes/vm/PrimitiveByteViewModel.layout.xml     | 19 +++--
 .../PrimitiveCharHolder_actionReturning.java       |  2 -
 ...iveCharHolder_mixinPropertyNamedNotEscaped.java |  2 -
 ...PrimitiveCharHolder_mixinPropertyNavigable.java |  3 -
 ...mitiveCharHolder_mixinPropertyWithCssClass.java |  1 -
 .../jdo/PrimitiveCharJdoEntitySeedService.java     |  2 -
 .../primitive/chars/vm/PrimitiveCharViewModel.java |  1 -
 26 files changed, 252 insertions(+), 88 deletions(-)

diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes-description.adoc
index 6c13918..3618f70 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes-description.adoc
@@ -2,13 +2,59 @@ The framework has built-in support for all of the primitive data types, includin
 
 From here you can:
 
-* open a view model that uses the `byte` datatype
 * navigate to an entity that uses the `byte` datatype
+* open a view model that uses the `byte` datatype
 
 Because `byte` is a primitive value, the properties on these domain objects are mandatory.
 
-These objects also have actions that demonstrate the use of `byte` as a parameter and as a return type.
-These are mixins to a common interface implemented by both view model and entity:
+== Common interface
+
+These objects both implement a common interface, `PrimitiveByteHolder`:
+
+[source,java]
+----
+public interface PrimitiveByteHolder {
+
+    byte getReadOnlyProperty();
+    void setReadOnlyProperty(byte c);
+
+    byte getReadOnlyProperty2();
+    void setReadOnlyProperty2(byte c);
+
+    byte getReadWriteProperty();
+    void setReadWriteProperty(byte c);
+
+    @MemberOrder(name = "label-positions", sequence = "1")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.LEFT, describedAs = "labelPosition=LEFT", hidden = Where.ALL_TABLES)
+    default byte getReadOnlyPropertyDerivedLabelPositionLeft() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "2")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.TOP, describedAs = "labelPosition=TOP", hidden = Where.ALL_TABLES)
+    default byte getReadOnlyPropertyDerivedLabelPositionTop() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "3")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.RIGHT, describedAs = "labelPosition=RIGHT", hidden = Where.ALL_TABLES)
+    default byte getReadOnlyPropertyDerivedLabelPositionRight() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "4")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.NONE, describedAs = "labelPosition=NONE", hidden = Where.ALL_TABLES)
+    default byte getReadOnlyPropertyDerivedLabelPositionNone() { return getReadOnlyProperty(); }
+
+}
+----
+
+The default methods have annotations that automatically inherited.
+Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
+
+
+== Mixin actions
+
+A number of mixin actions contribute through this interface, demonstrate the use of `byte` as a parameter and as a return type.
+For example:
 
 * the `updateReadOnlyProperty` action is:
 +
@@ -24,17 +70,19 @@ public class PrimitiveByteHolder_updateReadOnlyProperty {
 
     private final PrimitiveByteHolder primitiveByteHolder;
 
-    public PrimitiveByteHolder act(char newValue) {
+    public PrimitiveByteHolder act(byte newValue) {
         primitiveByteHolder.setReadOnlyProperty(newValue);
         return primitiveByteHolder;
     }
-    public char default0Act() {
+    public byte default0Act() {
         return primitiveByteHolder.getReadOnlyProperty();
     }
 }
 ----
++
+There are a number of variants of this action, to demonstrate different prompt layouts.
 
-* and the `actionReturning` action is:
+* the `actionReturning` action is:
 +
 [source,java]
 ----
@@ -46,11 +94,36 @@ public class PrimitiveByteHolder_updateReadOnlyProperty {
 @RequiredArgsConstructor
 public class PrimitiveByteHolder_actionReturning {
 
-    private final PrimitiveByteHolder primitiveCharHolder;
+    private final PrimitiveByteHolder primitiveByteHolder;
 
-    public char act() {
+    public byte act() {
         return primitiveByteHolder.getReadOnlyProperty();
     }
 }
 ----
 
+== Mixin properties
+
+We also use the interface to contribute a number of mixin properties:
+
+* the `mixinPropertyWithCssClass` property:
++
+[source,java]
+----
+@Property()
+@PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ")
+@RequiredArgsConstructor
+public class PrimitiveByteHolder_mixinPropertyWithCssClass {
+
+    private final PrimitiveByteHolder primitiveByteHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public byte prop() {
+        return primitiveByteHolder.getReadOnlyProperty();
+    }
+}
+----
++
+TIP: the styling is provided from the `application.css` static resource.
+
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes.layout.xml
index d321296..55c5b87 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes.layout.xml
@@ -21,6 +21,9 @@
 				<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="Other" id="other" unreferencedProperties="true"/>
 		</bs3:col>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder.java
index 0a9703e..46300ef 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder.java
@@ -27,9 +27,13 @@ import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.Bounding;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -39,10 +43,42 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 
 public interface PrimitiveByteHolder {
 
+    @MemberOrder(name = "action-prompt-styles", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout
     byte getReadOnlyProperty();
-    void setReadOnlyProperty(byte b);
+    void setReadOnlyProperty(byte c);
 
+    @MemberOrder(name = "action-prompt-styles", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout(describedAs = "associated action uses promptStyle=INLINE_AS_IF_EDIT", hidden = Where.ALL_TABLES) // TODO: doesn't seem to get picked up
+    byte getReadOnlyProperty2();
+    void setReadOnlyProperty2(byte c);
+
+    @MemberOrder(name = "editable-properties", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout
     byte getReadWriteProperty();
-    void setReadWriteProperty(byte b);
+    void setReadWriteProperty(byte c);
+
+    @MemberOrder(name = "label-positions", sequence = "1")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.LEFT, describedAs = "labelPosition=LEFT", hidden = Where.ALL_TABLES)
+    default byte getReadOnlyPropertyDerivedLabelPositionLeft() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "2")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.TOP, describedAs = "labelPosition=TOP", hidden = Where.ALL_TABLES)
+    default byte getReadOnlyPropertyDerivedLabelPositionTop() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "3")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.RIGHT, describedAs = "labelPosition=RIGHT", hidden = Where.ALL_TABLES)
+    default byte getReadOnlyPropertyDerivedLabelPositionRight() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "4")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.NONE, describedAs = "labelPosition=NONE", hidden = Where.ALL_TABLES)
+    default byte getReadOnlyPropertyDerivedLabelPositionNone() { return getReadOnlyProperty(); }
 
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_actionReturning.java
index 7084990..3b45b15 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_actionReturning.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_actionReturning.java
@@ -25,9 +25,7 @@ import lombok.RequiredArgsConstructor;
 
 
 @Action(
-        semantics = SemanticsOf.SAFE,
-        associateWith = "readOnlyProperty",
-        associateWithSequence = "3"
+        semantics = SemanticsOf.SAFE
 )
 @RequiredArgsConstructor
 public class PrimitiveByteHolder_actionReturning {
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNamedNotEscaped.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_mixinPropertyNamedNotEscaped.java
similarity index 77%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNamedNotEscaped.java
copy to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_mixinPropertyNamedNotEscaped.java
index 7bafffe..01cecf3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNamedNotEscaped.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_mixinPropertyNamedNotEscaped.java
@@ -16,11 +16,9 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.types.primitive.chars.holder;
+package demoapp.dom.types.primitive.bytes.holder;
 
 import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
 
 import lombok.RequiredArgsConstructor;
 
@@ -28,13 +26,13 @@ import lombok.RequiredArgsConstructor;
 //@Property()
 //@PropertyLayout(named = "<i>Named<i/> <b>not</b> escaped property", namedEscaped = false, describedAs = "named = \"(some markup)\", namedEscaped = false") // TODO: this doesn't render, and causes bootlint issues
 @RequiredArgsConstructor
-public class PrimitiveCharHolder_mixinPropertyNamedNotEscaped {
+public class PrimitiveByteHolder_mixinPropertyNamedNotEscaped {
 
-    private final PrimitiveCharHolder primitiveCharHolder;
+    private final PrimitiveByteHolder primitiveByteHolder;
 
     @MemberOrder(name = "contributed", sequence = "3")
-    public char prop() {
-        return primitiveCharHolder.getReadOnlyProperty();
+    public byte prop() {
+        return primitiveByteHolder.getReadOnlyProperty();
     }
 
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_mixinPropertyNavigable.java
similarity index 76%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_actionReturning.java
copy to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_mixinPropertyNavigable.java
index 7084990..970c176 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_actionReturning.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_mixinPropertyNavigable.java
@@ -18,24 +18,22 @@
  */
 package demoapp.dom.types.primitive.bytes.holder;
 
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.MemberOrder;
 
 import lombok.RequiredArgsConstructor;
 
 
-@Action(
-        semantics = SemanticsOf.SAFE,
-        associateWith = "readOnlyProperty",
-        associateWithSequence = "3"
-)
+//@Property()
+//@PropertyLayout( navigable = Navigable.PARENT, describedAs = "navigable=PARENT") // TODO: doesn't seem to do anything
 @RequiredArgsConstructor
-public class PrimitiveByteHolder_actionReturning {
+public class PrimitiveByteHolder_mixinPropertyNavigable {
 
     private final PrimitiveByteHolder primitiveByteHolder;
 
-    public byte act() {
+    @MemberOrder(name = "contributed", sequence = "1")
+    public byte prop() {
         return primitiveByteHolder.getReadOnlyProperty();
     }
 
+
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyWithCssClass.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_mixinPropertyWithCssClass.java
similarity index 80%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyWithCssClass.java
copy to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_mixinPropertyWithCssClass.java
index aa146b3..90b2e41 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyWithCssClass.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_mixinPropertyWithCssClass.java
@@ -16,10 +16,9 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.types.primitive.chars.holder;
+package demoapp.dom.types.primitive.bytes.holder;
 
 import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Navigable;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
@@ -30,12 +29,12 @@ import lombok.RequiredArgsConstructor;
 @Property()
 @PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ", hidden = Where.ALL_TABLES)
 @RequiredArgsConstructor
-public class PrimitiveCharHolder_mixinPropertyWithCssClass {
+public class PrimitiveByteHolder_mixinPropertyWithCssClass {
 
-    private final PrimitiveCharHolder primitiveCharHolder;
+    private final PrimitiveByteHolder primitiveByteHolder;
 
     @MemberOrder(name = "contributed", sequence = "1")
-    public char prop() {
-        return primitiveCharHolder.getReadOnlyProperty();
+    public byte prop() {
+        return primitiveByteHolder.getReadOnlyProperty();
     }
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
similarity index 73%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java
copy to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
index d7075f6..cb626e7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
@@ -19,27 +19,32 @@
 package demoapp.dom.types.primitive.bytes.holder;
 
 import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.primitive.bytes.holder.PrimitiveByteHolder;
+
 
 @Action(
         semantics = SemanticsOf.IDEMPOTENT,
-        associateWith = "readOnlyProperty",
+        associateWith = "readOnlyProperty2",
         associateWithSequence = "1"
 )
+@ActionLayout(promptStyle = PromptStyle.INLINE_AS_IF_EDIT)
 @RequiredArgsConstructor
-public class PrimitiveByteHolder_updateReadOnlyProperty {
+public class PrimitiveByteHolder_updateReadOnlyProperty2PromptInlineAsIfEdit {
 
     private final PrimitiveByteHolder primitiveByteHolder;
 
     public PrimitiveByteHolder act(byte newValue) {
-        primitiveByteHolder.setReadOnlyProperty(newValue);
+        primitiveByteHolder.setReadOnlyProperty2(newValue);
         return primitiveByteHolder;
     }
     public byte default0Act() {
-        return primitiveByteHolder.getReadOnlyProperty();
+        return primitiveByteHolder.getReadOnlyProperty2();
     }
 
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyPositionPanel.java
similarity index 80%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java
copy to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyPositionPanel.java
index d7075f6..4698be4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyPositionPanel.java
@@ -19,18 +19,22 @@
 package demoapp.dom.types.primitive.bytes.holder;
 
 import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.primitive.bytes.holder.PrimitiveByteHolder;
+
 
 @Action(
         semantics = SemanticsOf.IDEMPOTENT,
         associateWith = "readOnlyProperty",
-        associateWithSequence = "1"
+        associateWithSequence = "2"
 )
+@ActionLayout(position = ActionLayout.Position.PANEL, named = "Position in panel", describedAs = "position = PANEL")
 @RequiredArgsConstructor
-public class PrimitiveByteHolder_updateReadOnlyProperty {
+public class PrimitiveByteHolder_updateReadOnlyPropertyPositionPanel {
 
     private final PrimitiveByteHolder primitiveByteHolder;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyPromptStyleInline.java
similarity index 80%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java
copy to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyPromptStyleInline.java
index d7075f6..bcad7c1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyPromptStyleInline.java
@@ -19,18 +19,23 @@
 package demoapp.dom.types.primitive.bytes.holder;
 
 import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.primitive.bytes.holder.PrimitiveByteHolder;
+
 
 @Action(
         semantics = SemanticsOf.IDEMPOTENT,
         associateWith = "readOnlyProperty",
         associateWithSequence = "1"
 )
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Inline", describedAs = "promptStyle = INLINE")
 @RequiredArgsConstructor
-public class PrimitiveByteHolder_updateReadOnlyProperty {
+public class PrimitiveByteHolder_updateReadOnlyPropertyPromptStyleInline {
 
     private final PrimitiveByteHolder primitiveByteHolder;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyPromptStyleModal.java
similarity index 78%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java
copy to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyPromptStyleModal.java
index d7075f6..f1930b1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyPromptStyleModal.java
@@ -19,18 +19,23 @@
 package demoapp.dom.types.primitive.bytes.holder;
 
 import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.primitive.bytes.holder.PrimitiveByteHolder;
+
 
 @Action(
         semantics = SemanticsOf.IDEMPOTENT,
         associateWith = "readOnlyProperty",
-        associateWithSequence = "1"
+        associateWithSequence = "2"
 )
+@ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL, named = "Modal", describedAs = "promptStyle = MODAL")
 @RequiredArgsConstructor
-public class PrimitiveByteHolder_updateReadOnlyProperty {
+public class PrimitiveByteHolder_updateReadOnlyPropertyPromptStyleModal {
 
     private final PrimitiveByteHolder primitiveByteHolder;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
similarity index 79%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java
copy to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
index d7075f6..705d04c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
@@ -19,18 +19,22 @@
 package demoapp.dom.types.primitive.bytes.holder;
 
 import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.primitive.bytes.holder.PrimitiveByteHolder;
+
 
 @Action(
         semantics = SemanticsOf.IDEMPOTENT,
         associateWith = "readOnlyProperty",
-        associateWithSequence = "1"
+        associateWithSequence = "3"
 )
+@ActionLayout(position = ActionLayout.Position.PANEL_DROPDOWN, named = "Panel Dropdown", describedAs = "position = PANEL_DROPDOWN")
 @RequiredArgsConstructor
-public class PrimitiveByteHolder_updateReadOnlyProperty {
+public class PrimitiveByteHolder_updateReadOnlyPropertyPromptStylePanelDropDown {
 
     private final PrimitiveByteHolder primitiveByteHolder;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyPromptStyleSidebar.java
similarity index 77%
rename from examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java
rename to examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyPromptStyleSidebar.java
index d7075f6..7141aa9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyPromptStyleSidebar.java
@@ -19,18 +19,23 @@
 package demoapp.dom.types.primitive.bytes.holder;
 
 import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
 
+import demoapp.dom.types.primitive.bytes.holder.PrimitiveByteHolder;
+
 
 @Action(
         semantics = SemanticsOf.IDEMPOTENT,
         associateWith = "readOnlyProperty",
-        associateWithSequence = "1"
+        associateWithSequence = "3"
 )
+@ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR, named = "sidebar", describedAs = "promptStyle = DIALOG_SIDEBAR")
 @RequiredArgsConstructor
-public class PrimitiveByteHolder_updateReadOnlyProperty {
+public class PrimitiveByteHolder_updateReadOnlyPropertyPromptStyleSidebar {
 
     private final PrimitiveByteHolder primitiveByteHolder;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyWithChoices.java
index ad737a6..5704bd2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_updateReadOnlyPropertyWithChoices.java
@@ -23,6 +23,8 @@ import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -31,8 +33,9 @@ import lombok.RequiredArgsConstructor;
 @Action(
         semantics = SemanticsOf.IDEMPOTENT,
         associateWith = "readOnlyProperty",
-        associateWithSequence = "2"
+        associateWithSequence = "4"
 )
+@ActionLayout(promptStyle = PromptStyle.AS_CONFIGURED, named = "with choices")
 @RequiredArgsConstructor
 public class PrimitiveByteHolder_updateReadOnlyPropertyWithChoices {
 
@@ -50,9 +53,9 @@ public class PrimitiveByteHolder_updateReadOnlyPropertyWithChoices {
                 .map(x -> byteOf(x))
                 .collect(Collectors.toList());
     }
-    public String disableAct() {
-        return "Not yet supported";
-    }
+    public boolean hideAct() {
+        return true;
+    } // TODO: choices doesn't seem to work for this datatype
 
     private static Byte byteOf(int x) {
         return (byte)x;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity-description.adoc
index f85cc13..c45f434 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity-description.adoc
@@ -8,16 +8,16 @@ JDO supports `byte` out-of-the-box, so no special annotations are required.
         objectType = "demoapp.PrimitiveByteJdoEntity"
 )
 public class PrimitiveByteJdoEntity
-    implements HasAsciiDocDescription, PrimitiveByteHolder {          // <.>
+    implements HasAsciiDocDescription,   PrimitiveByteHolder {          // <.>
 
-    public PrimitiveByteJdoEntity(byte initialValue) {                  // <.>
-        this.readOnlyProperty = initialValue;
-        this.readWriteProperty = initialValue;
-    }
+    public PrimitiveByteJdoEntity(byte initialValue) { ... }            // <.>
 
-    @Getter @Setter
     @Title
-    private byte readOnlyProperty;
+    @Getter @Setter
+    private byte readOnlyProperty;                                      // <.>
+
+    @Getter @Setter
+    private byte readOnlyProperty2;
 
     @Getter @Setter
     @Property(editing = Editing.ENABLED)
@@ -26,4 +26,5 @@ public class PrimitiveByteJdoEntity
 }
 ----
 <.> a no-arg constructor is introduced by JDO enhancer
-<.> as a convenience
\ No newline at end of file
+<.> as a convenience
+<.> no additional annotations required.
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity.java
index 358d983..50011cd 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity.java
@@ -26,7 +26,9 @@ import javax.jdo.annotations.PersistenceCapable;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -39,17 +41,25 @@ import demoapp.dom.types.primitive.bytes.holder.PrimitiveByteHolder;
 @DomainObject(
         objectType = "demoapp.PrimitiveByteJdoEntity"
 )
-public class PrimitiveByteJdoEntity implements HasAsciiDocDescription, PrimitiveByteHolder {
+public class PrimitiveByteJdoEntity
+        implements HasAsciiDocDescription,
+                   PrimitiveByteHolder {
 
     public PrimitiveByteJdoEntity(byte initialValue) {
         this.readOnlyProperty = initialValue;
+        this.readOnlyProperty2 = initialValue;
         this.readWriteProperty = initialValue;
     }
 
-    @Getter @Setter
     @Title
+    @Getter @Setter
     private byte readOnlyProperty;
 
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
+    @Getter @Setter
+    private byte readOnlyProperty2;
+
     @Getter @Setter
     @Property(editing = Editing.ENABLED)
     private byte readWriteProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity.layout.xml
index 77a428c..ffa55a8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity.layout.xml
@@ -8,6 +8,7 @@
 	<bs3:row>
 		<bs3:col span="10" unreferencedActions="true">
 			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
 			<cpt:action id="rebuildMetamodel"/>
 		</bs3:col>
 		<bs3:col span="2">
@@ -17,12 +18,19 @@
 
 	<bs3:row>
 		<bs3:col span="6">
-			<cpt:fieldSet name="Demo" id="general">
-				<cpt:action id="actionReturning" position="PANEL"/>
-				<cpt:property id="readOnlyProperty" labelPosition="LEFT"/>
-				<cpt:property id="readWriteProperty" labelPosition="LEFT"/>
-				<cpt:property id="readWriteOptionalProperty" labelPosition="LEFT"/>
+			<cpt:fieldSet name="Action Prompt Styles" id="action-prompt-styles">
+				<cpt:property id="readOnlyProperty" />
+				<cpt:property id="readOnlyProperty2" >
+					<cpt:describedAs>
+						Associated action uses promptStyle=INLINE_AS_IF_EDIT
+					</cpt:describedAs>
+				</cpt:property>
 			</cpt:fieldSet>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties">
+				<cpt:property id="readWriteProperty" />
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Label Positions" id="label-positions"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
 			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
 		</bs3:col>
 		<bs3:col span="6">
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel-description.adoc
index 0c32e49..9ed7fff 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel-description.adoc
@@ -1,4 +1,4 @@
-JAXB supports `char` out-of-the-box, so no special annotations are required.
+JAXB supports `byte` out-of-the-box, so no special annotations are required.
 
 [source,java]
 ----
@@ -15,13 +15,15 @@ public class PrimitiveByteViewModel
                    PrimitiveByteHolder {
 
     public PrimitiveByteViewModel(byte initialValue) {  // <.>
-        this.readOnlyProperty = initialValue;
-        this.readWriteProperty = initialValue;
+        // ...
     }
 
     @Title
     @Getter @Setter
-    private byte readOnlyProperty;
+    private byte readOnlyProperty;                      // <.>
+
+    @Getter @Setter
+    private byte readOnlyProperty2;
 
     @Getter @Setter
     @Property(editing = Editing.ENABLED)
@@ -30,4 +32,5 @@ public class PrimitiveByteViewModel
 }
 ----
 <.> a no-arg constructor is required by JAXB
-<.> as a convenience
\ No newline at end of file
+<.> as a convenience
+<.> no additional annotations required.
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java
index 08c96d3..c8772e2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java
@@ -27,7 +27,9 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -49,6 +51,7 @@ public class PrimitiveByteViewModel
 
     public PrimitiveByteViewModel(byte initialValue) {
         this.readOnlyProperty = initialValue;
+        this.readOnlyProperty2 = initialValue;
         this.readWriteProperty = initialValue;
     }
 
@@ -56,6 +59,11 @@ public class PrimitiveByteViewModel
     @Getter @Setter
     private byte readOnlyProperty;
 
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
+    @Getter @Setter
+    private byte readOnlyProperty2;
+
     @Getter @Setter
     @Property(editing = Editing.ENABLED)
     private byte readWriteProperty;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.layout.xml
index 5dcc09c..ffa55a8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.layout.xml
@@ -8,6 +8,7 @@
 	<bs3:row>
 		<bs3:col span="10" unreferencedActions="true">
 			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
 			<cpt:action id="rebuildMetamodel"/>
 		</bs3:col>
 		<bs3:col span="2">
@@ -17,12 +18,19 @@
 
 	<bs3:row>
 		<bs3:col span="6">
-			<cpt:fieldSet name="Demo" id="general">
-				<cpt:action id="actionReturning" position="PANEL"/>
-				<cpt:property id="readOnlyProperty" labelPosition="LEFT"/>
-				<cpt:property id="readWriteProperty" labelPosition="LEFT"/>
-				<cpt:property id="readWriteOptionalProperty" labelPosition="LEFT"/>
+			<cpt:fieldSet name="Action Prompt Styles" id="action-prompt-styles">
+				<cpt:property id="readOnlyProperty" />
+				<cpt:property id="readOnlyProperty2" >
+					<cpt:describedAs>
+						Associated action uses promptStyle=INLINE_AS_IF_EDIT
+					</cpt:describedAs>
+				</cpt:property>
 			</cpt:fieldSet>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties">
+				<cpt:property id="readWriteProperty" />
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Label Positions" id="label-positions"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
 			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
 		</bs3:col>
 		<bs3:col span="6">
@@ -32,6 +40,7 @@
 				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
 				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
 				<cpt:action id="inspectMetamodel"  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/chars/holder/PrimitiveCharHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java
index a8104a8..7bea2e5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java
@@ -19,8 +19,6 @@
 package demoapp.dom.types.primitive.chars.holder;
 
 import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNamedNotEscaped.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNamedNotEscaped.java
index 7bafffe..fb79463 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNamedNotEscaped.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNamedNotEscaped.java
@@ -19,8 +19,6 @@
 package demoapp.dom.types.primitive.chars.holder;
 
 import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
 
 import lombok.RequiredArgsConstructor;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNavigable.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNavigable.java
index ca18015..4844767 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNavigable.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNavigable.java
@@ -19,9 +19,6 @@
 package demoapp.dom.types.primitive.chars.holder;
 
 import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Navigable;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
 
 import lombok.RequiredArgsConstructor;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyWithCssClass.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyWithCssClass.java
index aa146b3..8606eff 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyWithCssClass.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyWithCssClass.java
@@ -19,7 +19,6 @@
 package demoapp.dom.types.primitive.chars.holder;
 
 import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Navigable;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntitySeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntitySeedService.java
index 1b94a31..17900f4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntitySeedService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntitySeedService.java
@@ -12,8 +12,6 @@ import org.apache.isis.core.runtime.events.app.AppLifecycleEvent;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
 
-import demoapp.dom.viewmodels.jaxbrefentity.ChildJdoEntity;
-
 @Service
 public class PrimitiveCharJdoEntitySeedService {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.java
index cf8d9b9..e52dd71 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.java
@@ -28,7 +28,6 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.Where;
 


[isis] 03/06: ISIS-2222: adds in pages for other 6 primitive data types.

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

danhaywood pushed a commit to branch ISIS-2222
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 8188908175426d5ecea9f0e2763f772a425cd9da
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jun 26 07:54:07 2020 +0100

    ISIS-2222: adds in pages for other 6 primitive data types.
---
 .../src/main/java/demoapp/dom/menubars.layout.xml  | 18 +++++---
 .../main/java/demoapp/dom/types/DataTypesMenu.java | 48 +++++++++++++++++++++-
 .../dom/types/primitive/bytes/PrimitiveBytes.java  |  2 +-
 .../jdo/PrimitiveByteJdoEntity-description.adoc    |  2 +-
 .../bytes/jdo/PrimitiveByteJdoEntity.java          |  2 +-
 .../vm/PrimitiveByteViewModel-description.adoc     |  2 +-
 .../primitive/bytes/vm/PrimitiveByteViewModel.java |  2 +-
 .../dom/types/primitive/chars/PrimitiveChars.java  |  5 ---
 .../PrimitiveCharHolder_actionReturning.java       |  2 +-
 ...iveCharHolder_mixinPropertyNamedNotEscaped.java |  2 +-
 ...PrimitiveCharHolder_mixinPropertyNavigable.java |  2 +-
 ...mitiveCharHolder_mixinPropertyWithCssClass.java |  2 +-
 ...pdateReadOnlyProperty2PromptInlineAsIfEdit.java |  4 +-
 ...Holder_updateReadOnlyPropertyPositionPanel.java |  5 +--
 ...er_updateReadOnlyPropertyPromptStyleInline.java |  4 +-
 ...der_updateReadOnlyPropertyPromptStyleModal.java |  4 +-
 ...teReadOnlyPropertyPromptStylePanelDropDown.java |  5 +--
 ...r_updateReadOnlyPropertyPromptStyleSidebar.java |  4 +-
 ...arHolder_updateReadOnlyPropertyWithChoices.java |  4 +-
 .../jdo/PrimitiveCharJdoEntity-description.adoc    |  2 +-
 .../chars/jdo/PrimitiveCharJdoEntity.java          |  4 +-
 .../vm/PrimitiveCharViewModel-description.adoc     |  2 +-
 .../primitive/chars/vm/PrimitiveCharViewModel.java |  4 +-
 23 files changed, 87 insertions(+), 44 deletions(-)

diff --git a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
index 5effb74..8c5e59e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
@@ -17,28 +17,34 @@
             <mb3:named>Data Types</mb3:named>
             <mb3:section>
                 <mb3:serviceAction objectType="demo.DataTypesMenu" id="primitiveBytes"/>
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="primitiveShorts"/>
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="primitiveInts"/>
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="primitiveLongs"/>
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="primitiveFloats"/>
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="primitiveDoubles"/>
                 <mb3:serviceAction objectType="demo.DataTypesMenu" id="primitiveChars"/>
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="primitiveBooleans"/>
             </mb3:section>
             <mb3:section>
                 <mb3:serviceAction objectType="demo.DataTypesMenu" id="text">
                     <cpt:named>Text</cpt:named>
                 </mb3:serviceAction>
-                <mb3:serviceAction objectType="demo.FeaturedTypesMenu" id="primitives">
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="primitives">
                     <cpt:named>Primitives</cpt:named>
                 </mb3:serviceAction>
-                <mb3:serviceAction objectType="demo.FeaturedTypesMenu" id="temporals">
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="temporals">
                     <cpt:named>Temporal Types</cpt:named>
                 </mb3:serviceAction>
-                <mb3:serviceAction objectType="demo.FeaturedTypesMenu" id="uuid">
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="uuid">
                     <cpt:named>UUID Type</cpt:named>
                 </mb3:serviceAction>
-                <mb3:serviceAction objectType="demo.FeaturedTypesMenu" id="blobs">
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="blobs">
                     <cpt:named>Blob Type</cpt:named>
                 </mb3:serviceAction>
-                <mb3:serviceAction objectType="demo.FeaturedTypesMenu" id="clobs">
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="clobs">
                     <cpt:named>Clob Type</cpt:named>
                 </mb3:serviceAction>
-                <mb3:serviceAction objectType="demo.FeaturedTypesMenu" id="markup">
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="markup">
                     <cpt:named>Markup Type (HTML)</cpt:named>
                 </mb3:serviceAction>
             </mb3:section>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/DataTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/DataTypesMenu.java
index 37ae410..c9fa3f5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/DataTypesMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/DataTypesMenu.java
@@ -49,8 +49,14 @@ import demoapp.dom.types.blob.BlobDemo;
 import demoapp.dom.types.clob.ClobDemo;
 import demoapp.dom.types.markup.MarkupDemo;
 import demoapp.dom.types.primitive.PrimitivesDemo;
+import demoapp.dom.types.primitive.booleans.PrimitiveBooleans;
 import demoapp.dom.types.primitive.bytes.PrimitiveBytes;
 import demoapp.dom.types.primitive.chars.PrimitiveChars;
+import demoapp.dom.types.primitive.doubles.PrimitiveDoubles;
+import demoapp.dom.types.primitive.floats.PrimitiveFloats;
+import demoapp.dom.types.primitive.ints.PrimitiveInts;
+import demoapp.dom.types.primitive.longs.PrimitiveLongs;
+import demoapp.dom.types.primitive.shorts.PrimitiveShorts;
 import demoapp.dom.types.text.TextDemo;
 import demoapp.dom.types.time.TemporalDemo;
 import demoapp.dom.types.uuid.UuidDemo;
@@ -161,6 +167,43 @@ public class DataTypesMenu {
         return demo;
     }
 
+
+    @Action
+    @ActionLayout(cssClassFa="fa-hashtag")
+    public PrimitiveBytes primitiveBytes(){
+        return new PrimitiveBytes();
+    }
+
+    @Action
+    @ActionLayout(cssClassFa="fa-hashtag")
+    public PrimitiveShorts primitiveShorts(){
+        return new PrimitiveShorts();
+    }
+
+    @Action
+    @ActionLayout(cssClassFa="fa-hashtag")
+    public PrimitiveInts primitiveInts(){
+        return new PrimitiveInts();
+    }
+
+    @Action
+    @ActionLayout(cssClassFa="fa-hashtag")
+    public PrimitiveLongs primitiveLongs(){
+        return new PrimitiveLongs();
+    }
+
+    @Action
+    @ActionLayout(cssClassFa="fa-hashtag")
+    public PrimitiveFloats primitiveFloats(){
+        return new PrimitiveFloats();
+    }
+
+    @Action
+    @ActionLayout(cssClassFa="fa-hashtag")
+    public PrimitiveDoubles primitiveDoubles(){
+        return new PrimitiveDoubles();
+    }
+
     @Action
     @ActionLayout(cssClassFa="fa-hashtag")
     public PrimitiveChars primitiveChars(){
@@ -169,8 +212,9 @@ public class DataTypesMenu {
 
     @Action
     @ActionLayout(cssClassFa="fa-hashtag")
-    public PrimitiveBytes primitiveBytes(){
-        return new PrimitiveBytes();
+    public PrimitiveBooleans primitiveBooleans(){
+        return new PrimitiveBooleans();
     }
 
+
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes.java
index b39907e..56931ae 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes.java
@@ -60,7 +60,7 @@ public class PrimitiveBytes implements HasAsciiDocDescription {
         return new PrimitiveByteViewModel(initialValue);
     }
     public byte default0OpenViewModel() {
-        return (byte)1;
+        return (byte)123;
     }
 
     @Collection
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity-description.adoc
index 3f6b01a..f3c66f1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity-description.adoc
@@ -12,7 +12,7 @@ public class PrimitiveByteJdoEntity
 
     public PrimitiveByteJdoEntity(byte initialValue) { ... }            // <.>
 
-    @Title
+    @Title(prepend = "byte (primitive) JDO entity: ")
     @Getter @Setter
     private byte readOnlyProperty;                                      // <.>
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity.java
index 8a4dbe4..16a0c34 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity.java
@@ -51,7 +51,7 @@ public class PrimitiveByteJdoEntity
         this.readWriteProperty = initialValue;
     }
 
-    @Title
+    @Title(prepend = "byte (primitive) JDO entity: ")
     @Getter @Setter
     private byte readOnlyProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel-description.adoc
index 7f19251..f86b45c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel-description.adoc
@@ -18,7 +18,7 @@ public class PrimitiveByteViewModel
         // ...
     }
 
-    @Title
+    @Title(prepend = "byte (primitive) view model: ")
     @Getter @Setter
     private byte readOnlyProperty;                      // <.>
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java
index 0195e3a..12f8542 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java
@@ -55,7 +55,7 @@ public class PrimitiveByteViewModel
         this.readWriteProperty = initialValue;
     }
 
-    @Title
+    @Title(prepend = "byte (primitive) view model: ")
     @Getter @Setter
     private byte readOnlyProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars.java
index 34d131a..2e78106 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars.java
@@ -34,13 +34,8 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.services.factory.FactoryService;
 
-import lombok.Getter;
-import lombok.Setter;
-import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java
index 7bea2e5..1d1ecbc 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_actionReturning.java
@@ -30,7 +30,7 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 public class PrimitiveCharHolder_actionReturning {
 
-    private final PrimitiveCharHolder primitiveCharHolder;
+    private final demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder primitiveCharHolder;
 
     public char act() {
         return primitiveCharHolder.getReadOnlyProperty();
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNamedNotEscaped.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNamedNotEscaped.java
index fb79463..4dd5b61 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNamedNotEscaped.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNamedNotEscaped.java
@@ -28,7 +28,7 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 public class PrimitiveCharHolder_mixinPropertyNamedNotEscaped {
 
-    private final PrimitiveCharHolder primitiveCharHolder;
+    private final demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder primitiveCharHolder;
 
     @MemberOrder(name = "contributed", sequence = "3")
     public char prop() {
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNavigable.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNavigable.java
index 4844767..89732ec 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNavigable.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNavigable.java
@@ -28,7 +28,7 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 public class PrimitiveCharHolder_mixinPropertyNavigable {
 
-    private final PrimitiveCharHolder primitiveCharHolder;
+    private final demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder primitiveCharHolder;
 
     @MemberOrder(name = "contributed", sequence = "1")
     public char prop() {
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyWithCssClass.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyWithCssClass.java
index 8606eff..281b87d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyWithCssClass.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyWithCssClass.java
@@ -31,7 +31,7 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 public class PrimitiveCharHolder_mixinPropertyWithCssClass {
 
-    private final PrimitiveCharHolder primitiveCharHolder;
+    private final demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder primitiveCharHolder;
 
     @MemberOrder(name = "contributed", sequence = "1")
     public char prop() {
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
index e516491..995d90f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
@@ -35,9 +35,9 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 public class PrimitiveCharHolder_updateReadOnlyProperty2PromptInlineAsIfEdit {
 
-    private final PrimitiveCharHolder primitiveCharHolder;
+    private final demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder primitiveCharHolder;
 
-    public PrimitiveCharHolder act(char newValue) {
+    public demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder act(char newValue) {
         primitiveCharHolder.setReadOnlyProperty2(newValue);
         return primitiveCharHolder;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPositionPanel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPositionPanel.java
index 857b28d..742522e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPositionPanel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPositionPanel.java
@@ -20,7 +20,6 @@ package demoapp.dom.types.primitive.chars.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -35,9 +34,9 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 public class PrimitiveCharHolder_updateReadOnlyPropertyPositionPanel {
 
-    private final PrimitiveCharHolder primitiveCharHolder;
+    private final demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder primitiveCharHolder;
 
-    public PrimitiveCharHolder act(char newValue) {
+    public demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder act(char newValue) {
         primitiveCharHolder.setReadOnlyProperty(newValue);
         return primitiveCharHolder;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleInline.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleInline.java
index f970852..c1a3c05 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleInline.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleInline.java
@@ -35,9 +35,9 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 public class PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleInline {
 
-    private final PrimitiveCharHolder primitiveCharHolder;
+    private final demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder primitiveCharHolder;
 
-    public PrimitiveCharHolder act(char newValue) {
+    public demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder act(char newValue) {
         primitiveCharHolder.setReadOnlyProperty(newValue);
         return primitiveCharHolder;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleModal.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleModal.java
index 844bd2f..193efe4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleModal.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleModal.java
@@ -35,9 +35,9 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 public class PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleModal {
 
-    private final PrimitiveCharHolder primitiveCharHolder;
+    private final demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder primitiveCharHolder;
 
-    public PrimitiveCharHolder act(char newValue) {
+    public demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder act(char newValue) {
         primitiveCharHolder.setReadOnlyProperty(newValue);
         return primitiveCharHolder;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
index ef53244..3c44dba 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
@@ -20,7 +20,6 @@ package demoapp.dom.types.primitive.chars.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
@@ -35,9 +34,9 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 public class PrimitiveCharHolder_updateReadOnlyPropertyPromptStylePanelDropDown {
 
-    private final PrimitiveCharHolder primitiveCharHolder;
+    private final demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder primitiveCharHolder;
 
-    public PrimitiveCharHolder act(char newValue) {
+    public demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder act(char newValue) {
         primitiveCharHolder.setReadOnlyProperty(newValue);
         return primitiveCharHolder;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleSidebar.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleSidebar.java
index 3df0aaa..ad8796e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleSidebar.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleSidebar.java
@@ -35,9 +35,9 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 public class PrimitiveCharHolder_updateReadOnlyPropertyPromptStyleSidebar {
 
-    private final PrimitiveCharHolder primitiveCharHolder;
+    private final demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder primitiveCharHolder;
 
-    public PrimitiveCharHolder act(char newValue) {
+    public demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder act(char newValue) {
         primitiveCharHolder.setReadOnlyProperty(newValue);
         return primitiveCharHolder;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyWithChoices.java
index 7daa8d7..6b3f36c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_updateReadOnlyPropertyWithChoices.java
@@ -39,9 +39,9 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 public class PrimitiveCharHolder_updateReadOnlyPropertyWithChoices {
 
-    private final PrimitiveCharHolder primitiveCharHolder;
+    private final demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder primitiveCharHolder;
 
-    public PrimitiveCharHolder act(char newValue) {
+    public demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder act(char newValue) {
         primitiveCharHolder.setReadOnlyProperty(newValue);
         return primitiveCharHolder;
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity-description.adoc
index f5fb89f..2f3bc66 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity-description.adoc
@@ -12,7 +12,7 @@ public class PrimitiveCharJdoEntity
 
     public PrimitiveCharJdoEntity(char initialValue) { ... }            // <.>
 
-    @Title
+    @Title(prepend = "char (primitive) JDO entity: ")
     @Getter @Setter
     private char readOnlyProperty;                                      // <.>
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity.java
index 36cc28d..bdef0e6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity.java
@@ -43,7 +43,7 @@ import demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder;
 )
 public class PrimitiveCharJdoEntity
         implements HasAsciiDocDescription,
-                   PrimitiveCharHolder {
+        PrimitiveCharHolder {
 
     public PrimitiveCharJdoEntity(char initialValue) {
         this.readOnlyProperty = initialValue;
@@ -51,7 +51,7 @@ public class PrimitiveCharJdoEntity
         this.readWriteProperty = initialValue;
     }
 
-    @Title
+    @Title(prepend = "char (primitive) JDO entity: ")
     @Getter @Setter
     private char readOnlyProperty;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel-description.adoc
index 6fa722e..5f5b030 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel-description.adoc
@@ -18,7 +18,7 @@ public class PrimitiveCharViewModel
         // ...
     }
 
-    @Title
+    @Title(prepend = "char (primitive) view model: ")
     @Getter @Setter
     private char readOnlyProperty;                      // <.>
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.java
index cfea06f..9e63d0a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.java
@@ -47,7 +47,7 @@ import demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder;
 @lombok.NoArgsConstructor
 public class PrimitiveCharViewModel
         implements HasAsciiDocDescription,
-                   PrimitiveCharHolder {
+        PrimitiveCharHolder {
 
     public PrimitiveCharViewModel(char initialValue) {
         this.readOnlyProperty = initialValue;
@@ -55,7 +55,7 @@ public class PrimitiveCharViewModel
         this.readWriteProperty = initialValue;
     }
 
-    @Title
+    @Title(prepend = "char (primitive) view model: ")
     @Getter @Setter
     private char readOnlyProperty;
 


[isis] 02/06: ISIS-2222: standardize objectType prefix to just 'demo.'

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

danhaywood pushed a commit to branch ISIS-2222
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 42d5047cb3a4096b08c028dd543dd136fa7a5932
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jun 26 06:40:34 2020 +0100

    ISIS-2222: standardize objectType prefix to just 'demo.'
---
 .../java/demoapp/dom/homepage/DemoHomePage-description.adoc  |  2 +-
 .../src/main/java/demoapp/dom/homepage/DemoHomePage.java     |  2 +-
 .../domain/src/main/java/demoapp/dom/menubars.layout.xml     | 12 ++++++------
 .../dom/types/{FeaturedTypesMenu.java => DataTypesMenu.java} |  6 +++---
 .../demoapp/dom/types/primitive/bytes/PrimitiveBytes.java    |  2 +-
 .../bytes/jdo/PrimitiveByteJdoEntity-description.adoc        |  2 +-
 .../types/primitive/bytes/jdo/PrimitiveByteJdoEntity.java    |  2 +-
 .../bytes/vm/PrimitiveByteViewModel-description.adoc         |  4 ++--
 .../dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java |  4 ++--
 .../demoapp/dom/types/primitive/chars/PrimitiveChars.java    |  2 +-
 .../chars/jdo/PrimitiveCharJdoEntity-description.adoc        |  2 +-
 .../types/primitive/chars/jdo/PrimitiveCharJdoEntity.java    |  2 +-
 .../chars/vm/PrimitiveCharViewModel-description.adoc         |  4 ++--
 .../dom/types/primitive/chars/vm/PrimitiveCharViewModel.java |  4 ++--
 .../src/main/java/demoapp/dom/viewmodels/ViewModels.java     |  2 +-
 .../jaxbrefentity/StatefulViewModelJaxbRefsEntity.java       |  4 ++--
 .../usingjaxb/StatefulViewModelUsingJaxb-description.adoc    |  4 ++--
 .../dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb.java |  6 +++---
 18 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage-description.adoc
index d08f1ac..6a62c18 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage-description.adoc
@@ -4,7 +4,7 @@ Apache Isis applications can nominate a view model to act as the home page, usin
 ----
 @DomainObject(
     nature=Nature.VIEW_MODEL,
-    objectType = "demoapp.Homepage"
+    objectType = "demo.Homepage"
 )
 @HomePage                                                       // <.>
 public class DemoHomePage {
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage.java b/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage.java
index b0ea11a..dd751b9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage.java
@@ -46,7 +46,7 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 
 @DomainObject(
         nature=Nature.VIEW_MODEL
-        , objectType = "demoapp.Homepage"
+        , objectType = "demo.Homepage"
 )
 @HomePage
 public class DemoHomePage implements HasAsciiDocDescription {
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
index 222c44b..5effb74 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
@@ -8,19 +8,19 @@
         <mb3:menu>
             <mb3:named>View Models</mb3:named>
             <mb3:section>
-                <mb3:serviceAction objectType="demoapp.ViewModels" id="openStateful"/>
-                <mb3:serviceAction objectType="demoapp.ViewModels" id="openStatefulRefsEntity"/>
+                <mb3:serviceAction objectType="demo.ViewModels" id="openStateful"/>
+                <mb3:serviceAction objectType="demo.ViewModels" id="openStatefulRefsEntity"/>
             </mb3:section>
         </mb3:menu>
 
         <mb3:menu>
-            <mb3:named>Featured Types</mb3:named>
+            <mb3:named>Data Types</mb3:named>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.FeaturedTypesMenu" id="primitiveBytes"/>
-                <mb3:serviceAction objectType="demo.FeaturedTypesMenu" id="primitiveChars"/>
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="primitiveBytes"/>
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="primitiveChars"/>
             </mb3:section>
             <mb3:section>
-                <mb3:serviceAction objectType="demo.FeaturedTypesMenu" id="text">
+                <mb3:serviceAction objectType="demo.DataTypesMenu" id="text">
                     <cpt:named>Text</cpt:named>
                 </mb3:serviceAction>
                 <mb3:serviceAction objectType="demo.FeaturedTypesMenu" id="primitives">
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/FeaturedTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/DataTypesMenu.java
similarity index 97%
rename from examples/demo/domain/src/main/java/demoapp/dom/types/FeaturedTypesMenu.java
rename to examples/demo/domain/src/main/java/demoapp/dom/types/DataTypesMenu.java
index 81c957d..37ae410 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/FeaturedTypesMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/DataTypesMenu.java
@@ -55,10 +55,10 @@ import demoapp.dom.types.text.TextDemo;
 import demoapp.dom.types.time.TemporalDemo;
 import demoapp.dom.types.uuid.UuidDemo;
 
-@DomainService(nature=NatureOfService.VIEW, objectType = "demo.FeaturedTypesMenu")
-@DomainObjectLayout(named="Featured Types")
+@DomainService(nature=NatureOfService.VIEW, objectType = "demo.DataTypesMenu")
+@DomainObjectLayout(named="DataTypes")
 @Log4j2
-public class FeaturedTypesMenu {
+public class DataTypesMenu {
 
     @Inject private FactoryService factoryService;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes.java
index c410fe5..b39907e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/PrimitiveBytes.java
@@ -46,7 +46,7 @@ import demoapp.dom.types.primitive.bytes.vm.PrimitiveByteViewModel;
 @XmlRootElement(name = "Demo")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
-@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demoapp.PrimitiveBytes", editing=Editing.ENABLED)
+@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.PrimitiveBytes", editing=Editing.ENABLED)
 @Log4j2
 public class PrimitiveBytes implements HasAsciiDocDescription {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity-description.adoc
index c45f434..3f6b01a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity-description.adoc
@@ -5,7 +5,7 @@ JDO supports `byte` out-of-the-box, so no special annotations are required.
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
 @DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
 @DomainObject(
-        objectType = "demoapp.PrimitiveByteJdoEntity"
+        objectType = "demo.PrimitiveByteJdoEntity"
 )
 public class PrimitiveByteJdoEntity
     implements HasAsciiDocDescription,   PrimitiveByteHolder {          // <.>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity.java
index 50011cd..8a4dbe4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/jdo/PrimitiveByteJdoEntity.java
@@ -39,7 +39,7 @@ import demoapp.dom.types.primitive.bytes.holder.PrimitiveByteHolder;
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
 @DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
 @DomainObject(
-        objectType = "demoapp.PrimitiveByteJdoEntity"
+        objectType = "demo.PrimitiveByteJdoEntity"
 )
 public class PrimitiveByteJdoEntity
         implements HasAsciiDocDescription,
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel-description.adoc
index 9ed7fff..7f19251 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel-description.adoc
@@ -2,12 +2,12 @@ JAXB supports `byte` out-of-the-box, so no special annotations are required.
 
 [source,java]
 ----
-@XmlRootElement(name = "demoapp.PrimitiveByteViewModel")
+@XmlRootElement(name = "demo.PrimitiveByteViewModel")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
         nature=Nature.VIEW_MODEL,
-        objectType = "demoapp.PrimitiveByteViewModel"
+        objectType = "demo.PrimitiveByteViewModel"
 )
 @lombok.NoArgsConstructor                               // <.>
 public class PrimitiveByteViewModel
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java
index c8772e2..0195e3a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/vm/PrimitiveByteViewModel.java
@@ -37,12 +37,12 @@ import lombok.Setter;
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.primitive.bytes.holder.PrimitiveByteHolder;
 
-@XmlRootElement(name = "demoapp.PrimitiveByteViewModel")
+@XmlRootElement(name = "demo.PrimitiveByteViewModel")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
         nature=Nature.VIEW_MODEL,
-        objectType = "demoapp.PrimitiveByteViewModel"
+        objectType = "demo.PrimitiveByteViewModel"
 )
 @lombok.NoArgsConstructor
 public class PrimitiveByteViewModel
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars.java
index 18889d6..34d131a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/PrimitiveChars.java
@@ -51,7 +51,7 @@ import demoapp.dom.types.primitive.chars.vm.PrimitiveCharViewModel;
 @XmlRootElement(name = "Demo")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
-@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demoapp.PrimitiveChars", editing=Editing.ENABLED)
+@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.PrimitiveChars", editing=Editing.ENABLED)
 @Log4j2
 public class PrimitiveChars implements HasAsciiDocDescription {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity-description.adoc
index 6ae7268..f5fb89f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity-description.adoc
@@ -5,7 +5,7 @@ JDO supports `char` out-of-the-box, so no special annotations are required.
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
 @DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
 @DomainObject(
-        objectType = "demoapp.PrimitiveCharJdoEntity"
+        objectType = "demo.PrimitiveCharJdoEntity"
 )
 public class PrimitiveCharJdoEntity
     implements HasAsciiDocDescription,   PrimitiveCharHolder {          // <.>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity.java
index 9a0b4d5..36cc28d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/jdo/PrimitiveCharJdoEntity.java
@@ -39,7 +39,7 @@ import demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder;
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
 @DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
 @DomainObject(
-        objectType = "demoapp.PrimitiveCharJdoEntity"
+        objectType = "demo.PrimitiveCharJdoEntity"
 )
 public class PrimitiveCharJdoEntity
         implements HasAsciiDocDescription,
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel-description.adoc
index 9135e5e..6fa722e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel-description.adoc
@@ -2,12 +2,12 @@ JAXB supports `char` out-of-the-box, so no special annotations are required.
 
 [source,java]
 ----
-@XmlRootElement(name = "demoapp.PrimitiveCharViewModel")
+@XmlRootElement(name = "demo.PrimitiveCharViewModel")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
         nature=Nature.VIEW_MODEL,
-        objectType = "demoapp.PrimitiveCharViewModel"
+        objectType = "demo.PrimitiveCharViewModel"
 )
 @lombok.NoArgsConstructor                               // <.>
 public class PrimitiveCharViewModel
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.java
index e52dd71..cfea06f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/vm/PrimitiveCharViewModel.java
@@ -37,12 +37,12 @@ import lombok.Setter;
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder;
 
-@XmlRootElement(name = "demoapp.PrimitiveCharViewModel")
+@XmlRootElement(name = "demo.PrimitiveCharViewModel")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
         nature=Nature.VIEW_MODEL,
-        objectType = "demoapp.PrimitiveCharViewModel"
+        objectType = "demo.PrimitiveCharViewModel"
 )
 @lombok.NoArgsConstructor
 public class PrimitiveCharViewModel
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/ViewModels.java b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/ViewModels.java
index 35f3156..eaa5141 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/ViewModels.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/ViewModels.java
@@ -28,7 +28,7 @@ import demoapp.dom.viewmodels.jaxbrefentity.StatefulViewModelJaxbRefsEntity;
 import demoapp.dom.viewmodels.usingjaxb.StatefulViewModelUsingJaxb;
 
 @DomainService(
-        objectType = "demoapp.ViewModels"
+        objectType = "demo.ViewModels"
 )
 public class ViewModels {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/jaxbrefentity/StatefulViewModelJaxbRefsEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/jaxbrefentity/StatefulViewModelJaxbRefsEntity.java
index 0d55b11..dc6fe6e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/jaxbrefentity/StatefulViewModelJaxbRefsEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/jaxbrefentity/StatefulViewModelJaxbRefsEntity.java
@@ -42,14 +42,14 @@ import lombok.Setter;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 
-@XmlRootElement(name = "demoapp.StatefulViewModelJaxbRefsEntity")
+@XmlRootElement(name = "demo.StatefulViewModelJaxbRefsEntity")
 @XmlType(
         propOrder = {"message", "favoriteChild", "children"}
 )
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
         nature=Nature.VIEW_MODEL
-        , objectType = "demoapp.StatefulViewModelJaxbRefsEntity"
+        , objectType = "demo.StatefulViewModelJaxbRefsEntity"
 )
 public class StatefulViewModelJaxbRefsEntity implements HasAsciiDocDescription {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb-description.adoc
index c54d745..b472425 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb-description.adoc
@@ -7,12 +7,12 @@ The framework provides a number of ways to serialize this state, but the most fl
 
 [source,java]
 ----
-@XmlRootElement(name = "demoapp.DemoStatefulViewModel")     // <.>
+@XmlRootElement(name = "demo.DemoStatefulViewModel")     // <.>
 @XmlType                                                    // <.>
 @XmlAccessorType(XmlAccessType.FIELD)                       // <.>
 @DomainObject(
         nature=Nature.VIEW_MODEL
-        , objectType = "demoapp.DemoStatefulViewModel"
+        , objectType = "demo.DemoStatefulViewModel"
 )
 public class StatefulViewModelUsingJaxb implements HasAsciiDocDescription {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb.java b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb.java
index bf3ba9f..832ff1e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/viewmodels/usingjaxb/StatefulViewModelUsingJaxb.java
@@ -44,13 +44,13 @@ import lombok.val;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 
-@XmlRootElement(name = "demoapp.StatefulViewModelUsingJaxb")
+@XmlRootElement(name = "demo.StatefulViewModelUsingJaxb")
 @XmlType(
 )
 @XmlAccessorType(XmlAccessType.FIELD)
 @DomainObject(
         nature=Nature.VIEW_MODEL
-        , objectType = "demoapp.StatefulViewModelUsingJaxb"
+        , objectType = "demo.StatefulViewModelUsingJaxb"
 )
 public class StatefulViewModelUsingJaxb implements HasAsciiDocDescription {
 
@@ -63,7 +63,7 @@ public class StatefulViewModelUsingJaxb implements HasAsciiDocDescription {
     @XmlElement
     private String message;
 
-    @XmlRootElement(name = "child")
+    @XmlRootElement(name = "demo.StatefulViewModelUsingJaxb.Child")
     @XmlType
     @XmlAccessorType(XmlAccessType.FIELD)
     @Data


[isis] 04/06: ISIS-2222: adds in pages for other 6 primitive data types.

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

danhaywood pushed a commit to branch ISIS-2222
in repository https://gitbox.apache.org/repos/asf/isis.git

commit e374a8215f5dc94e8a923a473cd17be714de55cb
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jun 26 07:57:52 2020 +0100

    ISIS-2222: adds in pages for other 6 primitive data types.
---
 .../booleans/PrimitiveBooleans-description.adoc    | 129 +++++++++++++++++++++
 .../primitive/booleans/PrimitiveBooleans.java      |  76 ++++++++++++
 .../booleans/PrimitiveBooleans.layout.xml          |  46 ++++++++
 .../booleans/holder/PrimitiveBooleanHolder.java    |  84 ++++++++++++++
 .../PrimitiveBooleanHolder_actionReturning.java    |  39 +++++++
 ...BooleanHolder_mixinPropertyNamedNotEscaped.java |  39 +++++++
 ...mitiveBooleanHolder_mixinPropertyNavigable.java |  39 +++++++
 ...iveBooleanHolder_mixinPropertyWithCssClass.java |  40 +++++++
 ...pdateReadOnlyProperty2PromptInlineAsIfEdit.java |  49 ++++++++
 ...Holder_updateReadOnlyPropertyPositionPanel.java |  48 ++++++++
 ...er_updateReadOnlyPropertyPromptStyleInline.java |  49 ++++++++
 ...der_updateReadOnlyPropertyPromptStyleModal.java |  49 ++++++++
 ...teReadOnlyPropertyPromptStylePanelDropDown.java |  48 ++++++++
 ...r_updateReadOnlyPropertyPromptStyleSidebar.java |  49 ++++++++
 ...anHolder_updateReadOnlyPropertyWithChoices.java |  58 +++++++++
 .../booleans/jdo/PrimitiveBooleanJdoEntities.java  |  26 +++++
 .../jdo/PrimitiveBooleanJdoEntity-description.adoc |  31 +++++
 .../booleans/jdo/PrimitiveBooleanJdoEntity.java    |  67 +++++++++++
 .../jdo/PrimitiveBooleanJdoEntity.layout.xml       |  53 +++++++++
 .../jdo/PrimitiveBooleanJdoEntitySeedService.java  |  42 +++++++
 .../vm/PrimitiveBooleanViewModel-description.adoc  |  36 ++++++
 .../booleans/vm/PrimitiveBooleanViewModel.java     |  71 ++++++++++++
 .../vm/PrimitiveBooleanViewModel.layout.xml        |  53 +++++++++
 .../doubles/PrimitiveDoubles-description.adoc      | 129 +++++++++++++++++++++
 .../types/primitive/doubles/PrimitiveDoubles.java  |  76 ++++++++++++
 .../primitive/doubles/PrimitiveDoubles.layout.xml  |  46 ++++++++
 .../doubles/holder/PrimitiveDoubleHolder.java      |  84 ++++++++++++++
 .../PrimitiveDoubleHolder_actionReturning.java     |  41 +++++++
 ...eDoubleHolder_mixinPropertyNamedNotEscaped.java |  41 +++++++
 ...imitiveDoubleHolder_mixinPropertyNavigable.java |  39 +++++++
 ...tiveDoubleHolder_mixinPropertyWithCssClass.java |  40 +++++++
 ...pdateReadOnlyProperty2PromptInlineAsIfEdit.java |  49 ++++++++
 ...Holder_updateReadOnlyPropertyPositionPanel.java |  48 ++++++++
 ...er_updateReadOnlyPropertyPromptStyleInline.java |  49 ++++++++
 ...der_updateReadOnlyPropertyPromptStyleModal.java |  49 ++++++++
 ...teReadOnlyPropertyPromptStylePanelDropDown.java |  48 ++++++++
 ...r_updateReadOnlyPropertyPromptStyleSidebar.java |  49 ++++++++
 ...leHolder_updateReadOnlyPropertyWithChoices.java |  58 +++++++++
 .../doubles/jdo/PrimitiveDoubleJdoEntities.java    |  26 +++++
 .../jdo/PrimitiveDoubleJdoEntity-description.adoc  |  30 +++++
 .../doubles/jdo/PrimitiveDoubleJdoEntity.java      |  67 +++++++++++
 .../jdo/PrimitiveDoubleJdoEntity.layout.xml        |  53 +++++++++
 .../jdo/PrimitiveDoubleJdoEntitySeedService.java   |  42 +++++++
 .../vm/PrimitiveDoubleViewModel-description.adoc   |  36 ++++++
 .../doubles/vm/PrimitiveDoubleViewModel.java       |  71 ++++++++++++
 .../doubles/vm/PrimitiveDoubleViewModel.layout.xml |  53 +++++++++
 .../floats/PrimitiveFloats-description.adoc        | 129 +++++++++++++++++++++
 .../types/primitive/floats/PrimitiveFloats.java    |  76 ++++++++++++
 .../primitive/floats/PrimitiveFloats.layout.xml    |  46 ++++++++
 .../floats/holder/PrimitiveFloatHolder.java        |  84 ++++++++++++++
 .../PrimitiveFloatHolder_actionReturning.java      |  39 +++++++
 ...veFloatHolder_mixinPropertyNamedNotEscaped.java |  39 +++++++
 ...rimitiveFloatHolder_mixinPropertyNavigable.java |  39 +++++++
 ...itiveFloatHolder_mixinPropertyWithCssClass.java |  40 +++++++
 ...pdateReadOnlyProperty2PromptInlineAsIfEdit.java |  49 ++++++++
 ...Holder_updateReadOnlyPropertyPositionPanel.java |  48 ++++++++
 ...er_updateReadOnlyPropertyPromptStyleInline.java |  49 ++++++++
 ...der_updateReadOnlyPropertyPromptStyleModal.java |  49 ++++++++
 ...teReadOnlyPropertyPromptStylePanelDropDown.java |  48 ++++++++
 ...r_updateReadOnlyPropertyPromptStyleSidebar.java |  49 ++++++++
 ...atHolder_updateReadOnlyPropertyWithChoices.java |  58 +++++++++
 .../floats/jdo/PrimitiveFloatJdoEntities.java      |  26 +++++
 .../jdo/PrimitiveFloatJdoEntity-description.adoc   |  30 +++++
 .../floats/jdo/PrimitiveFloatJdoEntity.java        |  67 +++++++++++
 .../floats/jdo/PrimitiveFloatJdoEntity.layout.xml  |  53 +++++++++
 .../jdo/PrimitiveFloatJdoEntitySeedService.java    |  42 +++++++
 .../vm/PrimitiveFloatViewModel-description.adoc    |  36 ++++++
 .../floats/vm/PrimitiveFloatViewModel.java         |  71 ++++++++++++
 .../floats/vm/PrimitiveFloatViewModel.layout.xml   |  53 +++++++++
 .../primitive/ints/PrimitiveInts-description.adoc  | 129 +++++++++++++++++++++
 .../dom/types/primitive/ints/PrimitiveInts.java    |  76 ++++++++++++
 .../types/primitive/ints/PrimitiveInts.layout.xml  |  46 ++++++++
 .../primitive/ints/holder/PrimitiveIntHolder.java  |  84 ++++++++++++++
 .../holder/PrimitiveIntHolder_actionReturning.java |  39 +++++++
 ...tiveIntHolder_mixinPropertyNamedNotEscaped.java |  39 +++++++
 .../PrimitiveIntHolder_mixinPropertyNavigable.java |  39 +++++++
 ...imitiveIntHolder_mixinPropertyWithCssClass.java |  40 +++++++
 ...pdateReadOnlyProperty2PromptInlineAsIfEdit.java |  49 ++++++++
 ...Holder_updateReadOnlyPropertyPositionPanel.java |  48 ++++++++
 ...er_updateReadOnlyPropertyPromptStyleInline.java |  49 ++++++++
 ...der_updateReadOnlyPropertyPromptStyleModal.java |  49 ++++++++
 ...teReadOnlyPropertyPromptStylePanelDropDown.java |  48 ++++++++
 ...r_updateReadOnlyPropertyPromptStyleSidebar.java |  49 ++++++++
 ...ntHolder_updateReadOnlyPropertyWithChoices.java |  58 +++++++++
 .../ints/jdo/PrimitiveIntJdoEntities.java          |  26 +++++
 .../jdo/PrimitiveIntJdoEntity-description.adoc     |  30 +++++
 .../primitive/ints/jdo/PrimitiveIntJdoEntity.java  |  67 +++++++++++
 .../ints/jdo/PrimitiveIntJdoEntity.layout.xml      |  53 +++++++++
 .../ints/jdo/PrimitiveIntJdoEntitySeedService.java |  42 +++++++
 .../ints/vm/PrimitiveIntViewModel-description.adoc |  36 ++++++
 .../primitive/ints/vm/PrimitiveIntViewModel.java   |  71 ++++++++++++
 .../ints/vm/PrimitiveIntViewModel.layout.xml       |  53 +++++++++
 .../longs/PrimitiveLongs-description.adoc          | 129 +++++++++++++++++++++
 .../dom/types/primitive/longs/PrimitiveLongs.java  |  76 ++++++++++++
 .../primitive/longs/PrimitiveLongs.layout.xml      |  46 ++++++++
 .../longs/holder/PrimitiveLongHolder.java          |  84 ++++++++++++++
 .../PrimitiveLongHolder_actionReturning.java       |  39 +++++++
 ...iveLongHolder_mixinPropertyNamedNotEscaped.java |  39 +++++++
 ...PrimitiveLongHolder_mixinPropertyNavigable.java |  39 +++++++
 ...mitiveLongHolder_mixinPropertyWithCssClass.java |  40 +++++++
 ...pdateReadOnlyProperty2PromptInlineAsIfEdit.java |  49 ++++++++
 ...Holder_updateReadOnlyPropertyPositionPanel.java |  48 ++++++++
 ...er_updateReadOnlyPropertyPromptStyleInline.java |  49 ++++++++
 ...der_updateReadOnlyPropertyPromptStyleModal.java |  49 ++++++++
 ...teReadOnlyPropertyPromptStylePanelDropDown.java |  48 ++++++++
 ...r_updateReadOnlyPropertyPromptStyleSidebar.java |  49 ++++++++
 ...ngHolder_updateReadOnlyPropertyWithChoices.java |  59 ++++++++++
 .../longs/jdo/PrimitiveLongJdoEntities.java        |  26 +++++
 .../jdo/PrimitiveLongJdoEntity-description.adoc    |  30 +++++
 .../longs/jdo/PrimitiveLongJdoEntity.java          |  67 +++++++++++
 .../longs/jdo/PrimitiveLongJdoEntity.layout.xml    |  53 +++++++++
 .../jdo/PrimitiveLongJdoEntitySeedService.java     |  42 +++++++
 .../vm/PrimitiveLongViewModel-description.adoc     |  36 ++++++
 .../primitive/longs/vm/PrimitiveLongViewModel.java |  71 ++++++++++++
 .../longs/vm/PrimitiveLongViewModel.layout.xml     |  53 +++++++++
 .../shorts/PrimitiveShorts-description.adoc        | 129 +++++++++++++++++++++
 .../types/primitive/shorts/PrimitiveShorts.java    |  76 ++++++++++++
 .../primitive/shorts/PrimitiveShorts.layout.xml    |  46 ++++++++
 .../shorts/holder/PrimitiveShortHolder.java        |  84 ++++++++++++++
 .../PrimitiveShortHolder_actionReturning.java      |  39 +++++++
 ...veShortHolder_mixinPropertyNamedNotEscaped.java |  39 +++++++
 ...rimitiveShortHolder_mixinPropertyNavigable.java |  39 +++++++
 ...itiveShortHolder_mixinPropertyWithCssClass.java |  40 +++++++
 ...pdateReadOnlyProperty2PromptInlineAsIfEdit.java |  49 ++++++++
 ...Holder_updateReadOnlyPropertyPositionPanel.java |  48 ++++++++
 ...er_updateReadOnlyPropertyPromptStyleInline.java |  49 ++++++++
 ...der_updateReadOnlyPropertyPromptStyleModal.java |  49 ++++++++
 ...teReadOnlyPropertyPromptStylePanelDropDown.java |  48 ++++++++
 ...r_updateReadOnlyPropertyPromptStyleSidebar.java |  49 ++++++++
 ...rtHolder_updateReadOnlyPropertyWithChoices.java |  64 ++++++++++
 .../shorts/jdo/PrimitiveShortJdoEntities.java      |  26 +++++
 .../jdo/PrimitiveShortJdoEntity-description.adoc   |  30 +++++
 .../shorts/jdo/PrimitiveShortJdoEntity.java        |  67 +++++++++++
 .../shorts/jdo/PrimitiveShortJdoEntity.layout.xml  |  53 +++++++++
 .../jdo/PrimitiveShortJdoEntitySeedService.java    |  47 ++++++++
 .../vm/PrimitiveShortViewModel-description.adoc    |  36 ++++++
 .../shorts/vm/PrimitiveShortViewModel.java         |  71 ++++++++++++
 .../shorts/vm/PrimitiveShortViewModel.layout.xml   |  53 +++++++++
 138 files changed, 7337 insertions(+)

diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/PrimitiveBooleans-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/PrimitiveBooleans-description.adoc
new file mode 100644
index 0000000..b9b86e0
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/PrimitiveBooleans-description.adoc
@@ -0,0 +1,129 @@
+The framework has built-in support for all of the primitive data types, including `boolean`.
+
+From here you can:
+
+* navigate to an entity that uses the `boolean` datatype
+* open a view model that uses the `boolean` datatype
+
+Because `boolean` is a primitive value, the properties on these domain objects are mandatory.
+
+== Common interface
+
+These objects both implement a common interface, `PrimitiveBooleanHolder`:
+
+[source,java]
+----
+public interface PrimitiveBooleanHolder {
+
+    boolean getReadOnlyProperty();
+    void setReadOnlyProperty(boolean c);
+
+    boolean getReadOnlyProperty2();
+    void setReadOnlyProperty2(boolean c);
+
+    boolean getReadWriteProperty();
+    void setReadWriteProperty(boolean c);
+
+    @MemberOrder(name = "label-positions", sequence = "1")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.LEFT, describedAs = "labelPosition=LEFT", hidden = Where.ALL_TABLES)
+    default boolean getReadOnlyPropertyDerivedLabelPositionLeft() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "2")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.TOP, describedAs = "labelPosition=TOP", hidden = Where.ALL_TABLES)
+    default boolean getReadOnlyPropertyDerivedLabelPositionTop() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "3")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.RIGHT, describedAs = "labelPosition=RIGHT", hidden = Where.ALL_TABLES)
+    default boolean getReadOnlyPropertyDerivedLabelPositionRight() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "4")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.NONE, describedAs = "labelPosition=NONE", hidden = Where.ALL_TABLES)
+    default boolean getReadOnlyPropertyDerivedLabelPositionNone() { return getReadOnlyProperty(); }
+
+}
+----
+
+The default methods have annotations that automatically inherited.
+Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
+
+
+== Mixin actions
+
+A number of mixin actions contribute through this interface, demonstrate the use of `boolean` as a parameter and as a return type.
+For example:
+
+* the `updateReadOnlyProperty` action is:
++
+[source,java]
+----
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "1"
+)
+@RequiredArgsConstructor
+public class PrimitiveBooleanHolder_updateReadOnlyProperty {
+
+    private final PrimitiveBooleanHolder primitiveBooleanHolder;
+
+    public PrimitiveBooleanHolder act(boolean newValue) {
+        primitiveBooleanHolder.setReadOnlyProperty(newValue);
+        return primitiveBooleanHolder;
+    }
+    public boolean default0Act() {
+        return primitiveBooleanHolder.getReadOnlyProperty();
+    }
+}
+----
++
+There are a number of variants of this action, to demonstrate different prompt layouts.
+
+* the `actionReturning` action is:
++
+[source,java]
+----
+@Action(
+        semantics = SemanticsOf.SAFE,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@RequiredArgsConstructor
+public class PrimitiveBooleanHolder_actionReturning {
+
+    private final PrimitiveBooleanHolder primitiveBooleanHolder;
+
+    public boolean act() {
+        return primitiveBooleanHolder.getReadOnlyProperty();
+    }
+}
+----
+
+== Mixin properties
+
+We also use the interface to contribute a number of mixin properties:
+
+* the `mixinPropertyWithCssClass` property:
++
+[source,java]
+----
+@Property()
+@PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ")
+@RequiredArgsConstructor
+public class PrimitiveBooleanHolder_mixinPropertyWithCssClass {
+
+    private final PrimitiveBooleanHolder primitiveBooleanHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public boolean prop() {
+        return primitiveBooleanHolder.getReadOnlyProperty();
+    }
+}
+----
++
+TIP: the styling is provided from the `application.css` static resource.
+
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/PrimitiveBooleans.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/PrimitiveBooleans.java
new file mode 100644
index 0000000..449cae5
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/PrimitiveBooleans.java
@@ -0,0 +1,76 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.booleans;
+
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.booleans.jdo.PrimitiveBooleanJdoEntities;
+import demoapp.dom.types.primitive.booleans.jdo.PrimitiveBooleanJdoEntity;
+import demoapp.dom.types.primitive.booleans.vm.PrimitiveBooleanViewModel;
+
+@XmlRootElement(name = "Demo")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.PrimitiveBooleans", editing=Editing.ENABLED)
+@Log4j2
+public class PrimitiveBooleans implements HasAsciiDocDescription {
+
+    public String title() {
+        return "boolean (primitive) data type";
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
+    public PrimitiveBooleanViewModel openViewModel(boolean initialValue) {
+        return new PrimitiveBooleanViewModel(initialValue);
+    }
+    public boolean default0OpenViewModel() {
+        return true;
+    }
+
+    @Collection
+    public List<PrimitiveBooleanJdoEntity> getEntities() {
+        return entities.all();
+    }
+
+    @Inject
+    @XmlTransient
+    PrimitiveBooleanJdoEntities entities;
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/PrimitiveBooleans.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/PrimitiveBooleans.layout.xml
new file mode 100644
index 0000000..55c5b87
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/PrimitiveBooleans.layout.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<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="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder.java
new file mode 100644
index 0000000..f63cd30
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder.java
@@ -0,0 +1,84 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.booleans.holder;
+
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.Bounding;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
+public interface PrimitiveBooleanHolder {
+
+    @MemberOrder(name = "action-prompt-styles", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout
+    boolean isReadOnlyProperty();
+    void setReadOnlyProperty(boolean c);
+
+    @MemberOrder(name = "action-prompt-styles", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout(describedAs = "associated action uses promptStyle=INLINE_AS_IF_EDIT", hidden = Where.ALL_TABLES) // TODO: doesn't seem to get picked up
+    boolean isReadOnlyProperty2();
+    void setReadOnlyProperty2(boolean c);
+
+    @MemberOrder(name = "editable-properties", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout
+    boolean isReadWriteProperty();
+    void setReadWriteProperty(boolean c);
+
+    @MemberOrder(name = "label-positions", sequence = "1")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.LEFT, describedAs = "labelPosition=LEFT", hidden = Where.ALL_TABLES)
+    default boolean isReadOnlyPropertyDerivedLabelPositionLeft() { return isReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "2")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.TOP, describedAs = "labelPosition=TOP", hidden = Where.ALL_TABLES)
+    default boolean isReadOnlyPropertyDerivedLabelPositionTop() { return isReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "3")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.RIGHT, describedAs = "labelPosition=RIGHT", hidden = Where.ALL_TABLES)
+    default boolean isReadOnlyPropertyDerivedLabelPositionRight() { return isReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "4")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.NONE, describedAs = "labelPosition=NONE", hidden = Where.ALL_TABLES)
+    default boolean isReadOnlyPropertyDerivedLabelPositionNone() { return isReadOnlyProperty(); }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_actionReturning.java
new file mode 100644
index 0000000..c3e25a8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_actionReturning.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.booleans.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.SAFE
+)
+@RequiredArgsConstructor
+public class PrimitiveBooleanHolder_actionReturning {
+
+    private final PrimitiveBooleanHolder primitiveBooleanHolder;
+
+    public boolean act() {
+        return primitiveBooleanHolder.isReadOnlyProperty();
+    }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_mixinPropertyNamedNotEscaped.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_mixinPropertyNamedNotEscaped.java
new file mode 100644
index 0000000..b3cd075
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_mixinPropertyNamedNotEscaped.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.booleans.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+
+import lombok.RequiredArgsConstructor;
+
+
+//@Property()
+//@PropertyLayout(named = "<i>Named<i/> <b>not</b> escaped property", namedEscaped = false, describedAs = "named = \"(some markup)\", namedEscaped = false") // TODO: this doesn't render, and causes bootlint issues
+@RequiredArgsConstructor
+public class PrimitiveBooleanHolder_mixinPropertyNamedNotEscaped {
+
+    private final PrimitiveBooleanHolder primitiveBooleanHolder;
+
+    @MemberOrder(name = "contributed", sequence = "3")
+    public boolean prop() {
+        return primitiveBooleanHolder.isReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_mixinPropertyNavigable.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_mixinPropertyNavigable.java
new file mode 100644
index 0000000..06ed849
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_mixinPropertyNavigable.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.booleans.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+
+import lombok.RequiredArgsConstructor;
+
+
+//@Property()
+//@PropertyLayout( navigable = Navigable.PARENT, describedAs = "navigable=PARENT") // TODO: doesn't seem to do anything
+@RequiredArgsConstructor
+public class PrimitiveBooleanHolder_mixinPropertyNavigable {
+
+    private final PrimitiveBooleanHolder primitiveBooleanHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public boolean prop() {
+        return primitiveBooleanHolder.isReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_mixinPropertyWithCssClass.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_mixinPropertyWithCssClass.java
new file mode 100644
index 0000000..3ab2167
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_mixinPropertyWithCssClass.java
@@ -0,0 +1,40 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.booleans.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Property()
+@PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ", hidden = Where.ALL_TABLES)
+@RequiredArgsConstructor
+public class PrimitiveBooleanHolder_mixinPropertyWithCssClass {
+
+    private final PrimitiveBooleanHolder primitiveBooleanHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public boolean prop() {
+        return primitiveBooleanHolder.isReadOnlyProperty();
+    }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
new file mode 100644
index 0000000..8585511
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.booleans.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty2",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE_AS_IF_EDIT)
+@RequiredArgsConstructor
+public class PrimitiveBooleanHolder_updateReadOnlyProperty2PromptInlineAsIfEdit {
+
+    private final PrimitiveBooleanHolder primitiveBooleanHolder;
+
+    public PrimitiveBooleanHolder act(boolean newValue) {
+        primitiveBooleanHolder.setReadOnlyProperty2(newValue);
+        return primitiveBooleanHolder;
+    }
+    public boolean default0Act() {
+        return primitiveBooleanHolder.isReadOnlyProperty2();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyPositionPanel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyPositionPanel.java
new file mode 100644
index 0000000..a85cfc4
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyPositionPanel.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.booleans.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "2"
+)
+@ActionLayout(position = ActionLayout.Position.PANEL, named = "Position in panel", describedAs = "position = PANEL")
+@RequiredArgsConstructor
+public class PrimitiveBooleanHolder_updateReadOnlyPropertyPositionPanel {
+
+    private final PrimitiveBooleanHolder primitiveBooleanHolder;
+
+    public PrimitiveBooleanHolder act(boolean newValue) {
+        primitiveBooleanHolder.setReadOnlyProperty(newValue);
+        return primitiveBooleanHolder;
+    }
+    public boolean default0Act() {
+        return primitiveBooleanHolder.isReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyPromptStyleInline.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyPromptStyleInline.java
new file mode 100644
index 0000000..6d6fe54
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyPromptStyleInline.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.booleans.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Inline", describedAs = "promptStyle = INLINE")
+@RequiredArgsConstructor
+public class PrimitiveBooleanHolder_updateReadOnlyPropertyPromptStyleInline {
+
+    private final PrimitiveBooleanHolder primitiveBooleanHolder;
+
+    public PrimitiveBooleanHolder act(boolean newValue) {
+        primitiveBooleanHolder.setReadOnlyProperty(newValue);
+        return primitiveBooleanHolder;
+    }
+    public boolean default0Act() {
+        return primitiveBooleanHolder.isReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyPromptStyleModal.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyPromptStyleModal.java
new file mode 100644
index 0000000..62c46a1
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyPromptStyleModal.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.booleans.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "2"
+)
+@ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL, named = "Modal", describedAs = "promptStyle = MODAL")
+@RequiredArgsConstructor
+public class PrimitiveBooleanHolder_updateReadOnlyPropertyPromptStyleModal {
+
+    private final PrimitiveBooleanHolder primitiveBooleanHolder;
+
+    public PrimitiveBooleanHolder act(boolean newValue) {
+        primitiveBooleanHolder.setReadOnlyProperty(newValue);
+        return primitiveBooleanHolder;
+    }
+    public boolean default0Act() {
+        return primitiveBooleanHolder.isReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
new file mode 100644
index 0000000..0c59f63
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.booleans.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@ActionLayout(position = ActionLayout.Position.PANEL_DROPDOWN, named = "Panel Dropdown", describedAs = "position = PANEL_DROPDOWN")
+@RequiredArgsConstructor
+public class PrimitiveBooleanHolder_updateReadOnlyPropertyPromptStylePanelDropDown {
+
+    private final PrimitiveBooleanHolder primitiveBooleanHolder;
+
+    public PrimitiveBooleanHolder act(boolean newValue) {
+        primitiveBooleanHolder.setReadOnlyProperty(newValue);
+        return primitiveBooleanHolder;
+    }
+    public boolean default0Act() {
+        return primitiveBooleanHolder.isReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyPromptStyleSidebar.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyPromptStyleSidebar.java
new file mode 100644
index 0000000..09d536c
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyPromptStyleSidebar.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.booleans.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR, named = "sidebar", describedAs = "promptStyle = DIALOG_SIDEBAR")
+@RequiredArgsConstructor
+public class PrimitiveBooleanHolder_updateReadOnlyPropertyPromptStyleSidebar {
+
+    private final PrimitiveBooleanHolder primitiveBooleanHolder;
+
+    public PrimitiveBooleanHolder act(boolean newValue) {
+        primitiveBooleanHolder.setReadOnlyProperty(newValue);
+        return primitiveBooleanHolder;
+    }
+    public boolean default0Act() {
+        return primitiveBooleanHolder.isReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyWithChoices.java
new file mode 100644
index 0000000..f7a6a77
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_updateReadOnlyPropertyWithChoices.java
@@ -0,0 +1,58 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.booleans.holder;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "4"
+)
+@ActionLayout(promptStyle = PromptStyle.AS_CONFIGURED, named = "with choices")
+@RequiredArgsConstructor
+public class PrimitiveBooleanHolder_updateReadOnlyPropertyWithChoices {
+
+    private final PrimitiveBooleanHolder primitiveBooleanHolder;
+
+    public PrimitiveBooleanHolder act(boolean newValue) {
+        primitiveBooleanHolder.setReadOnlyProperty(newValue);
+        return primitiveBooleanHolder;
+    }
+    public boolean default0Act() {
+        return primitiveBooleanHolder.isReadOnlyProperty();
+    }
+    public List<Boolean> choices0Act() {
+        return Stream.of(true,false).collect(Collectors.toList());
+    }
+    public boolean hideAct() {
+        return true;
+    } // TODO: choices doesn't seem to work for this datatype
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/jdo/PrimitiveBooleanJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/jdo/PrimitiveBooleanJdoEntities.java
new file mode 100644
index 0000000..731e6b6
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/jdo/PrimitiveBooleanJdoEntities.java
@@ -0,0 +1,26 @@
+package demoapp.dom.types.primitive.booleans.jdo;
+
+import java.util.List;
+import java.util.Optional;
+
+import javax.inject.Inject;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+
+@Service
+public class PrimitiveBooleanJdoEntities {
+
+    public Optional<PrimitiveBooleanJdoEntity> find(final boolean readOnlyProperty) {
+        return repositoryService.firstMatch(PrimitiveBooleanJdoEntity.class, x -> x.isReadOnlyProperty() == readOnlyProperty);
+    }
+
+    public List<PrimitiveBooleanJdoEntity> all() {
+        return repositoryService.allInstances(PrimitiveBooleanJdoEntity.class);
+    }
+
+    @Inject
+    RepositoryService repositoryService;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/jdo/PrimitiveBooleanJdoEntity-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/jdo/PrimitiveBooleanJdoEntity-description.adoc
new file mode 100644
index 0000000..e129c91
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/jdo/PrimitiveBooleanJdoEntity-description.adoc
@@ -0,0 +1,31 @@
+JDO package demoapp.dom.types.primitive.booleans
+`boolean` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+        objectType = "demo.PrimitiveBooleanJdoEntity"
+)
+public class PrimitiveBooleanJdoEntity
+    implements HasAsciiDocDescription,   PrimitiveBooleanHolder {          // <.>
+
+    public PrimitiveBooleanJdoEntity(boolean initialValue) { ... }            // <.>
+
+    @Title(prepend = "boolean (primitive) JDO entity: ")
+    @Getter @Setter
+    private boolean readOnlyProperty;                                      // <.>
+
+    @Getter @Setter
+    private boolean readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private boolean readWriteProperty;
+
+}
+----
+<.> a no-arg constructor is introduced by JDO enhancer
+<.> as a convenience
+<.> no additional annotations required.
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/jdo/PrimitiveBooleanJdoEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/jdo/PrimitiveBooleanJdoEntity.java
new file mode 100644
index 0000000..d4dcf48
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/jdo/PrimitiveBooleanJdoEntity.java
@@ -0,0 +1,67 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.booleans.jdo;
+
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.booleans.holder.PrimitiveBooleanHolder;
+
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+        objectType = "demo.PrimitiveBooleanJdoEntity"
+)
+public class PrimitiveBooleanJdoEntity
+        implements HasAsciiDocDescription,
+        PrimitiveBooleanHolder {
+
+    public PrimitiveBooleanJdoEntity(boolean initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readOnlyProperty2 = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+    @Title(prepend = "boolean (primitive) JDO entity: ")
+    @Getter @Setter
+    private boolean readOnlyProperty;
+
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
+    @Getter @Setter
+    private boolean readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private boolean readWriteProperty;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/jdo/PrimitiveBooleanJdoEntity.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/jdo/PrimitiveBooleanJdoEntity.layout.xml
new file mode 100644
index 0000000..ffa55a8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/jdo/PrimitiveBooleanJdoEntity.layout.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<bs3:row>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Action Prompt Styles" id="action-prompt-styles">
+				<cpt:property id="readOnlyProperty" />
+				<cpt:property id="readOnlyProperty2" >
+					<cpt:describedAs>
+						Associated action uses promptStyle=INLINE_AS_IF_EDIT
+					</cpt:describedAs>
+				</cpt:property>
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties">
+				<cpt:property id="readWriteProperty" />
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Label Positions" id="label-positions"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
+			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/jdo/PrimitiveBooleanJdoEntitySeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/jdo/PrimitiveBooleanJdoEntitySeedService.java
new file mode 100644
index 0000000..cef4f3a
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/jdo/PrimitiveBooleanJdoEntitySeedService.java
@@ -0,0 +1,42 @@
+package demoapp.dom.types.primitive.booleans.jdo;
+
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.core.runtime.events.app.AppLifecycleEvent;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
+
+@Service
+public class PrimitiveBooleanJdoEntitySeedService {
+
+    @EventListener(AppLifecycleEvent.class)
+    public void onAppLifecycleEvent(AppLifecycleEvent event) {
+
+        if (event.getEventType() == AppLifecycleEvent.EventType.appPostMetamodel) {
+            fixtureScripts.run(new PrimitiveBooleanJdoEntityFixture());
+        }
+    }
+
+    @Inject
+    FixtureScripts fixtureScripts;
+
+    static class PrimitiveBooleanJdoEntityFixture extends FixtureScript {
+
+        @Override
+        protected void execute(ExecutionContext executionContext) {
+            Stream.of(true,false)
+                    .map(PrimitiveBooleanJdoEntity::new)
+                    .forEach(repositoryService::persist);
+        }
+
+        @Inject
+        RepositoryService repositoryService;
+
+    }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/vm/PrimitiveBooleanViewModel-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/vm/PrimitiveBooleanViewModel-description.adoc
new file mode 100644
index 0000000..674f79b
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/vm/PrimitiveBooleanViewModel-description.adoc
@@ -0,0 +1,36 @@
+JAXB supports `boolean` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+@XmlRootElement(name = "demo.PrimitiveBooleanViewModel")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+        nature=Nature.VIEW_MODEL,
+        objectType = "demo.PrimitiveBooleanViewModel"
+)
+@lombok.NoArgsConstructor                               // <.>
+public class PrimitiveBooleanViewModel
+        implements HasAsciiDocDescription,
+                   PrimitiveBooleanHolder {
+
+    public PrimitiveBooleanViewModel(boolean initialValue) {  // <.>
+        // ...
+    }
+
+    @Title(prepend = "boolean (primitive) view model: ")
+    @Getter @Setter
+    private boolean readOnlyProperty;                      // <.>
+
+    @Getter @Setter
+    private boolean readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private boolean readWriteProperty;
+
+}
+----
+<.> a no-arg constructor is required by JAXB
+<.> as a convenience
+<.> no additional annotations required.
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/vm/PrimitiveBooleanViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/vm/PrimitiveBooleanViewModel.java
new file mode 100644
index 0000000..a67c506
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/vm/PrimitiveBooleanViewModel.java
@@ -0,0 +1,71 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.booleans.vm;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.booleans.holder.PrimitiveBooleanHolder;
+
+@XmlRootElement(name = "demo.PrimitiveBooleanViewModel")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+        nature=Nature.VIEW_MODEL,
+        objectType = "demo.PrimitiveBooleanViewModel"
+)
+@lombok.NoArgsConstructor
+public class PrimitiveBooleanViewModel
+        implements HasAsciiDocDescription,
+        PrimitiveBooleanHolder {
+
+    public PrimitiveBooleanViewModel(boolean initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readOnlyProperty2 = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+    @Title(prepend = "boolean (primitive) view model: ")
+    @Getter @Setter
+    private boolean readOnlyProperty;
+
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
+    @Getter @Setter
+    private boolean readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private boolean readWriteProperty;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/vm/PrimitiveBooleanViewModel.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/vm/PrimitiveBooleanViewModel.layout.xml
new file mode 100644
index 0000000..ffa55a8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/vm/PrimitiveBooleanViewModel.layout.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<bs3:row>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Action Prompt Styles" id="action-prompt-styles">
+				<cpt:property id="readOnlyProperty" />
+				<cpt:property id="readOnlyProperty2" >
+					<cpt:describedAs>
+						Associated action uses promptStyle=INLINE_AS_IF_EDIT
+					</cpt:describedAs>
+				</cpt:property>
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties">
+				<cpt:property id="readWriteProperty" />
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Label Positions" id="label-positions"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
+			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/PrimitiveDoubles-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/PrimitiveDoubles-description.adoc
new file mode 100644
index 0000000..5854c68
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/PrimitiveDoubles-description.adoc
@@ -0,0 +1,129 @@
+The framework has built-in support for all of the primitive data types, including `double`.
+
+From here you can:
+
+* navigate to an entity that uses the `double` datatype
+* open a view model that uses the `double` datatype
+
+Because `double` is a primitive value, the properties on these domain objects are mandatory.
+
+== Common interface
+
+These objects both implement a common interface, `PrimitiveCharHolder`:
+
+[source,java]
+----
+public interface PrimitiveDoubleHolder {
+
+    double getReadOnlyProperty();
+    void setReadOnlyProperty(double c);
+
+    double getReadOnlyProperty2();
+    void setReadOnlyProperty2(double c);
+
+    double getReadWriteProperty();
+    void setReadWriteProperty(double c);
+
+    @MemberOrder(name = "label-positions", sequence = "1")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.LEFT, describedAs = "labelPosition=LEFT", hidden = Where.ALL_TABLES)
+    default double getReadOnlyPropertyDerivedLabelPositionLeft() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "2")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.TOP, describedAs = "labelPosition=TOP", hidden = Where.ALL_TABLES)
+    default double getReadOnlyPropertyDerivedLabelPositionTop() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "3")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.RIGHT, describedAs = "labelPosition=RIGHT", hidden = Where.ALL_TABLES)
+    default double getReadOnlyPropertyDerivedLabelPositionRight() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "4")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.NONE, describedAs = "labelPosition=NONE", hidden = Where.ALL_TABLES)
+    default double getReadOnlyPropertyDerivedLabelPositionNone() { return getReadOnlyProperty(); }
+
+}
+----
+
+The default methods have annotations that automatically inherited.
+Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
+
+
+== Mixin actions
+
+A number of mixin actions contribute through this interface, demonstrate the use of `double` as a parameter and as a return type.
+For example:
+
+* the `updateReadOnlyProperty` action is:
++
+[source,java]
+----
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "1"
+)
+@RequiredArgsConstructor
+public class PrimitiveDoubleHolder_updateReadOnlyProperty {
+
+    private final PrimitiveDoubleHolder primitiveDoubleHolder;
+
+    public PrimitiveDoubleHolder act(double newValue) {
+        primitiveDoubleHolder.setReadOnlyProperty(newValue);
+        return primitiveDoubleHolder;
+    }
+    public double default0Act() {
+        return primitiveDoubleHolder.getReadOnlyProperty();
+    }
+}
+----
++
+There are a number of variants of this action, to demonstrate different prompt layouts.
+
+* the `actionReturning` action is:
++
+[source,java]
+----
+@Action(
+        semantics = SemanticsOf.SAFE,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@RequiredArgsConstructor
+public class PrimitiveDoubleHolder_actionReturning {
+
+    private final PrimitiveDoubleHolder primitiveDoubleHolder;
+
+    public double act() {
+        return primitiveDoubleHolder.getReadOnlyProperty();
+    }
+}
+----
+
+== Mixin properties
+
+We also use the interface to contribute a number of mixin properties:
+
+* the `mixinPropertyWithCssClass` property:
++
+[source,java]
+----
+@Property()
+@PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ")
+@RequiredArgsConstructor
+public class PrimitiveDoubleHolder_mixinPropertyWithCssClass {
+
+    private final PrimitiveDoubleHolder primitiveDoubleHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public double prop() {
+        return primitiveDoubleHolder.getReadOnlyProperty();
+    }
+}
+----
++
+TIP: the styling is provided from the `application.css` static resource.
+
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/PrimitiveDoubles.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/PrimitiveDoubles.java
new file mode 100644
index 0000000..22e84b2
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/PrimitiveDoubles.java
@@ -0,0 +1,76 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.doubles;
+
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.doubles.jdo.PrimitiveDoubleJdoEntities;
+import demoapp.dom.types.primitive.doubles.jdo.PrimitiveDoubleJdoEntity;
+import demoapp.dom.types.primitive.doubles.vm.PrimitiveDoubleViewModel;
+
+@XmlRootElement(name = "Demo")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.PrimitiveDoubles", editing=Editing.ENABLED)
+@Log4j2
+public class PrimitiveDoubles implements HasAsciiDocDescription {
+
+    public String title() {
+        return "double (primitive) data type";
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
+    public PrimitiveDoubleViewModel openViewModel(double initialValue) {
+        return new PrimitiveDoubleViewModel(initialValue);
+    }
+    public double default0OpenViewModel() {
+        return 1234.5678;
+    }
+
+    @Collection
+    public List<PrimitiveDoubleJdoEntity> getEntities() {
+        return entities.all();
+    }
+
+    @Inject
+    @XmlTransient
+    PrimitiveDoubleJdoEntities entities;
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/PrimitiveDoubles.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/PrimitiveDoubles.layout.xml
new file mode 100644
index 0000000..55c5b87
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/PrimitiveDoubles.layout.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<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="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder.java
new file mode 100644
index 0000000..a9ffbbc
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder.java
@@ -0,0 +1,84 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.doubles.holder;
+
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.Bounding;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
+public interface PrimitiveDoubleHolder {
+
+    @MemberOrder(name = "action-prompt-styles", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout
+    double getReadOnlyProperty();
+    void setReadOnlyProperty(double c);
+
+    @MemberOrder(name = "action-prompt-styles", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout(describedAs = "associated action uses promptStyle=INLINE_AS_IF_EDIT", hidden = Where.ALL_TABLES) // TODO: doesn't seem to get picked up
+    double getReadOnlyProperty2();
+    void setReadOnlyProperty2(double c);
+
+    @MemberOrder(name = "editable-properties", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout
+    double getReadWriteProperty();
+    void setReadWriteProperty(double c);
+
+    @MemberOrder(name = "label-positions", sequence = "1")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.LEFT, describedAs = "labelPosition=LEFT", hidden = Where.ALL_TABLES)
+    default double getReadOnlyPropertyDerivedLabelPositionLeft() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "2")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.TOP, describedAs = "labelPosition=TOP", hidden = Where.ALL_TABLES)
+    default double getReadOnlyPropertyDerivedLabelPositionTop() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "3")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.RIGHT, describedAs = "labelPosition=RIGHT", hidden = Where.ALL_TABLES)
+    default double getReadOnlyPropertyDerivedLabelPositionRight() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "4")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.NONE, describedAs = "labelPosition=NONE", hidden = Where.ALL_TABLES)
+    default double getReadOnlyPropertyDerivedLabelPositionNone() { return getReadOnlyProperty(); }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_actionReturning.java
new file mode 100644
index 0000000..d369719
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_actionReturning.java
@@ -0,0 +1,41 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.doubles.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+import demoapp.dom.types.primitive.doubles.holder.PrimitiveDoubleHolder;
+
+
+@Action(
+        semantics = SemanticsOf.SAFE
+)
+@RequiredArgsConstructor
+public class PrimitiveDoubleHolder_actionReturning {
+
+    private final PrimitiveDoubleHolder primitiveDoubleHolder;
+
+    public double act() {
+        return primitiveDoubleHolder.getReadOnlyProperty();
+    }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_mixinPropertyNamedNotEscaped.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_mixinPropertyNamedNotEscaped.java
new file mode 100644
index 0000000..aa7d713
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_mixinPropertyNamedNotEscaped.java
@@ -0,0 +1,41 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.doubles.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+
+import lombok.RequiredArgsConstructor;
+
+import demoapp.dom.types.primitive.doubles.holder.PrimitiveDoubleHolder;
+
+
+//@Property()
+//@PropertyLayout(named = "<i>Named<i/> <b>not</b> escaped property", namedEscaped = false, describedAs = "named = \"(some markup)\", namedEscaped = false") // TODO: this doesn't render, and causes bootlint issues
+@RequiredArgsConstructor
+public class PrimitiveDoubleHolder_mixinPropertyNamedNotEscaped {
+
+    private final PrimitiveDoubleHolder primitiveDoubleHolder;
+
+    @MemberOrder(name = "contributed", sequence = "3")
+    public double prop() {
+        return primitiveDoubleHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_mixinPropertyNavigable.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_mixinPropertyNavigable.java
new file mode 100644
index 0000000..f1a6faa
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_mixinPropertyNavigable.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.doubles.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+
+import lombok.RequiredArgsConstructor;
+
+
+//@Property()
+//@PropertyLayout( navigable = Navigable.PARENT, describedAs = "navigable=PARENT") // TODO: doesn't seem to do anything
+@RequiredArgsConstructor
+public class PrimitiveDoubleHolder_mixinPropertyNavigable {
+
+    private final PrimitiveDoubleHolder primitiveDoubleHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public double prop() {
+        return primitiveDoubleHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_mixinPropertyWithCssClass.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_mixinPropertyWithCssClass.java
new file mode 100644
index 0000000..c63e0da
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_mixinPropertyWithCssClass.java
@@ -0,0 +1,40 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.doubles.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Property()
+@PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ", hidden = Where.ALL_TABLES)
+@RequiredArgsConstructor
+public class PrimitiveDoubleHolder_mixinPropertyWithCssClass {
+
+    private final PrimitiveDoubleHolder primitiveDoubleHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public double prop() {
+        return primitiveDoubleHolder.getReadOnlyProperty();
+    }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
new file mode 100644
index 0000000..f5062fa
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.doubles.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty2",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE_AS_IF_EDIT)
+@RequiredArgsConstructor
+public class PrimitiveDoubleHolder_updateReadOnlyProperty2PromptInlineAsIfEdit {
+
+    private final PrimitiveDoubleHolder primitiveDoubleHolder;
+
+    public PrimitiveDoubleHolder act(double newValue) {
+        primitiveDoubleHolder.setReadOnlyProperty2(newValue);
+        return primitiveDoubleHolder;
+    }
+    public double default0Act() {
+        return primitiveDoubleHolder.getReadOnlyProperty2();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyPositionPanel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyPositionPanel.java
new file mode 100644
index 0000000..c82dd85
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyPositionPanel.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.doubles.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "2"
+)
+@ActionLayout(position = ActionLayout.Position.PANEL, named = "Position in panel", describedAs = "position = PANEL")
+@RequiredArgsConstructor
+public class PrimitiveDoubleHolder_updateReadOnlyPropertyPositionPanel {
+
+    private final PrimitiveDoubleHolder primitiveDoubleHolder;
+
+    public PrimitiveDoubleHolder act(double newValue) {
+        primitiveDoubleHolder.setReadOnlyProperty(newValue);
+        return primitiveDoubleHolder;
+    }
+    public double default0Act() {
+        return primitiveDoubleHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyPromptStyleInline.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyPromptStyleInline.java
new file mode 100644
index 0000000..6970677
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyPromptStyleInline.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.doubles.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Inline", describedAs = "promptStyle = INLINE")
+@RequiredArgsConstructor
+public class PrimitiveDoubleHolder_updateReadOnlyPropertyPromptStyleInline {
+
+    private final PrimitiveDoubleHolder primitiveDoubleHolder;
+
+    public PrimitiveDoubleHolder act(double newValue) {
+        primitiveDoubleHolder.setReadOnlyProperty(newValue);
+        return primitiveDoubleHolder;
+    }
+    public double default0Act() {
+        return primitiveDoubleHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyPromptStyleModal.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyPromptStyleModal.java
new file mode 100644
index 0000000..6369b73
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyPromptStyleModal.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.doubles.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "2"
+)
+@ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL, named = "Modal", describedAs = "promptStyle = MODAL")
+@RequiredArgsConstructor
+public class PrimitiveDoubleHolder_updateReadOnlyPropertyPromptStyleModal {
+
+    private final PrimitiveDoubleHolder primitiveDoubleHolder;
+
+    public PrimitiveDoubleHolder act(double newValue) {
+        primitiveDoubleHolder.setReadOnlyProperty(newValue);
+        return primitiveDoubleHolder;
+    }
+    public double default0Act() {
+        return primitiveDoubleHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
new file mode 100644
index 0000000..4689338
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.doubles.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@ActionLayout(position = ActionLayout.Position.PANEL_DROPDOWN, named = "Panel Dropdown", describedAs = "position = PANEL_DROPDOWN")
+@RequiredArgsConstructor
+public class PrimitiveDoubleHolder_updateReadOnlyPropertyPromptStylePanelDropDown {
+
+    private final PrimitiveDoubleHolder primitiveDoubleHolder;
+
+    public PrimitiveDoubleHolder act(double newValue) {
+        primitiveDoubleHolder.setReadOnlyProperty(newValue);
+        return primitiveDoubleHolder;
+    }
+    public double default0Act() {
+        return primitiveDoubleHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyPromptStyleSidebar.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyPromptStyleSidebar.java
new file mode 100644
index 0000000..7cc5573
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyPromptStyleSidebar.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.doubles.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR, named = "sidebar", describedAs = "promptStyle = DIALOG_SIDEBAR")
+@RequiredArgsConstructor
+public class PrimitiveDoubleHolder_updateReadOnlyPropertyPromptStyleSidebar {
+
+    private final PrimitiveDoubleHolder primitiveDoubleHolder;
+
+    public PrimitiveDoubleHolder act(double newValue) {
+        primitiveDoubleHolder.setReadOnlyProperty(newValue);
+        return primitiveDoubleHolder;
+    }
+    public double default0Act() {
+        return primitiveDoubleHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyWithChoices.java
new file mode 100644
index 0000000..a805934
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_updateReadOnlyPropertyWithChoices.java
@@ -0,0 +1,58 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.doubles.holder;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "4"
+)
+@ActionLayout(promptStyle = PromptStyle.AS_CONFIGURED, named = "with choices")
+@RequiredArgsConstructor
+public class PrimitiveDoubleHolder_updateReadOnlyPropertyWithChoices {
+
+    private final PrimitiveDoubleHolder primitiveDoubleHolder;
+
+    public PrimitiveDoubleHolder act(double newValue) {
+        primitiveDoubleHolder.setReadOnlyProperty(newValue);
+        return primitiveDoubleHolder;
+    }
+    public double default0Act() {
+        return primitiveDoubleHolder.getReadOnlyProperty();
+    }
+    public List<Double> choices0Act() {
+        return Stream.of(1.1, 2.2, 3.3, 4.0, -9.9, -8.8).collect(Collectors.toList());
+    }
+    public boolean hideAct() {
+        return true;
+    } // TODO: choices doesn't seem to work for this datatype
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/jdo/PrimitiveDoubleJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/jdo/PrimitiveDoubleJdoEntities.java
new file mode 100644
index 0000000..dff7eae
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/jdo/PrimitiveDoubleJdoEntities.java
@@ -0,0 +1,26 @@
+package demoapp.dom.types.primitive.doubles.jdo;
+
+import java.util.List;
+import java.util.Optional;
+
+import javax.inject.Inject;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+
+@Service
+public class PrimitiveDoubleJdoEntities {
+
+    public Optional<PrimitiveDoubleJdoEntity> find(final double readOnlyProperty) {
+        return repositoryService.firstMatch(PrimitiveDoubleJdoEntity.class, x -> x.getReadOnlyProperty() == readOnlyProperty);
+    }
+
+    public List<PrimitiveDoubleJdoEntity> all() {
+        return repositoryService.allInstances(PrimitiveDoubleJdoEntity.class);
+    }
+
+    @Inject
+    RepositoryService repositoryService;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/jdo/PrimitiveDoubleJdoEntity-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/jdo/PrimitiveDoubleJdoEntity-description.adoc
new file mode 100644
index 0000000..56c829a
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/jdo/PrimitiveDoubleJdoEntity-description.adoc
@@ -0,0 +1,30 @@
+JDO supports `double` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+        objectType = "demo.PrimitiveDoubleJdoEntity"
+)
+public class PrimitiveDoubleJdoEntity
+    implements HasAsciiDocDescription,   PrimitiveDoubleHolder {          // <.>
+
+    public PrimitiveDoubleJdoEntity(double initialValue) { ... }            // <.>
+
+    @Title(prepend = "double (primitive) JDO entity: ")
+    @Getter @Setter
+    private double readOnlyProperty;                                      // <.>
+
+    @Getter @Setter
+    private double readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private double readWriteProperty;
+
+}
+----
+<.> a no-arg constructor is introduced by JDO enhancer
+<.> as a convenience
+<.> no additional annotations required.
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/jdo/PrimitiveDoubleJdoEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/jdo/PrimitiveDoubleJdoEntity.java
new file mode 100644
index 0000000..6698f78
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/jdo/PrimitiveDoubleJdoEntity.java
@@ -0,0 +1,67 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.doubles.jdo;
+
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.doubles.holder.PrimitiveDoubleHolder;
+
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+        objectType = "demo.PrimitiveDoubleJdoEntity"
+)
+public class PrimitiveDoubleJdoEntity
+        implements HasAsciiDocDescription,
+        PrimitiveDoubleHolder {
+
+    public PrimitiveDoubleJdoEntity(double initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readOnlyProperty2 = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+    @Title(prepend = "double (primitive) JDO entity: ")
+    @Getter @Setter
+    private double readOnlyProperty;
+
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
+    @Getter @Setter
+    private double readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private double readWriteProperty;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/jdo/PrimitiveDoubleJdoEntity.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/jdo/PrimitiveDoubleJdoEntity.layout.xml
new file mode 100644
index 0000000..ffa55a8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/jdo/PrimitiveDoubleJdoEntity.layout.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<bs3:row>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Action Prompt Styles" id="action-prompt-styles">
+				<cpt:property id="readOnlyProperty" />
+				<cpt:property id="readOnlyProperty2" >
+					<cpt:describedAs>
+						Associated action uses promptStyle=INLINE_AS_IF_EDIT
+					</cpt:describedAs>
+				</cpt:property>
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties">
+				<cpt:property id="readWriteProperty" />
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Label Positions" id="label-positions"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
+			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/jdo/PrimitiveDoubleJdoEntitySeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/jdo/PrimitiveDoubleJdoEntitySeedService.java
new file mode 100644
index 0000000..9110e7e
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/jdo/PrimitiveDoubleJdoEntitySeedService.java
@@ -0,0 +1,42 @@
+package demoapp.dom.types.primitive.doubles.jdo;
+
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.core.runtime.events.app.AppLifecycleEvent;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
+
+@Service
+public class PrimitiveDoubleJdoEntitySeedService {
+
+    @EventListener(AppLifecycleEvent.class)
+    public void onAppLifecycleEvent(AppLifecycleEvent event) {
+
+        if (event.getEventType() == AppLifecycleEvent.EventType.appPostMetamodel) {
+            fixtureScripts.run(new PrimitiveDoubleJdoEntityFixture());
+        }
+    }
+
+    @Inject
+    FixtureScripts fixtureScripts;
+
+    static class PrimitiveDoubleJdoEntityFixture extends FixtureScript {
+
+        @Override
+        protected void execute(ExecutionContext executionContext) {
+            Stream.of(123.4567, 762.1234, 9.00, -12.1314)
+                    .map(PrimitiveDoubleJdoEntity::new)
+                    .forEach(repositoryService::persist);
+        }
+
+        @Inject
+        RepositoryService repositoryService;
+
+    }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/vm/PrimitiveDoubleViewModel-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/vm/PrimitiveDoubleViewModel-description.adoc
new file mode 100644
index 0000000..7c41db4
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/vm/PrimitiveDoubleViewModel-description.adoc
@@ -0,0 +1,36 @@
+JAXB supports `double` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+@XmlRootElement(name = "demo.PrimitiveDoubleViewModel")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+        nature=Nature.VIEW_MODEL,
+        objectType = "demo.PrimitiveDoubleViewModel"
+)
+@lombok.NoArgsConstructor                               // <.>
+public class PrimitiveDoubleViewModel
+        implements HasAsciiDocDescription,
+                   PrimitiveDoubleHolder {
+
+    public PrimitiveDoubleViewModel(double initialValue) {  // <.>
+        // ...
+    }
+
+    @Title(prepend = "double (primitive) view model: ")
+    @Getter @Setter
+    private double readOnlyProperty;                      // <.>
+
+    @Getter @Setter
+    private double readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private double readWriteProperty;
+
+}
+----
+<.> a no-arg constructor is required by JAXB
+<.> as a convenience
+<.> no additional annotations required.
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/vm/PrimitiveDoubleViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/vm/PrimitiveDoubleViewModel.java
new file mode 100644
index 0000000..1c118a9
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/vm/PrimitiveDoubleViewModel.java
@@ -0,0 +1,71 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.doubles.vm;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.doubles.holder.PrimitiveDoubleHolder;
+
+@XmlRootElement(name = "demo.PrimitiveDoubleViewModel")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+        nature=Nature.VIEW_MODEL,
+        objectType = "demo.PrimitiveDoubleViewModel"
+)
+@lombok.NoArgsConstructor
+public class PrimitiveDoubleViewModel
+        implements HasAsciiDocDescription,
+        PrimitiveDoubleHolder {
+
+    public PrimitiveDoubleViewModel(double initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readOnlyProperty2 = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+    @Title(prepend = "double (primitive) view model: ")
+    @Getter @Setter
+    private double readOnlyProperty;
+
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
+    @Getter @Setter
+    private double readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private double readWriteProperty;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/vm/PrimitiveDoubleViewModel.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/vm/PrimitiveDoubleViewModel.layout.xml
new file mode 100644
index 0000000..ffa55a8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/vm/PrimitiveDoubleViewModel.layout.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<bs3:row>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Action Prompt Styles" id="action-prompt-styles">
+				<cpt:property id="readOnlyProperty" />
+				<cpt:property id="readOnlyProperty2" >
+					<cpt:describedAs>
+						Associated action uses promptStyle=INLINE_AS_IF_EDIT
+					</cpt:describedAs>
+				</cpt:property>
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties">
+				<cpt:property id="readWriteProperty" />
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Label Positions" id="label-positions"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
+			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/PrimitiveFloats-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/PrimitiveFloats-description.adoc
new file mode 100644
index 0000000..1de3892
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/PrimitiveFloats-description.adoc
@@ -0,0 +1,129 @@
+The framework has built-in support for all of the primitive data types, including `float`.
+
+From here you can:
+
+* navigate to an entity that uses the `float` datatype
+* open a view model that uses the `float` datatype
+
+Because `float` is a primitive value, the properties on these domain objects are mandatory.
+
+== Common interface
+
+These objects both implement a common interface, `PrimitiveFloatHolder`:
+
+[source,java]
+----
+public interface PrimitiveFloatHolder {
+
+    float getReadOnlyProperty();
+    void setReadOnlyProperty(float c);
+
+    float getReadOnlyProperty2();
+    void setReadOnlyProperty2(float c);
+
+    float getReadWriteProperty();
+    void setReadWriteProperty(float c);
+
+    @MemberOrder(name = "label-positions", sequence = "1")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.LEFT, describedAs = "labelPosition=LEFT", hidden = Where.ALL_TABLES)
+    default float getReadOnlyPropertyDerivedLabelPositionLeft() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "2")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.TOP, describedAs = "labelPosition=TOP", hidden = Where.ALL_TABLES)
+    default float getReadOnlyPropertyDerivedLabelPositionTop() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "3")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.RIGHT, describedAs = "labelPosition=RIGHT", hidden = Where.ALL_TABLES)
+    default float getReadOnlyPropertyDerivedLabelPositionRight() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "4")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.NONE, describedAs = "labelPosition=NONE", hidden = Where.ALL_TABLES)
+    default float getReadOnlyPropertyDerivedLabelPositionNone() { return getReadOnlyProperty(); }
+
+}
+----
+
+The default methods have annotations that automatically inherited.
+Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
+
+
+== Mixin actions
+
+A number of mixin actions contribute through this interface, demonstrate the use of `float` as a parameter and as a return type.
+For example:
+
+* the `updateReadOnlyProperty` action is:
++
+[source,java]
+----
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "1"
+)
+@RequiredArgsConstructor
+public class PrimitiveFloatHolder_updateReadOnlyProperty {
+
+    private final PrimitiveFloatHolder primitiveFloatHolder;
+
+    public PrimitiveFloatHolder act(float newValue) {
+        primitiveFloatHolder.setReadOnlyProperty(newValue);
+        return primitiveFloatHolder;
+    }
+    public float default0Act() {
+        return primitiveFloatHolder.getReadOnlyProperty();
+    }
+}
+----
++
+There are a number of variants of this action, to demonstrate different prompt layouts.
+
+* the `actionReturning` action is:
++
+[source,java]
+----
+@Action(
+        semantics = SemanticsOf.SAFE,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@RequiredArgsConstructor
+public class PrimitiveFloatHolder_actionReturning {
+
+    private final PrimitiveFloatHolder primitiveFloatHolder;
+
+    public float act() {
+        return primitiveFloatHolder.getReadOnlyProperty();
+    }
+}
+----
+
+== Mixin properties
+
+We also use the interface to contribute a number of mixin properties:
+
+* the `mixinPropertyWithCssClass` property:
++
+[source,java]
+----
+@Property()
+@PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ")
+@RequiredArgsConstructor
+public class PrimitiveFloatHolder_mixinPropertyWithCssClass {
+
+    private final PrimitiveFloatHolder primitiveFloatHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public float prop() {
+        return primitiveFloatHolder.getReadOnlyProperty();
+    }
+}
+----
++
+TIP: the styling is provided from the `application.css` static resource.
+
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/PrimitiveFloats.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/PrimitiveFloats.java
new file mode 100644
index 0000000..8f5640e
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/PrimitiveFloats.java
@@ -0,0 +1,76 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.floats;
+
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.floats.jdo.PrimitiveFloatJdoEntities;
+import demoapp.dom.types.primitive.floats.jdo.PrimitiveFloatJdoEntity;
+import demoapp.dom.types.primitive.floats.vm.PrimitiveFloatViewModel;
+
+@XmlRootElement(name = "Demo")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.PrimitiveFloats", editing=Editing.ENABLED)
+@Log4j2
+public class PrimitiveFloats implements HasAsciiDocDescription {
+
+    public String title() {
+        return "float (primitive) data type";
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
+    public PrimitiveFloatViewModel openViewModel(float initialValue) {
+        return new PrimitiveFloatViewModel(initialValue);
+    }
+    public float default0OpenViewModel() {
+        return 1.23f;
+    }
+
+    @Collection
+    public List<PrimitiveFloatJdoEntity> getEntities() {
+        return entities.all();
+    }
+
+    @Inject
+    @XmlTransient
+    PrimitiveFloatJdoEntities entities;
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/PrimitiveFloats.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/PrimitiveFloats.layout.xml
new file mode 100644
index 0000000..55c5b87
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/PrimitiveFloats.layout.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<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="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder.java
new file mode 100644
index 0000000..9d80154
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder.java
@@ -0,0 +1,84 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.floats.holder;
+
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.Bounding;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
+public interface PrimitiveFloatHolder {
+
+    @MemberOrder(name = "action-prompt-styles", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout
+    float getReadOnlyProperty();
+    void setReadOnlyProperty(float c);
+
+    @MemberOrder(name = "action-prompt-styles", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout(describedAs = "associated action uses promptStyle=INLINE_AS_IF_EDIT", hidden = Where.ALL_TABLES) // TODO: doesn't seem to get picked up
+    float getReadOnlyProperty2();
+    void setReadOnlyProperty2(float c);
+
+    @MemberOrder(name = "editable-properties", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout
+    float getReadWriteProperty();
+    void setReadWriteProperty(float c);
+
+    @MemberOrder(name = "label-positions", sequence = "1")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.LEFT, describedAs = "labelPosition=LEFT", hidden = Where.ALL_TABLES)
+    default float getReadOnlyPropertyDerivedLabelPositionLeft() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "2")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.TOP, describedAs = "labelPosition=TOP", hidden = Where.ALL_TABLES)
+    default float getReadOnlyPropertyDerivedLabelPositionTop() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "3")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.RIGHT, describedAs = "labelPosition=RIGHT", hidden = Where.ALL_TABLES)
+    default float getReadOnlyPropertyDerivedLabelPositionRight() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "4")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.NONE, describedAs = "labelPosition=NONE", hidden = Where.ALL_TABLES)
+    default float getReadOnlyPropertyDerivedLabelPositionNone() { return getReadOnlyProperty(); }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_actionReturning.java
new file mode 100644
index 0000000..594ff25
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_actionReturning.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.floats.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.SAFE
+)
+@RequiredArgsConstructor
+public class PrimitiveFloatHolder_actionReturning {
+
+    private final PrimitiveFloatHolder primitiveFloatHolder;
+
+    public float act() {
+        return primitiveFloatHolder.getReadOnlyProperty();
+    }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_mixinPropertyNamedNotEscaped.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_mixinPropertyNamedNotEscaped.java
new file mode 100644
index 0000000..103f522
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_mixinPropertyNamedNotEscaped.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.floats.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+
+import lombok.RequiredArgsConstructor;
+
+
+//@Property()
+//@PropertyLayout(named = "<i>Named<i/> <b>not</b> escaped property", namedEscaped = false, describedAs = "named = \"(some markup)\", namedEscaped = false") // TODO: this doesn't render, and causes bootlint issues
+@RequiredArgsConstructor
+public class PrimitiveFloatHolder_mixinPropertyNamedNotEscaped {
+
+    private final demoapp.dom.types.primitive.floats.holder.PrimitiveFloatHolder primitiveFloatHolder;
+
+    @MemberOrder(name = "contributed", sequence = "3")
+    public float prop() {
+        return primitiveFloatHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_mixinPropertyNavigable.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_mixinPropertyNavigable.java
new file mode 100644
index 0000000..0765b3c
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_mixinPropertyNavigable.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.floats.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+
+import lombok.RequiredArgsConstructor;
+
+
+//@Property()
+//@PropertyLayout( navigable = Navigable.PARENT, describedAs = "navigable=PARENT") // TODO: doesn't seem to do anything
+@RequiredArgsConstructor
+public class PrimitiveFloatHolder_mixinPropertyNavigable {
+
+    private final PrimitiveFloatHolder primitiveFloatHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public float prop() {
+        return primitiveFloatHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_mixinPropertyWithCssClass.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_mixinPropertyWithCssClass.java
new file mode 100644
index 0000000..c9721a9
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_mixinPropertyWithCssClass.java
@@ -0,0 +1,40 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.floats.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Property()
+@PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ", hidden = Where.ALL_TABLES)
+@RequiredArgsConstructor
+public class PrimitiveFloatHolder_mixinPropertyWithCssClass {
+
+    private final PrimitiveFloatHolder primitiveFloatHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public float prop() {
+        return primitiveFloatHolder.getReadOnlyProperty();
+    }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
new file mode 100644
index 0000000..9a46343
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.floats.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty2",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE_AS_IF_EDIT)
+@RequiredArgsConstructor
+public class PrimitiveFloatHolder_updateReadOnlyProperty2PromptInlineAsIfEdit {
+
+    private final PrimitiveFloatHolder primitiveFloatHolder;
+
+    public PrimitiveFloatHolder act(float newValue) {
+        primitiveFloatHolder.setReadOnlyProperty2(newValue);
+        return primitiveFloatHolder;
+    }
+    public float default0Act() {
+        return primitiveFloatHolder.getReadOnlyProperty2();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyPositionPanel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyPositionPanel.java
new file mode 100644
index 0000000..152685f
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyPositionPanel.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.floats.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "2"
+)
+@ActionLayout(position = ActionLayout.Position.PANEL, named = "Position in panel", describedAs = "position = PANEL")
+@RequiredArgsConstructor
+public class PrimitiveFloatHolder_updateReadOnlyPropertyPositionPanel {
+
+    private final PrimitiveFloatHolder primitiveFloatHolder;
+
+    public PrimitiveFloatHolder act(float newValue) {
+        primitiveFloatHolder.setReadOnlyProperty(newValue);
+        return primitiveFloatHolder;
+    }
+    public float default0Act() {
+        return primitiveFloatHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyPromptStyleInline.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyPromptStyleInline.java
new file mode 100644
index 0000000..587787b
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyPromptStyleInline.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.floats.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Inline", describedAs = "promptStyle = INLINE")
+@RequiredArgsConstructor
+public class PrimitiveFloatHolder_updateReadOnlyPropertyPromptStyleInline {
+
+    private final PrimitiveFloatHolder primitiveFloatHolder;
+
+    public PrimitiveFloatHolder act(float newValue) {
+        primitiveFloatHolder.setReadOnlyProperty(newValue);
+        return primitiveFloatHolder;
+    }
+    public float default0Act() {
+        return primitiveFloatHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyPromptStyleModal.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyPromptStyleModal.java
new file mode 100644
index 0000000..59fea4a
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyPromptStyleModal.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.floats.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "2"
+)
+@ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL, named = "Modal", describedAs = "promptStyle = MODAL")
+@RequiredArgsConstructor
+public class PrimitiveFloatHolder_updateReadOnlyPropertyPromptStyleModal {
+
+    private final PrimitiveFloatHolder primitiveFloatHolder;
+
+    public PrimitiveFloatHolder act(float newValue) {
+        primitiveFloatHolder.setReadOnlyProperty(newValue);
+        return primitiveFloatHolder;
+    }
+    public float default0Act() {
+        return primitiveFloatHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
new file mode 100644
index 0000000..62a5c0c
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.floats.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@ActionLayout(position = ActionLayout.Position.PANEL_DROPDOWN, named = "Panel Dropdown", describedAs = "position = PANEL_DROPDOWN")
+@RequiredArgsConstructor
+public class PrimitiveFloatHolder_updateReadOnlyPropertyPromptStylePanelDropDown {
+
+    private final PrimitiveFloatHolder primitiveFloatHolder;
+
+    public PrimitiveFloatHolder act(float newValue) {
+        primitiveFloatHolder.setReadOnlyProperty(newValue);
+        return primitiveFloatHolder;
+    }
+    public float default0Act() {
+        return primitiveFloatHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyPromptStyleSidebar.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyPromptStyleSidebar.java
new file mode 100644
index 0000000..4646ed5
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyPromptStyleSidebar.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.floats.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR, named = "sidebar", describedAs = "promptStyle = DIALOG_SIDEBAR")
+@RequiredArgsConstructor
+public class PrimitiveFloatHolder_updateReadOnlyPropertyPromptStyleSidebar {
+
+    private final PrimitiveFloatHolder primitiveFloatHolder;
+
+    public PrimitiveFloatHolder act(float newValue) {
+        primitiveFloatHolder.setReadOnlyProperty(newValue);
+        return primitiveFloatHolder;
+    }
+    public float default0Act() {
+        return primitiveFloatHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyWithChoices.java
new file mode 100644
index 0000000..ee2f273
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_updateReadOnlyPropertyWithChoices.java
@@ -0,0 +1,58 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.floats.holder;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "4"
+)
+@ActionLayout(promptStyle = PromptStyle.AS_CONFIGURED, named = "with choices")
+@RequiredArgsConstructor
+public class PrimitiveFloatHolder_updateReadOnlyPropertyWithChoices {
+
+    private final PrimitiveFloatHolder primitiveFloatHolder;
+
+    public PrimitiveFloatHolder act(float newValue) {
+        primitiveFloatHolder.setReadOnlyProperty(newValue);
+        return primitiveFloatHolder;
+    }
+    public float default0Act() {
+        return primitiveFloatHolder.getReadOnlyProperty();
+    }
+    public List<Float> choices0Act() {
+        return Stream.of(1.1f, 2.2f, 3.3f, 4.0f, -9.9f, -8.8f).collect(Collectors.toList());
+    }
+    public boolean hideAct() {
+        return true;
+    } // TODO: choices doesn't seem to work for this datatype
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/jdo/PrimitiveFloatJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/jdo/PrimitiveFloatJdoEntities.java
new file mode 100644
index 0000000..be9cd57
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/jdo/PrimitiveFloatJdoEntities.java
@@ -0,0 +1,26 @@
+package demoapp.dom.types.primitive.floats.jdo;
+
+import java.util.List;
+import java.util.Optional;
+
+import javax.inject.Inject;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+
+@Service
+public class PrimitiveFloatJdoEntities {
+
+    public Optional<PrimitiveFloatJdoEntity> find(final float readOnlyProperty) {
+        return repositoryService.firstMatch(PrimitiveFloatJdoEntity.class, x -> x.getReadOnlyProperty() == readOnlyProperty);
+    }
+
+    public List<PrimitiveFloatJdoEntity> all() {
+        return repositoryService.allInstances(PrimitiveFloatJdoEntity.class);
+    }
+
+    @Inject
+    RepositoryService repositoryService;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/jdo/PrimitiveFloatJdoEntity-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/jdo/PrimitiveFloatJdoEntity-description.adoc
new file mode 100644
index 0000000..bcee705
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/jdo/PrimitiveFloatJdoEntity-description.adoc
@@ -0,0 +1,30 @@
+JDO supports `float` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+        objectType = "demo.PrimitiveFloatJdoEntity"
+)
+public class PrimitiveFloatJdoEntity
+    implements HasAsciiDocDescription,   PrimitiveFloatHolder {          // <.>
+
+    public PrimitiveFloatJdoEntity(float initialValue) { ... }            // <.>
+
+    @Title(prepend = "float (primitive) JDO entity: ")
+    @Getter @Setter
+    private float readOnlyProperty;                                      // <.>
+
+    @Getter @Setter
+    private float readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private float readWriteProperty;
+
+}
+----
+<.> a no-arg constructor is introduced by JDO enhancer
+<.> as a convenience
+<.> no additional annotations required.
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/jdo/PrimitiveFloatJdoEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/jdo/PrimitiveFloatJdoEntity.java
new file mode 100644
index 0000000..cf6cd08
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/jdo/PrimitiveFloatJdoEntity.java
@@ -0,0 +1,67 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.floats.jdo;
+
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.floats.holder.PrimitiveFloatHolder;
+
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+        objectType = "demo.PrimitiveFloatJdoEntity"
+)
+public class PrimitiveFloatJdoEntity
+        implements HasAsciiDocDescription,
+        PrimitiveFloatHolder {
+
+    public PrimitiveFloatJdoEntity(float initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readOnlyProperty2 = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+    @Title(prepend = "float (primitive) JDO entity: ")
+    @Getter @Setter
+    private float readOnlyProperty;
+
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
+    @Getter @Setter
+    private float readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private float readWriteProperty;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/jdo/PrimitiveFloatJdoEntity.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/jdo/PrimitiveFloatJdoEntity.layout.xml
new file mode 100644
index 0000000..ffa55a8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/jdo/PrimitiveFloatJdoEntity.layout.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<bs3:row>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Action Prompt Styles" id="action-prompt-styles">
+				<cpt:property id="readOnlyProperty" />
+				<cpt:property id="readOnlyProperty2" >
+					<cpt:describedAs>
+						Associated action uses promptStyle=INLINE_AS_IF_EDIT
+					</cpt:describedAs>
+				</cpt:property>
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties">
+				<cpt:property id="readWriteProperty" />
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Label Positions" id="label-positions"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
+			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/jdo/PrimitiveFloatJdoEntitySeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/jdo/PrimitiveFloatJdoEntitySeedService.java
new file mode 100644
index 0000000..5cc94c1
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/jdo/PrimitiveFloatJdoEntitySeedService.java
@@ -0,0 +1,42 @@
+package demoapp.dom.types.primitive.floats.jdo;
+
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.core.runtime.events.app.AppLifecycleEvent;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
+
+@Service
+public class PrimitiveFloatJdoEntitySeedService {
+
+    @EventListener(AppLifecycleEvent.class)
+    public void onAppLifecycleEvent(AppLifecycleEvent event) {
+
+        if (event.getEventType() == AppLifecycleEvent.EventType.appPostMetamodel) {
+            fixtureScripts.run(new PrimitiveFloatJdoEntityFixture());
+        }
+    }
+
+    @Inject
+    FixtureScripts fixtureScripts;
+
+    static class PrimitiveFloatJdoEntityFixture extends FixtureScript {
+
+        @Override
+        protected void execute(ExecutionContext executionContext) {
+            Stream.of('a', 'b', 'c')
+                    .map(PrimitiveFloatJdoEntity::new)
+                    .forEach(repositoryService::persist);
+        }
+
+        @Inject
+        RepositoryService repositoryService;
+
+    }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/vm/PrimitiveFloatViewModel-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/vm/PrimitiveFloatViewModel-description.adoc
new file mode 100644
index 0000000..16c2ad3
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/vm/PrimitiveFloatViewModel-description.adoc
@@ -0,0 +1,36 @@
+JAXB supports `float` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+@XmlRootElement(name = "demo.PrimitiveFloatViewModel")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+        nature=Nature.VIEW_MODEL,
+        objectType = "demo.PrimitiveFloatViewModel"
+)
+@lombok.NoArgsConstructor                               // <.>
+public class PrimitiveFloatViewModel
+        implements HasAsciiDocDescription,
+                   PrimitiveFloatHolder {
+
+    public PrimitiveFloatViewModel(float initialValue) {  // <.>
+        // ...
+    }
+
+    @Title(prepend = "float (primitive) view model: ")
+    @Getter @Setter
+    private float readOnlyProperty;                      // <.>
+
+    @Getter @Setter
+    private float readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private float readWriteProperty;
+
+}
+----
+<.> a no-arg constructor is required by JAXB
+<.> as a convenience
+<.> no additional annotations required.
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/vm/PrimitiveFloatViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/vm/PrimitiveFloatViewModel.java
new file mode 100644
index 0000000..03af7c6
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/vm/PrimitiveFloatViewModel.java
@@ -0,0 +1,71 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.floats.vm;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.floats.holder.PrimitiveFloatHolder;
+
+@XmlRootElement(name = "demo.PrimitiveFloatViewModel")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+        nature=Nature.VIEW_MODEL,
+        objectType = "demo.PrimitiveFloatViewModel"
+)
+@lombok.NoArgsConstructor
+public class PrimitiveFloatViewModel
+        implements HasAsciiDocDescription,
+        PrimitiveFloatHolder {
+
+    public PrimitiveFloatViewModel(float initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readOnlyProperty2 = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+    @Title(prepend = "float (primitive) view model: ")
+    @Getter @Setter
+    private float readOnlyProperty;
+
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
+    @Getter @Setter
+    private float readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private float readWriteProperty;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/vm/PrimitiveFloatViewModel.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/vm/PrimitiveFloatViewModel.layout.xml
new file mode 100644
index 0000000..ffa55a8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/vm/PrimitiveFloatViewModel.layout.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<bs3:row>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Action Prompt Styles" id="action-prompt-styles">
+				<cpt:property id="readOnlyProperty" />
+				<cpt:property id="readOnlyProperty2" >
+					<cpt:describedAs>
+						Associated action uses promptStyle=INLINE_AS_IF_EDIT
+					</cpt:describedAs>
+				</cpt:property>
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties">
+				<cpt:property id="readWriteProperty" />
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Label Positions" id="label-positions"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
+			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
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
new file mode 100644
index 0000000..e992064
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts-description.adoc
@@ -0,0 +1,129 @@
+The framework has built-in support for all of the primitive data types, including `int`.
+
+From here you can:
+
+* navigate to an entity that uses the `int` datatype
+* open a view model that uses the `int` datatype
+
+Because `int` is a primitive value, the properties on these domain objects are mandatory.
+
+== Common interface
+
+These objects both implement a common interface, `PrimitiveIntHolder`:
+
+[source,java]
+----
+public interface PrimitiveIntHolder {
+
+    int getReadOnlyProperty();
+    void setReadOnlyProperty(int c);
+
+    int getReadOnlyProperty2();
+    void setReadOnlyProperty2(int c);
+
+    int getReadWriteProperty();
+    void setReadWriteProperty(int c);
+
+    @MemberOrder(name = "label-positions", sequence = "1")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.LEFT, describedAs = "labelPosition=LEFT", hidden = Where.ALL_TABLES)
+    default int getReadOnlyPropertyDerivedLabelPositionLeft() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "2")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.TOP, describedAs = "labelPosition=TOP", hidden = Where.ALL_TABLES)
+    default int getReadOnlyPropertyDerivedLabelPositionTop() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "3")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.RIGHT, describedAs = "labelPosition=RIGHT", hidden = Where.ALL_TABLES)
+    default int getReadOnlyPropertyDerivedLabelPositionRight() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "4")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.NONE, describedAs = "labelPosition=NONE", hidden = Where.ALL_TABLES)
+    default int getReadOnlyPropertyDerivedLabelPositionNone() { return getReadOnlyProperty(); }
+
+}
+----
+
+The default methods have annotations that automatically inherited.
+Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
+
+
+== Mixin actions
+
+A number of mixin actions contribute through this interface, demonstrate the use of `int` as a parameter and as a return type.
+For example:
+
+* the `updateReadOnlyProperty` action is:
++
+[source,java]
+----
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "1"
+)
+@RequiredArgsConstructor
+public class PrimitiveIntHolder_updateReadOnlyProperty {
+
+    private final PrimitiveIntHolder primitiveIntHolder;
+
+    public PrimitiveIntHolder act(int newValue) {
+        primitiveIntHolder.setReadOnlyProperty(newValue);
+        return primitiveIntHolder;
+    }
+    public int default0Act() {
+        return primitiveIntHolder.getReadOnlyProperty();
+    }
+}
+----
++
+There are a number of variants of this action, to demonstrate different prompt layouts.
+
+* the `actionReturning` action is:
++
+[source,java]
+----
+@Action(
+        semantics = SemanticsOf.SAFE,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@RequiredArgsConstructor
+public class PrimitiveIntHolder_actionReturning {
+
+    private final PrimitiveIntHolder primitiveIntHolder;
+
+    public int act() {
+        return primitiveIntHolder.getReadOnlyProperty();
+    }
+}
+----
+
+== Mixin properties
+
+We also use the interface to contribute a number of mixin properties:
+
+* the `mixinPropertyWithCssClass` property:
++
+[source,java]
+----
+@Property()
+@PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ")
+@RequiredArgsConstructor
+public class PrimitiveIntHolder_mixinPropertyWithCssClass {
+
+    private final PrimitiveIntHolder primitiveIntHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public int prop() {
+        return primitiveIntHolder.getReadOnlyProperty();
+    }
+}
+----
++
+TIP: the styling is provided from the `application.css` static resource.
+
+
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
new file mode 100644
index 0000000..b0a6f3d
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts.java
@@ -0,0 +1,76 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.ints;
+
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.ints.jdo.PrimitiveIntJdoEntities;
+import demoapp.dom.types.primitive.ints.jdo.PrimitiveIntJdoEntity;
+import demoapp.dom.types.primitive.ints.vm.PrimitiveIntViewModel;
+
+@XmlRootElement(name = "Demo")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.PrimitiveInts", editing=Editing.ENABLED)
+@Log4j2
+public class PrimitiveInts implements HasAsciiDocDescription {
+
+    public String title() {
+        return "int (primitive) data type";
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
+    public PrimitiveIntViewModel openViewModel(int initialValue) {
+        return new PrimitiveIntViewModel(initialValue);
+    }
+    public int default0OpenViewModel() {
+        return 123456;
+    }
+
+    @Collection
+    public List<PrimitiveIntJdoEntity> getEntities() {
+        return entities.all();
+    }
+
+    @Inject
+    @XmlTransient
+    PrimitiveIntJdoEntities entities;
+
+
+}
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
new file mode 100644
index 0000000..55c5b87
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/PrimitiveInts.layout.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<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="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
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
new file mode 100644
index 0000000..a5dc5f4
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder.java
@@ -0,0 +1,84 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.ints.holder;
+
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.Bounding;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
+public interface PrimitiveIntHolder {
+
+    @MemberOrder(name = "action-prompt-styles", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout
+    int getReadOnlyProperty();
+    void setReadOnlyProperty(int c);
+
+    @MemberOrder(name = "action-prompt-styles", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout(describedAs = "associated action uses promptStyle=INLINE_AS_IF_EDIT", hidden = Where.ALL_TABLES) // TODO: doesn't seem to get picked up
+    int getReadOnlyProperty2();
+    void setReadOnlyProperty2(int c);
+
+    @MemberOrder(name = "editable-properties", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout
+    int getReadWriteProperty();
+    void setReadWriteProperty(int c);
+
+    @MemberOrder(name = "label-positions", sequence = "1")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.LEFT, describedAs = "labelPosition=LEFT", hidden = Where.ALL_TABLES)
+    default int getReadOnlyPropertyDerivedLabelPositionLeft() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "2")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.TOP, describedAs = "labelPosition=TOP", hidden = Where.ALL_TABLES)
+    default int getReadOnlyPropertyDerivedLabelPositionTop() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "3")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.RIGHT, describedAs = "labelPosition=RIGHT", hidden = Where.ALL_TABLES)
+    default int getReadOnlyPropertyDerivedLabelPositionRight() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "4")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.NONE, describedAs = "labelPosition=NONE", hidden = Where.ALL_TABLES)
+    default int getReadOnlyPropertyDerivedLabelPositionNone() { 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
new file mode 100644
index 0000000..481e74f
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_actionReturning.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.ints.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.SAFE
+)
+@RequiredArgsConstructor
+public class PrimitiveIntHolder_actionReturning {
+
+    private final PrimitiveIntHolder primitiveIntHolder;
+
+    public int act() {
+        return primitiveIntHolder.getReadOnlyProperty();
+    }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_mixinPropertyNamedNotEscaped.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_mixinPropertyNamedNotEscaped.java
new file mode 100644
index 0000000..7641fe9
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_mixinPropertyNamedNotEscaped.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.ints.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+
+import lombok.RequiredArgsConstructor;
+
+
+//@Property()
+//@PropertyLayout(named = "<i>Named<i/> <b>not</b> escaped property", namedEscaped = false, describedAs = "named = \"(some markup)\", namedEscaped = false") // TODO: this doesn't render, and causes bootlint issues
+@RequiredArgsConstructor
+public class PrimitiveIntHolder_mixinPropertyNamedNotEscaped {
+
+    private final PrimitiveIntHolder primitiveIntHolder;
+
+    @MemberOrder(name = "contributed", sequence = "3")
+    public int prop() {
+        return primitiveIntHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_mixinPropertyNavigable.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_mixinPropertyNavigable.java
new file mode 100644
index 0000000..6afdfdd
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_mixinPropertyNavigable.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.ints.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+
+import lombok.RequiredArgsConstructor;
+
+
+//@Property()
+//@PropertyLayout( navigable = Navigable.PARENT, describedAs = "navigable=PARENT") // TODO: doesn't seem to do anything
+@RequiredArgsConstructor
+public class PrimitiveIntHolder_mixinPropertyNavigable {
+
+    private final PrimitiveIntHolder primitiveIntHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public int prop() {
+        return primitiveIntHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_mixinPropertyWithCssClass.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_mixinPropertyWithCssClass.java
new file mode 100644
index 0000000..d0f487d
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_mixinPropertyWithCssClass.java
@@ -0,0 +1,40 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.ints.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Property()
+@PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ", hidden = Where.ALL_TABLES)
+@RequiredArgsConstructor
+public class PrimitiveIntHolder_mixinPropertyWithCssClass {
+
+    private final PrimitiveIntHolder primitiveIntHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public int prop() {
+        return primitiveIntHolder.getReadOnlyProperty();
+    }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
new file mode 100644
index 0000000..62e1f2e
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.ints.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty2",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE_AS_IF_EDIT)
+@RequiredArgsConstructor
+public class PrimitiveIntHolder_updateReadOnlyProperty2PromptInlineAsIfEdit {
+
+    private final PrimitiveIntHolder primitiveIntHolder;
+
+    public PrimitiveIntHolder act(int newValue) {
+        primitiveIntHolder.setReadOnlyProperty2(newValue);
+        return primitiveIntHolder;
+    }
+    public int default0Act() {
+        return primitiveIntHolder.getReadOnlyProperty2();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyPositionPanel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyPositionPanel.java
new file mode 100644
index 0000000..4535937
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyPositionPanel.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.ints.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "2"
+)
+@ActionLayout(position = ActionLayout.Position.PANEL, named = "Position in panel", describedAs = "position = PANEL")
+@RequiredArgsConstructor
+public class PrimitiveIntHolder_updateReadOnlyPropertyPositionPanel {
+
+    private final PrimitiveIntHolder primitiveIntHolder;
+
+    public PrimitiveIntHolder act(int newValue) {
+        primitiveIntHolder.setReadOnlyProperty(newValue);
+        return primitiveIntHolder;
+    }
+    public int default0Act() {
+        return primitiveIntHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyPromptStyleInline.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyPromptStyleInline.java
new file mode 100644
index 0000000..a982cdf
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyPromptStyleInline.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.ints.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Inline", describedAs = "promptStyle = INLINE")
+@RequiredArgsConstructor
+public class PrimitiveIntHolder_updateReadOnlyPropertyPromptStyleInline {
+
+    private final PrimitiveIntHolder primitiveIntHolder;
+
+    public PrimitiveIntHolder act(int newValue) {
+        primitiveIntHolder.setReadOnlyProperty(newValue);
+        return primitiveIntHolder;
+    }
+    public int default0Act() {
+        return primitiveIntHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyPromptStyleModal.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyPromptStyleModal.java
new file mode 100644
index 0000000..c1d7d3a
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyPromptStyleModal.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.ints.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "2"
+)
+@ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL, named = "Modal", describedAs = "promptStyle = MODAL")
+@RequiredArgsConstructor
+public class PrimitiveIntHolder_updateReadOnlyPropertyPromptStyleModal {
+
+    private final PrimitiveIntHolder primitiveIntHolder;
+
+    public PrimitiveIntHolder act(int newValue) {
+        primitiveIntHolder.setReadOnlyProperty(newValue);
+        return primitiveIntHolder;
+    }
+    public int default0Act() {
+        return primitiveIntHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
new file mode 100644
index 0000000..a5703b6
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.ints.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@ActionLayout(position = ActionLayout.Position.PANEL_DROPDOWN, named = "Panel Dropdown", describedAs = "position = PANEL_DROPDOWN")
+@RequiredArgsConstructor
+public class PrimitiveIntHolder_updateReadOnlyPropertyPromptStylePanelDropDown {
+
+    private final PrimitiveIntHolder primitiveIntHolder;
+
+    public PrimitiveIntHolder act(int newValue) {
+        primitiveIntHolder.setReadOnlyProperty(newValue);
+        return primitiveIntHolder;
+    }
+    public int default0Act() {
+        return primitiveIntHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyPromptStyleSidebar.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyPromptStyleSidebar.java
new file mode 100644
index 0000000..921f7eb
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyPromptStyleSidebar.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.ints.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR, named = "sidebar", describedAs = "promptStyle = DIALOG_SIDEBAR")
+@RequiredArgsConstructor
+public class PrimitiveIntHolder_updateReadOnlyPropertyPromptStyleSidebar {
+
+    private final PrimitiveIntHolder primitiveIntHolder;
+
+    public PrimitiveIntHolder act(int newValue) {
+        primitiveIntHolder.setReadOnlyProperty(newValue);
+        return primitiveIntHolder;
+    }
+    public int default0Act() {
+        return primitiveIntHolder.getReadOnlyProperty();
+    }
+
+
+}
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
new file mode 100644
index 0000000..31196a8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_updateReadOnlyPropertyWithChoices.java
@@ -0,0 +1,58 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.ints.holder;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "4"
+)
+@ActionLayout(promptStyle = PromptStyle.AS_CONFIGURED, named = "with choices")
+@RequiredArgsConstructor
+public class PrimitiveIntHolder_updateReadOnlyPropertyWithChoices {
+
+    private final PrimitiveIntHolder primitiveIntHolder;
+
+    public PrimitiveIntHolder act(int newValue) {
+        primitiveIntHolder.setReadOnlyProperty(newValue);
+        return primitiveIntHolder;
+    }
+    public int default0Act() {
+        return primitiveIntHolder.getReadOnlyProperty();
+    }
+    public List<Integer> choices0Act() {
+        return Stream.of(1,2,3,-1,-2,-3).collect(Collectors.toList());
+    }
+    public boolean hideAct() {
+        return true;
+    } // TODO: choices doesn't seem to work for this datatype
+
+}
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
new file mode 100644
index 0000000..dc7c679
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntities.java
@@ -0,0 +1,26 @@
+package demoapp.dom.types.primitive.ints.jdo;
+
+import java.util.List;
+import java.util.Optional;
+
+import javax.inject.Inject;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+
+@Service
+public class PrimitiveIntJdoEntities {
+
+    public Optional<PrimitiveIntJdoEntity> find(final int readOnlyProperty) {
+        return repositoryService.firstMatch(PrimitiveIntJdoEntity.class, x -> x.getReadOnlyProperty() == readOnlyProperty);
+    }
+
+    public List<PrimitiveIntJdoEntity> all() {
+        return repositoryService.allInstances(PrimitiveIntJdoEntity.class);
+    }
+
+    @Inject
+    RepositoryService repositoryService;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntity-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntity-description.adoc
new file mode 100644
index 0000000..39fcfc8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntity-description.adoc
@@ -0,0 +1,30 @@
+JDO supports `int` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+        objectType = "demo.PrimitiveIntJdoEntity"
+)
+public class PrimitiveIntJdoEntity
+    implements HasAsciiDocDescription,   PrimitiveIntHolder {          // <.>
+
+    public PrimitiveIntJdoEntity(int initialValue) { ... }            // <.>
+
+    @Title(prepend = "int (primitive) JDO entity: ")
+    @Getter @Setter
+    private int readOnlyProperty;                                      // <.>
+
+    @Getter @Setter
+    private int readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private int readWriteProperty;
+
+}
+----
+<.> a no-arg constructor is introduced by JDO enhancer
+<.> as a convenience
+<.> no additional annotations required.
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntity.java
new file mode 100644
index 0000000..44458e1
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntity.java
@@ -0,0 +1,67 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.ints.jdo;
+
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.ints.holder.PrimitiveIntHolder;
+
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+        objectType = "demo.PrimitiveIntJdoEntity"
+)
+public class PrimitiveIntJdoEntity
+        implements HasAsciiDocDescription,
+        PrimitiveIntHolder {
+
+    public PrimitiveIntJdoEntity(int initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readOnlyProperty2 = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+    @Title(prepend = "int (primitive) JDO entity: ")
+    @Getter @Setter
+    private int readOnlyProperty;
+
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
+    @Getter @Setter
+    private int readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private int readWriteProperty;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntity.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntity.layout.xml
new file mode 100644
index 0000000..ffa55a8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntity.layout.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<bs3:row>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Action Prompt Styles" id="action-prompt-styles">
+				<cpt:property id="readOnlyProperty" />
+				<cpt:property id="readOnlyProperty2" >
+					<cpt:describedAs>
+						Associated action uses promptStyle=INLINE_AS_IF_EDIT
+					</cpt:describedAs>
+				</cpt:property>
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties">
+				<cpt:property id="readWriteProperty" />
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Label Positions" id="label-positions"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
+			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntitySeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntitySeedService.java
new file mode 100644
index 0000000..5b782cf
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/jdo/PrimitiveIntJdoEntitySeedService.java
@@ -0,0 +1,42 @@
+package demoapp.dom.types.primitive.ints.jdo;
+
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.core.runtime.events.app.AppLifecycleEvent;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
+
+@Service
+public class PrimitiveIntJdoEntitySeedService {
+
+    @EventListener(AppLifecycleEvent.class)
+    public void onAppLifecycleEvent(AppLifecycleEvent event) {
+
+        if (event.getEventType() == AppLifecycleEvent.EventType.appPostMetamodel) {
+            fixtureScripts.run(new PrimitiveIntJdoEntityFixture());
+        }
+    }
+
+    @Inject
+    FixtureScripts fixtureScripts;
+
+    static class PrimitiveIntJdoEntityFixture extends FixtureScript {
+
+        @Override
+        protected void execute(ExecutionContext executionContext) {
+            Stream.of('a', 'b', 'c')
+                    .map(PrimitiveIntJdoEntity::new)
+                    .forEach(repositoryService::persist);
+        }
+
+        @Inject
+        RepositoryService repositoryService;
+
+    }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntViewModel-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntViewModel-description.adoc
new file mode 100644
index 0000000..720ce53
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntViewModel-description.adoc
@@ -0,0 +1,36 @@
+JAXB supports `int` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+@XmlRootElement(name = "demo.PrimitiveIntViewModel")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+        nature=Nature.VIEW_MODEL,
+        objectType = "demo.PrimitiveIntViewModel"
+)
+@lombok.NoArgsConstructor                               // <.>
+public class PrimitiveIntViewModel
+        implements HasAsciiDocDescription,
+                   PrimitiveIntHolder {
+
+    public PrimitiveIntViewModel(int initialValue) {  // <.>
+        // ...
+    }
+
+    @Title(prepend = "int (primitive) view model: ")
+    @Getter @Setter
+    private int readOnlyProperty;                      // <.>
+
+    @Getter @Setter
+    private int readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private int readWriteProperty;
+
+}
+----
+<.> a no-arg constructor is required by JAXB
+<.> as a convenience
+<.> no additional annotations required.
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntViewModel.java
new file mode 100644
index 0000000..3e53ef8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntViewModel.java
@@ -0,0 +1,71 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.ints.vm;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.ints.holder.PrimitiveIntHolder;
+
+@XmlRootElement(name = "demo.PrimitiveIntViewModel")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+        nature=Nature.VIEW_MODEL,
+        objectType = "demo.PrimitiveIntViewModel"
+)
+@lombok.NoArgsConstructor
+public class PrimitiveIntViewModel
+        implements HasAsciiDocDescription,
+        PrimitiveIntHolder {
+
+    public PrimitiveIntViewModel(int initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readOnlyProperty2 = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+    @Title(prepend = "int (primitive) view model: ")
+    @Getter @Setter
+    private int readOnlyProperty;
+
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
+    @Getter @Setter
+    private int readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private int readWriteProperty;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntViewModel.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntViewModel.layout.xml
new file mode 100644
index 0000000..ffa55a8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/vm/PrimitiveIntViewModel.layout.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<bs3:row>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Action Prompt Styles" id="action-prompt-styles">
+				<cpt:property id="readOnlyProperty" />
+				<cpt:property id="readOnlyProperty2" >
+					<cpt:describedAs>
+						Associated action uses promptStyle=INLINE_AS_IF_EDIT
+					</cpt:describedAs>
+				</cpt:property>
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties">
+				<cpt:property id="readWriteProperty" />
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Label Positions" id="label-positions"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
+			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
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
new file mode 100644
index 0000000..4689b05
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs-description.adoc
@@ -0,0 +1,129 @@
+The framework has built-in support for all of the primitive data types, including `long`.
+
+From here you can:
+
+* navigate to an entity that uses the `long` datatype
+* open a view model that uses the `long` datatype
+
+Because `long` is a primitive value, the properties on these domain objects are mandatory.
+
+== Common interface
+
+These objects both implement a common interface, `PrimitiveLongHolder`:
+
+[source,java]
+----
+public interface PrimitiveLongHolder {
+
+    long getReadOnlyProperty();
+    void setReadOnlyProperty(long c);
+
+    long getReadOnlyProperty2();
+    void setReadOnlyProperty2(long c);
+
+    long getReadWriteProperty();
+    void setReadWriteProperty(long c);
+
+    @MemberOrder(name = "label-positions", sequence = "1")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.LEFT, describedAs = "labelPosition=LEFT", hidden = Where.ALL_TABLES)
+    default long getReadOnlyPropertyDerivedLabelPositionLeft() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "2")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.TOP, describedAs = "labelPosition=TOP", hidden = Where.ALL_TABLES)
+    default long getReadOnlyPropertyDerivedLabelPositionTop() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "3")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.RIGHT, describedAs = "labelPosition=RIGHT", hidden = Where.ALL_TABLES)
+    default long getReadOnlyPropertyDerivedLabelPositionRight() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "4")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.NONE, describedAs = "labelPosition=NONE", hidden = Where.ALL_TABLES)
+    default long getReadOnlyPropertyDerivedLabelPositionNone() { return getReadOnlyProperty(); }
+
+}
+----
+
+The default methods have annotations that automatically inherited.
+Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
+
+
+== Mixin actions
+
+A number of mixin actions contribute through this interface, demonstrate the use of `long` as a parameter and as a return type.
+For example:
+
+* the `updateReadOnlyProperty` action is:
++
+[source,java]
+----
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "1"
+)
+@RequiredArgsConstructor
+public class PrimitiveLongHolder_updateReadOnlyProperty {
+
+    private final PrimitiveLongHolder primitiveLongHolder;
+
+    public PrimitiveLongHolder act(long newValue) {
+        primitiveLongHolder.setReadOnlyProperty(newValue);
+        return primitiveLongHolder;
+    }
+    public long default0Act() {
+        return primitiveLongHolder.getReadOnlyProperty();
+    }
+}
+----
++
+There are a number of variants of this action, to demonstrate different prompt layouts.
+
+* the `actionReturning` action is:
++
+[source,java]
+----
+@Action(
+        semantics = SemanticsOf.SAFE,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@RequiredArgsConstructor
+public class PrimitiveLongHolder_actionReturning {
+
+    private final PrimitiveLongHolder primitiveLongHolder;
+
+    public long act() {
+        return primitiveLongHolder.getReadOnlyProperty();
+    }
+}
+----
+
+== Mixin properties
+
+We also use the interface to contribute a number of mixin properties:
+
+* the `mixinPropertyWithCssClass` property:
++
+[source,java]
+----
+@Property()
+@PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ")
+@RequiredArgsConstructor
+public class PrimitiveLongHolder_mixinPropertyWithCssClass {
+
+    private final PrimitiveLongHolder primitiveLongHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public long prop() {
+        return primitiveLongHolder.getReadOnlyProperty();
+    }
+}
+----
++
+TIP: the styling is provided from the `application.css` static resource.
+
+
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
new file mode 100644
index 0000000..1be0e67
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs.java
@@ -0,0 +1,76 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.longs;
+
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.longs.jdo.PrimitiveLongJdoEntities;
+import demoapp.dom.types.primitive.longs.jdo.PrimitiveLongJdoEntity;
+import demoapp.dom.types.primitive.longs.vm.PrimitiveLongViewModel;
+
+@XmlRootElement(name = "Demo")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.PrimitiveLongs", editing=Editing.ENABLED)
+@Log4j2
+public class PrimitiveLongs implements HasAsciiDocDescription {
+
+    public String title() {
+        return "long (primitive) data type";
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
+    public PrimitiveLongViewModel openViewModel(long initialValue) {
+        return new PrimitiveLongViewModel(initialValue);
+    }
+    public long default0OpenViewModel() {
+        return 123_456_789_012L;
+    }
+
+    @Collection
+    public List<PrimitiveLongJdoEntity> getEntities() {
+        return entities.all();
+    }
+
+    @Inject
+    @XmlTransient
+    PrimitiveLongJdoEntities entities;
+
+
+}
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
new file mode 100644
index 0000000..55c5b87
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/PrimitiveLongs.layout.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<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="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
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
new file mode 100644
index 0000000..ebba3a0
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder.java
@@ -0,0 +1,84 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.longs.holder;
+
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.Bounding;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
+public interface PrimitiveLongHolder {
+
+    @MemberOrder(name = "action-prompt-styles", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout
+    long getReadOnlyProperty();
+    void setReadOnlyProperty(long c);
+
+    @MemberOrder(name = "action-prompt-styles", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout(describedAs = "associated action uses promptStyle=INLINE_AS_IF_EDIT", hidden = Where.ALL_TABLES) // TODO: doesn't seem to get picked up
+    long getReadOnlyProperty2();
+    void setReadOnlyProperty2(long c);
+
+    @MemberOrder(name = "editable-properties", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout
+    long getReadWriteProperty();
+    void setReadWriteProperty(long c);
+
+    @MemberOrder(name = "label-positions", sequence = "1")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.LEFT, describedAs = "labelPosition=LEFT", hidden = Where.ALL_TABLES)
+    default long getReadOnlyPropertyDerivedLabelPositionLeft() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "2")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.TOP, describedAs = "labelPosition=TOP", hidden = Where.ALL_TABLES)
+    default long getReadOnlyPropertyDerivedLabelPositionTop() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "3")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.RIGHT, describedAs = "labelPosition=RIGHT", hidden = Where.ALL_TABLES)
+    default long getReadOnlyPropertyDerivedLabelPositionRight() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "4")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.NONE, describedAs = "labelPosition=NONE", hidden = Where.ALL_TABLES)
+    default long getReadOnlyPropertyDerivedLabelPositionNone() { 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
new file mode 100644
index 0000000..38cd4c1
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_actionReturning.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.longs.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.SAFE
+)
+@RequiredArgsConstructor
+public class PrimitiveLongHolder_actionReturning {
+
+    private final PrimitiveLongHolder primitiveLongHolder;
+
+    public long act() {
+        return primitiveLongHolder.getReadOnlyProperty();
+    }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_mixinPropertyNamedNotEscaped.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_mixinPropertyNamedNotEscaped.java
new file mode 100644
index 0000000..e83d6fd
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_mixinPropertyNamedNotEscaped.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.longs.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+
+import lombok.RequiredArgsConstructor;
+
+
+//@Property()
+//@PropertyLayout(named = "<i>Named<i/> <b>not</b> escaped property", namedEscaped = false, describedAs = "named = \"(some markup)\", namedEscaped = false") // TODO: this doesn't render, and causes bootlint issues
+@RequiredArgsConstructor
+public class PrimitiveLongHolder_mixinPropertyNamedNotEscaped {
+
+    private final PrimitiveLongHolder primitiveLongHolder;
+
+    @MemberOrder(name = "contributed", sequence = "3")
+    public long prop() {
+        return primitiveLongHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_mixinPropertyNavigable.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_mixinPropertyNavigable.java
new file mode 100644
index 0000000..7596b10
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_mixinPropertyNavigable.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.longs.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+
+import lombok.RequiredArgsConstructor;
+
+
+//@Property()
+//@PropertyLayout( navigable = Navigable.PARENT, describedAs = "navigable=PARENT") // TODO: doesn't seem to do anything
+@RequiredArgsConstructor
+public class PrimitiveLongHolder_mixinPropertyNavigable {
+
+    private final PrimitiveLongHolder primitiveLongHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public long prop() {
+        return primitiveLongHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_mixinPropertyWithCssClass.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_mixinPropertyWithCssClass.java
new file mode 100644
index 0000000..a6f2478
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_mixinPropertyWithCssClass.java
@@ -0,0 +1,40 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.longs.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Property()
+@PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ", hidden = Where.ALL_TABLES)
+@RequiredArgsConstructor
+public class PrimitiveLongHolder_mixinPropertyWithCssClass {
+
+    private final PrimitiveLongHolder primitiveLongHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public long prop() {
+        return primitiveLongHolder.getReadOnlyProperty();
+    }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
new file mode 100644
index 0000000..8fc7daa
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.longs.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty2",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE_AS_IF_EDIT)
+@RequiredArgsConstructor
+public class PrimitiveLongHolder_updateReadOnlyProperty2PromptInlineAsIfEdit {
+
+    private final PrimitiveLongHolder primitiveLongHolder;
+
+    public PrimitiveLongHolder act(long newValue) {
+        primitiveLongHolder.setReadOnlyProperty2(newValue);
+        return primitiveLongHolder;
+    }
+    public long default0Act() {
+        return primitiveLongHolder.getReadOnlyProperty2();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyPositionPanel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyPositionPanel.java
new file mode 100644
index 0000000..697fbbb
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyPositionPanel.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.longs.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "2"
+)
+@ActionLayout(position = ActionLayout.Position.PANEL, named = "Position in panel", describedAs = "position = PANEL")
+@RequiredArgsConstructor
+public class PrimitiveLongHolder_updateReadOnlyPropertyPositionPanel {
+
+    private final PrimitiveLongHolder primitiveLongHolder;
+
+    public PrimitiveLongHolder act(long newValue) {
+        primitiveLongHolder.setReadOnlyProperty(newValue);
+        return primitiveLongHolder;
+    }
+    public long default0Act() {
+        return primitiveLongHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyPromptStyleInline.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyPromptStyleInline.java
new file mode 100644
index 0000000..2589c17
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyPromptStyleInline.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.longs.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Inline", describedAs = "promptStyle = INLINE")
+@RequiredArgsConstructor
+public class PrimitiveLongHolder_updateReadOnlyPropertyPromptStyleInline {
+
+    private final PrimitiveLongHolder primitiveLongHolder;
+
+    public PrimitiveLongHolder act(long newValue) {
+        primitiveLongHolder.setReadOnlyProperty(newValue);
+        return primitiveLongHolder;
+    }
+    public long default0Act() {
+        return primitiveLongHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyPromptStyleModal.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyPromptStyleModal.java
new file mode 100644
index 0000000..df791ab
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyPromptStyleModal.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.longs.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "2"
+)
+@ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL, named = "Modal", describedAs = "promptStyle = MODAL")
+@RequiredArgsConstructor
+public class PrimitiveLongHolder_updateReadOnlyPropertyPromptStyleModal {
+
+    private final PrimitiveLongHolder primitiveLongHolder;
+
+    public PrimitiveLongHolder act(long newValue) {
+        primitiveLongHolder.setReadOnlyProperty(newValue);
+        return primitiveLongHolder;
+    }
+    public long default0Act() {
+        return primitiveLongHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
new file mode 100644
index 0000000..8860e40
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.longs.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@ActionLayout(position = ActionLayout.Position.PANEL_DROPDOWN, named = "Panel Dropdown", describedAs = "position = PANEL_DROPDOWN")
+@RequiredArgsConstructor
+public class PrimitiveLongHolder_updateReadOnlyPropertyPromptStylePanelDropDown {
+
+    private final PrimitiveLongHolder primitiveLongHolder;
+
+    public PrimitiveLongHolder act(long newValue) {
+        primitiveLongHolder.setReadOnlyProperty(newValue);
+        return primitiveLongHolder;
+    }
+    public long default0Act() {
+        return primitiveLongHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyPromptStyleSidebar.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyPromptStyleSidebar.java
new file mode 100644
index 0000000..1e31921
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyPromptStyleSidebar.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.longs.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR, named = "sidebar", describedAs = "promptStyle = DIALOG_SIDEBAR")
+@RequiredArgsConstructor
+public class PrimitiveLongHolder_updateReadOnlyPropertyPromptStyleSidebar {
+
+    private final PrimitiveLongHolder primitiveLongHolder;
+
+    public PrimitiveLongHolder act(long newValue) {
+        primitiveLongHolder.setReadOnlyProperty(newValue);
+        return primitiveLongHolder;
+    }
+    public long default0Act() {
+        return primitiveLongHolder.getReadOnlyProperty();
+    }
+
+
+}
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
new file mode 100644
index 0000000..1c27ca6
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_updateReadOnlyPropertyWithChoices.java
@@ -0,0 +1,59 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.longs.holder;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "4"
+)
+@ActionLayout(promptStyle = PromptStyle.AS_CONFIGURED, named = "with choices")
+@RequiredArgsConstructor
+public class PrimitiveLongHolder_updateReadOnlyPropertyWithChoices {
+
+    private final PrimitiveLongHolder primitiveLongHolder;
+
+    public PrimitiveLongHolder act(long newValue) {
+        primitiveLongHolder.setReadOnlyProperty(newValue);
+        return primitiveLongHolder;
+    }
+    public long default0Act() {
+        return primitiveLongHolder.getReadOnlyProperty();
+    }
+    public List<Long> choices0Act() {
+        return Stream.of(121_212_121_212L,2L,-300_000_000_000L,4L).collect(Collectors.toList());
+    }
+
+    public boolean hideAct() {
+        return true;
+    } // TODO: choices doesn't seem to work for this datatype
+
+}
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
new file mode 100644
index 0000000..3fd6aac
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntities.java
@@ -0,0 +1,26 @@
+package demoapp.dom.types.primitive.longs.jdo;
+
+import java.util.List;
+import java.util.Optional;
+
+import javax.inject.Inject;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+
+@Service
+public class PrimitiveLongJdoEntities {
+
+    public Optional<PrimitiveLongJdoEntity> find(final long readOnlyProperty) {
+        return repositoryService.firstMatch(PrimitiveLongJdoEntity.class, x -> x.getReadOnlyProperty() == readOnlyProperty);
+    }
+
+    public List<PrimitiveLongJdoEntity> all() {
+        return repositoryService.allInstances(PrimitiveLongJdoEntity.class);
+    }
+
+    @Inject
+    RepositoryService repositoryService;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntity-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntity-description.adoc
new file mode 100644
index 0000000..439860d
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntity-description.adoc
@@ -0,0 +1,30 @@
+JDO supports `long` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+        objectType = "demo.PrimitiveLongJdoEntity"
+)
+public class PrimitiveLongJdoEntity
+    implements HasAsciiDocDescription,   PrimitiveLongHolder {          // <.>
+
+    public PrimitiveLongJdoEntity(long initialValue) { ... }            // <.>
+
+    @Title(prepend = "long (primitive) JDO entity: ")
+    @Getter @Setter
+    private long readOnlyProperty;                                      // <.>
+
+    @Getter @Setter
+    private long readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private long readWriteProperty;
+
+}
+----
+<.> a no-arg constructor is introduced by JDO enhancer
+<.> as a convenience
+<.> no additional annotations required.
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntity.java
new file mode 100644
index 0000000..c5c3e92
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntity.java
@@ -0,0 +1,67 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.longs.jdo;
+
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.longs.holder.PrimitiveLongHolder;
+
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+        objectType = "demo.PrimitiveLongJdoEntity"
+)
+public class PrimitiveLongJdoEntity
+        implements HasAsciiDocDescription,
+        PrimitiveLongHolder {
+
+    public PrimitiveLongJdoEntity(long initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readOnlyProperty2 = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+    @Title(prepend = "long (primitive) JDO entity: ")
+    @Getter @Setter
+    private long readOnlyProperty;
+
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
+    @Getter @Setter
+    private long readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private long readWriteProperty;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntity.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntity.layout.xml
new file mode 100644
index 0000000..ffa55a8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntity.layout.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<bs3:row>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Action Prompt Styles" id="action-prompt-styles">
+				<cpt:property id="readOnlyProperty" />
+				<cpt:property id="readOnlyProperty2" >
+					<cpt:describedAs>
+						Associated action uses promptStyle=INLINE_AS_IF_EDIT
+					</cpt:describedAs>
+				</cpt:property>
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties">
+				<cpt:property id="readWriteProperty" />
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Label Positions" id="label-positions"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
+			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntitySeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntitySeedService.java
new file mode 100644
index 0000000..1fc8283
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/jdo/PrimitiveLongJdoEntitySeedService.java
@@ -0,0 +1,42 @@
+package demoapp.dom.types.primitive.longs.jdo;
+
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.core.runtime.events.app.AppLifecycleEvent;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
+
+@Service
+public class PrimitiveLongJdoEntitySeedService {
+
+    @EventListener(AppLifecycleEvent.class)
+    public void onAppLifecycleEvent(AppLifecycleEvent event) {
+
+        if (event.getEventType() == AppLifecycleEvent.EventType.appPostMetamodel) {
+            fixtureScripts.run(new PrimitiveLongJdoEntityFixture());
+        }
+    }
+
+    @Inject
+    FixtureScripts fixtureScripts;
+
+    static class PrimitiveLongJdoEntityFixture extends FixtureScript {
+
+        @Override
+        protected void execute(ExecutionContext executionContext) {
+            Stream.of('a', 'b', 'c')
+                    .map(PrimitiveLongJdoEntity::new)
+                    .forEach(repositoryService::persist);
+        }
+
+        @Inject
+        RepositoryService repositoryService;
+
+    }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongViewModel-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongViewModel-description.adoc
new file mode 100644
index 0000000..8cb40b8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongViewModel-description.adoc
@@ -0,0 +1,36 @@
+JAXB supports `long` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+@XmlRootElement(name = "demo.PrimitiveLongViewModel")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+        nature=Nature.VIEW_MODEL,
+        objectType = "demo.PrimitiveLongViewModel"
+)
+@lombok.NoArgsConstructor                               // <.>
+public class PrimitiveLongViewModel
+        implements HasAsciiDocDescription,
+                   PrimitiveLongHolder {
+
+    public PrimitiveLongViewModel(long initialValue) {  // <.>
+        // ...
+    }
+
+    @Title(prepend = "long (primitive) view model: ")
+    @Getter @Setter
+    private long readOnlyProperty;                      // <.>
+
+    @Getter @Setter
+    private long readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private long readWriteProperty;
+
+}
+----
+<.> a no-arg constructor is required by JAXB
+<.> as a convenience
+<.> no additional annotations required.
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongViewModel.java
new file mode 100644
index 0000000..69c773b
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongViewModel.java
@@ -0,0 +1,71 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.longs.vm;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.longs.holder.PrimitiveLongHolder;
+
+@XmlRootElement(name = "demo.PrimitiveLongViewModel")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+        nature=Nature.VIEW_MODEL,
+        objectType = "demo.PrimitiveLongViewModel"
+)
+@lombok.NoArgsConstructor
+public class PrimitiveLongViewModel
+        implements HasAsciiDocDescription,
+        PrimitiveLongHolder {
+
+    public PrimitiveLongViewModel(long initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readOnlyProperty2 = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+    @Title(prepend = "long (primitive) view model: ")
+    @Getter @Setter
+    private long readOnlyProperty;
+
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
+    @Getter @Setter
+    private long readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private long readWriteProperty;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongViewModel.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongViewModel.layout.xml
new file mode 100644
index 0000000..ffa55a8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/vm/PrimitiveLongViewModel.layout.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<bs3:row>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Action Prompt Styles" id="action-prompt-styles">
+				<cpt:property id="readOnlyProperty" />
+				<cpt:property id="readOnlyProperty2" >
+					<cpt:describedAs>
+						Associated action uses promptStyle=INLINE_AS_IF_EDIT
+					</cpt:describedAs>
+				</cpt:property>
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties">
+				<cpt:property id="readWriteProperty" />
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Label Positions" id="label-positions"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
+			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/PrimitiveShorts-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/PrimitiveShorts-description.adoc
new file mode 100644
index 0000000..c881c5a
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/PrimitiveShorts-description.adoc
@@ -0,0 +1,129 @@
+The framework has built-in support for all of the primitive data types, including `short`.
+
+From here you can:
+
+* navigate to an entity that uses the `short` datatype
+* open a view model that uses the `short` datatype
+
+Because `short` is a primitive value, the properties on these domain objects are mandatory.
+
+== Common interface
+
+These objects both implement a common interface, `PrimitiveShortHolder`:
+
+[source,java]
+----
+public interface PrimitiveShortHolder {
+
+    short getReadOnlyProperty();
+    void setReadOnlyProperty(short c);
+
+    short getReadOnlyProperty2();
+    void setReadOnlyProperty2(short c);
+
+    short getReadWriteProperty();
+    void setReadWriteProperty(short c);
+
+    @MemberOrder(name = "label-positions", sequence = "1")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.LEFT, describedAs = "labelPosition=LEFT", hidden = Where.ALL_TABLES)
+    default short getReadOnlyPropertyDerivedLabelPositionLeft() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "2")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.TOP, describedAs = "labelPosition=TOP", hidden = Where.ALL_TABLES)
+    default short getReadOnlyPropertyDerivedLabelPositionTop() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "3")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.RIGHT, describedAs = "labelPosition=RIGHT", hidden = Where.ALL_TABLES)
+    default short getReadOnlyPropertyDerivedLabelPositionRight() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "4")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.NONE, describedAs = "labelPosition=NONE", hidden = Where.ALL_TABLES)
+    default short getReadOnlyPropertyDerivedLabelPositionNone() { return getReadOnlyProperty(); }
+
+}
+----
+
+The default methods have annotations that automatically inherited.
+Using `@MemberOrder` positions the properties into the appropriate `<field-set>` within the `Xxx.layout.xml` layout file.
+
+
+== Mixin actions
+
+A number of mixin actions contribute through this interface, demonstrate the use of `short` as a parameter and as a return type.
+For example:
+
+* the `updateReadOnlyProperty` action is:
++
+[source,java]
+----
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "1"
+)
+@RequiredArgsConstructor
+public class PrimitiveShortHolder_updateReadOnlyProperty {
+
+    private final PrimitiveShortHolder primitiveShortHolder;
+
+    public PrimitiveShortHolder act(short newValue) {
+        primitiveShortHolder.setReadOnlyProperty(newValue);
+        return primitiveShortHolder;
+    }
+    public short default0Act() {
+        return primitiveShortHolder.getReadOnlyProperty();
+    }
+}
+----
++
+There are a number of variants of this action, to demonstrate different prompt layouts.
+
+* the `actionReturning` action is:
++
+[source,java]
+----
+@Action(
+        semantics = SemanticsOf.SAFE,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@RequiredArgsConstructor
+public class PrimitiveShortHolder_actionReturning {
+
+    private final PrimitiveShortHolder primitiveShortHolder;
+
+    public short act() {
+        return primitiveShortHolder.getReadOnlyProperty();
+    }
+}
+----
+
+== Mixin properties
+
+We also use the interface to contribute a number of mixin properties:
+
+* the `mixinPropertyWithCssClass` property:
++
+[source,java]
+----
+@Property()
+@PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ")
+@RequiredArgsConstructor
+public class PrimitiveShortHolder_mixinPropertyWithCssClass {
+
+    private final PrimitiveShortHolder primitiveShortHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public short prop() {
+        return primitiveShortHolder.getReadOnlyProperty();
+    }
+}
+----
++
+TIP: the styling is provided from the `application.css` static resource.
+
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/PrimitiveShorts.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/PrimitiveShorts.java
new file mode 100644
index 0000000..b368e91
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/PrimitiveShorts.java
@@ -0,0 +1,76 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.shorts;
+
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.shorts.jdo.PrimitiveShortJdoEntities;
+import demoapp.dom.types.primitive.shorts.jdo.PrimitiveShortJdoEntity;
+import demoapp.dom.types.primitive.shorts.vm.PrimitiveShortViewModel;
+
+@XmlRootElement(name = "Demo")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(nature=Nature.VIEW_MODEL, objectType = "demo.PrimitiveShorts", editing=Editing.ENABLED)
+@Log4j2
+public class PrimitiveShorts implements HasAsciiDocDescription {
+
+    public String title() {
+        return "short (primitive) data type";
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
+    public PrimitiveShortViewModel openViewModel(short initialValue) {
+        return new PrimitiveShortViewModel(initialValue);
+    }
+    public short default0OpenViewModel() {
+        return 12345;
+    }
+
+    @Collection
+    public List<PrimitiveShortJdoEntity> getEntities() {
+        return entities.all();
+    }
+
+    @Inject
+    @XmlTransient
+    PrimitiveShortJdoEntities entities;
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/PrimitiveShorts.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/PrimitiveShorts.layout.xml
new file mode 100644
index 0000000..55c5b87
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/PrimitiveShorts.layout.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<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="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder.java
new file mode 100644
index 0000000..aeea47b
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder.java
@@ -0,0 +1,84 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.shorts.holder;
+
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.Bounding;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.extern.log4j.Log4j2;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+
+public interface PrimitiveShortHolder {
+
+    @MemberOrder(name = "action-prompt-styles", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout
+    short getReadOnlyProperty();
+    void setReadOnlyProperty(short c);
+
+    @MemberOrder(name = "action-prompt-styles", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout(describedAs = "associated action uses promptStyle=INLINE_AS_IF_EDIT", hidden = Where.ALL_TABLES) // TODO: doesn't seem to get picked up
+    short getReadOnlyProperty2();
+    void setReadOnlyProperty2(short c);
+
+    @MemberOrder(name = "editable-properties", sequence = "1") // TODO: doesn't seem to get picked up
+    @Property
+    @PropertyLayout
+    short getReadWriteProperty();
+    void setReadWriteProperty(short c);
+
+    @MemberOrder(name = "label-positions", sequence = "1")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.LEFT, describedAs = "labelPosition=LEFT", hidden = Where.ALL_TABLES)
+    default short getReadOnlyPropertyDerivedLabelPositionLeft() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "2")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.TOP, describedAs = "labelPosition=TOP", hidden = Where.ALL_TABLES)
+    default short getReadOnlyPropertyDerivedLabelPositionTop() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "3")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.RIGHT, describedAs = "labelPosition=RIGHT", hidden = Where.ALL_TABLES)
+    default short getReadOnlyPropertyDerivedLabelPositionRight() { return getReadOnlyProperty(); }
+
+    @MemberOrder(name = "label-positions", sequence = "4")
+    @Property
+    @PropertyLayout(labelPosition = LabelPosition.NONE, describedAs = "labelPosition=NONE", hidden = Where.ALL_TABLES)
+    default short getReadOnlyPropertyDerivedLabelPositionNone() { return getReadOnlyProperty(); }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_actionReturning.java
new file mode 100644
index 0000000..d7f0831
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_actionReturning.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.shorts.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.SAFE
+)
+@RequiredArgsConstructor
+public class PrimitiveShortHolder_actionReturning {
+
+    private final PrimitiveShortHolder primitiveShortHolder;
+
+    public short act() {
+        return primitiveShortHolder.getReadOnlyProperty();
+    }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_mixinPropertyNamedNotEscaped.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_mixinPropertyNamedNotEscaped.java
new file mode 100644
index 0000000..618f494
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_mixinPropertyNamedNotEscaped.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.shorts.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+
+import lombok.RequiredArgsConstructor;
+
+
+//@Property()
+//@PropertyLayout(named = "<i>Named<i/> <b>not</b> escaped property", namedEscaped = false, describedAs = "named = \"(some markup)\", namedEscaped = false") // TODO: this doesn't render, and causes bootlint issues
+@RequiredArgsConstructor
+public class PrimitiveShortHolder_mixinPropertyNamedNotEscaped {
+
+    private final PrimitiveShortHolder primitiveShortHolder;
+
+    @MemberOrder(name = "contributed", sequence = "3")
+    public short prop() {
+        return primitiveShortHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_mixinPropertyNavigable.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_mixinPropertyNavigable.java
new file mode 100644
index 0000000..3ed0dab
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_mixinPropertyNavigable.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.shorts.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+
+import lombok.RequiredArgsConstructor;
+
+
+//@Property()
+//@PropertyLayout( navigable = Navigable.PARENT, describedAs = "navigable=PARENT") // TODO: doesn't seem to do anything
+@RequiredArgsConstructor
+public class PrimitiveShortHolder_mixinPropertyNavigable {
+
+    private final PrimitiveShortHolder primitiveShortHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public short prop() {
+        return primitiveShortHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_mixinPropertyWithCssClass.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_mixinPropertyWithCssClass.java
new file mode 100644
index 0000000..cbb625e
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_mixinPropertyWithCssClass.java
@@ -0,0 +1,40 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.shorts.holder;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Property()
+@PropertyLayout(cssClass = "red", describedAs = "cssClass = \"red\" ", hidden = Where.ALL_TABLES)
+@RequiredArgsConstructor
+public class PrimitiveShortHolder_mixinPropertyWithCssClass {
+
+    private final PrimitiveShortHolder primitiveShortHolder;
+
+    @MemberOrder(name = "contributed", sequence = "1")
+    public short prop() {
+        return primitiveShortHolder.getReadOnlyProperty();
+    }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
new file mode 100644
index 0000000..b89cf11
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyProperty2PromptInlineAsIfEdit.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.shorts.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty2",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE_AS_IF_EDIT)
+@RequiredArgsConstructor
+public class PrimitiveShortHolder_updateReadOnlyProperty2PromptInlineAsIfEdit {
+
+    private final PrimitiveShortHolder primitiveShortHolder;
+
+    public PrimitiveShortHolder act(short newValue) {
+        primitiveShortHolder.setReadOnlyProperty2(newValue);
+        return primitiveShortHolder;
+    }
+    public short default0Act() {
+        return primitiveShortHolder.getReadOnlyProperty2();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyPositionPanel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyPositionPanel.java
new file mode 100644
index 0000000..92716ba
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyPositionPanel.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.shorts.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "2"
+)
+@ActionLayout(position = ActionLayout.Position.PANEL, named = "Position in panel", describedAs = "position = PANEL")
+@RequiredArgsConstructor
+public class PrimitiveShortHolder_updateReadOnlyPropertyPositionPanel {
+
+    private final PrimitiveShortHolder primitiveShortHolder;
+
+    public PrimitiveShortHolder act(short newValue) {
+        primitiveShortHolder.setReadOnlyProperty(newValue);
+        return primitiveShortHolder;
+    }
+    public short default0Act() {
+        return primitiveShortHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyPromptStyleInline.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyPromptStyleInline.java
new file mode 100644
index 0000000..628d5fb
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyPromptStyleInline.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.shorts.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "1"
+)
+@ActionLayout(promptStyle = PromptStyle.INLINE, named = "Inline", describedAs = "promptStyle = INLINE")
+@RequiredArgsConstructor
+public class PrimitiveShortHolder_updateReadOnlyPropertyPromptStyleInline {
+
+    private final PrimitiveShortHolder primitiveShortHolder;
+
+    public PrimitiveShortHolder act(short newValue) {
+        primitiveShortHolder.setReadOnlyProperty(newValue);
+        return primitiveShortHolder;
+    }
+    public short default0Act() {
+        return primitiveShortHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyPromptStyleModal.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyPromptStyleModal.java
new file mode 100644
index 0000000..fee29f5
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyPromptStyleModal.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.shorts.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "2"
+)
+@ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL, named = "Modal", describedAs = "promptStyle = MODAL")
+@RequiredArgsConstructor
+public class PrimitiveShortHolder_updateReadOnlyPropertyPromptStyleModal {
+
+    private final PrimitiveShortHolder primitiveShortHolder;
+
+    public PrimitiveShortHolder act(short newValue) {
+        primitiveShortHolder.setReadOnlyProperty(newValue);
+        return primitiveShortHolder;
+    }
+    public short default0Act() {
+        return primitiveShortHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
new file mode 100644
index 0000000..d74d248
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyPromptStylePanelDropDown.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.shorts.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@ActionLayout(position = ActionLayout.Position.PANEL_DROPDOWN, named = "Panel Dropdown", describedAs = "position = PANEL_DROPDOWN")
+@RequiredArgsConstructor
+public class PrimitiveShortHolder_updateReadOnlyPropertyPromptStylePanelDropDown {
+
+    private final PrimitiveShortHolder primitiveShortHolder;
+
+    public PrimitiveShortHolder act(short newValue) {
+        primitiveShortHolder.setReadOnlyProperty(newValue);
+        return primitiveShortHolder;
+    }
+    public short default0Act() {
+        return primitiveShortHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyPromptStyleSidebar.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyPromptStyleSidebar.java
new file mode 100644
index 0000000..d881d86
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyPromptStyleSidebar.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.shorts.holder;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "3"
+)
+@ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR, named = "sidebar", describedAs = "promptStyle = DIALOG_SIDEBAR")
+@RequiredArgsConstructor
+public class PrimitiveShortHolder_updateReadOnlyPropertyPromptStyleSidebar {
+
+    private final PrimitiveShortHolder primitiveShortHolder;
+
+    public PrimitiveShortHolder act(short newValue) {
+        primitiveShortHolder.setReadOnlyProperty(newValue);
+        return primitiveShortHolder;
+    }
+    public short default0Act() {
+        return primitiveShortHolder.getReadOnlyProperty();
+    }
+
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyWithChoices.java
new file mode 100644
index 0000000..f08af54
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_updateReadOnlyPropertyWithChoices.java
@@ -0,0 +1,64 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.shorts.holder;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        associateWith = "readOnlyProperty",
+        associateWithSequence = "4"
+)
+@ActionLayout(promptStyle = PromptStyle.AS_CONFIGURED, named = "with choices")
+@RequiredArgsConstructor
+public class PrimitiveShortHolder_updateReadOnlyPropertyWithChoices {
+
+    private final PrimitiveShortHolder primitiveShortHolder;
+
+    public PrimitiveShortHolder act(short newValue) {
+        primitiveShortHolder.setReadOnlyProperty(newValue);
+        return primitiveShortHolder;
+    }
+    public short default0Act() {
+        return primitiveShortHolder.getReadOnlyProperty();
+    }
+    public List<Short> choices0Act() {
+        return Stream.of(123, -123, 3000, 400)
+                .map(x -> asShort(x))
+                .collect(Collectors.toList());
+    }
+    public boolean hideAct() {
+        return true;
+    } // TODO: choices doesn't seem to work for this datatype
+
+    private static short asShort(int x) {
+        return (short) x;
+    }
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/jdo/PrimitiveShortJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/jdo/PrimitiveShortJdoEntities.java
new file mode 100644
index 0000000..58cfdab
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/jdo/PrimitiveShortJdoEntities.java
@@ -0,0 +1,26 @@
+package demoapp.dom.types.primitive.shorts.jdo;
+
+import java.util.List;
+import java.util.Optional;
+
+import javax.inject.Inject;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+
+@Service
+public class PrimitiveShortJdoEntities {
+
+    public Optional<PrimitiveShortJdoEntity> find(final short readOnlyProperty) {
+        return repositoryService.firstMatch(PrimitiveShortJdoEntity.class, x -> x.getReadOnlyProperty() == readOnlyProperty);
+    }
+
+    public List<PrimitiveShortJdoEntity> all() {
+        return repositoryService.allInstances(PrimitiveShortJdoEntity.class);
+    }
+
+    @Inject
+    RepositoryService repositoryService;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/jdo/PrimitiveShortJdoEntity-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/jdo/PrimitiveShortJdoEntity-description.adoc
new file mode 100644
index 0000000..fe4e6f8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/jdo/PrimitiveShortJdoEntity-description.adoc
@@ -0,0 +1,30 @@
+JDO supports `short` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+        objectType = "demo.PrimitiveShortJdoEntity"
+)
+public class PrimitiveShortJdoEntity
+    implements HasAsciiDocDescription,   PrimitiveShortHolder {          // <.>
+
+    public PrimitiveShortJdoEntity(short initialValue) { ... }            // <.>
+
+    @Title(prepend = "short (primitive) JDO entity: ")
+    @Getter @Setter
+    private short readOnlyProperty;                                      // <.>
+
+    @Getter @Setter
+    private short readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private short readWriteProperty;
+
+}
+----
+<.> a no-arg constructor is introduced by JDO enhancer
+<.> as a convenience
+<.> no additional annotations required.
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/jdo/PrimitiveShortJdoEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/jdo/PrimitiveShortJdoEntity.java
new file mode 100644
index 0000000..437fdf1
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/jdo/PrimitiveShortJdoEntity.java
@@ -0,0 +1,67 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.shorts.jdo;
+
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.shorts.holder.PrimitiveShortHolder;
+
+@PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@DomainObject(
+        objectType = "demo.PrimitiveShortJdoEntity"
+)
+public class PrimitiveShortJdoEntity
+        implements HasAsciiDocDescription,
+        PrimitiveShortHolder {
+
+    public PrimitiveShortJdoEntity(short initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readOnlyProperty2 = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+    @Title(prepend = "short (primitive) JDO entity: ")
+    @Getter @Setter
+    private short readOnlyProperty;
+
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
+    @Getter @Setter
+    private short readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private short readWriteProperty;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/jdo/PrimitiveShortJdoEntity.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/jdo/PrimitiveShortJdoEntity.layout.xml
new file mode 100644
index 0000000..ffa55a8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/jdo/PrimitiveShortJdoEntity.layout.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<bs3:row>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Action Prompt Styles" id="action-prompt-styles">
+				<cpt:property id="readOnlyProperty" />
+				<cpt:property id="readOnlyProperty2" >
+					<cpt:describedAs>
+						Associated action uses promptStyle=INLINE_AS_IF_EDIT
+					</cpt:describedAs>
+				</cpt:property>
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties">
+				<cpt:property id="readWriteProperty" />
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Label Positions" id="label-positions"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
+			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/jdo/PrimitiveShortJdoEntitySeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/jdo/PrimitiveShortJdoEntitySeedService.java
new file mode 100644
index 0000000..59d7391
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/jdo/PrimitiveShortJdoEntitySeedService.java
@@ -0,0 +1,47 @@
+package demoapp.dom.types.primitive.shorts.jdo;
+
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.core.runtime.events.app.AppLifecycleEvent;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
+
+@Service
+public class PrimitiveShortJdoEntitySeedService {
+
+    @EventListener(AppLifecycleEvent.class)
+    public void onAppLifecycleEvent(AppLifecycleEvent event) {
+
+        if (event.getEventType() == AppLifecycleEvent.EventType.appPostMetamodel) {
+            fixtureScripts.run(new PrimitiveShortJdoEntityFixture());
+        }
+    }
+
+    @Inject
+    FixtureScripts fixtureScripts;
+
+    static class PrimitiveShortJdoEntityFixture extends FixtureScript {
+
+        @Override
+        protected void execute(ExecutionContext executionContext) {
+            Stream.of(1,2,3,4)
+                    .map(x -> asShort(x))
+                    .map(PrimitiveShortJdoEntity::new)
+                    .forEach(repositoryService::persist);
+        }
+
+        private static short asShort(int x) {
+            return (short) x;
+        }
+
+        @Inject
+        RepositoryService repositoryService;
+
+    }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/vm/PrimitiveShortViewModel-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/vm/PrimitiveShortViewModel-description.adoc
new file mode 100644
index 0000000..8a3ca71
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/vm/PrimitiveShortViewModel-description.adoc
@@ -0,0 +1,36 @@
+JAXB supports `short` out-of-the-box, so no special annotations are required.
+
+[source,java]
+----
+@XmlRootElement(name = "demo.PrimitiveShortViewModel")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+        nature=Nature.VIEW_MODEL,
+        objectType = "demo.PrimitiveShortViewModel"
+)
+@lombok.NoArgsConstructor                               // <.>
+public class PrimitiveShortViewModel
+        implements HasAsciiDocDescription,
+                   PrimitiveShortHolder {
+
+    public PrimitiveShortViewModel(short initialValue) {  // <.>
+        // ...
+    }
+
+    @Title(prepend = "short (primitive) view model: ")
+    @Getter @Setter
+    private short readOnlyProperty;                      // <.>
+
+    @Getter @Setter
+    private short readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private short readWriteProperty;
+
+}
+----
+<.> a no-arg constructor is required by JAXB
+<.> as a convenience
+<.> no additional annotations required.
\ No newline at end of file
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/vm/PrimitiveShortViewModel.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/vm/PrimitiveShortViewModel.java
new file mode 100644
index 0000000..2c34f44
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/vm/PrimitiveShortViewModel.java
@@ -0,0 +1,71 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package demoapp.dom.types.primitive.shorts.vm;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.annotation.Where;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.types.primitive.shorts.holder.PrimitiveShortHolder;
+
+@XmlRootElement(name = "demo.PrimitiveShortViewModel")
+@XmlType
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+        nature=Nature.VIEW_MODEL,
+        objectType = "demo.PrimitiveShortViewModel"
+)
+@lombok.NoArgsConstructor
+public class PrimitiveShortViewModel
+        implements HasAsciiDocDescription,
+        PrimitiveShortHolder {
+
+    public PrimitiveShortViewModel(short initialValue) {
+        this.readOnlyProperty = initialValue;
+        this.readOnlyProperty2 = initialValue;
+        this.readWriteProperty = initialValue;
+    }
+
+    @Title(prepend = "short (primitive) view model: ")
+    @Getter @Setter
+    private short readOnlyProperty;
+
+    @Property
+    @PropertyLayout(hidden = Where.ALL_TABLES)
+    @Getter @Setter
+    private short readOnlyProperty2;
+
+    @Getter @Setter
+    @Property(editing = Editing.ENABLED)
+    private short readWriteProperty;
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/vm/PrimitiveShortViewModel.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/vm/PrimitiveShortViewModel.layout.xml
new file mode 100644
index 0000000..ffa55a8
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/vm/PrimitiveShortViewModel.layout.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<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">
+
+	<bs3:row>
+		<bs3:col span="10" unreferencedActions="true">
+			<cpt:domainObject />
+			<cpt:action id="actionReturning"/>
+			<cpt:action id="rebuildMetamodel"/>
+		</bs3:col>
+		<bs3:col span="2">
+			<cpt:fieldSet name="" id="sources" />
+		</bs3:col>
+	</bs3:row>
+
+	<bs3:row>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Action Prompt Styles" id="action-prompt-styles">
+				<cpt:property id="readOnlyProperty" />
+				<cpt:property id="readOnlyProperty2" >
+					<cpt:describedAs>
+						Associated action uses promptStyle=INLINE_AS_IF_EDIT
+					</cpt:describedAs>
+				</cpt:property>
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Editable Properties" id="editable-properties">
+				<cpt:property id="readWriteProperty" />
+			</cpt:fieldSet>
+			<cpt:fieldSet name="Label Positions" id="label-positions"/>
+			<cpt:fieldSet name="Contributed by Mixins" id="contributed"/>
+			<cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
+		</bs3:col>
+		<bs3:col span="6">
+			<cpt:fieldSet name="Description" id="description" >
+				<cpt:action id="clearHints" position="PANEL" />
+				<cpt:action id="downloadLayoutXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="rebuildMetamodel"  position="PANEL"/>
+				<cpt:action id="downloadMetamodelXml"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="inspectMetamodel"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="downloadJdoMetadata"  position="PANEL_DROPDOWN"/>
+				<cpt:action id="openRestApi" position="PANEL_DROPDOWN" />
+				<cpt:property id="description"/>
+			</cpt:fieldSet>
+		</bs3:col>
+	</bs3:row>
+	<bs3:row>
+		<bs3:col span="12" unreferencedCollections="true"/>
+	</bs3:row>
+
+</bs3:grid>


[isis] 05/06: ISIS-2222: removes the XxxNavigable mixins for primitive types.

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

danhaywood pushed a commit to branch ISIS-2222
in repository https://gitbox.apache.org/repos/asf/isis.git

commit f66862b7f8f677b81c7f9ca5a6db57bca50da6f4
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jun 26 07:59:51 2020 +0100

    ISIS-2222: removes the XxxNavigable mixins for primitive types.
---
 ...mitiveBooleanHolder_mixinPropertyNavigable.java | 39 ----------------------
 ...PrimitiveByteHolder_mixinPropertyNavigable.java | 39 ----------------------
 ...PrimitiveCharHolder_mixinPropertyNavigable.java | 39 ----------------------
 ...imitiveDoubleHolder_mixinPropertyNavigable.java | 39 ----------------------
 ...rimitiveFloatHolder_mixinPropertyNavigable.java | 39 ----------------------
 .../PrimitiveIntHolder_mixinPropertyNavigable.java | 39 ----------------------
 ...PrimitiveLongHolder_mixinPropertyNavigable.java | 39 ----------------------
 ...rimitiveShortHolder_mixinPropertyNavigable.java | 39 ----------------------
 8 files changed, 312 deletions(-)

diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_mixinPropertyNavigable.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_mixinPropertyNavigable.java
deleted file mode 100644
index 06ed849..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder_mixinPropertyNavigable.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package demoapp.dom.types.primitive.booleans.holder;
-
-import org.apache.isis.applib.annotation.MemberOrder;
-
-import lombok.RequiredArgsConstructor;
-
-
-//@Property()
-//@PropertyLayout( navigable = Navigable.PARENT, describedAs = "navigable=PARENT") // TODO: doesn't seem to do anything
-@RequiredArgsConstructor
-public class PrimitiveBooleanHolder_mixinPropertyNavigable {
-
-    private final PrimitiveBooleanHolder primitiveBooleanHolder;
-
-    @MemberOrder(name = "contributed", sequence = "1")
-    public boolean prop() {
-        return primitiveBooleanHolder.isReadOnlyProperty();
-    }
-
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_mixinPropertyNavigable.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_mixinPropertyNavigable.java
deleted file mode 100644
index 970c176..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder_mixinPropertyNavigable.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package demoapp.dom.types.primitive.bytes.holder;
-
-import org.apache.isis.applib.annotation.MemberOrder;
-
-import lombok.RequiredArgsConstructor;
-
-
-//@Property()
-//@PropertyLayout( navigable = Navigable.PARENT, describedAs = "navigable=PARENT") // TODO: doesn't seem to do anything
-@RequiredArgsConstructor
-public class PrimitiveByteHolder_mixinPropertyNavigable {
-
-    private final PrimitiveByteHolder primitiveByteHolder;
-
-    @MemberOrder(name = "contributed", sequence = "1")
-    public byte prop() {
-        return primitiveByteHolder.getReadOnlyProperty();
-    }
-
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNavigable.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNavigable.java
deleted file mode 100644
index 89732ec..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder_mixinPropertyNavigable.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package demoapp.dom.types.primitive.chars.holder;
-
-import org.apache.isis.applib.annotation.MemberOrder;
-
-import lombok.RequiredArgsConstructor;
-
-
-//@Property()
-//@PropertyLayout( navigable = Navigable.PARENT, describedAs = "navigable=PARENT") // TODO: doesn't seem to do anything
-@RequiredArgsConstructor
-public class PrimitiveCharHolder_mixinPropertyNavigable {
-
-    private final demoapp.dom.types.primitive.chars.holder.PrimitiveCharHolder primitiveCharHolder;
-
-    @MemberOrder(name = "contributed", sequence = "1")
-    public char prop() {
-        return primitiveCharHolder.getReadOnlyProperty();
-    }
-
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_mixinPropertyNavigable.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_mixinPropertyNavigable.java
deleted file mode 100644
index f1a6faa..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder_mixinPropertyNavigable.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package demoapp.dom.types.primitive.doubles.holder;
-
-import org.apache.isis.applib.annotation.MemberOrder;
-
-import lombok.RequiredArgsConstructor;
-
-
-//@Property()
-//@PropertyLayout( navigable = Navigable.PARENT, describedAs = "navigable=PARENT") // TODO: doesn't seem to do anything
-@RequiredArgsConstructor
-public class PrimitiveDoubleHolder_mixinPropertyNavigable {
-
-    private final PrimitiveDoubleHolder primitiveDoubleHolder;
-
-    @MemberOrder(name = "contributed", sequence = "1")
-    public double prop() {
-        return primitiveDoubleHolder.getReadOnlyProperty();
-    }
-
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_mixinPropertyNavigable.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_mixinPropertyNavigable.java
deleted file mode 100644
index 0765b3c..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder_mixinPropertyNavigable.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package demoapp.dom.types.primitive.floats.holder;
-
-import org.apache.isis.applib.annotation.MemberOrder;
-
-import lombok.RequiredArgsConstructor;
-
-
-//@Property()
-//@PropertyLayout( navigable = Navigable.PARENT, describedAs = "navigable=PARENT") // TODO: doesn't seem to do anything
-@RequiredArgsConstructor
-public class PrimitiveFloatHolder_mixinPropertyNavigable {
-
-    private final PrimitiveFloatHolder primitiveFloatHolder;
-
-    @MemberOrder(name = "contributed", sequence = "1")
-    public float prop() {
-        return primitiveFloatHolder.getReadOnlyProperty();
-    }
-
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_mixinPropertyNavigable.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_mixinPropertyNavigable.java
deleted file mode 100644
index 6afdfdd..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder_mixinPropertyNavigable.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package demoapp.dom.types.primitive.ints.holder;
-
-import org.apache.isis.applib.annotation.MemberOrder;
-
-import lombok.RequiredArgsConstructor;
-
-
-//@Property()
-//@PropertyLayout( navigable = Navigable.PARENT, describedAs = "navigable=PARENT") // TODO: doesn't seem to do anything
-@RequiredArgsConstructor
-public class PrimitiveIntHolder_mixinPropertyNavigable {
-
-    private final PrimitiveIntHolder primitiveIntHolder;
-
-    @MemberOrder(name = "contributed", sequence = "1")
-    public int prop() {
-        return primitiveIntHolder.getReadOnlyProperty();
-    }
-
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_mixinPropertyNavigable.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_mixinPropertyNavigable.java
deleted file mode 100644
index 7596b10..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder_mixinPropertyNavigable.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package demoapp.dom.types.primitive.longs.holder;
-
-import org.apache.isis.applib.annotation.MemberOrder;
-
-import lombok.RequiredArgsConstructor;
-
-
-//@Property()
-//@PropertyLayout( navigable = Navigable.PARENT, describedAs = "navigable=PARENT") // TODO: doesn't seem to do anything
-@RequiredArgsConstructor
-public class PrimitiveLongHolder_mixinPropertyNavigable {
-
-    private final PrimitiveLongHolder primitiveLongHolder;
-
-    @MemberOrder(name = "contributed", sequence = "1")
-    public long prop() {
-        return primitiveLongHolder.getReadOnlyProperty();
-    }
-
-
-}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_mixinPropertyNavigable.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_mixinPropertyNavigable.java
deleted file mode 100644
index 3ed0dab..0000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder_mixinPropertyNavigable.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package demoapp.dom.types.primitive.shorts.holder;
-
-import org.apache.isis.applib.annotation.MemberOrder;
-
-import lombok.RequiredArgsConstructor;
-
-
-//@Property()
-//@PropertyLayout( navigable = Navigable.PARENT, describedAs = "navigable=PARENT") // TODO: doesn't seem to do anything
-@RequiredArgsConstructor
-public class PrimitiveShortHolder_mixinPropertyNavigable {
-
-    private final PrimitiveShortHolder primitiveShortHolder;
-
-    @MemberOrder(name = "contributed", sequence = "1")
-    public short prop() {
-        return primitiveShortHolder.getReadOnlyProperty();
-    }
-
-
-}