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 2021/09/16 15:12:48 UTC

[isis] branch master updated: ISIS-2871: fixes Markdown type

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 6c88869  ISIS-2871: fixes Markdown type
6c88869 is described below

commit 6c88869f2d15fce7fe234d96ec82340ab00815ce
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 16 17:12:36 2021 +0200

    ISIS-2871: fixes Markdown type
    
    also unifying prism resources (css/js)
---
 ...ionOrAnyMatchingValueSemanticsFacetFactory.java |   5 +-
 .../ValueFacetUsingSemanticsProviderFactory.java   |   5 -
 .../dflt/ProgrammingModelFacetsJava11.java         |   4 -
 .../facets/param/name/ParameterNameFacetTest.java  |   2 +-
 .../dom/_infra/LibraryPreloadingService.java       |   4 +-
 .../AsciiDocValueSemanticsWithPreprocessing.java   |  18 +++
 .../_infra/resources/MarkdownReaderService.java    |   4 +-
 .../webapp/wicket/jdo/DemoAppWicketJdo.java        |   2 +
 .../webapp/wicket/jpa/DemoAppWicketJpa.java        |   2 +
 incubator/pom.xml                                  |   1 +
 .../valuetypes/asciidoc/applib/value/AsciiDoc.java |   4 +-
 .../metamodel/IsisModuleValAsciidocMetaModel.java  |  46 +++----
 ...csProvider.java => AsciiDocValueSemantics.java} |  33 +----
 valuetypes/asciidoc/ui/vaadin/pom.xml              |   6 +
 .../ui/vaa/components/AsciiDocFieldVaa.java        |   9 +-
 valuetypes/asciidoc/ui/wicket/pom.xml              |   6 +
 .../ui/wkt/components/AsciiDocComponentWkt.java    |  12 +-
 .../wkt/components/AsciiDocForXmlComponentWkt.java |  20 +--
 .../markdown/applib/jaxb/MarkdownJaxbAdapter.java  |   2 +-
 .../valuetypes/markdown/applib/value/Markdown.java |  38 +++---
 .../metamodel/IsisModuleValMarkdownMetaModel.java  |  48 +++----
 .../metamodel/facets/MarkdownValueFacet.java       |  29 ----
 .../facets/MarkdownValueSemanticsProvider.java     |  83 ------------
 .../semantics/MarkdownValueSemantics.java          |  88 ++++++++++++
 .../jdo/dn5/converters/IsisMarkdownConverter.java  |   2 +-
 .../jpa/converters/IsisMarkdownConverter.java      |   2 +-
 valuetypes/markdown/ui/wicket/pom.xml              |   6 +
 .../ui/wkt/IsisModuleValMarkdownUiWkt.java         |   7 +-
 ...ownComponent.java => MarkdownComponentWkt.java} |  29 ++--
 ...rWicket.java => MarkdownPanelFactoriesWkt.java} |  16 +--
 .../markdown/ui/wkt/components/css/prism.css       | 150 ---------------------
 .../markdown/ui/wkt/components/js/prism1.14.js     |   8 --
 valuetypes/pom.xml                                 |   1 +
 valuetypes/{asciidoc/ui/vaadin => prism}/pom.xml   |  27 ++--
 .../{asciidoc/ui/vaadin => prism/res}/pom.xml      |  21 +--
 .../org/apache/isis/valuetypes/prism}/Prism.java   |   2 +-
 .../static/prism/css/prism1.20-default.css         |   0
 .../static}/prism/css/prism1.24.1-coy.css          |   0
 .../static}/prism/css/prism1.24.1-default.css      |   0
 .../main/resources/static}/prism/js/prism1.20.js   |   0
 .../main/resources/static}/prism/js/prism1.24.1.js |   0
 .../{asciidoc/ui/vaadin => prism/vaa}/pom.xml      |  27 ++--
 .../valuetypes/prism/vaa/PrismResourcesVaa.java}   |   8 +-
 valuetypes/prism/wkt/pom.xml                       |  73 ++++++++++
 .../valuetypes/prism/wkt/PrismResourcesWkt.java}   |  12 +-
 .../prism/wkt}/css/prism1.20-default.css           |   0
 .../valuetypes/prism/wkt}/css/prism1.24.1-coy.css  |   0
 .../prism/wkt}/css/prism1.24.1-default.css         |   0
 .../isis/valuetypes/prism/wkt}/js/prism1.20.js     |   0
 .../isis/valuetypes/prism/wkt}/js/prism1.24.1.js   |   0
 50 files changed, 374 insertions(+), 488 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java
index 6b39527..997e6f1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java
@@ -93,6 +93,7 @@ extends ValueFacetUsingSemanticsProviderFactory {
         //FIXME install them all, then enable qualifiers
         if(!valueSemantics.isEmpty()) {
             super.addAllFacetsForValueSemantics(valueSemantics, facetHolder);
+            log.debug("found ValueSemanticsProvider for value type {}", cls);
         }
 
 //        if(valueIfAny.isPresent()
@@ -106,8 +107,8 @@ extends ValueFacetUsingSemanticsProviderFactory {
 
             if(valueSemantics.isCardinalityMultiple()) {
                 log.warn("found multiple ValueSemanticsProvider for value type {}; using the first", cls);
-            } else {
-                log.warn("could not find a ValueSemanticsProvider for value type {}; using a no-op fallback", cls);
+            } else if(valueSemantics.isEmpty()) {
+                log.warn("could not find a ValueSemanticsProvider for value type {}; using a no-op fallback",cls);
                 super.addAllFacetsForValueSemantics(getFallbackValueSemantics(), facetHolder);
             }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
index 8a3387d..8a6eed5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
@@ -104,11 +104,6 @@ extends FacetFactoryAbstract {
                 holder.addFacet(new DefaultedFacetUsingDefaultsProvider(defaultsProvider, holder));
             }
 
-            // if the SemanticsProvider is a facet then add it as a contributing facet
-            if(semanticsProvider instanceof Facet) {
-                holder.addFacet(((Facet) semanticsProvider));
-            }
-
         }
 
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
index 5530f57..66a2b8b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
@@ -307,10 +307,6 @@ extends ProgrammingModelAbstract {
         // must come after CollectionFacetFactory
         addFactory(FacetProcessingOrder.Z1_FINALLY, new ParentedFacetSinceCollectionFactory(mmc));
 
-        // so we can dogfood the applib "value" types
-        addFactory(FacetProcessingOrder.Z1_FINALLY, new ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory(mmc));
-
-
         // should come near the end, after any facets that install PropertySetterFacet have run.
         addFactory(FacetProcessingOrder.Z1_FINALLY, new DisabledFacetOnPropertyInferredFactory(mmc));
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
index 30857f7..b83db45 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
@@ -67,7 +67,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
 
     @Test
     public void verifyProgrammingModelNumberOfFactories() {
-        assertEquals(95, programmingModel.streamFactories().count());
+        assertEquals(94, programmingModel.streamFactories().count());
     }
 
     @Test //verify we have the javac -parameter flag set when compiling this class
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/LibraryPreloadingService.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/LibraryPreloadingService.java
index 53c10c6..ab94058 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/LibraryPreloadingService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/LibraryPreloadingService.java
@@ -25,7 +25,7 @@ import org.springframework.stereotype.Service;
 
 import org.apache.isis.commons.internal.concurrent._ConcurrentContext;
 import org.apache.isis.commons.internal.concurrent._ConcurrentTaskList;
-import org.apache.isis.valuetypes.asciidoc.metamodel.semantics.AsciiDocValueSemanticsProvider;
+import org.apache.isis.valuetypes.asciidoc.metamodel.semantics.AsciiDocValueSemantics;
 
 import lombok.val;
 
@@ -36,7 +36,7 @@ public class LibraryPreloadingService {
     @PostConstruct
     public void preloadLibraries() {
         val tasks = _ConcurrentTaskList.named("LibraryPreloading")
-        .addRunnable("Preload JRuby for AsciiDoc", AsciiDocValueSemanticsProvider::loadJRuby);
+        .addRunnable("Preload JRuby for AsciiDoc", AsciiDocValueSemantics::loadJRuby);
         tasks.submit(_ConcurrentContext.forkJoin());
     }
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/AsciiDocValueSemanticsWithPreprocessing.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/AsciiDocValueSemanticsWithPreprocessing.java
new file mode 100644
index 0000000..d60ca07
--- /dev/null
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/AsciiDocValueSemanticsWithPreprocessing.java
@@ -0,0 +1,18 @@
+package demoapp.dom._infra.resources;
+
+import javax.inject.Named;
+
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.valuetypes.asciidoc.metamodel.semantics.AsciiDocValueSemantics;
+
+@Component
+@Named("demo.AsciiDocValueSemantics")
+@Qualifier("adoc-pre-processor")
+public class AsciiDocValueSemanticsWithPreprocessing
+extends AsciiDocValueSemantics {
+
+    //FIXME add pre-processing stuff
+
+}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/MarkdownReaderService.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/MarkdownReaderService.java
index 463ed5c..83d68ad 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/MarkdownReaderService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/MarkdownReaderService.java
@@ -43,13 +43,13 @@ public class MarkdownReaderService {
     public Markdown readFor(Class<?> aClass) {
         val markdownResourceName = String.format("%s.md", aClass.getSimpleName());
         val markdown = resourceReaderService.readResource(aClass, markdownResourceName);
-        return Markdown.valueOfMarkdown(markdown);
+        return Markdown.valueOf(markdown);
     }
 
     public Markdown readFor(Class<?> aClass, final String member) {
         val markdownResourceName = String.format("%s-%s.md", aClass.getSimpleName(), member);
         val markdown = resourceReaderService.readResource(aClass, markdownResourceName);
-        return Markdown.valueOfMarkdown(markdown);
+        return Markdown.valueOf(markdown);
     }
 
 
diff --git a/examples/demo/wicket/jdo/src/main/java/demoapp/webapp/wicket/jdo/DemoAppWicketJdo.java b/examples/demo/wicket/jdo/src/main/java/demoapp/webapp/wicket/jdo/DemoAppWicketJdo.java
index 9d99917..91587c1 100644
--- a/examples/demo/wicket/jdo/src/main/java/demoapp/webapp/wicket/jdo/DemoAppWicketJdo.java
+++ b/examples/demo/wicket/jdo/src/main/java/demoapp/webapp/wicket/jdo/DemoAppWicketJdo.java
@@ -28,6 +28,7 @@ import org.apache.isis.extensions.viewer.wicket.pdfjs.ui.IsisModuleExtPdfjsUi;
 import org.apache.isis.valuetypes.asciidoc.metamodel.IsisModuleValAsciidocMetaModel;
 import org.apache.isis.valuetypes.asciidoc.persistence.jdo.dn5.IsisModuleValAsciidocPersistenceJdoDn5;
 import org.apache.isis.valuetypes.asciidoc.ui.wkt.IsisModuleValAsciidocUiWkt;
+import org.apache.isis.valuetypes.markdown.metamodel.IsisModuleValMarkdownMetaModel;
 import org.apache.isis.valuetypes.markdown.persistence.jdo.dn5.IsisModuleValMarkdownPersistenceJdoDn5;
 import org.apache.isis.valuetypes.markdown.ui.wkt.IsisModuleValMarkdownUiWkt;
 import org.apache.isis.valuetypes.sse.ui.wkt.IsisModuleValSseUiWkt;
@@ -46,6 +47,7 @@ import demoapp.webapp.wicket.common.ui.DemoAppWicketCommon;
 
     // Metamodel
     IsisModuleValAsciidocMetaModel.class,
+    IsisModuleValMarkdownMetaModel.class,
 
     // UI (Wicket Viewer)
     IsisModuleViewerWicketViewer.class,
diff --git a/examples/demo/wicket/jpa/src/main/java/demoapp/webapp/wicket/jpa/DemoAppWicketJpa.java b/examples/demo/wicket/jpa/src/main/java/demoapp/webapp/wicket/jpa/DemoAppWicketJpa.java
index eecfe2c..e83c52e 100644
--- a/examples/demo/wicket/jpa/src/main/java/demoapp/webapp/wicket/jpa/DemoAppWicketJpa.java
+++ b/examples/demo/wicket/jpa/src/main/java/demoapp/webapp/wicket/jpa/DemoAppWicketJpa.java
@@ -28,6 +28,7 @@ import org.apache.isis.extensions.viewer.wicket.pdfjs.ui.IsisModuleExtPdfjsUi;
 import org.apache.isis.valuetypes.asciidoc.metamodel.IsisModuleValAsciidocMetaModel;
 import org.apache.isis.valuetypes.asciidoc.persistence.jpa.IsisModuleValAsciidocPersistenceJpa;
 import org.apache.isis.valuetypes.asciidoc.ui.wkt.IsisModuleValAsciidocUiWkt;
+import org.apache.isis.valuetypes.markdown.metamodel.IsisModuleValMarkdownMetaModel;
 import org.apache.isis.valuetypes.markdown.persistence.jpa.IsisModuleValMarkdownPersistenceJpa;
 import org.apache.isis.valuetypes.markdown.ui.wkt.IsisModuleValMarkdownUiWkt;
 import org.apache.isis.valuetypes.sse.ui.wkt.IsisModuleValSseUiWkt;
@@ -46,6 +47,7 @@ import demoapp.webapp.wicket.common.ui.DemoAppWicketCommon;
 
     // Metamodel
     IsisModuleValAsciidocMetaModel.class,
+    IsisModuleValMarkdownMetaModel.class,
 
     // UI (Wicket Viewer)
     IsisModuleViewerWicketViewer.class,
diff --git a/incubator/pom.xml b/incubator/pom.xml
index 7473fdd..05122ef 100644
--- a/incubator/pom.xml
+++ b/incubator/pom.xml
@@ -187,6 +187,7 @@
 <!-- 		<module>clients/kroviz</module> -->
 		<module>viewers/vaadin</module>
 		<module>viewers/javafx</module>
+		<module>../valuetypes/prism/vaadin</module>
 		<module>../valuetypes/asciidoc/ui/vaadin</module>
 	</modules>
 
diff --git a/valuetypes/asciidoc/applib/src/main/java/org/apache/isis/valuetypes/asciidoc/applib/value/AsciiDoc.java b/valuetypes/asciidoc/applib/src/main/java/org/apache/isis/valuetypes/asciidoc/applib/value/AsciiDoc.java
index b971819..ddaa9de 100644
--- a/valuetypes/asciidoc/applib/src/main/java/org/apache/isis/valuetypes/asciidoc/applib/value/AsciiDoc.java
+++ b/valuetypes/asciidoc/applib/src/main/java/org/apache/isis/valuetypes/asciidoc/applib/value/AsciiDoc.java
@@ -75,9 +75,7 @@ public final class AsciiDoc implements HasHtml, Serializable {
 
     @Override
     public String toString() {
-        return "AsciiDoc[length="+ adoc.length()+"]";
+        return "AsciiDoc[length=" + adoc.length() + "]";
     }
 
-
-
 }
diff --git a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/IsisModuleValAsciidocMetaModel.java b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/IsisModuleValAsciidocMetaModel.java
index 29ddae4..5a94add 100644
--- a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/IsisModuleValAsciidocMetaModel.java
+++ b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/IsisModuleValAsciidocMetaModel.java
@@ -33,40 +33,40 @@ import org.apache.isis.core.metamodel.valuetypes.ValueTypeDefinition;
 import org.apache.isis.core.metamodel.valuetypes.ValueTypeProvider;
 import org.apache.isis.schema.common.v2.ValueType;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
-import org.apache.isis.valuetypes.asciidoc.metamodel.semantics.AsciiDocValueSemanticsProvider;
+import org.apache.isis.valuetypes.asciidoc.metamodel.semantics.AsciiDocValueSemantics;
 
 /**
  * @since 2.0 {@index}
  */
 @Configuration
 @Import({
-        AsciiDocMetaModelRefiner.class,
-        AsciiDocValueTypeProvider.class,
+        IsisModuleValAsciidocMetaModel.AsciiDocMetaModelRefiner.class,
+        IsisModuleValAsciidocMetaModel.AsciiDocValueTypeProvider.class,
 
-        AsciiDocValueSemanticsProvider.class,
+        AsciiDocValueSemantics.class,
 })
 public class IsisModuleValAsciidocMetaModel {
 
-}
-
-@Component
-@Named("isis.val.AsciiDocMetaModelRefiner")
-class AsciiDocMetaModelRefiner implements MetaModelRefiner {
-    @Override
-    public void refineProgrammingModel(final ProgrammingModel programmingModel) {
-// blueprint
-//        programmingModel.addFactory(
-//                ProgrammingModel.FacetProcessingOrder.G1_VALUE_TYPES,
-//                AsciiDocValueFacetUsingSemanticsProviderFactory.class);
+    @Component
+    @Named("isis.val.AsciiDocMetaModelRefiner")
+    class AsciiDocMetaModelRefiner implements MetaModelRefiner {
+        @Override
+        public void refineProgrammingModel(final ProgrammingModel programmingModel) {
+    // blueprint
+    //        programmingModel.addFactory(
+    //                ProgrammingModel.FacetProcessingOrder.G1_VALUE_TYPES,
+    //                AsciiDocValueFacetUsingSemanticsProviderFactory.class);
+        }
     }
-}
 
-@Component
-@Named("isis.val.AsciiDocValueTypeProvider")
-class AsciiDocValueTypeProvider implements ValueTypeProvider {
-    @Override
-    public Collection<ValueTypeDefinition> definitions() {
-        return Collections.singletonList(
-                ValueTypeDefinition.of(AsciiDoc.class, ValueType.STRING));
+    @Component
+    @Named("isis.val.AsciiDocValueTypeProvider")
+    class AsciiDocValueTypeProvider implements ValueTypeProvider {
+        @Override
+        public Collection<ValueTypeDefinition> definitions() {
+            return Collections.singletonList(
+                    ValueTypeDefinition.of(AsciiDoc.class, ValueType.STRING));
+        }
     }
+
 }
diff --git a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemanticsProvider.java b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemantics.java
similarity index 75%
rename from valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemanticsProvider.java
rename to valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemantics.java
index 66523af..c775999 100644
--- a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemanticsProvider.java
+++ b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemantics.java
@@ -23,27 +23,28 @@ import javax.inject.Named;
 import org.springframework.stereotype.Component;
 
 import org.apache.isis.applib.adapters.AbstractValueSemanticsProvider;
-import org.apache.isis.applib.adapters.DefaultsProvider;
-import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.adapters.Renderer;
 import org.apache.isis.applib.adapters.ValueSemanticsProvider;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
 @Component
-@Named("isis.val.AsciiDocValueSemanticsProvider")
-public class AsciiDocValueSemanticsProvider
+@Named("isis.val.AsciiDocValueSemantics")
+public class AsciiDocValueSemantics
 extends AbstractValueSemanticsProvider<AsciiDoc>
 implements
-    //EncoderDecoder<AsciiDoc>,
     Renderer<AsciiDoc>,
     Parser<AsciiDoc> {
 
+    // -- RENDERER
+
     @Override
     public String presentationValue(final ValueSemanticsProvider.Context context, final AsciiDoc adoc) {
-        return adoc != null? adoc.asHtml(): "[null]";
+        return render(adoc, AsciiDoc::asHtml);
     }
 
+    // -- PARSER
+
     @Override
     public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final AsciiDoc adoc) {
         return adoc!=null ? adoc.getAdoc() : null;
@@ -59,26 +60,6 @@ implements
         return 0;
     }
 
-    @Override
-    public String toString() {
-        return this.getClass().getSimpleName();
-    }
-
-    @Override
-    public Parser<AsciiDoc> getParser() {
-        return this;
-    }
-
-    @Override
-    public EncoderDecoder<AsciiDoc> getEncoderDecoder() {
-        return null;
-    }
-
-    @Override
-    public DefaultsProvider<AsciiDoc> getDefaultsProvider() {
-        return null;
-    }
-
     public static void loadJRuby() {
         Converter.getAsciidoctor();
     }
diff --git a/valuetypes/asciidoc/ui/vaadin/pom.xml b/valuetypes/asciidoc/ui/vaadin/pom.xml
index fe94201..aaa1d24 100644
--- a/valuetypes/asciidoc/ui/vaadin/pom.xml
+++ b/valuetypes/asciidoc/ui/vaadin/pom.xml
@@ -36,6 +36,12 @@
             <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
+        
+        <dependency>
+			<groupId>org.apache.isis.valuetypes</groupId>
+            <artifactId>isis-valuetypes-prism-vaadin</artifactId>
+            <version>${project.version}</version>
+        </dependency>
 
 	</dependencies>
 
diff --git a/valuetypes/asciidoc/ui/vaadin/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/vaa/components/AsciiDocFieldVaa.java b/valuetypes/asciidoc/ui/vaadin/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/vaa/components/AsciiDocFieldVaa.java
index cbf6c9a..61370a6 100644
--- a/valuetypes/asciidoc/ui/vaadin/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/vaa/components/AsciiDocFieldVaa.java
+++ b/valuetypes/asciidoc/ui/vaadin/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/vaa/components/AsciiDocFieldVaa.java
@@ -26,6 +26,7 @@ import com.vaadin.flow.component.html.Div;
 
 import org.apache.isis.incubator.viewer.vaadin.ui.util.LocalResourceUtil;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
+import org.apache.isis.valuetypes.prism.vaa.PrismResourcesVaa;
 
 public class AsciiDocFieldVaa extends CustomField<AsciiDoc> {
 
@@ -34,13 +35,13 @@ public class AsciiDocFieldVaa extends CustomField<AsciiDoc> {
     private final Div div = new Div();
     private AsciiDoc markup;
 
-    public AsciiDocFieldVaa(String label) {
+    public AsciiDocFieldVaa(final String label) {
         super();
         setLabel(label);
         add(div);
 
-        LocalResourceUtil.addStyleSheet(PrismResources.getCssResourceReference());
-        LocalResourceUtil.executeJavaScript(PrismResources::readJsResource);
+        LocalResourceUtil.addStyleSheet(PrismResourcesVaa.getCssResourceReference());
+        LocalResourceUtil.executeJavaScript(PrismResourcesVaa::readJsResource);
     }
 
     @Override
@@ -49,7 +50,7 @@ public class AsciiDocFieldVaa extends CustomField<AsciiDoc> {
     }
 
     @Override
-    protected void setPresentationValue(@Nullable AsciiDoc markup) {
+    protected void setPresentationValue(@Nullable final AsciiDoc markup) {
         this.markup = markup;
 
         div.removeAll();
diff --git a/valuetypes/asciidoc/ui/wicket/pom.xml b/valuetypes/asciidoc/ui/wicket/pom.xml
index e396262..7831c34 100644
--- a/valuetypes/asciidoc/ui/wicket/pom.xml
+++ b/valuetypes/asciidoc/ui/wicket/pom.xml
@@ -52,6 +52,12 @@
             <artifactId>isis-viewer-wicket-ui</artifactId>
             <scope>provided</scope>
         </dependency>
+        
+        <dependency>
+			<groupId>org.apache.isis.valuetypes</groupId>
+            <artifactId>isis-valuetypes-prism-wicket</artifactId>
+            <version>${project.version}</version>
+        </dependency>
 
 	</dependencies>
 
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocComponentWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocComponentWkt.java
index b4c13b8..61419a6 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocComponentWkt.java
+++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocComponentWkt.java
@@ -26,7 +26,7 @@ import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.request.resource.ResourceReference;
 
-import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.prism.PrismResources;
+import org.apache.isis.valuetypes.prism.wkt.PrismResourcesWkt;
 import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponent;
 import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponent_reloadJs;
 
@@ -36,27 +36,27 @@ public class AsciiDocComponentWkt extends MarkupComponent {
 
     private static final long serialVersionUID = 1L;
 
-    public AsciiDocComponentWkt(String id, IModel<?> model) {
+    public AsciiDocComponentWkt(final String id, final IModel<?> model) {
         super(id, model);
     }
 
     @Override
-    public void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag) {
+    public void onComponentTagBody(final MarkupStream markupStream, final ComponentTag openTag) {
         val htmlContent = extractHtmlOrElse(getDefaultModelObject(), "" /*fallback*/);
         replaceComponentTagBody(markupStream, openTag,
                 MarkupComponent_reloadJs.decorate(htmlContent, jsRef()));
     }
 
     @Override
-    public void renderHead(IHeaderResponse response) {
+    public void renderHead(final IHeaderResponse response) {
         super.renderHead(response);
 
-        response.render(CssHeaderItem.forReference(PrismResources.getCssResourceReferenceWkt()));
+        response.render(CssHeaderItem.forReference(PrismResourcesWkt.getCssResourceReferenceWkt()));
         response.render(JavaScriptHeaderItem.forReference(jsRef()));
     }
 
     private static final ResourceReference jsRef() {
-        return PrismResources.getJsResourceReferenceWkt();
+        return PrismResourcesWkt.getJsResourceReferenceWkt();
     }
 
 }
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocForXmlComponentWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocForXmlComponentWkt.java
index 937d82f..29a4864 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocForXmlComponentWkt.java
+++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocForXmlComponentWkt.java
@@ -20,6 +20,10 @@ package org.apache.isis.valuetypes.asciidoc.ui.wkt.components;
 
 import org.apache.wicket.model.IModel;
 
+import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
+
+import lombok.val;
+
 public class AsciiDocForXmlComponentWkt extends AsciiDocComponentWkt {
 
     private static final long serialVersionUID = 1L;
@@ -29,13 +33,13 @@ public class AsciiDocForXmlComponentWkt extends AsciiDocComponentWkt {
         setEnabled(false);
     }
 
-//    /**
-//     * for convenience of subtypes.
-//     * @param xml
-//     */
-//    protected final String asHtml(String xml) {
-//        val adoc = "[source,xml]\n----\n" + xml + "\n----";
-//        return AsciiDoc.valueOf(adoc).asHtml();
-//    }
+    /**
+     * for convenience of subtypes.
+     * @param xml
+     */
+    protected final String asHtml(final String xml) {
+        val adoc = "[source,xml]\n----\n" + xml + "\n----";
+        return AsciiDoc.valueOf(adoc).asHtml();
+    }
 
 }
diff --git a/valuetypes/markdown/applib/src/main/java/org/apache/isis/valuetypes/markdown/applib/jaxb/MarkdownJaxbAdapter.java b/valuetypes/markdown/applib/src/main/java/org/apache/isis/valuetypes/markdown/applib/jaxb/MarkdownJaxbAdapter.java
index ae3b4df..0bd4e6c 100644
--- a/valuetypes/markdown/applib/src/main/java/org/apache/isis/valuetypes/markdown/applib/jaxb/MarkdownJaxbAdapter.java
+++ b/valuetypes/markdown/applib/src/main/java/org/apache/isis/valuetypes/markdown/applib/jaxb/MarkdownJaxbAdapter.java
@@ -46,7 +46,7 @@ public final class MarkdownJaxbAdapter extends XmlAdapter<String, Markdown> {
             return null;
         }
         final String markdown = _Strings.ofBytes(decoder.decode(v), StandardCharsets.UTF_8);
-        return Markdown.valueOfMarkdown(markdown);
+        return Markdown.valueOf(markdown);
     }
 
     @Override
diff --git a/valuetypes/markdown/applib/src/main/java/org/apache/isis/valuetypes/markdown/applib/value/Markdown.java b/valuetypes/markdown/applib/src/main/java/org/apache/isis/valuetypes/markdown/applib/value/Markdown.java
index 53dd7d7..be1949a 100644
--- a/valuetypes/markdown/applib/src/main/java/org/apache/isis/valuetypes/markdown/applib/value/Markdown.java
+++ b/valuetypes/markdown/applib/src/main/java/org/apache/isis/valuetypes/markdown/applib/value/Markdown.java
@@ -19,6 +19,7 @@
 package org.apache.isis.valuetypes.markdown.applib.value;
 
 import java.io.Serializable;
+import java.util.Objects;
 
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
@@ -26,25 +27,34 @@ import org.apache.isis.applib.IsisModuleApplib;
 import org.apache.isis.applib.value.HasHtml;
 import org.apache.isis.valuetypes.markdown.applib.jaxb.MarkdownJaxbAdapter;
 
+import lombok.AccessLevel;
+import lombok.EqualsAndHashCode;
 import lombok.Getter;
+import lombok.experimental.Accessors;
 
 /**
  * Immutable value type holding pre-rendered HTML.
  *
+ * @since 2.0 {@index}
  */
 @org.apache.isis.applib.annotation.Value(
         logicalTypeName = IsisModuleApplib.NAMESPACE + ".value.Markdown")
+@EqualsAndHashCode
 @XmlJavaTypeAdapter(MarkdownJaxbAdapter.class)  // for JAXB view model support
 public class Markdown implements HasHtml, Serializable {
 
     private static final long serialVersionUID = 1L;
 
-    public static Markdown valueOfMarkdown(final String markdown) {
+    public static Markdown valueOf(final String markdown) {
         return new Markdown(markdown);
     }
 
-    @Getter
-    private final String markdown;
+    @Getter private final String markdown;
+
+    @EqualsAndHashCode.Exclude
+    @Getter(lazy = true, value = AccessLevel.PRIVATE)
+    @Accessors(fluent = true)
+    private final String html = Converter.mdToHtml(getMarkdown());
 
     public Markdown() {
         this(null);
@@ -56,32 +66,16 @@ public class Markdown implements HasHtml, Serializable {
 
     @Override
     public String asHtml() {
-        return Converter.mdToHtml(markdown);
+        return html();
     }
 
     public boolean isEqualTo(final Markdown other) {
-        return other != null && this.markdown.equals(other.markdown);
-    }
-
-    @Override
-    public boolean equals(final Object obj) {
-        if (this == obj)
-            return true;
-        if (obj == null)
-            return false;
-        if (getClass() != obj.getClass())
-            return false;
-        return isEqualTo((Markdown) obj);
-    }
-
-    @Override
-    public int hashCode() {
-        return markdown.hashCode();
+        return Objects.equals(this, other);
     }
 
     @Override
     public String toString() {
-        return "Markdown[length="+ markdown.length()+", html="+ markdown +"]";
+        return "Markdown[length=" + markdown.length() + "]";
     }
 
 }
diff --git a/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/IsisModuleValMarkdownMetaModel.java b/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/IsisModuleValMarkdownMetaModel.java
index f85bba1..5da6620 100644
--- a/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/IsisModuleValMarkdownMetaModel.java
+++ b/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/IsisModuleValMarkdownMetaModel.java
@@ -33,41 +33,41 @@ import org.apache.isis.core.metamodel.valuetypes.ValueTypeDefinition;
 import org.apache.isis.core.metamodel.valuetypes.ValueTypeProvider;
 import org.apache.isis.schema.common.v2.ValueType;
 import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
-import org.apache.isis.valuetypes.markdown.metamodel.facets.MarkdownValueSemanticsProvider;
+import org.apache.isis.valuetypes.markdown.metamodel.semantics.MarkdownValueSemantics;
 
 /**
  * @since 2.0 {@index}
  */
 @Configuration
 @Import({
-        MarkdownMetaModelRefiner.class,
-        MarkdownValueTypeProvider.class,
+        IsisModuleValMarkdownMetaModel.MarkdownMetaModelRefiner.class,
+        IsisModuleValMarkdownMetaModel.MarkdownValueTypeProvider.class,
 
-        MarkdownValueSemanticsProvider.class,
+        MarkdownValueSemantics.class,
 
 })
 public class IsisModuleValMarkdownMetaModel {
 
-}
-
-@Component
-@Named("isis.val.MarkdownMetaModelRefiner")
-class MarkdownMetaModelRefiner implements MetaModelRefiner {
-    @Override
-    public void refineProgrammingModel(final ProgrammingModel programmingModel) {
-//blueprint
-//        programmingModel.addFactory(
-//                ProgrammingModel.FacetProcessingOrder.G1_VALUE_TYPES,
-//                MarkdownValueFacetUsingSemanticsProviderFactory.class);
+    @Component
+    @Named("isis.val.MarkdownMetaModelRefiner")
+    class MarkdownMetaModelRefiner implements MetaModelRefiner {
+        @Override
+        public void refineProgrammingModel(final ProgrammingModel programmingModel) {
+    //blueprint
+    //        programmingModel.addFactory(
+    //                ProgrammingModel.FacetProcessingOrder.G1_VALUE_TYPES,
+    //                MarkdownValueFacetUsingSemanticsProviderFactory.class);
+        }
     }
-}
 
-@Component
-@Named("isis.val.MarkdownValueTypeProvider")
-class MarkdownValueTypeProvider implements ValueTypeProvider {
-    @Override
-    public Collection<ValueTypeDefinition> definitions() {
-        return Collections.singletonList(
-                ValueTypeDefinition.of(Markdown.class, ValueType.STRING));
+    @Component
+    @Named("isis.val.MarkdownValueTypeProvider")
+    class MarkdownValueTypeProvider implements ValueTypeProvider {
+        @Override
+        public Collection<ValueTypeDefinition> definitions() {
+            return Collections.singletonList(
+                    ValueTypeDefinition.of(Markdown.class, ValueType.STRING));
+        }
     }
-}
+
+}
\ No newline at end of file
diff --git a/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/facets/MarkdownValueFacet.java b/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/facets/MarkdownValueFacet.java
deleted file mode 100644
index abb9df8..0000000
--- a/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/facets/MarkdownValueFacet.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.valuetypes.markdown.metamodel.facets;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-
-public interface MarkdownValueFacet extends Facet {
-
-    String markdownValue(ManagedObject object);
-    ManagedObject createValue(ManagedObject object, String html);
-
-}
diff --git a/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/facets/MarkdownValueSemanticsProvider.java b/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/facets/MarkdownValueSemanticsProvider.java
deleted file mode 100644
index 19bff4a..0000000
--- a/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/facets/MarkdownValueSemanticsProvider.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.valuetypes.markdown.metamodel.facets;
-
-import org.apache.isis.applib.adapters.EncoderDecoder;
-import org.apache.isis.applib.adapters.ValueSemanticsProvider;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
-
-public class MarkdownValueSemanticsProvider
-extends ValueSemanticsProviderAndFacetAbstract<Markdown>
-implements MarkdownValueFacet {
-
-    private static final int TYPICAL_LENGTH = 0;
-
-    private static Class<? extends Facet> type() {
-        return MarkdownValueFacet.class;
-    }
-
-    private static final Markdown DEFAULT_VALUE = null;
-
-    public MarkdownValueSemanticsProvider(final FacetHolder holder) {
-        super(type(), holder, Markdown.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.NOT_HONOURED, DEFAULT_VALUE);
-    }
-
-
-    @Override
-    protected Markdown doParse(final ValueSemanticsProvider.Context context, final String html) {
-        return fromEncodedString(html);
-    }
-
-    @Override
-    public String titleString(final Object object) {
-        return object != null? ((Markdown)object).asHtml(): "[null]";
-    }
-
-    @Override
-    public String toEncodedString(final Markdown markdown) {
-        return markdown.getMarkdown();
-    }
-
-    @Override
-    public Markdown fromEncodedString(final String markdown) {
-        return new Markdown(markdown);
-    }
-
-    // -- MarkdownValueFacet
-
-    @Override
-    public String markdownValue(final ManagedObject object) {
-        if (object == null) {
-            return "";
-        }
-        final Markdown markdown = (Markdown) object.getPojo();
-        return markdown.getMarkdown();
-    }
-
-    @Override
-    public ManagedObject createValue(final ManagedObject object, final String md) {
-        final Markdown markdown = Markdown.valueOfMarkdown(md);
-        return getObjectManager().adapt(markdown);
-    }
-
-}
diff --git a/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/semantics/MarkdownValueSemantics.java b/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/semantics/MarkdownValueSemantics.java
new file mode 100644
index 0000000..70238e7
--- /dev/null
+++ b/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/semantics/MarkdownValueSemantics.java
@@ -0,0 +1,88 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.valuetypes.markdown.metamodel.semantics;
+
+import javax.inject.Named;
+
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.applib.adapters.AbstractValueSemanticsProvider;
+import org.apache.isis.applib.adapters.EncoderDecoder;
+import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.Renderer;
+import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
+
+@Component
+@Named("isis.val.MarkdownValueSemantics")
+public class MarkdownValueSemantics
+extends AbstractValueSemanticsProvider<Markdown>
+implements
+    EncoderDecoder<Markdown>,
+    Parser<Markdown>,
+    Renderer<Markdown> {
+
+    // -- ENCODER DECODER
+
+    @Override
+    public String toEncodedString(final Markdown markdown) {
+        if(markdown==null) {
+            return null;
+        }
+        return markdown.getMarkdown();
+    }
+
+    @Override
+    public Markdown fromEncodedString(final String data) {
+        if(data==null) {
+            return null;
+        }
+        return Markdown.valueOf(data);
+    }
+
+    // -- RENDERER
+
+    @Override
+    public String presentationValue(final Context context, final Markdown value) {
+        return render(value, Markdown::asHtml);
+    }
+
+    // -- PARSER
+
+    @Override
+    public String parseableTextRepresentation(final Context context, final Markdown value) {
+        if(value==null) {
+            return null;
+        }
+        return value.getMarkdown();
+    }
+
+    @Override
+    public Markdown parseTextRepresentation(final Context context, final String text) {
+        if(text==null) {
+            return null;
+        }
+        return Markdown.valueOf(text);
+    }
+
+    @Override
+    public int typicalLength() {
+        return 0;
+    }
+
+}
diff --git a/valuetypes/markdown/persistence/jdo/src/main/java/org/apache/isis/valuetypes/markdown/persistence/jdo/dn5/converters/IsisMarkdownConverter.java b/valuetypes/markdown/persistence/jdo/src/main/java/org/apache/isis/valuetypes/markdown/persistence/jdo/dn5/converters/IsisMarkdownConverter.java
index d6a6f2c..7798477 100644
--- a/valuetypes/markdown/persistence/jdo/src/main/java/org/apache/isis/valuetypes/markdown/persistence/jdo/dn5/converters/IsisMarkdownConverter.java
+++ b/valuetypes/markdown/persistence/jdo/src/main/java/org/apache/isis/valuetypes/markdown/persistence/jdo/dn5/converters/IsisMarkdownConverter.java
@@ -39,7 +39,7 @@ public class IsisMarkdownConverter implements TypeConverter<Markdown, String>{
     @Override
     public Markdown toMemberType(final String datastoreValue) {
         return datastoreValue != null
-                ? Markdown.valueOfMarkdown(datastoreValue)
+                ? Markdown.valueOf(datastoreValue)
                 : null;
     }
 
diff --git a/valuetypes/markdown/persistence/jpa/src/main/java/org/apache/isis/valuetypes/markdown/persistence/jpa/converters/IsisMarkdownConverter.java b/valuetypes/markdown/persistence/jpa/src/main/java/org/apache/isis/valuetypes/markdown/persistence/jpa/converters/IsisMarkdownConverter.java
index f812c39..dac34ee 100644
--- a/valuetypes/markdown/persistence/jpa/src/main/java/org/apache/isis/valuetypes/markdown/persistence/jpa/converters/IsisMarkdownConverter.java
+++ b/valuetypes/markdown/persistence/jpa/src/main/java/org/apache/isis/valuetypes/markdown/persistence/jpa/converters/IsisMarkdownConverter.java
@@ -39,7 +39,7 @@ public class IsisMarkdownConverter implements AttributeConverter<Markdown, Strin
     @Override
     public Markdown convertToEntityAttribute(final String datastoreValue) {
         return datastoreValue != null
-                ? Markdown.valueOfMarkdown(datastoreValue)
+                ? Markdown.valueOf(datastoreValue)
                 : null;
     }
 
diff --git a/valuetypes/markdown/ui/wicket/pom.xml b/valuetypes/markdown/ui/wicket/pom.xml
index c180c2d..9ec1e3f 100644
--- a/valuetypes/markdown/ui/wicket/pom.xml
+++ b/valuetypes/markdown/ui/wicket/pom.xml
@@ -51,6 +51,12 @@
 			<groupId>org.apache.isis.viewer</groupId>
 			<artifactId>isis-viewer-wicket-ui</artifactId>
 		</dependency>
+		
+        <dependency>
+			<groupId>org.apache.isis.valuetypes</groupId>
+            <artifactId>isis-valuetypes-prism-wicket</artifactId>
+            <version>${project.version}</version>
+        </dependency>
 
 	</dependencies>
 
diff --git a/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/IsisModuleValMarkdownUiWkt.java b/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/IsisModuleValMarkdownUiWkt.java
index 94a63c9..d3a50b9 100644
--- a/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/IsisModuleValMarkdownUiWkt.java
+++ b/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/IsisModuleValMarkdownUiWkt.java
@@ -22,7 +22,7 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
 import org.apache.isis.valuetypes.markdown.applib.IsisModuleValMarkdownApplib;
-import org.apache.isis.valuetypes.markdown.ui.wkt.components.MarkdownPanelFactoriesForWicket;
+import org.apache.isis.valuetypes.markdown.ui.wkt.components.MarkdownPanelFactoriesWkt;
 
 /**
  * @since 2.0 {@index}
@@ -30,8 +30,9 @@ import org.apache.isis.valuetypes.markdown.ui.wkt.components.MarkdownPanelFactor
 @Configuration
 @Import({
     IsisModuleValMarkdownApplib.class,
-    MarkdownPanelFactoriesForWicket.Parented.class,
-    MarkdownPanelFactoriesForWicket.Standalone.class,
+    MarkdownPanelFactoriesWkt.Parented.class,
+    MarkdownPanelFactoriesWkt.Standalone.class,
 })
 public class IsisModuleValMarkdownUiWkt {
+
 }
diff --git a/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownComponent.java b/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownComponentWkt.java
similarity index 67%
rename from valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownComponent.java
rename to valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownComponentWkt.java
index 781df45..8715899 100644
--- a/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownComponent.java
+++ b/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownComponentWkt.java
@@ -24,44 +24,39 @@ import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.model.IModel;
-import org.apache.wicket.request.resource.CssResourceReference;
-import org.apache.wicket.request.resource.JavaScriptResourceReference;
+import org.apache.wicket.request.resource.ResourceReference;
 
-import org.apache.isis.commons.internal.base._Lazy;
+import org.apache.isis.valuetypes.prism.wkt.PrismResourcesWkt;
 import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponent;
 import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponent_reloadJs;
 
 import lombok.val;
 
-public class MarkdownComponent extends MarkupComponent {
+public class MarkdownComponentWkt extends MarkupComponent {
 
     private static final long serialVersionUID = 1L;
 
-    public MarkdownComponent(String id, IModel<?> model) {
+    public MarkdownComponentWkt(final String id, final IModel<?> model) {
         super(id, model);
     }
 
     @Override
-    public void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag) {
+    public void onComponentTagBody(final MarkupStream markupStream, final ComponentTag openTag) {
         val htmlContent = extractHtmlOrElse(getDefaultModelObject(), "" /*fallback*/);
         replaceComponentTagBody(markupStream, openTag,
-                MarkupComponent_reloadJs.decorate(htmlContent, jsRef.get()));
+                MarkupComponent_reloadJs.decorate(htmlContent, jsRef()));
     }
 
     @Override
-    public void renderHead(IHeaderResponse response) {
+    public void renderHead(final IHeaderResponse response) {
         super.renderHead(response);
 
-        response.render(CssHeaderItem.forReference(
-                new CssResourceReference(MarkdownComponent.class, "css/prism.css")));
-
-        response.render(JavaScriptHeaderItem.forReference(jsRef.get()));
-
+        response.render(CssHeaderItem.forReference(PrismResourcesWkt.getCssResourceReferenceWkt()));
+        response.render(JavaScriptHeaderItem.forReference(jsRef()));
     }
 
-    // -- HELPER
-
-    private static final _Lazy<JavaScriptResourceReference> jsRef = _Lazy.threadSafe(()->
-    new JavaScriptResourceReference(MarkdownComponent.class, "js/prism1.14.js"));
+    private static final ResourceReference jsRef() {
+        return PrismResourcesWkt.getJsResourceReferenceWkt();
+    }
 
 }
diff --git a/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownPanelFactoriesForWicket.java b/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownPanelFactoriesWkt.java
similarity index 84%
rename from valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownPanelFactoriesForWicket.java
rename to valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownPanelFactoriesWkt.java
index 570a491..ca69bda 100644
--- a/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownPanelFactoriesForWicket.java
+++ b/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownPanelFactoriesWkt.java
@@ -18,7 +18,8 @@
  */
 package org.apache.isis.valuetypes.markdown.ui.wkt.components;
 
-import org.apache.isis.applib.annotation.Programmatic;
+import org.springframework.stereotype.Component;
+
 import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponentFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupPanelFactories;
@@ -31,11 +32,11 @@ import lombok.val;
  * the {@link Markdown} value-type which requires client-side java-script to be
  * executed to enable syntax highlighting
  */
-public class MarkdownPanelFactoriesForWicket {
+public class MarkdownPanelFactoriesWkt {
 
     // -- PARENTED
 
-    @Programmatic
+    @Component
     public static class Parented extends MarkupPanelFactories.ParentedAbstract {
         private static final long serialVersionUID = 1L;
 
@@ -46,7 +47,7 @@ public class MarkdownPanelFactoriesForWicket {
         @Override
         protected MarkupComponentFactory getMarkupComponentFactory() {
             return (id, model) -> {
-                val markupComponent = new org.apache.isis.valuetypes.markdown.ui.wkt.components.MarkdownComponent(id, model);
+                val markupComponent = new MarkdownComponentWkt(id, model);
                 markupComponent.setEnabled(false);
                 return markupComponent;
             };
@@ -57,7 +58,7 @@ public class MarkdownPanelFactoriesForWicket {
 
     // -- STANDALONE
 
-    @Programmatic
+    @Component
     public static class Standalone extends MarkupPanelFactories.StandaloneAbstract {
         private static final long serialVersionUID = 1L;
 
@@ -67,10 +68,7 @@ public class MarkdownPanelFactoriesForWicket {
 
         @Override
         protected MarkupComponentFactory getMarkupComponentFactory() {
-            return (id, model) -> {
-                val markupComponent = new MarkdownComponent(id, model);
-                return markupComponent;
-            };
+            return MarkdownComponentWkt::new;
         }
 
     }
diff --git a/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/css/prism.css b/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/css/prism.css
deleted file mode 100644
index 2a760d2..0000000
--- a/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/css/prism.css
+++ /dev/null
@@ -1,150 +0,0 @@
-/* PrismJS 1.14.0
-http://prismjs.com/download.html#themes=prism-solarizedlight&languages=markup+css+clike+javascript+java */
-/*
- Solarized Color Schemes originally by Ethan Schoonover
- http://ethanschoonover.com/solarized
-
- Ported for PrismJS by Hector Matos
- Website: https://krakendev.io
- Twitter Handle: https://twitter.com/allonsykraken)
-*/
-
-/*
-SOLARIZED HEX
---------- -------
-base03    #002b36
-base02    #073642
-base01    #586e75
-base00    #657b83
-base0     #839496
-base1     #93a1a1
-base2     #eee8d5
-base3     #fdf6e3
-yellow    #b58900
-orange    #cb4b16
-red       #dc322f
-magenta   #d33682
-violet    #6c71c4
-blue      #268bd2
-cyan      #2aa198
-green     #859900
-*/
-
-code[class*="language-"],
-pre[class*="language-"] {
-	color: #657b83; /* base00 */
-	font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
-	text-align: left;
-	white-space: pre;
-	word-spacing: normal;
-	word-break: normal;
-	word-wrap: normal;
-
-	line-height: 1.5;
-
-	-moz-tab-size: 4;
-	-o-tab-size: 4;
-	tab-size: 4;
-
-	-webkit-hyphens: none;
-	-moz-hyphens: none;
-	-ms-hyphens: none;
-	hyphens: none;
-}
-
-pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
-code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
-	background: #073642; /* base02 */
-}
-
-pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
-code[class*="language-"]::selection, code[class*="language-"] ::selection {
-	background: #073642; /* base02 */
-}
-
-/* Code blocks */
-pre[class*="language-"] {
-	padding: 1em;
-	margin: .5em 0;
-	overflow: auto;
-	border-radius: 0.3em;
-}
-
-:not(pre) > code[class*="language-"],
-pre[class*="language-"] {
-	background-color: #fdf6e3; /* base3 */
-}
-
-/* Inline code */
-:not(pre) > code[class*="language-"] {
-	padding: .1em;
-	border-radius: .3em;
-}
-
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
-	color: #93a1a1; /* base1 */
-}
-
-.token.punctuation {
-	color: #586e75; /* base01 */
-}
-
-.namespace {
-	opacity: .7;
-}
-
-.token.property,
-.token.tag,
-.token.boolean,
-.token.number,
-.token.constant,
-.token.symbol,
-.token.deleted {
-	color: #268bd2; /* blue */
-}
-
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.builtin,
-.token.url,
-.token.inserted {
-	color: #2aa198; /* cyan */
-}
-
-.token.entity {
-	color: #657b83; /* base00 */
-	background: #eee8d5; /* base2 */
-}
-
-.token.atrule,
-.token.attr-value,
-.token.keyword {
-	color: #859900; /* green */
-}
-
-.token.function {
-	color: #b58900; /* yellow */
-}
-
-.token.regex,
-.token.important,
-.token.variable {
-	color: #cb4b16; /* orange */
-}
-
-.token.important,
-.token.bold {
-	font-weight: bold;
-}
-.token.italic {
-	font-style: italic;
-}
-
-.token.entity {
-	cursor: help;
-}
diff --git a/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/js/prism1.14.js b/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/js/prism1.14.js
deleted file mode 100644
index 2d22f87..0000000
--- a/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/js/prism1.14.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/* PrismJS 1.14.0
-http://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+java */
-var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-([\w-]+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,disableWorkerMessageHandler:_self.Prism&&_self.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&amp;").replace(/</ [...]
-Prism.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:/<!DOCTYPE[\s\S]+?>/i,cdata:/<!\[CDATA\[[\s\S]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehin [...]
-Prism.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.languages [...]
-Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|conti [...]
-Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+ [...]
-Prism.languages.java=Prism.languages.extend("clike",{keyword:/\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp-]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d [...]
\ No newline at end of file
diff --git a/valuetypes/pom.xml b/valuetypes/pom.xml
index 994c42b..dc2664b 100644
--- a/valuetypes/pom.xml
+++ b/valuetypes/pom.xml
@@ -160,6 +160,7 @@
 	</dependencies>
 
 	<modules>
+		<module>prism</module>
 		<module>jodatime</module>
 		<module>asciidoc</module>
 		<module>markdown</module>
diff --git a/valuetypes/asciidoc/ui/vaadin/pom.xml b/valuetypes/prism/pom.xml
similarity index 63%
copy from valuetypes/asciidoc/ui/vaadin/pom.xml
copy to valuetypes/prism/pom.xml
index fe94201..e42862b 100644
--- a/valuetypes/asciidoc/ui/vaadin/pom.xml
+++ b/valuetypes/prism/pom.xml
@@ -16,27 +16,20 @@
 
 	<parent>
 		<groupId>org.apache.isis.valuetypes</groupId>
-		<artifactId>isis-valuetypes-asciidoc-ui</artifactId>
+		<artifactId>isis-valuetypes</artifactId>
 		<version>2.0.0-SNAPSHOT</version>
 	</parent>
 
-	<artifactId>isis-valuetypes-asciidoc-ui-vaa</artifactId>
-	<name>Apache Isis Val - Asciidoctor (ui vaadin)</name>
+	<artifactId>isis-valuetypes-prism</artifactId>
+	<name>Apache Isis Val - Prism (Parent)</name>
+	<description>Client Side Syntax Highlighting</description>
 
-	<properties>
-		<jar-plugin.automaticModuleName>org.apache.isis.valuetypes.asciidoc.ui.vaa</jar-plugin.automaticModuleName>
-		<git-plugin.propertiesDir>org/apache/isis/valuetypes/asciidoc/ui/vaa</git-plugin.propertiesDir>
-	</properties>
-
-	<dependencies>
+	<packaging>pom</packaging>
 	
-        <dependency>
-			<groupId>org.apache.isis.incubator.viewer</groupId>
-            <artifactId>isis-viewer-vaadin-ui</artifactId>
-            <version>${project.version}</version>
-            <scope>provided</scope>
-        </dependency>
-
-	</dependencies>
+	<modules>
+		<module>res</module>
+		<module>wkt</module>
+<!-- 		<module>vaa</module> incubator -->
+	</modules>
 
 </project>
diff --git a/valuetypes/asciidoc/ui/vaadin/pom.xml b/valuetypes/prism/res/pom.xml
similarity index 64%
copy from valuetypes/asciidoc/ui/vaadin/pom.xml
copy to valuetypes/prism/res/pom.xml
index fe94201..77eb268 100644
--- a/valuetypes/asciidoc/ui/vaadin/pom.xml
+++ b/valuetypes/prism/res/pom.xml
@@ -16,27 +16,16 @@
 
 	<parent>
 		<groupId>org.apache.isis.valuetypes</groupId>
-		<artifactId>isis-valuetypes-asciidoc-ui</artifactId>
+		<artifactId>isis-valuetypes-prism</artifactId>
 		<version>2.0.0-SNAPSHOT</version>
 	</parent>
 
-	<artifactId>isis-valuetypes-asciidoc-ui-vaa</artifactId>
-	<name>Apache Isis Val - Asciidoctor (ui vaadin)</name>
+	<artifactId>isis-valuetypes-prism-resources</artifactId>
+	<name>Apache Isis Val - Prism (resources)</name>
 
 	<properties>
-		<jar-plugin.automaticModuleName>org.apache.isis.valuetypes.asciidoc.ui.vaa</jar-plugin.automaticModuleName>
-		<git-plugin.propertiesDir>org/apache/isis/valuetypes/asciidoc/ui/vaa</git-plugin.propertiesDir>
+		<jar-plugin.automaticModuleName>org.apache.isis.valuetypes.prism.resources</jar-plugin.automaticModuleName>
+		<git-plugin.propertiesDir>org/apache/isis/valuetypes/prism/resources</git-plugin.propertiesDir>
 	</properties>
 
-	<dependencies>
-	
-        <dependency>
-			<groupId>org.apache.isis.incubator.viewer</groupId>
-            <artifactId>isis-viewer-vaadin-ui</artifactId>
-            <version>${project.version}</version>
-            <scope>provided</scope>
-        </dependency>
-
-	</dependencies>
-
 </project>
diff --git a/valuetypes/asciidoc/applib/src/main/java/org/apache/isis/valuetypes/asciidoc/applib/ui/Prism.java b/valuetypes/prism/res/src/main/java/org/apache/isis/valuetypes/prism/Prism.java
similarity index 95%
rename from valuetypes/asciidoc/applib/src/main/java/org/apache/isis/valuetypes/asciidoc/applib/ui/Prism.java
rename to valuetypes/prism/res/src/main/java/org/apache/isis/valuetypes/prism/Prism.java
index f6642b0..954475d 100644
--- a/valuetypes/asciidoc/applib/src/main/java/org/apache/isis/valuetypes/asciidoc/applib/ui/Prism.java
+++ b/valuetypes/prism/res/src/main/java/org/apache/isis/valuetypes/prism/Prism.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.valuetypes.asciidoc.applib.ui;
+package org.apache.isis.valuetypes.prism;
 
 import lombok.RequiredArgsConstructor;
 
diff --git a/valuetypes/asciidoc/ui/vaadin/src/main/resources/static/prism/css/prism1.20-default.css b/valuetypes/prism/res/src/main/resources/static/prism/css/prism1.20-default.css
similarity index 100%
rename from valuetypes/asciidoc/ui/vaadin/src/main/resources/static/prism/css/prism1.20-default.css
rename to valuetypes/prism/res/src/main/resources/static/prism/css/prism1.20-default.css
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/prism/css/prism1.24.1-coy.css b/valuetypes/prism/res/src/main/resources/static/prism/css/prism1.24.1-coy.css
similarity index 100%
rename from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/prism/css/prism1.24.1-coy.css
rename to valuetypes/prism/res/src/main/resources/static/prism/css/prism1.24.1-coy.css
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/prism/css/prism1.24.1-default.css b/valuetypes/prism/res/src/main/resources/static/prism/css/prism1.24.1-default.css
similarity index 100%
rename from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/prism/css/prism1.24.1-default.css
rename to valuetypes/prism/res/src/main/resources/static/prism/css/prism1.24.1-default.css
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/prism/js/prism1.20.js b/valuetypes/prism/res/src/main/resources/static/prism/js/prism1.20.js
similarity index 100%
rename from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/prism/js/prism1.20.js
rename to valuetypes/prism/res/src/main/resources/static/prism/js/prism1.20.js
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/prism/js/prism1.24.1.js b/valuetypes/prism/res/src/main/resources/static/prism/js/prism1.24.1.js
similarity index 100%
rename from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/prism/js/prism1.24.1.js
rename to valuetypes/prism/res/src/main/resources/static/prism/js/prism1.24.1.js
diff --git a/valuetypes/asciidoc/ui/vaadin/pom.xml b/valuetypes/prism/vaa/pom.xml
similarity index 64%
copy from valuetypes/asciidoc/ui/vaadin/pom.xml
copy to valuetypes/prism/vaa/pom.xml
index fe94201..a0ccdb7 100644
--- a/valuetypes/asciidoc/ui/vaadin/pom.xml
+++ b/valuetypes/prism/vaa/pom.xml
@@ -16,27 +16,32 @@
 
 	<parent>
 		<groupId>org.apache.isis.valuetypes</groupId>
-		<artifactId>isis-valuetypes-asciidoc-ui</artifactId>
+		<artifactId>isis-valuetypes-prism</artifactId>
 		<version>2.0.0-SNAPSHOT</version>
 	</parent>
 
-	<artifactId>isis-valuetypes-asciidoc-ui-vaa</artifactId>
-	<name>Apache Isis Val - Asciidoctor (ui vaadin)</name>
+	<artifactId>isis-valuetypes-prism-vaadin</artifactId>
+	<name>Apache Isis Val - Prism (Vaadin)</name>
 
 	<properties>
-		<jar-plugin.automaticModuleName>org.apache.isis.valuetypes.asciidoc.ui.vaa</jar-plugin.automaticModuleName>
-		<git-plugin.propertiesDir>org/apache/isis/valuetypes/asciidoc/ui/vaa</git-plugin.propertiesDir>
+		<jar-plugin.automaticModuleName>org.apache.isis.valuetypes.prism.vaadin</jar-plugin.automaticModuleName>
+		<git-plugin.propertiesDir>org/apache/isis/valuetypes/prism/vaadin</git-plugin.propertiesDir>
 	</properties>
-
-	<dependencies>
 	
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.isis.valuetypes</groupId>
+            <artifactId>isis-valuetypes-prism-resources</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        
         <dependency>
-			<groupId>org.apache.isis.incubator.viewer</groupId>
-            <artifactId>isis-viewer-vaadin-ui</artifactId>
+			<groupId>org.apache.isis.incubator.viewer</groupId>			
+    		<artifactId>isis-viewer-vaadin-ui</artifactId>        
             <version>${project.version}</version>
-            <scope>provided</scope>
+            <optional>true</optional>
         </dependency>
-
+        
 	</dependencies>
 
 </project>
diff --git a/valuetypes/asciidoc/ui/vaadin/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/vaa/components/PrismResources.java b/valuetypes/prism/vaa/src/main/java/org/apache/isis/valuetypes/prism/vaa/PrismResourcesVaa.java
similarity index 86%
rename from valuetypes/asciidoc/ui/vaadin/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/vaa/components/PrismResources.java
rename to valuetypes/prism/vaa/src/main/java/org/apache/isis/valuetypes/prism/vaa/PrismResourcesVaa.java
index e22a8cc..6e0913a 100644
--- a/valuetypes/asciidoc/ui/vaadin/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/vaa/components/PrismResources.java
+++ b/valuetypes/prism/vaa/src/main/java/org/apache/isis/valuetypes/prism/vaa/PrismResourcesVaa.java
@@ -16,18 +16,18 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.valuetypes.asciidoc.ui.vaa.components;
+package org.apache.isis.valuetypes.prism.vaa;
 
 import java.io.InputStream;
 
 import org.apache.isis.incubator.viewer.vaadin.ui.util.LocalResourceUtil;
-import org.apache.isis.valuetypes.asciidoc.applib.ui.Prism;
+import org.apache.isis.valuetypes.prism.Prism;
 
 import lombok.Getter;
 import lombok.experimental.UtilityClass;
 
 @UtilityClass
-public final class PrismResources {
+public final class PrismResourcesVaa {
 
     @Getter(lazy = true) private static final LocalResourceUtil.ResourceDescriptor cssResourceReference =
             //LocalResourceUtil.ResourceDescriptor.webjars("prism/1.16.0/themes/prism.css");
@@ -39,7 +39,7 @@ public final class PrismResources {
             LocalResourceUtil.ResourceDescriptor.staticRoot("prism/" + Prism.VAADIN.jsFile());
 
     public static InputStream readJsResource() {
-        return PrismResources.class.getResourceAsStream("/static/prism/" + Prism.VAADIN.jsFile());
+        return PrismResourcesVaa.class.getResourceAsStream("/static/prism/" + Prism.VAADIN.jsFile());
     }
 
 
diff --git a/valuetypes/prism/wkt/pom.xml b/valuetypes/prism/wkt/pom.xml
new file mode 100644
index 0000000..0a079e4
--- /dev/null
+++ b/valuetypes/prism/wkt/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 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. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.apache.isis.valuetypes</groupId>
+		<artifactId>isis-valuetypes-prism</artifactId>
+		<version>2.0.0-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>isis-valuetypes-prism-wicket</artifactId>
+	<name>Apache Isis Val - Prism (Wicket)</name>
+
+	<properties>
+		<jar-plugin.automaticModuleName>org.apache.isis.valuetypes.prism.wicket</jar-plugin.automaticModuleName>
+		<git-plugin.propertiesDir>org/apache/isis/valuetypes/prism/wicket</git-plugin.propertiesDir>
+	</properties>
+	
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.isis.valuetypes</groupId>
+            <artifactId>isis-valuetypes-prism-resources</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        
+        <!-- wicket-core only, non-transitive -->
+        <dependency>
+            <groupId>org.apache.wicket</groupId>
+            <artifactId>wicket-core</artifactId>
+            <optional>true</optional>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>commons-io</groupId>
+                    <artifactId>commons-io</artifactId>
+                </exclusion>
+                <exclusion>
+                	<groupId>org.apache.wicket</groupId>
+                	<artifactId>wicket-request</artifactId>
+                </exclusion>
+                <exclusion>
+                	<groupId>org.danekja</groupId>
+                	<artifactId>jdk-serializable-functional</artifactId>
+                </exclusion>
+                <exclusion>
+                	<groupId>com.github.openjson</groupId>
+                	<artifactId>openjson</artifactId>
+                </exclusion>
+                <exclusion>
+                	<groupId>org.apache.wicket</groupId>
+                	<artifactId>wicket-util</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        
+	</dependencies>
+
+</project>
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/prism/PrismResources.java b/valuetypes/prism/wkt/src/main/java/org/apache/isis/valuetypes/prism/wkt/PrismResourcesWkt.java
similarity index 82%
rename from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/prism/PrismResources.java
rename to valuetypes/prism/wkt/src/main/java/org/apache/isis/valuetypes/prism/wkt/PrismResourcesWkt.java
index 4e6519c..3a56285 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/prism/PrismResources.java
+++ b/valuetypes/prism/wkt/src/main/java/org/apache/isis/valuetypes/prism/wkt/PrismResourcesWkt.java
@@ -16,28 +16,30 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.prism;
+package org.apache.isis.valuetypes.prism.wkt;
 
 import org.apache.wicket.request.resource.CssResourceReference;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
 import org.apache.wicket.request.resource.ResourceReference;
 
-import org.apache.isis.valuetypes.asciidoc.applib.ui.Prism;
+import org.apache.isis.valuetypes.prism.Prism;
 
 import lombok.Getter;
 import lombok.experimental.UtilityClass;
 
 @UtilityClass
-public final class PrismResources {
+public final class PrismResourcesWkt{
+
+    //TODO convert to ContextRelativeResourceReference(s)
 
     @Getter(lazy = true) private static final ResourceReference cssResourceReferenceWkt =
             //new WebjarsCssResourceReference("prism/1.16.0/themes/prism.css");
-            new CssResourceReference(PrismResources.class,
+            new CssResourceReference(PrismResourcesWkt.class,
                     Prism.WICKET.cssFile());
 
     @Getter(lazy = true) private static final ResourceReference jsResourceReferenceWkt =
             //new WebjarsJavaScriptResourceReference("prism/1.16.0/components/prism-java.min.js");
-            new JavaScriptResourceReference(PrismResources.class,
+            new JavaScriptResourceReference(PrismResourcesWkt.class,
                     Prism.WICKET.jsFile());
 
 }
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/prism/css/prism1.20-default.css b/valuetypes/prism/wkt/src/main/java/org/apache/isis/valuetypes/prism/wkt/css/prism1.20-default.css
similarity index 100%
rename from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/prism/css/prism1.20-default.css
rename to valuetypes/prism/wkt/src/main/java/org/apache/isis/valuetypes/prism/wkt/css/prism1.20-default.css
diff --git a/valuetypes/asciidoc/ui/vaadin/src/main/resources/static/prism/css/prism1.24.1-coy.css b/valuetypes/prism/wkt/src/main/java/org/apache/isis/valuetypes/prism/wkt/css/prism1.24.1-coy.css
similarity index 100%
rename from valuetypes/asciidoc/ui/vaadin/src/main/resources/static/prism/css/prism1.24.1-coy.css
rename to valuetypes/prism/wkt/src/main/java/org/apache/isis/valuetypes/prism/wkt/css/prism1.24.1-coy.css
diff --git a/valuetypes/asciidoc/ui/vaadin/src/main/resources/static/prism/css/prism1.24.1-default.css b/valuetypes/prism/wkt/src/main/java/org/apache/isis/valuetypes/prism/wkt/css/prism1.24.1-default.css
similarity index 100%
rename from valuetypes/asciidoc/ui/vaadin/src/main/resources/static/prism/css/prism1.24.1-default.css
rename to valuetypes/prism/wkt/src/main/java/org/apache/isis/valuetypes/prism/wkt/css/prism1.24.1-default.css
diff --git a/valuetypes/asciidoc/ui/vaadin/src/main/resources/static/prism/js/prism1.20.js b/valuetypes/prism/wkt/src/main/java/org/apache/isis/valuetypes/prism/wkt/js/prism1.20.js
similarity index 100%
rename from valuetypes/asciidoc/ui/vaadin/src/main/resources/static/prism/js/prism1.20.js
rename to valuetypes/prism/wkt/src/main/java/org/apache/isis/valuetypes/prism/wkt/js/prism1.20.js
diff --git a/valuetypes/asciidoc/ui/vaadin/src/main/resources/static/prism/js/prism1.24.1.js b/valuetypes/prism/wkt/src/main/java/org/apache/isis/valuetypes/prism/wkt/js/prism1.24.1.js
similarity index 100%
rename from valuetypes/asciidoc/ui/vaadin/src/main/resources/static/prism/js/prism1.24.1.js
rename to valuetypes/prism/wkt/src/main/java/org/apache/isis/valuetypes/prism/wkt/js/prism1.24.1.js