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:19 UTC
[isis] 03/05: ISIS-2222: adds in pages for other 6 primitive data
types.
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 0effa0a80c5aa356fec3311408da6a346e5e7d50
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>