You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/09/29 10:55:30 UTC

[isis] branch master updated: ISIS-3123: migrate Markdown

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

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


The following commit(s) were added to refs/heads/master by this push:
     new ae094307a3 ISIS-3123: migrate Markdown
ae094307a3 is described below

commit ae094307a3d771b43714e7b4cabd3ea969d52014
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 29 12:55:24 2022 +0200

    ISIS-3123: migrate Markdown
---
 examples/demo/domain/pom.xml                       |  4 ++
 .../isisext/markdowns/IsisMarkdowns-common.adoc    |  7 +++-
 .../markdowns/IsisMarkdowns-description.adoc       | 10 ++---
 .../dom/types/isisext/markdowns/IsisMarkdowns.java | 13 +++---
 .../isisext/markdowns/IsisMarkdowns.layout.xml     |  2 +
 .../markdowns/holder/IsisMarkdownHolder.java       | 19 ++++-----
 .../markdowns/holder/IsisMarkdownHolder2.java      | 14 +++----
 .../holder/IsisMarkdownHolder_actionReturning.java |  5 +--
 ...isMarkdownHolder_actionReturningCollection.java | 10 ++---
 .../holder/IsisMarkdownHolder_mixinProperty.java   |  5 +--
 ...kdownHolder_updateReadOnlyOptionalProperty.java |  6 +--
 ...updateReadOnlyOptionalPropertyWithChoices.java} | 28 +++++++++----
 .../IsisMarkdownHolder_updateReadOnlyProperty.java |  6 +--
 ...wnHolder_updateReadOnlyPropertyWithChoices.java | 17 ++++----
 .../markdowns/jdo/IsisMarkdownJdo-description.adoc |  6 ++-
 .../isisext/markdowns/jdo/IsisMarkdownJdo.java     | 41 +++++++-----------
 .../markdowns/jdo/IsisMarkdownJdoEntities.java     |  9 ++--
 .../markdowns/jpa/IsisMarkdownJpa-description.adoc | 15 +++----
 .../isisext/markdowns/jpa/IsisMarkdownJpa.java     | 49 ++++++++--------------
 .../markdowns/jpa/IsisMarkdownJpaEntities.java     |  9 ++--
 .../markdowns/persistence/IsisMarkdownEntity.java  |  6 +--
 .../persistence/IsisMarkdownEntity.layout.xml      |  2 +
 .../markdowns/persistence/IsisMarkdownSeeding.java |  7 ++--
 .../markdowns/samples/IsisMarkdownSamples.java     | 18 +++-----
 .../markdowns/vm/IsisMarkdownVm-description.adoc   |  8 ++--
 .../types/isisext/markdowns/vm/IsisMarkdownVm.java | 26 +++++-------
 .../isisext/markdowns/vm/IsisMarkdownVm.layout.xml |  2 +
 .../demoshowcases/value/ValueShowCase.java         |  5 +++
 28 files changed, 171 insertions(+), 178 deletions(-)

diff --git a/examples/demo/domain/pom.xml b/examples/demo/domain/pom.xml
index 92c3d0fbad..7e0440caef 100644
--- a/examples/demo/domain/pom.xml
+++ b/examples/demo/domain/pom.xml
@@ -88,6 +88,10 @@
 			<groupId>org.apache.isis.valuetypes</groupId>
 			<artifactId>isis-valuetypes-asciidoc-metamodel</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>org.apache.isis.valuetypes</groupId>
+			<artifactId>isis-valuetypes-markdown-metamodel</artifactId>
+		</dependency>
 
 
 		<!-- JDO specific -->
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns-common.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns-common.adoc
index 95a55216b0..d835cf93fa 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns-common.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns-common.adoc
@@ -1,8 +1,10 @@
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+// // This file was GENERATED by the showcase generator (tooling). Do NOT edit!
+
 == Mixin actions
 
-A number of mixin actions contribute through the `IsisMarkdownHolder` interface, demonstrate the use of `Markdown` as a parameter and as a return type.
+A number of mixin actions contribute through the `IsisMarkdownHolder` interface, demonstrate the use of `org.apache.isis.valuetypes.markdown.applib.value.Markdown` as a parameter and as a return type.
 For example:
 
 * the `updateReadOnlyProperty` action is:
@@ -48,7 +50,7 @@ include::holder/IsisMarkdownHolder_mixinProperty.java[tags=class]
 
 == @PropertyLayout(labelPosition=...)
 
-There is also an extended interface, `IsisMarkdownHolder2`, with default methods demonstrating the use of label positions:
+To demonstrate support for label positions using `@PropertyLayout(labelPosition=...)`, the entity and view model objects both implement the extended `IsisMarkdownHolder2` interface:
 
 [source,java]
 ----
@@ -63,3 +65,4 @@ include::holder/IsisMarkdownHolder2.java[tags=class]
 +
 CAUTION: currently not supported
 <.> Hide the label completely.
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns-description.adoc
index 53034a612b..dbdaae27e6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns-description.adoc
@@ -1,13 +1,13 @@
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-The framework has built-in support for rendering HTML written using Markdown, using the `Markdown` data type.
+// // This file was GENERATED by the showcase generator (tooling). Do NOT edit!
 
-NOTE: This is an Apache Isis specific data type.
+The framework has built-in support for the `org.apache.isis.valuetypes.markdown.applib.value.Markdown` data type.
 
 From here you can:
 
-* navigate to an entity that uses the `Markdown` datatype
-* open a view model that uses the `Markdown` datatype
+* navigate to an entity that uses the `org.apache.isis.valuetypes.markdown.applib.value.Markdown` datatype
+* open a view model that uses the `org.apache.isis.valuetypes.markdown.applib.value.Markdown` datatype
 
 Some properties on these domain objects are mandatory, some optional.
 
@@ -28,4 +28,4 @@ include::holder/IsisMarkdownHolder.java[tags=class]
 
 The `IsisMarkdownHolder2` interface is used to demonstrate support for label positions using `@PropertyLayout(labelPosition=...)`.
 
-Further details, along with the effect of this annotation, can be seen on the entity and view model object pages.
\ No newline at end of file
+Further details, along with the effect of this annotation, can be seen on the entity and view model object pages.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns.java
index 1f5605635c..370ce29fbc 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns.java
@@ -38,7 +38,6 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.ObjectSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -46,6 +45,7 @@ import demoapp.dom.types.Samples;
 import demoapp.dom.types.isisext.markdowns.persistence.IsisMarkdownEntity;
 import demoapp.dom.types.isisext.markdowns.vm.IsisMarkdownVm;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @XmlRootElement(name = "Demo")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -55,16 +55,15 @@ import demoapp.dom.types.isisext.markdowns.vm.IsisMarkdownVm;
 public class IsisMarkdowns implements HasAsciiDocDescription {
 
     @ObjectSupport public String title() {
-        return "Markdown data type";
+        return "org.apache.isis.valuetypes.markdown.applib.value.Markdown data type";
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
-    public IsisMarkdownVm openViewModel(final Markdown initialValue) {
+    public IsisMarkdownVm openViewModel(final org.apache.isis.valuetypes.markdown.applib.value.Markdown initialValue) {
         return new IsisMarkdownVm(initialValue);
     }
-
-    @MemberSupport public Markdown default0OpenViewModel() {
+    @MemberSupport public org.apache.isis.valuetypes.markdown.applib.value.Markdown default0OpenViewModel() {
         return samples.single();
     }
 
@@ -75,10 +74,10 @@ public class IsisMarkdowns implements HasAsciiDocDescription {
 
     @Inject
     @XmlTransient
-    ValueHolderRepository<Markdown, ? extends IsisMarkdownEntity> entities;
+    ValueHolderRepository<org.apache.isis.valuetypes.markdown.applib.value.Markdown, ? extends IsisMarkdownEntity> entities;
 
     @Inject
     @XmlTransient
-    Samples<Markdown> samples;
+    Samples<org.apache.isis.valuetypes.markdown.applib.value.Markdown> samples;
 
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns.layout.xml
index 74e0160a87..247ed17506 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/IsisMarkdowns.layout.xml
@@ -15,6 +15,8 @@
         xmlns:cpt="http://isis.apache.org/applib/layout/component"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
+	<!-- This file was GENERATED by the showcase generator (tooling). Do NOT edit! -->
+
 	<bs3:row>
 		<bs3:col span="10" unreferencedActions="true">
 			<cpt:domainObject />
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder.java
index 5b9b2dcafd..19ff9de0e5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder.java
@@ -20,23 +20,22 @@ package demoapp.dom.types.isisext.markdowns.holder;
 
 import javax.inject.Named;
 
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
-
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Named("demo.IsisMarkdownHolder")
 //tag::class[]
 public interface IsisMarkdownHolder {
 
-    Markdown getReadOnlyProperty();
-    void setReadOnlyProperty(Markdown c);
+    org.apache.isis.valuetypes.markdown.applib.value.Markdown getReadOnlyProperty();
+    void setReadOnlyProperty(org.apache.isis.valuetypes.markdown.applib.value.Markdown c);
 
-    Markdown getReadWriteProperty();
-    void setReadWriteProperty(Markdown c);
+    org.apache.isis.valuetypes.markdown.applib.value.Markdown getReadWriteProperty();
+    void setReadWriteProperty(org.apache.isis.valuetypes.markdown.applib.value.Markdown c);
 
-    Markdown getReadOnlyOptionalProperty();
-    void setReadOnlyOptionalProperty(Markdown c);
+    org.apache.isis.valuetypes.markdown.applib.value.Markdown getReadOnlyOptionalProperty();
+    void setReadOnlyOptionalProperty(org.apache.isis.valuetypes.markdown.applib.value.Markdown c);
 
-    Markdown getReadWriteOptionalProperty();
-    void setReadWriteOptionalProperty(Markdown c);
+    org.apache.isis.valuetypes.markdown.applib.value.Markdown getReadWriteOptionalProperty();
+    void setReadWriteOptionalProperty(org.apache.isis.valuetypes.markdown.applib.value.Markdown c);
 
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder2.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder2.java
index d68960336f..bef08c9ab1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder2.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder2.java
@@ -22,10 +22,10 @@ import org.apache.isis.applib.annotation.LabelPosition;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 //tag::class[]
-public interface IsisMarkdownHolder2 extends demoapp.dom.types.isisext.markdowns.holder.IsisMarkdownHolder {
+public interface IsisMarkdownHolder2 extends IsisMarkdownHolder {
 
     @Property                                               // <.>
     @PropertyLayout(
@@ -33,8 +33,8 @@ public interface IsisMarkdownHolder2 extends demoapp.dom.types.isisext.markdowns
         describedAs =
             "@PropertyLayout(labelPosition=LEFT)",
         hidden = Where.ALL_TABLES,
-        fieldSetId = "label-positions", sequence = "1")  // <.>
-    default Markdown getReadOnlyPropertyDerivedLabelPositionLeft() {
+        fieldSetId = "label-positions", sequence = "1")     // <.>
+    default org.apache.isis.valuetypes.markdown.applib.value.Markdown getReadOnlyPropertyDerivedLabelPositionLeft() {
         return getReadOnlyProperty();
     }
 
@@ -45,7 +45,7 @@ public interface IsisMarkdownHolder2 extends demoapp.dom.types.isisext.markdowns
             "@PropertyLayout(labelPosition=TOP)",
         hidden = Where.ALL_TABLES,
         fieldSetId = "label-positions", sequence = "2")
-    default Markdown getReadOnlyPropertyDerivedLabelPositionTop() {
+    default org.apache.isis.valuetypes.markdown.applib.value.Markdown getReadOnlyPropertyDerivedLabelPositionTop() {
         return getReadOnlyProperty();
     }
 
@@ -56,7 +56,7 @@ public interface IsisMarkdownHolder2 extends demoapp.dom.types.isisext.markdowns
             "@PropertyLayout(labelPosition=RIGHT)",
         hidden = Where.ALL_TABLES,
         fieldSetId = "label-positions", sequence = "3")
-    default Markdown getReadOnlyPropertyDerivedLabelPositionRight() {
+    default org.apache.isis.valuetypes.markdown.applib.value.Markdown getReadOnlyPropertyDerivedLabelPositionRight() {
         return getReadOnlyProperty();
     }
 
@@ -67,7 +67,7 @@ public interface IsisMarkdownHolder2 extends demoapp.dom.types.isisext.markdowns
             "@PropertyLayout(labelPosition=NONE)",
         hidden = Where.ALL_TABLES,
         fieldSetId = "label-positions", sequence = "4")
-    default Markdown getReadOnlyPropertyDerivedLabelPositionNone() {
+    default org.apache.isis.valuetypes.markdown.applib.value.Markdown getReadOnlyPropertyDerivedLabelPositionNone() {
         return getReadOnlyProperty();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_actionReturning.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_actionReturning.java
index c207351964..b8591db1f5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_actionReturning.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_actionReturning.java
@@ -20,11 +20,10 @@ package demoapp.dom.types.isisext.markdowns.holder;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
 import lombok.RequiredArgsConstructor;
 
-
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 //tag::class[]
 @Action(semantics = SemanticsOf.SAFE)
 @RequiredArgsConstructor
@@ -32,7 +31,7 @@ public class IsisMarkdownHolder_actionReturning {
 
     private final IsisMarkdownHolder holder;
 
-    public Markdown act() {
+    public org.apache.isis.valuetypes.markdown.applib.value.Markdown act() {
         return holder.getReadOnlyProperty();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_actionReturningCollection.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_actionReturningCollection.java
index 005c4fc40b..7002e89de2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_actionReturningCollection.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_actionReturningCollection.java
@@ -25,13 +25,11 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
-
-import lombok.RequiredArgsConstructor;
 
 import demoapp.dom.types.Samples;
+import lombok.RequiredArgsConstructor;
 
-
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 //tag::class[]
 @Action(semantics = SemanticsOf.SAFE)
 @RequiredArgsConstructor
@@ -39,13 +37,13 @@ public class IsisMarkdownHolder_actionReturningCollection {
 
     private final IsisMarkdownHolder holder;
 
-    public Collection<Markdown> act() {
+    public Collection<org.apache.isis.valuetypes.markdown.applib.value.Markdown> act() {
         return samples.stream()
                 .collect(Collectors.toList());
     }
 
     @Inject
-    Samples<Markdown> samples;
+    Samples<org.apache.isis.valuetypes.markdown.applib.value.Markdown> samples;
 
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_mixinProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_mixinProperty.java
index dbe46257c0..be05d2301b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_mixinProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_mixinProperty.java
@@ -21,11 +21,10 @@ package demoapp.dom.types.isisext.markdowns.holder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
 import lombok.RequiredArgsConstructor;
 
-
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 //tag::class[]
 @Property()
 @PropertyLayout(hidden = Where.ALL_TABLES, fieldSetId = "contributed", sequence = "1")
@@ -34,7 +33,7 @@ public class IsisMarkdownHolder_mixinProperty {
 
     private final IsisMarkdownHolder holder;
 
-    public Markdown prop() {
+    public org.apache.isis.valuetypes.markdown.applib.value.Markdown prop() {
         return holder.getReadOnlyProperty();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyOptionalProperty.java
index 85e159f96f..600d10bd71 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyOptionalProperty.java
@@ -25,10 +25,10 @@ import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
 import lombok.RequiredArgsConstructor;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -45,13 +45,13 @@ public class IsisMarkdownHolder_updateReadOnlyOptionalProperty {
 
     @MemberSupport public IsisMarkdownHolder act(
             @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            final Markdown newValue
+            final org.apache.isis.valuetypes.markdown.applib.value.Markdown newValue
     ) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
 
-    @MemberSupport public Markdown default0Act() {
+    @MemberSupport public org.apache.isis.valuetypes.markdown.applib.value.Markdown default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyOptionalProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyOptionalPropertyWithChoices.java
similarity index 66%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyOptionalProperty.java
copy to examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyOptionalPropertyWithChoices.java
index 85e159f96f..84c646adc1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyOptionalProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyOptionalPropertyWithChoices.java
@@ -18,6 +18,11 @@
  */
 package demoapp.dom.types.isisext.markdowns.holder;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.inject.Inject;
+
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.MemberSupport;
@@ -25,35 +30,42 @@ import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
+import demoapp.dom.types.Samples;
 import lombok.RequiredArgsConstructor;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
 )
 @ActionLayout(
         promptStyle = PromptStyle.INLINE
-        , named = "Update"
+        , named = "Update with choices"
         , associateWith = "readOnlyOptionalProperty"
-        , sequence = "1")
+        , sequence = "2")
 @RequiredArgsConstructor
-public class IsisMarkdownHolder_updateReadOnlyOptionalProperty {
+public class IsisMarkdownHolder_updateReadOnlyOptionalPropertyWithChoices {
 
     private final IsisMarkdownHolder holder;
 
     @MemberSupport public IsisMarkdownHolder act(
-            @Parameter(optionality = Optionality.OPTIONAL)              // <.>
-            final Markdown newValue
-    ) {
+            @Parameter(optionality = Optionality.OPTIONAL)
+            final org.apache.isis.valuetypes.markdown.applib.value.Markdown newValue) {
         holder.setReadOnlyOptionalProperty(newValue);
         return holder;
     }
 
-    @MemberSupport public Markdown default0Act() {
+    @MemberSupport public org.apache.isis.valuetypes.markdown.applib.value.Markdown default0Act() {
         return holder.getReadOnlyOptionalProperty();
     }
 
+    @MemberSupport public List<org.apache.isis.valuetypes.markdown.applib.value.Markdown> choices0Act() {
+        return samples.stream()
+                .collect(Collectors.toList());
+    }
+
+    @Inject
+    Samples<org.apache.isis.valuetypes.markdown.applib.value.Markdown> samples;
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyProperty.java
index 3cbd22eb5b..3dca588b7d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyProperty.java
@@ -23,10 +23,10 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
 import lombok.RequiredArgsConstructor;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -41,12 +41,12 @@ public class IsisMarkdownHolder_updateReadOnlyProperty {
 
     private final IsisMarkdownHolder holder;
 
-    @MemberSupport public IsisMarkdownHolder act(final Markdown newValue) {
+    @MemberSupport public IsisMarkdownHolder act(final org.apache.isis.valuetypes.markdown.applib.value.Markdown newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
 
-    @MemberSupport public Markdown default0Act() {
+    @MemberSupport public org.apache.isis.valuetypes.markdown.applib.value.Markdown default0Act() {
         return holder.getReadOnlyProperty();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyPropertyWithChoices.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyPropertyWithChoices.java
index e6674e67ce..1a874b6655 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyPropertyWithChoices.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder_updateReadOnlyPropertyWithChoices.java
@@ -21,17 +21,18 @@ package demoapp.dom.types.isisext.markdowns.holder;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import javax.inject.Inject;
+
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.MemberSupport;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
-
-import lombok.RequiredArgsConstructor;
 
 import demoapp.dom.types.Samples;
+import lombok.RequiredArgsConstructor;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 //tag::class[]
 @Action(
         semantics = SemanticsOf.IDEMPOTENT
@@ -46,20 +47,22 @@ public class IsisMarkdownHolder_updateReadOnlyPropertyWithChoices {
 
     private final IsisMarkdownHolder holder;
 
-    @MemberSupport public IsisMarkdownHolder act(final Markdown newValue) {
+    @MemberSupport public IsisMarkdownHolder act(final org.apache.isis.valuetypes.markdown.applib.value.Markdown newValue) {
         holder.setReadOnlyProperty(newValue);
         return holder;
     }
 
-    @MemberSupport public Markdown default0Act() {
+    @MemberSupport public org.apache.isis.valuetypes.markdown.applib.value.Markdown default0Act() {
         return holder.getReadOnlyProperty();
     }
 
-    @MemberSupport public List<Markdown> choices0Act() {
+    @MemberSupport public List<org.apache.isis.valuetypes.markdown.applib.value.Markdown> choices0Act() {
         return samples.stream()
                 .collect(Collectors.toList());
     }
 
-    Samples<Markdown> samples;
+    @Inject
+    Samples<org.apache.isis.valuetypes.markdown.applib.value.Markdown> samples;
+
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdo-description.adoc
index 770a0bec57..4159dc8c9b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdo-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdo-description.adoc
@@ -1,6 +1,8 @@
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-JDO supports `Markdown` out-of-the-box, so no special annotations are required.
+// // This file was GENERATED by the showcase generator (tooling). Do NOT edit!
+
+JDO supports `org.apache.isis.valuetypes.markdown.applib.value.Markdown` out-of-the-box, so no special annotations are required.
 
 [source,java]
 ----
@@ -15,4 +17,4 @@ Apache Isis assumes properties are mandatory, so no additional annotation is req
 <.> optional property as defined to JDO/DataNucleus
 
 
-include::../IsisMarkdowns-common.adoc[]
\ No newline at end of file
+include::../IsisMarkdowns-common.adoc[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdo.java
index 3b772ba0b7..e8bcd03e64 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdo.java
@@ -18,7 +18,6 @@
  */
 package demoapp.dom.types.isisext.markdowns.jdo;
 
-import javax.inject.Inject;
 import javax.inject.Named;
 import javax.jdo.annotations.Column;
 import javax.jdo.annotations.DatastoreIdentity;
@@ -30,19 +29,17 @@ import org.springframework.context.annotation.Profile;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.ObjectSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
+import org.apache.isis.applib.annotation.Title;
 
 import lombok.Getter;
 import lombok.Setter;
 
 import demoapp.dom.types.isisext.markdowns.persistence.IsisMarkdownEntity;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Profile("demo-jdo")
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
@@ -53,41 +50,35 @@ public class IsisMarkdownJdo                                          // <.>
         extends IsisMarkdownEntity {
 
 //end::class[]
-    public IsisMarkdownJdo(final Markdown initialValue) {
+    public IsisMarkdownJdo(final org.apache.isis.valuetypes.markdown.applib.value.Markdown initialValue) {
         this.readOnlyProperty = initialValue;
         this.readWriteProperty = initialValue;
     }
 
 //tag::class[]
-    @ObjectSupport public String title() {
-        return "Markdown JDO entity: " +
-            bookmarkService.bookmarkForElseFail(this).getIdentifier();
-}
-
+    @Title(prepend = "org.apache.isis.valuetypes.markdown.applib.value.Markdown JDO entity: ")
     @PropertyLayout(fieldSetId = "read-only-properties", sequence = "1")
-    @Column(allowsNull = "false", jdbcType = "CLOB")                // <.>
+    @Column(allowsNull = "false")                                               // <.>
     @Getter @Setter
-    private Markdown readOnlyProperty;
+    private org.apache.isis.valuetypes.markdown.applib.value.Markdown readOnlyProperty;
 
-    @Property(editing = Editing.ENABLED)                            // <.>
-    @PropertyLayout(hidden = Where.ALL_TABLES, fieldSetId = "editable-properties", sequence = "1")
-    @Column(allowsNull = "false", jdbcType = "CLOB")
+    @Property(editing = Editing.ENABLED)                                        // <.>
+    @PropertyLayout(fieldSetId = "editable-properties", sequence = "1")
+    @Column(allowsNull = "false")
     @Getter @Setter
-    private Markdown readWriteProperty;
+    private org.apache.isis.valuetypes.markdown.applib.value.Markdown readWriteProperty;
 
-    @Property(optionality = Optionality.OPTIONAL)                   // <.>
-    @PropertyLayout(hidden = Where.ALL_TABLES, fieldSetId = "optional-properties", sequence = "1")
-    @Column(allowsNull = "true")                                    // <.>
+    @Property(optionality = Optionality.OPTIONAL)                               // <.>
+    @PropertyLayout(fieldSetId = "optional-properties", sequence = "1")
+    @Column(allowsNull = "true")                                                // <.>
     @Getter @Setter
-    private Markdown readOnlyOptionalProperty;
+    private org.apache.isis.valuetypes.markdown.applib.value.Markdown readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @PropertyLayout(hidden = Where.ALL_TABLES, fieldSetId = "optional-properties", sequence = "2")
+    @PropertyLayout(fieldSetId = "optional-properties", sequence = "2")
     @Column(allowsNull = "true")
     @Getter @Setter
-    private Markdown readWriteOptionalProperty;
+    private org.apache.isis.valuetypes.markdown.applib.value.Markdown readWriteOptionalProperty;
 
-    @Inject
-    private transient BookmarkService bookmarkService;
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdoEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdoEntities.java
index b4eb8ac1b7..5cbd91e0dc 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdoEntities.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jdo/IsisMarkdownJdoEntities.java
@@ -21,22 +21,21 @@ package demoapp.dom.types.isisext.markdowns.jdo;
 import org.springframework.context.annotation.Profile;
 import org.springframework.stereotype.Service;
 
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
-
 import demoapp.dom._infra.values.ValueHolderRepository;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Profile("demo-jdo")
 @Service
 public class IsisMarkdownJdoEntities
-extends ValueHolderRepository<Markdown, IsisMarkdownJdo> {
+extends ValueHolderRepository<org.apache.isis.valuetypes.markdown.applib.value.Markdown, IsisMarkdownJdo> {
 
     protected IsisMarkdownJdoEntities() {
         super(IsisMarkdownJdo.class);
     }
 
     @Override
-    protected IsisMarkdownJdo newDetachedEntity(Markdown value) {
+    protected IsisMarkdownJdo newDetachedEntity(org.apache.isis.valuetypes.markdown.applib.value.Markdown value) {
         return new IsisMarkdownJdo(value);
     }
 
-}
\ No newline at end of file
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jpa/IsisMarkdownJpa-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jpa/IsisMarkdownJpa-description.adoc
index e2035ecfaf..50f1693376 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jpa/IsisMarkdownJpa-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jpa/IsisMarkdownJpa-description.adoc
@@ -1,23 +1,20 @@
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-[WARNING]
-==== 
-TODO this yet is just a copy from JDO
-====
+// // This file was GENERATED by the showcase generator (tooling). Do NOT edit!
 
-JDO supports `Markdown` out-of-the-box, so no special annotations are required.
+JPA supports `org.apache.isis.valuetypes.markdown.applib.value.Markdown` out-of-the-box, so no special annotations are required.
 
 [source,java]
 ----
 include::IsisMarkdownJpa.java[tags=class]
 ----
-<.> a no-arg constructor is introduced by JDO enhancer
-<.> required property as defined to JDO/DataNucleus.
+<.> a no-arg constructor for convenience
+<.> required property as defined to JPA.
 +
 Apache Isis assumes properties are mandatory, so no additional annotation is required.
 <.> directly editable property as defined to Apache Isis
 <.> optional property as defined to Apache Isis
-<.> optional property as defined to JDO/DataNucleus
+<.> optional property as defined to JPA
 
 
-include::../IsisMarkdowns-common.adoc[]
\ No newline at end of file
+include::../IsisMarkdowns-common.adoc[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jpa/IsisMarkdownJpa.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jpa/IsisMarkdownJpa.java
index bbbf110bbc..31bfc6b41e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jpa/IsisMarkdownJpa.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jpa/IsisMarkdownJpa.java
@@ -18,31 +18,23 @@
  */
 package demoapp.dom.types.isisext.markdowns.jpa;
 
-import javax.inject.Inject;
 import javax.inject.Named;
-import javax.persistence.Basic;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.EntityListeners;
-import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
-import javax.persistence.Lob;
 import javax.persistence.Table;
-import javax.persistence.Transient;
 
 import org.springframework.context.annotation.Profile;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.ObjectSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
+import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
 import lombok.Getter;
 import lombok.NoArgsConstructor;
@@ -50,6 +42,7 @@ import lombok.Setter;
 
 import demoapp.dom.types.isisext.markdowns.persistence.IsisMarkdownEntity;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Profile("demo-jpa")
 //tag::class[]
 @Entity
@@ -60,12 +53,12 @@ import demoapp.dom.types.isisext.markdowns.persistence.IsisMarkdownEntity;
 @EntityListeners(IsisEntityListener.class)
 @Named("demo.IsisMarkdownEntity")
 @DomainObject
-@NoArgsConstructor
+@NoArgsConstructor                                                             // <.>
 public class IsisMarkdownJpa
         extends IsisMarkdownEntity {
 
 //end::class[]
-    public IsisMarkdownJpa(final Markdown initialValue) {
+    public IsisMarkdownJpa(final org.apache.isis.valuetypes.markdown.applib.value.Markdown initialValue) {
         this.readOnlyProperty = initialValue;
         this.readWriteProperty = initialValue;
     }
@@ -75,35 +68,29 @@ public class IsisMarkdownJpa
     @GeneratedValue
     private Long id;
 
-    @ObjectSupport public String title() {
-        return "Markdown JPA entity: " +
-            bookmarkService.bookmarkForElseFail(this).getIdentifier();
-    }
-
+    @Title(prepend = "org.apache.isis.valuetypes.markdown.applib.value.Markdown JPA entity: ")
     @PropertyLayout(fieldSetId = "read-only-properties", sequence = "1")
-    @Column(nullable = false) @Lob @Basic(fetch=FetchType.LAZY)     // <.>
+    @Column(nullable = false)                                                   // <.>
     @Getter @Setter
-    private Markdown readOnlyProperty;
+    private org.apache.isis.valuetypes.markdown.applib.value.Markdown readOnlyProperty;
 
-    @Property(editing = Editing.ENABLED)                            // <.>
-    @PropertyLayout(hidden = Where.ALL_TABLES, fieldSetId = "editable-properties", sequence = "1")
-    @Column(nullable = false) @Lob @Basic(fetch=FetchType.LAZY)
+    @Property(editing = Editing.ENABLED)                                        // <.>
+    @PropertyLayout(fieldSetId = "editable-properties", sequence = "1")
+    @Column(nullable = false)
     @Getter @Setter
-    private Markdown readWriteProperty;
+    private org.apache.isis.valuetypes.markdown.applib.value.Markdown readWriteProperty;
 
-    @Property(optionality = Optionality.OPTIONAL)                   // <.>
-    @PropertyLayout(hidden = Where.ALL_TABLES, fieldSetId = "optional-properties", sequence = "1")
-    @Column(nullable = true) @Lob @Basic(fetch=FetchType.LAZY)      // <.>
+    @Property(optionality = Optionality.OPTIONAL)                               // <.>
+    @PropertyLayout(fieldSetId = "optional-properties", sequence = "1")
+    @Column(nullable = true)                                                    // <.>
     @Getter @Setter
-    private Markdown readOnlyOptionalProperty;
+    private org.apache.isis.valuetypes.markdown.applib.value.Markdown readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @PropertyLayout(hidden = Where.ALL_TABLES, fieldSetId = "optional-properties", sequence = "2")
-    @Column(nullable = true) @Lob @Basic(fetch=FetchType.LAZY)
+    @PropertyLayout(fieldSetId = "optional-properties", sequence = "2")
+    @Column(nullable = true)
     @Getter @Setter
-    private Markdown readWriteOptionalProperty;
+    private org.apache.isis.valuetypes.markdown.applib.value.Markdown readWriteOptionalProperty;
 
-    @Inject @Transient
-    private transient BookmarkService bookmarkService;
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jpa/IsisMarkdownJpaEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jpa/IsisMarkdownJpaEntities.java
index 878b693a4d..983843e11d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jpa/IsisMarkdownJpaEntities.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/jpa/IsisMarkdownJpaEntities.java
@@ -21,22 +21,21 @@ package demoapp.dom.types.isisext.markdowns.jpa;
 import org.springframework.context.annotation.Profile;
 import org.springframework.stereotype.Service;
 
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
-
 import demoapp.dom._infra.values.ValueHolderRepository;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Profile("demo-jpa")
 @Service
 public class IsisMarkdownJpaEntities
-extends ValueHolderRepository<Markdown, IsisMarkdownJpa> {
+extends ValueHolderRepository<org.apache.isis.valuetypes.markdown.applib.value.Markdown, IsisMarkdownJpa> {
 
     protected IsisMarkdownJpaEntities() {
         super(IsisMarkdownJpa.class);
     }
 
     @Override
-    protected IsisMarkdownJpa newDetachedEntity(Markdown value) {
+    protected IsisMarkdownJpa newDetachedEntity(org.apache.isis.valuetypes.markdown.applib.value.Markdown value) {
         return new IsisMarkdownJpa(value);
     }
 
-}
\ No newline at end of file
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/persistence/IsisMarkdownEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/persistence/IsisMarkdownEntity.java
index 55f354e05b..70d922ad8b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/persistence/IsisMarkdownEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/persistence/IsisMarkdownEntity.java
@@ -21,22 +21,22 @@ package demoapp.dom.types.isisext.markdowns.persistence;
 import javax.inject.Named;
 
 import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolder;
 import demoapp.dom.types.isisext.markdowns.holder.IsisMarkdownHolder2;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Named("demo.IsisMarkdownEntity") // shared permissions with concrete sub class
 @DomainObject
 public abstract class IsisMarkdownEntity
 implements
     HasAsciiDocDescription,
     IsisMarkdownHolder2,
-    ValueHolder<Markdown> {
+    ValueHolder<org.apache.isis.valuetypes.markdown.applib.value.Markdown> {
 
     @Override
-    public Markdown value() {
+    public org.apache.isis.valuetypes.markdown.applib.value.Markdown value() {
         return getReadOnlyProperty();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/persistence/IsisMarkdownEntity.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/persistence/IsisMarkdownEntity.layout.xml
index fe9ce77481..c58ffa61a0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/persistence/IsisMarkdownEntity.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/persistence/IsisMarkdownEntity.layout.xml
@@ -15,6 +15,8 @@
         xmlns:cpt="http://isis.apache.org/applib/layout/component"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
+	<!-- This file was GENERATED by the showcase generator (tooling). Do NOT edit! -->
+
 	<bs3:row>
 		<bs3:col span="10" unreferencedActions="true">
 			<cpt:domainObject />
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/persistence/IsisMarkdownSeeding.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/persistence/IsisMarkdownSeeding.java
index 1c1ae49ae1..7edba673d4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/persistence/IsisMarkdownSeeding.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/persistence/IsisMarkdownSeeding.java
@@ -22,18 +22,17 @@ import javax.inject.Inject;
 
 import org.springframework.stereotype.Service;
 
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
-
 import demoapp.dom._infra.seed.SeedServiceAbstract;
 import demoapp.dom._infra.values.ValueHolderRepository;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Service
 public class IsisMarkdownSeeding
 extends SeedServiceAbstract {
 
     @Inject
-    public IsisMarkdownSeeding(ValueHolderRepository<Markdown, ? extends IsisMarkdownEntity> entities) {
+    public IsisMarkdownSeeding(ValueHolderRepository<org.apache.isis.valuetypes.markdown.applib.value.Markdown, ? extends IsisMarkdownEntity> entities) {
         super(entities);
     }
 
-}
\ No newline at end of file
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/samples/IsisMarkdownSamples.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/samples/IsisMarkdownSamples.java
index 0d2481ebaf..2021872f2e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/samples/IsisMarkdownSamples.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/samples/IsisMarkdownSamples.java
@@ -20,25 +20,19 @@ package demoapp.dom.types.isisext.markdowns.samples;
 
 import java.util.stream.Stream;
 
-import javax.inject.Inject;
-
 import org.springframework.stereotype.Service;
 
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
-
-import demoapp.dom._infra.resources.MarkdownReaderService;
 import demoapp.dom.types.Samples;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 @Service
-public class IsisMarkdownSamples implements Samples<Markdown> {
+public class IsisMarkdownSamples implements Samples<org.apache.isis.valuetypes.markdown.applib.value.Markdown> {
 
     @Override
-    public Stream<Markdown> stream() {
-        return Stream.of(1,2,3,4,5,6,7)
-                .map(x -> markdownReaderService.readFor(getClass(), "sample" + x));
+    public Stream<org.apache.isis.valuetypes.markdown.applib.value.Markdown> stream() {
+        return new org.apache.isis.valuetypes.markdown.metamodel.semantics.MarkdownValueSemantics()
+                .getExamples()
+                .stream();
     }
 
-    @Inject
-    MarkdownReaderService markdownReaderService;
-
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm-description.adoc
index f9f7ea9c46..3c65c59e45 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm-description.adoc
@@ -1,6 +1,8 @@
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-JAXB supports `Markdown` out-of-the-box, so no special annotations are required.
+// // This file was GENERATED by the showcase generator (tooling). Do NOT edit!
+
+JAXB supports `org.apache.isis.valuetypes.markdown.applib.value.Markdown` out-of-the-box, so no special annotations are required.
 
 [source,java]
 ----
@@ -8,10 +10,10 @@ include::IsisMarkdownVm.java[tags=class]
 ----
 <.> a no-arg constructor is required by JAXB
 <.> required property as defined to JAXB
-//TODO: fix, <.> directly editable property as defined to Apache Isis
+<.> directly editable property as defined to Apache Isis
 <.> optional property as defined to Apache Isis.
 +
 This is the default for JAXB so no additional annotation required.
 
 
-include::../IsisMarkdowns-common.adoc[]
\ No newline at end of file
+include::../IsisMarkdowns-common.adoc[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm.java
index 360c1c7345..6016ec5ed7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm.java
@@ -28,12 +28,10 @@ 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.ObjectSupport;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
+import org.apache.isis.applib.annotation.Title;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -41,6 +39,7 @@ import lombok.Setter;
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom.types.isisext.markdowns.holder.IsisMarkdownHolder2;
 
+/* This file was GENERATED by the showcase generator (tooling). Do NOT edit! */
 //tag::class[]
 @XmlRootElement(name = "root")
 @XmlType
@@ -53,36 +52,33 @@ public class IsisMarkdownVm
         implements HasAsciiDocDescription, IsisMarkdownHolder2 {
 
 //end::class[]
-    public IsisMarkdownVm(final Markdown initialValue) {
+    public IsisMarkdownVm(final org.apache.isis.valuetypes.markdown.applib.value.Markdown initialValue) {
         this.readOnlyProperty = initialValue;
         this.readWriteProperty = initialValue;
     }
 
 //tag::class[]
-    @ObjectSupport public String title() {
-        return "Markdown view model";
-    }
-
+    @Title(prepend = "org.apache.isis.valuetypes.markdown.applib.value.Markdown view model: ")
     @PropertyLayout(fieldSetId = "read-only-properties", sequence = "1")
     @XmlElement(required = true)                                                // <.>
     @Getter @Setter
-    private Markdown readOnlyProperty;
+    private org.apache.isis.valuetypes.markdown.applib.value.Markdown readOnlyProperty;
 
     @Property(editing = Editing.ENABLED)                                        // <.>
-    @PropertyLayout(hidden = Where.EVERYWHERE, fieldSetId = "editable-properties", sequence = "1")
+    @PropertyLayout(fieldSetId = "editable-properties", sequence = "1")
     @XmlElement(required = true)
     @Getter @Setter
-    private Markdown readWriteProperty;
+    private org.apache.isis.valuetypes.markdown.applib.value.Markdown readWriteProperty;
 
     @Property(optionality = Optionality.OPTIONAL)                               // <.>
-    @PropertyLayout(hidden = Where.ALL_TABLES, fieldSetId = "optional-properties", sequence = "1")
+    @PropertyLayout(fieldSetId = "optional-properties", sequence = "1")
     @Getter @Setter
-    private Markdown readOnlyOptionalProperty;
+    private org.apache.isis.valuetypes.markdown.applib.value.Markdown readOnlyOptionalProperty;
 
     @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
-    @PropertyLayout(hidden = Where.ALL_TABLES, fieldSetId = "optional-properties", sequence = "2")
+    @PropertyLayout(fieldSetId = "optional-properties", sequence = "2")
     @Getter @Setter
-    private Markdown readWriteOptionalProperty;
+    private org.apache.isis.valuetypes.markdown.applib.value.Markdown readWriteOptionalProperty;
 
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm.layout.xml
index fe9ce77481..c58ffa61a0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/vm/IsisMarkdownVm.layout.xml
@@ -15,6 +15,8 @@
         xmlns:cpt="http://isis.apache.org/applib/layout/component"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
+	<!-- This file was GENERATED by the showcase generator (tooling). Do NOT edit! -->
+
 	<bs3:row>
 		<bs3:col span="10" unreferencedActions="true">
 			<cpt:domainObject />
diff --git a/tooling/metaprog/src/main/java/org/apache/isis/tooling/metaprog/demoshowcases/value/ValueShowCase.java b/tooling/metaprog/src/main/java/org/apache/isis/tooling/metaprog/demoshowcases/value/ValueShowCase.java
index 1f9b9a7a4b..d6d2b53ffb 100644
--- a/tooling/metaprog/src/main/java/org/apache/isis/tooling/metaprog/demoshowcases/value/ValueShowCase.java
+++ b/tooling/metaprog/src/main/java/org/apache/isis/tooling/metaprog/demoshowcases/value/ValueShowCase.java
@@ -35,6 +35,11 @@ public enum ValueShowCase {
             .javaPackage("demoapp.dom.types.isis.markups")
             .showcaseValueType("org.apache.isis.applib.value.Markup")
             .showcaseValueSemantics("org.apache.isis.core.metamodel.valuesemantics.MarkupValueSemantics")),
+    MARKDOWN(Config.builder()
+            .showcaseName("IsisMarkdown")
+            .javaPackage("demoapp.dom.types.isisext.markdowns")
+            .showcaseValueType("org.apache.isis.valuetypes.markdown.applib.value.Markdown")
+            .showcaseValueSemantics("org.apache.isis.valuetypes.markdown.metamodel.semantics.MarkdownValueSemantics")),
     UUID(Config.builder()
             .showcaseName("JavaUtilUuid")
             .javaPackage("demoapp.dom.types.javautil.uuids")