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/07/09 07:25:20 UTC

[isis] 10/18: ISIS-2222: fixes mapping for asciidoc/markdown entities; adds samples; reorganises all samples

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 e591ac1360a1debbf2429e8cbf20d006f024d4b8
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jul 9 06:46:04 2020 +0100

    ISIS-2222: fixes mapping for asciidoc/markdown entities; adds samples; reorganises all samples
---
 examples/demo/domain/pom.xml                       | 19 -----------
 .../HasAsciiDocDescription_description.java        |  2 +-
 .../HasAsciiDocDescription_sources.java            |  2 +-
 .../dom/_infra/fixtures/DemoFixtureScript.java     | 25 ++++++++++++++
 .../DemoFixtureScriptSpecificationProvider.java    | 24 ++++++++++++++
 .../{ => resources}/AsciiDocConverterService.java  |  2 +-
 .../{ => resources}/AsciiDocReaderService.java     |  2 +-
 .../{ => resources}/MarkdownReaderService.java     |  3 +-
 .../MarkupVariableResolverService.java             |  2 +-
 .../{ => resources}/ResourceReaderService.java     |  2 +-
 .../dom/_infra/{ => resources}/TagHandler.java     |  2 +-
 .../java/demoapp/dom/_infra/seed/SeedService.java  | 14 ++++++++
 .../seed/SeedServiceAbstract.java}                 | 38 ++++++++++------------
 .../demoapp/dom/homepage/DemoHomePage-welcome.adoc |  2 +-
 .../java/demoapp/dom/homepage/DemoHomePage.java    | 17 +---------
 .../isisext/asciidocs/jdo/IsisAsciiDocJdo.java     |  9 ++++-
 .../asciidocs/jdo/IsisAsciiDocJdoSeedService.java  | 22 ++++++-------
 .../asciidocs/samples/IsisAsciiDocSamples.java     |  2 +-
 .../markdowns/samples/IsisMarkdownSamples.java     |  2 +-
 .../types/javalang/JavaLangWrapperTypesMenu.java   |  2 +-
 .../main/java/demoapp/webapp/DemoAppManifest.java  |  7 ++--
 .../demo/domain/src/main/resources/application.yml |  2 +-
 .../ResourceReaderService_Test.java                | 10 +++---
 .../main/java/demoapp/webapp/jee/DemoAppJee.java   |  2 +-
 examples/demo/pom.xml                              | 24 +++++++++++++-
 .../java/demoapp/webapp/vaadin/DemoAppVaadin.java  |  2 +-
 examples/demo/wicket/pom.xml                       | 12 +------
 .../java/demoapp/webapp/wicket/DemoAppWicket.java  | 24 ++++++++++----
 28 files changed, 164 insertions(+), 112 deletions(-)

diff --git a/examples/demo/domain/pom.xml b/examples/demo/domain/pom.xml
index 07c6def..97135b1 100644
--- a/examples/demo/domain/pom.xml
+++ b/examples/demo/domain/pom.xml
@@ -58,29 +58,10 @@
 			<type>pom</type>
 		</dependency>
 
-		<!-- JDK11+ SUPPORT -->
-
-		<dependency>
-			<groupId>org.apache.isis.mavendeps</groupId>
-			<artifactId>isis-mavendeps-jdk11</artifactId>
-			<type>pom</type>
-		</dependency>
 
 		<!-- EXTENSIONS -->
 
 		<dependency>
-			<groupId>org.apache.isis.valuetypes</groupId>
-			<artifactId>isis-valuetypes-asciidoc-ui-wkt</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.isis.valuetypes</groupId>
-			<artifactId>isis-valuetypes-markdown-ui</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.isis.valuetypes</groupId>
-			<artifactId>isis-valuetypes-sse-ui</artifactId>
-		</dependency>
-		<dependency>
 			<groupId>org.apache.isis.extensions</groupId>
 			<artifactId>isis-extensions-modelannotation</artifactId>
 		</dependency>
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/asciidocdesc/HasAsciiDocDescription_description.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/asciidocdesc/HasAsciiDocDescription_description.java
index 79804bb..7f00414 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/asciidocdesc/HasAsciiDocDescription_description.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/asciidocdesc/HasAsciiDocDescription_description.java
@@ -29,7 +29,7 @@ import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
 import lombok.RequiredArgsConstructor;
 
-import demoapp.dom._infra.AsciiDocReaderService;
+import demoapp.dom._infra.resources.AsciiDocReaderService;
 
 @SuppressWarnings("CdiManagedBeanInconsistencyInspection")
 @Property
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/asciidocdesc/HasAsciiDocDescription_sources.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/asciidocdesc/HasAsciiDocDescription_sources.java
index a6ded09..9c1b2f8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/asciidocdesc/HasAsciiDocDescription_sources.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/asciidocdesc/HasAsciiDocDescription_sources.java
@@ -30,7 +30,7 @@ import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
-import demoapp.dom._infra.MarkupVariableResolverService;
+import demoapp.dom._infra.resources.MarkupVariableResolverService;
 
 @Property
 @RequiredArgsConstructor @SuppressWarnings("CdiManagedBeanInconsistencyInspection")
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/fixtures/DemoFixtureScript.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/fixtures/DemoFixtureScript.java
new file mode 100644
index 0000000..cc103c3
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/fixtures/DemoFixtureScript.java
@@ -0,0 +1,25 @@
+package demoapp.dom._infra.fixtures;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.services.inject.ServiceInjector;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+
+import demoapp.dom._infra.seed.SeedService;
+
+public class DemoFixtureScript extends FixtureScript {
+
+    @Override
+    protected void execute(ExecutionContext executionContext) {
+        serviceRegistry
+                .select(SeedService.class)  // lookup rather than injection to avoid circular reference.
+                .forEach(seedService -> seedService.seed(this, executionContext));
+    }
+
+    @Inject
+    ServiceRegistry serviceRegistry;
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/fixtures/DemoFixtureScriptSpecificationProvider.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/fixtures/DemoFixtureScriptSpecificationProvider.java
new file mode 100644
index 0000000..07c352a
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/fixtures/DemoFixtureScriptSpecificationProvider.java
@@ -0,0 +1,24 @@
+package demoapp.dom._infra.fixtures;
+
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
+import org.apache.isis.testing.fixtures.applib.fixturespec.FixtureScriptsSpecification;
+import org.apache.isis.testing.fixtures.applib.fixturespec.FixtureScriptsSpecificationProvider;
+
+import lombok.val;
+
+@Component
+public class DemoFixtureScriptSpecificationProvider implements FixtureScriptsSpecificationProvider {
+
+    @Override
+    public FixtureScriptsSpecification getSpecification() {
+        return new FixtureScriptsSpecification(
+                getClass().getPackage().getName()
+                , FixtureScripts.NonPersistedObjectsStrategy.IGNORE
+                , FixtureScripts.MultipleExecutionStrategy.EXECUTE_ONCE_BY_VALUE
+                , DemoFixtureScript.class
+                , DemoFixtureScript.class
+        );
+    }
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/AsciiDocConverterService.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/AsciiDocConverterService.java
similarity index 98%
rename from examples/demo/domain/src/main/java/demoapp/dom/_infra/AsciiDocConverterService.java
rename to examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/AsciiDocConverterService.java
index c93c568..a1b69d8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/AsciiDocConverterService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/AsciiDocConverterService.java
@@ -1,4 +1,4 @@
-package demoapp.dom._infra;
+package demoapp.dom._infra.resources;
 
 import java.util.Map;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/AsciiDocReaderService.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/AsciiDocReaderService.java
similarity index 97%
rename from examples/demo/domain/src/main/java/demoapp/dom/_infra/AsciiDocReaderService.java
rename to examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/AsciiDocReaderService.java
index 15d4df5..df258e4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/AsciiDocReaderService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/AsciiDocReaderService.java
@@ -1,4 +1,4 @@
-package demoapp.dom._infra;
+package demoapp.dom._infra.resources;
 
 import javax.inject.Inject;
 import javax.inject.Named;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/MarkdownReaderService.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/MarkdownReaderService.java
similarity index 92%
rename from examples/demo/domain/src/main/java/demoapp/dom/_infra/MarkdownReaderService.java
rename to examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/MarkdownReaderService.java
index 28e7860..3f8c9a3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/MarkdownReaderService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/MarkdownReaderService.java
@@ -1,11 +1,10 @@
-package demoapp.dom._infra;
+package demoapp.dom._infra.resources;
 
 import javax.inject.Inject;
 import javax.inject.Named;
 
 import org.springframework.stereotype.Service;
 
-import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 import org.apache.isis.valuetypes.markdown.applib.value.Converter;
 import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/MarkupVariableResolverService.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/MarkupVariableResolverService.java
similarity index 96%
rename from examples/demo/domain/src/main/java/demoapp/dom/_infra/MarkupVariableResolverService.java
rename to examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/MarkupVariableResolverService.java
index 6f40e80..3cd9ed2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/MarkupVariableResolverService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/MarkupVariableResolverService.java
@@ -1,4 +1,4 @@
-package demoapp.dom._infra;
+package demoapp.dom._infra.resources;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/ResourceReaderService.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/ResourceReaderService.java
similarity index 98%
rename from examples/demo/domain/src/main/java/demoapp/dom/_infra/ResourceReaderService.java
rename to examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/ResourceReaderService.java
index 2646c3c..dcf45c2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/ResourceReaderService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/ResourceReaderService.java
@@ -1,4 +1,4 @@
-package demoapp.dom._infra;
+package demoapp.dom._infra.resources;
 
 import java.io.BufferedReader;
 import java.io.IOException;
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/TagHandler.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/TagHandler.java
similarity index 94%
rename from examples/demo/domain/src/main/java/demoapp/dom/_infra/TagHandler.java
rename to examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/TagHandler.java
index 5f4f903..17ca5de 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/TagHandler.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/TagHandler.java
@@ -1,4 +1,4 @@
-package demoapp.dom._infra;
+package demoapp.dom._infra.resources;
 
 import java.util.Map;
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/seed/SeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/seed/SeedService.java
new file mode 100644
index 0000000..3af1eea
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/seed/SeedService.java
@@ -0,0 +1,14 @@
+package demoapp.dom._infra.seed;
+
+import java.util.function.Supplier;
+
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+
+import demoapp.dom._infra.fixtures.DemoFixtureScript;
+
+
+public interface SeedService {
+
+    void seed(FixtureScript fixtureScriptSupplier, FixtureScript.ExecutionContext executionContext);
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdoSeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/seed/SeedServiceAbstract.java
similarity index 52%
copy from examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdoSeedService.java
copy to examples/demo/domain/src/main/java/demoapp/dom/_infra/seed/SeedServiceAbstract.java
index ef12b3c..9128435 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdoSeedService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/seed/SeedServiceAbstract.java
@@ -1,9 +1,10 @@
-package demoapp.dom.types.isisext.asciidocs.jdo;
+package demoapp.dom._infra.seed;
+
+import java.util.function.Supplier;
 
 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;
@@ -11,35 +12,30 @@ import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
+import demoapp.dom._infra.seed.SeedService;
 import demoapp.dom.types.Samples;
 
-@Service
-public class IsisAsciiDocJdoSeedService {
+public abstract class SeedServiceAbstract implements SeedService {
+
+    private final Supplier<FixtureScript> fixtureScriptSupplier;
+
+    protected SeedServiceAbstract(Supplier<FixtureScript> fixtureScriptSupplier) {
+        this.fixtureScriptSupplier = fixtureScriptSupplier;
+    }
 
     @EventListener(AppLifecycleEvent.class)
     public void onAppLifecycleEvent(AppLifecycleEvent event) {
-
         if (event.getEventType() == AppLifecycleEvent.EventType.appPostMetamodel) {
-            fixtureScripts.run(new IsisAsciiDocJdoEntityFixture());
+            fixtureScripts.run(fixtureScriptSupplier.get());
         }
     }
 
+    @Override
+    public void seed(FixtureScript parentFixtureScript, FixtureScript.ExecutionContext executionContext) {
+        executionContext.executeChild(parentFixtureScript, this.fixtureScriptSupplier.get());
+    }
+
     @Inject
     FixtureScripts fixtureScripts;
 
-    static class IsisAsciiDocJdoEntityFixture extends FixtureScript {
-
-        @Override
-        protected void execute(ExecutionContext executionContext) {
-            samples.stream()
-                    .map(IsisAsciiDocJdo::new)
-                    .forEach(repositoryService::persist);
-        }
-
-        @Inject
-        RepositoryService repositoryService;
-
-        @Inject
-        Samples<AsciiDoc> samples;
-    }
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage-welcome.adoc b/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage-welcome.adoc
index b969fb9..8cf853a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage-welcome.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage-welcome.adoc
@@ -4,7 +4,7 @@ On the left hand side of each web page you'll find the feature, and on the right
 
 == Page Layout
 
-This is probably as good place as any to explain the page layout of an Apache Isis webapp:
+This is as good place as any to explain the page layout of an Apache Isis webapp:
 
 * At the top is the menu bar.
 +
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage.java b/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage.java
index 8ed1dd8..f932c04 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage.java
@@ -18,30 +18,15 @@
  */
 package demoapp.dom.homepage;
 
-import java.time.LocalDateTime;
-
-import javax.annotation.PostConstruct;
 import javax.inject.Inject;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.HomePage;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.services.user.UserService;
-import org.apache.isis.applib.util.JaxbAdapters.MarkupAdapter;
-import org.apache.isis.applib.value.Markup;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
-import lombok.Getter;
-import lombok.Setter;
-
-import demoapp.dom._infra.AsciiDocReaderService;
+import demoapp.dom._infra.resources.AsciiDocReaderService;
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 
 //tag::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdo.java
index 7aa170d..968ceb7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdo.java
@@ -18,6 +18,7 @@
  */
 package demoapp.dom.types.isisext.asciidocs.jdo;
 
+import javax.inject.Inject;
 import javax.jdo.annotations.Column;
 import javax.jdo.annotations.DatastoreIdentity;
 import javax.jdo.annotations.IdGeneratorStrategy;
@@ -30,6 +31,7 @@ import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
 import lombok.Getter;
@@ -54,7 +56,10 @@ public class IsisAsciiDocJdo                                          // <.>
     }
 
 //tag::class[]
-    @Title(prepend = "AsciiDoc JDO entity: ")
+    public String title() {
+        return "AsciiDoc JDO entity: " + bookmarkService.bookmarkFor(this).getIdentifier();
+    }
+
     @MemberOrder(name = "read-only-properties", sequence = "1")
     @Column(allowsNull = "false", jdbcType = "CLOB")                            // <.>
     @Getter @Setter
@@ -78,5 +83,7 @@ public class IsisAsciiDocJdo                                          // <.>
     @Getter @Setter
     private AsciiDoc readWriteOptionalProperty;
 
+    @Inject
+    private BookmarkService bookmarkService;
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdoSeedService.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdoSeedService.java
index ef12b3c..cd08579 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdoSeedService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/jdo/IsisAsciiDocJdoSeedService.java
@@ -11,29 +11,29 @@ import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
+import demoapp.dom._infra.fixtures.DemoFixtureScript;
+import demoapp.dom._infra.seed.SeedService;
+import demoapp.dom._infra.seed.SeedServiceAbstract;
 import demoapp.dom.types.Samples;
 
 @Service
-public class IsisAsciiDocJdoSeedService {
+public class IsisAsciiDocJdoSeedService extends SeedServiceAbstract {
 
-    @EventListener(AppLifecycleEvent.class)
-    public void onAppLifecycleEvent(AppLifecycleEvent event) {
-
-        if (event.getEventType() == AppLifecycleEvent.EventType.appPostMetamodel) {
-            fixtureScripts.run(new IsisAsciiDocJdoEntityFixture());
-        }
+    public IsisAsciiDocJdoSeedService() {
+        super(() -> new IsisAsciiDocJdoEntityFixture());
     }
 
-    @Inject
-    FixtureScripts fixtureScripts;
-
     static class IsisAsciiDocJdoEntityFixture extends FixtureScript {
 
         @Override
         protected void execute(ExecutionContext executionContext) {
+            repositoryService.removeAll(IsisAsciiDocJdo.class);
             samples.stream()
                     .map(IsisAsciiDocJdo::new)
-                    .forEach(repositoryService::persist);
+                    .forEach(domainObject -> {
+                        repositoryService.persist(domainObject);
+                        executionContext.addResult(this, domainObject);
+                    });
         }
 
         @Inject
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/samples/IsisAsciiDocSamples.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/samples/IsisAsciiDocSamples.java
index 2b7cd6d..2617007 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/samples/IsisAsciiDocSamples.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/samples/IsisAsciiDocSamples.java
@@ -26,7 +26,7 @@ import org.springframework.stereotype.Service;
 
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
-import demoapp.dom._infra.AsciiDocReaderService;
+import demoapp.dom._infra.resources.AsciiDocReaderService;
 import demoapp.dom.types.Samples;
 
 @Service
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 2e46b81..0d2481e 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
@@ -26,7 +26,7 @@ import org.springframework.stereotype.Service;
 
 import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
-import demoapp.dom._infra.MarkdownReaderService;
+import demoapp.dom._infra.resources.MarkdownReaderService;
 import demoapp.dom.types.Samples;
 
 @Service
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/JavaLangWrapperTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/JavaLangWrapperTypesMenu.java
index 27fbe57..e22d0fa 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/JavaLangWrapperTypesMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/JavaLangWrapperTypesMenu.java
@@ -85,7 +85,7 @@ public class JavaLangWrapperTypesMenu {
 
     @Action(semantics = SemanticsOf.SAFE)
     @ActionLayout(cssClassFa="fa-hashtag")
-    public WrapperBooleans booleans(){
+    public WrapperBooleans wrapperBooleans(){
         return new WrapperBooleans();
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/webapp/DemoAppManifest.java b/examples/demo/domain/src/main/java/demoapp/webapp/DemoAppManifest.java
index e071b34..78d5722 100644
--- a/examples/demo/domain/src/main/java/demoapp/webapp/DemoAppManifest.java
+++ b/examples/demo/domain/src/main/java/demoapp/webapp/DemoAppManifest.java
@@ -40,8 +40,7 @@ import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
 import demoapp.dom.DemoModule;
-import demoapp.dom._infra.AsciiDocReaderService;
-import demoapp.dom._infra.LibraryPreloadingService;
+import demoapp.dom._infra.fixtures.DemoFixtureScript;
 
 /**
  * Makes the integral parts of the 'demo' web application.
@@ -69,8 +68,8 @@ import demoapp.dom._infra.LibraryPreloadingService;
     IsisModuleTestingH2ConsoleUi.class,
     IsisModuleExtExcelDownloadUi.class, // allows for collection download as excel
 
-    LibraryPreloadingService.class, // just a performance enhancement
-    AsciiDocReaderService.class,
+    // fixtures
+    DemoFixtureScript.class,
 
 })
 @Log4j2
diff --git a/examples/demo/domain/src/main/resources/application.yml b/examples/demo/domain/src/main/resources/application.yml
index 9e4d8e9..57455af 100644
--- a/examples/demo/domain/src/main/resources/application.yml
+++ b/examples/demo/domain/src/main/resources/application.yml
@@ -49,6 +49,7 @@ isis:
         mixins-only: true
       introspector:
         parallelize: false
+        mode: full
     runtime-services:
       translation:
         po:
@@ -122,4 +123,3 @@ vaadin:
   urlMapping: "/vaadin/*"
   servlet:
       productionMode: true
-
diff --git a/examples/demo/domain/src/test/java/demoapp/dom/_infra/ResourceReaderService_Test.java b/examples/demo/domain/src/test/java/demoapp/dom/_infra/resources/ResourceReaderService_Test.java
similarity index 91%
rename from examples/demo/domain/src/test/java/demoapp/dom/_infra/ResourceReaderService_Test.java
rename to examples/demo/domain/src/test/java/demoapp/dom/_infra/resources/ResourceReaderService_Test.java
index 47ebb49..a2365b5 100644
--- a/examples/demo/domain/src/test/java/demoapp/dom/_infra/ResourceReaderService_Test.java
+++ b/examples/demo/domain/src/test/java/demoapp/dom/_infra/resources/ResourceReaderService_Test.java
@@ -1,18 +1,16 @@
-package demoapp.dom._infra;
+package demoapp.dom._infra.resources;
 
-import java.io.StringReader;
 import java.util.HashMap;
-import java.util.Map;
 
-import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import static org.junit.jupiter.api.Assertions.*;
-
 import lombok.val;
 import static org.assertj.core.api.Assertions.*;
 
+import demoapp.dom._infra.resources.MarkupVariableResolverService;
+import demoapp.dom._infra.resources.ResourceReaderService;
+
 class ResourceReaderService_Test {
 
     ResourceReaderService resourceReaderService;
diff --git a/examples/demo/jee/src/main/java/demoapp/webapp/jee/DemoAppJee.java b/examples/demo/jee/src/main/java/demoapp/webapp/jee/DemoAppJee.java
index 07ae221..fe04565 100644
--- a/examples/demo/jee/src/main/java/demoapp/webapp/jee/DemoAppJee.java
+++ b/examples/demo/jee/src/main/java/demoapp/webapp/jee/DemoAppJee.java
@@ -24,7 +24,7 @@ import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
 import org.springframework.context.annotation.Import;
 
 import org.apache.isis.valuetypes.asciidoc.ui.wkt.IsisModuleValAsciidocUiWkt;
-import org.apache.isis.valuetypes.sse.ui.IsisModuleValSseUi;
+import org.apache.isis.valuetypes.sse.ui.IsisModuleValSseUiWkt;
 import org.apache.isis.viewer.wicket.viewer.IsisModuleViewerWicketViewer;
 
 import demoapp.webapp.DemoAppManifest;
diff --git a/examples/demo/pom.xml b/examples/demo/pom.xml
index 69c036a..5baedd0 100644
--- a/examples/demo/pom.xml
+++ b/examples/demo/pom.xml
@@ -69,11 +69,33 @@
 
 		<dependency>
 			<groupId>org.apache.isis.valuetypes</groupId>
+			<artifactId>isis-valuetypes-asciidoc-metamodel</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.isis.valuetypes</groupId>
 			<artifactId>isis-valuetypes-asciidoc-ui-wkt</artifactId>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.isis.valuetypes</groupId>
-			<artifactId>isis-valuetypes-sse-ui</artifactId>
+			<artifactId>isis-valuetypes-asciidoc-persistence-jdo-dn5</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.isis.valuetypes</groupId>
+			<artifactId>isis-valuetypes-markdown-metamodel</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.isis.valuetypes</groupId>
+			<artifactId>isis-valuetypes-markdown-ui-wkt</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.isis.valuetypes</groupId>
+			<artifactId>isis-valuetypes-markdown-persistence-jdo-dn5</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.isis.valuetypes</groupId>
+			<artifactId>isis-valuetypes-sse-ui-wkt</artifactId>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.isis.extensions</groupId>
diff --git a/examples/demo/vaadin/src/main/java/demoapp/webapp/vaadin/DemoAppVaadin.java b/examples/demo/vaadin/src/main/java/demoapp/webapp/vaadin/DemoAppVaadin.java
index c4cb76a..c796b16 100644
--- a/examples/demo/vaadin/src/main/java/demoapp/webapp/vaadin/DemoAppVaadin.java
+++ b/examples/demo/vaadin/src/main/java/demoapp/webapp/vaadin/DemoAppVaadin.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.runtimeservices.session.IsisInteractionFactoryDefaul
 import org.apache.isis.incubator.viewer.vaadin.viewer.IsisModuleIncViewerVaadinViewer;
 import org.apache.isis.valuetypes.asciidoc.ui.vaa.IsisModuleValAsciidocUiVaa;
 import org.apache.isis.valuetypes.asciidoc.ui.wkt.IsisModuleValAsciidocUiWkt;
-import org.apache.isis.valuetypes.sse.ui.IsisModuleValSseUi;
+import org.apache.isis.valuetypes.sse.ui.IsisModuleValSseUiWkt;
 import org.apache.isis.viewer.wicket.viewer.IsisModuleViewerWicketViewer;
 
 import demoapp.dom._infra.utils.ThereCanBeOnlyOne;
diff --git a/examples/demo/wicket/pom.xml b/examples/demo/wicket/pom.xml
index 8e09545..b9b41de 100644
--- a/examples/demo/wicket/pom.xml
+++ b/examples/demo/wicket/pom.xml
@@ -66,7 +66,6 @@
 			<groupId>org.apache.isis.examples.apps</groupId>
 			<artifactId>demo-domain</artifactId>
 			<version>${project.version}</version>
-			<type>jar</type>
 		</dependency>
 
 		<!-- WEB APPLICATION DEPENDENCY BUNDLE -->
@@ -77,16 +76,7 @@
 			<type>pom</type>
 		</dependency>
 
-		<!-- JDK11+ SUPPORT -->
-
-		<dependency>
-			<groupId>org.apache.isis.mavendeps</groupId>
-			<artifactId>isis-mavendeps-jdk11</artifactId>
-			<type>pom</type>
-		</dependency>
-
-
-	</dependencies>
+    </dependencies>
 
 	<profiles>
 
diff --git a/examples/demo/wicket/src/main/java/demoapp/webapp/wicket/DemoAppWicket.java b/examples/demo/wicket/src/main/java/demoapp/webapp/wicket/DemoAppWicket.java
index 78ddb29..3f02eb5 100644
--- a/examples/demo/wicket/src/main/java/demoapp/webapp/wicket/DemoAppWicket.java
+++ b/examples/demo/wicket/src/main/java/demoapp/webapp/wicket/DemoAppWicket.java
@@ -23,8 +23,12 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 import org.springframework.context.annotation.Import;
 
+import org.apache.isis.valuetypes.asciidoc.metamodel.IsisModuleValAsciidocMetaModel;
+import org.apache.isis.valuetypes.asciidoc.persistence.jdo.dn5.IsisModuleValAsciidocPersistenceJdoDn5;
+import org.apache.isis.valuetypes.markdown.persistence.jdo.dn5.IsisModuleValMarkdownPersistenceJdoDn5;
 import org.apache.isis.valuetypes.asciidoc.ui.wkt.IsisModuleValAsciidocUiWkt;
-import org.apache.isis.valuetypes.sse.ui.IsisModuleValSseUi;
+import org.apache.isis.valuetypes.markdown.ui.wkt.IsisModuleValMarkdownUiWkt;
+import org.apache.isis.valuetypes.sse.ui.wkt.IsisModuleValSseUiWkt;
 import org.apache.isis.viewer.wicket.viewer.IsisModuleViewerWicketViewer;
 
 import demoapp.dom._infra.utils.ThereCanBeOnlyOne;
@@ -36,12 +40,20 @@ import demoapp.webapp.DemoAppManifest;
 @SpringBootApplication
 @Import({
     DemoAppManifest.class,
-    
-    // WICKET INTEGRATION
+
+    // Metamodel
+    IsisModuleValAsciidocMetaModel.class,
+
+    // UI
     IsisModuleViewerWicketViewer.class, // wicket viewer
-    IsisModuleValSseUi.class, // server sent events
-    IsisModuleValAsciidocUiWkt.class, // ascii-doc rendering support (for Wicket)
-    
+    IsisModuleValSseUiWkt.class, // server sent events
+    IsisModuleValAsciidocUiWkt.class,
+    IsisModuleValMarkdownUiWkt.class,
+
+    // Persistence
+    IsisModuleValAsciidocPersistenceJdoDn5.class,   //
+    IsisModuleValMarkdownPersistenceJdoDn5.class,
+
 })
 //@Log4j2
 public class DemoAppWicket extends SpringBootServletInitializer {