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/18 14:30:50 UTC

[isis] branch master updated: ISIS-2871: prepare: value semantics should allow to compose rendering by mapping to existing value-types (experimental)

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 c616066  ISIS-2871: prepare: value semantics should allow to compose rendering by mapping to existing value-types (experimental)
c616066 is described below

commit c616066777136307ab376edc5cde06c8388d7acb
Author: andi-huber <ah...@apache.org>
AuthorDate: Sat Sep 18 16:30:37 2021 +0200

    ISIS-2871: prepare: value semantics should allow to compose rendering by
    mapping to existing value-types (experimental)
---
 .../apache/isis/applib/adapters/HtmlRenderer.java  | 27 ---------------
 .../org/apache/isis/applib/adapters/Renderer.java  | 12 +++++--
 .../java/org/apache/isis/applib/value/Markup.java  |  5 +++
 .../title/parser/TitleFacetUsingValueFacet.java    |  6 ++--
 .../facets/object/value/ValueFacetAbstract.java    |  2 +-
 .../ValueSemanticsProviderAndFacetAbstract.java    |  4 +--
 .../valuesemantics/BigDecimalValueSemantics.java   |  2 +-
 .../valuesemantics/BigIntegerValueSemantics.java   |  2 +-
 .../valuesemantics/BlobValueSemantics.java         |  2 +-
 .../valuesemantics/BooleanValueSemantics.java      |  2 +-
 .../valuesemantics/ByteValueSemantics.java         |  2 +-
 .../valuesemantics/ClobValueSemantics.java         |  2 +-
 .../valuesemantics/IntValueSemantics.java          |  2 +-
 .../LocalResourcePathValueSemantics.java           |  2 +-
 .../valuesemantics/LongValueSemantics.java         |  2 +-
 .../valuesemantics/MarkupValueSemantics.java       |  6 ++--
 .../valuesemantics/PasswordValueSemantics.java     |  2 +-
 .../valuesemantics/ShortValueSemantics.java        |  2 +-
 .../valuesemantics/StringValueSemantics.java       |  2 +-
 .../valuesemantics/TreeNodeValueSemantics.java     |  2 +-
 .../valuesemantics/URLValueSemantics.java          |  2 +-
 .../valuesemantics/UUIDValueSemantics.java         |  2 +-
 .../value/CharacterValueSemanticsProviderTest.java |  2 +-
 .../value/DoubleValueSemanticsProviderTest.java    |  4 +--
 .../value/FloatValueSemanticsProviderTest.java     |  2 +-
 .../JavaSqlDateValueSemanticsProviderTest.java     |  2 +-
 .../JavaUtilDateValueSemanticsProviderTest.java    |  2 +-
 .../ValueSemanticsProviderAbstractTestCase.java    |  6 ++--
 .../_infra/resources/AsciiDocReaderService.java    | 39 ----------------------
 .../AsciiDocValueSemanticsWithPreprocessing.java   |  2 +-
 .../jdo/ComplexNumberJdoValueSemantics.java        |  2 +-
 .../jpa/ComplexNumberJpaValueSemantics.java        |  2 +-
 .../ui/components/markup/MarkupFieldFactory.java   | 32 +++++++++---------
 .../semantics/AsciiDocValueSemantics.java          | 12 +++++--
 .../semantics/XmlValueSemanticsAbstract.java       |  5 ++-
 .../semantics/MarkdownValueSemantics.java          | 12 +++++--
 36 files changed, 87 insertions(+), 129 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/adapters/HtmlRenderer.java b/api/applib/src/main/java/org/apache/isis/applib/adapters/HtmlRenderer.java
deleted file mode 100644
index afa72e0..0000000
--- a/api/applib/src/main/java/org/apache/isis/applib/adapters/HtmlRenderer.java
+++ /dev/null
@@ -1,27 +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.applib.adapters;
-
-/**
- * Indicates the underlying {@link Renderer} produces plain HTML.
- * @since 2.x {@index}
- */
-public interface HtmlRenderer<T> extends Renderer<T> {
-
-}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/adapters/Renderer.java b/api/applib/src/main/java/org/apache/isis/applib/adapters/Renderer.java
index e865c6bf..e966c6b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/adapters/Renderer.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/adapters/Renderer.java
@@ -24,8 +24,16 @@ package org.apache.isis.applib.adapters;
 public interface Renderer<T> {
 
     /**
-     * The value in its read-only presentation form. (irreversible)
+     * The value in its read-only summarizing text presentation form. (irreversible)
      */
-    String presentationValue(ValueSemanticsProvider.Context context, T value);
+    String simpleTextRepresentation(ValueSemanticsProvider.Context context, T value);
+
+    /**
+     * The value as read-only presentation form. (irreversible)
+     * @apiNote defaulting to the {@link String} type.
+     */
+    default Object presentationValue(final ValueSemanticsProvider.Context context, final T value) {
+        return simpleTextRepresentation(context, value);
+    }
 
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/value/Markup.java b/api/applib/src/main/java/org/apache/isis/applib/value/Markup.java
index ad1a57e..40e2aef 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/value/Markup.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/value/Markup.java
@@ -61,6 +61,11 @@ public final class Markup implements Serializable {
         return html;
     }
 
+    @Override
+    public String toString() {
+        return "Markup[length="+html.length()+"]";
+    }
+
     public static final class JaxbToStringAdapter extends XmlAdapter<String, Markup> {
 
         /**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingValueFacet.java
index 95ea3b5..eed9a84 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingValueFacet.java
@@ -66,14 +66,14 @@ implements TitleFacet {
             final var featureId = prop.getFeatureIdentifier();
             final Renderer renderer = valueFacet
                     .selectRendererForPropertyElseFallback(prop);
-            return renderer.presentationValue(valueFacet.createValueSemanticsContext(featureId), pojo);
+            return renderer.simpleTextRepresentation(valueFacet.createValueSemanticsContext(featureId), pojo);
         }
         if(renderRequest.getFeature() instanceof ObjectActionParameter) {
             final var param = (ObjectActionParameter)renderRequest.getFeature();
             final var featureId = param.getFeatureIdentifier();
             final Renderer renderer = valueFacet
                     .selectRendererForParameterElseFallback(param);
-            return renderer.presentationValue(valueFacet.createValueSemanticsContext(featureId), pojo);
+            return renderer.simpleTextRepresentation(valueFacet.createValueSemanticsContext(featureId), pojo);
         }
 
         // fall back to default value semantics ...
@@ -82,7 +82,7 @@ implements TitleFacet {
 
         return valueFacet.selectDefaultRenderer()
         .map(renderer->(Renderer) renderer)
-        .map(renderer->renderer.presentationValue(valueFacet.createValueSemanticsContext(featureId), pojo))
+        .map(renderer->renderer.simpleTextRepresentation(valueFacet.createValueSemanticsContext(featureId), pojo))
         .orElseGet(()->String.format("Value type %s has no value semantics for title rendering.",
                 renderRequest.getObject().getSpecification().getCorrespondingClass()));
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
index 1d25f88..011953e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
@@ -212,7 +212,7 @@ implements ValueFacet<T> {
         private final String message;
 
         @Override
-        public String presentationValue(final Context context, final T value) {
+        public String simpleTextRepresentation(final Context context, final T value) {
             return message;
         }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
index 9ecb561..5e8f70e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
@@ -190,7 +190,7 @@ implements
     }
 
     @Override
-    public String presentationValue(final ValueSemanticsProvider.Context context, final T object) {
+    public String simpleTextRepresentation(final ValueSemanticsProvider.Context context, final T object) {
         if (object == null) {
             return "";
         }
@@ -202,7 +202,7 @@ implements
      */
     @Override
     public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final T existing) {
-        return presentationValue(context, existing);
+        return simpleTextRepresentation(context, existing);
     }
 
     protected String titleString(final Format formatter, final T object) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigDecimalValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
index 2ffc291..9e885fc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
@@ -66,7 +66,7 @@ implements
     // -- RENDERER
 
     @Override
-    public String presentationValue(final ValueSemanticsProvider.Context context, final BigDecimal value) {
+    public String simpleTextRepresentation(final ValueSemanticsProvider.Context context, final BigDecimal value) {
         return render(value, getNumberFormat(context)::format);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigIntegerValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigIntegerValueSemantics.java
index 860cbff..7ce631c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigIntegerValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigIntegerValueSemantics.java
@@ -60,7 +60,7 @@ implements
     // -- RENDERER
 
     @Override
-    public String presentationValue(final Context context, final BigInteger value) {
+    public String simpleTextRepresentation(final Context context, final BigInteger value) {
         return render(value, getNumberFormat(context)::format);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BlobValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BlobValueSemantics.java
index 736c1c2..ec5e52e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BlobValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BlobValueSemantics.java
@@ -46,7 +46,7 @@ implements
     // RENDERER
 
     @Override
-    public String presentationValue(final ValueSemanticsProvider.Context context, final Blob value) {
+    public String simpleTextRepresentation(final ValueSemanticsProvider.Context context, final Blob value) {
         return render(value, Blob::getName);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BooleanValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BooleanValueSemantics.java
index 9c0a73a..5e2e7b7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BooleanValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BooleanValueSemantics.java
@@ -91,7 +91,7 @@ implements
     // -- RENDERER
 
     @Override
-    public String presentationValue(final ValueSemanticsProvider.Context context, final Boolean value) {
+    public String simpleTextRepresentation(final ValueSemanticsProvider.Context context, final Boolean value) {
         return render(value, v->v.booleanValue() ? "True" : "False");
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ByteValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ByteValueSemantics.java
index fd6ef7c..3bda1fb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ByteValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ByteValueSemantics.java
@@ -63,7 +63,7 @@ implements
     // -- RENDERER
 
     @Override
-    public String presentationValue(final Context context, final Byte value) {
+    public String simpleTextRepresentation(final Context context, final Byte value) {
         return render(value, getNumberFormat(context)::format);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ClobValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ClobValueSemantics.java
index 0620c99..f9262ac 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ClobValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ClobValueSemantics.java
@@ -41,7 +41,7 @@ implements
     // RENDERER
 
     @Override
-    public String presentationValue(final ValueSemanticsProvider.Context context, final Clob value) {
+    public String simpleTextRepresentation(final ValueSemanticsProvider.Context context, final Clob value) {
         return render(value, Clob::getName);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/IntValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/IntValueSemantics.java
index c440a31..a4dc8cd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/IntValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/IntValueSemantics.java
@@ -63,7 +63,7 @@ implements
     // -- RENDERER
 
     @Override
-    public String presentationValue(final Context context, final Integer value) {
+    public String simpleTextRepresentation(final Context context, final Integer value) {
         return render(value, getNumberFormat(context)::format);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LocalResourcePathValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LocalResourcePathValueSemantics.java
index d57fae4..25c2ffd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LocalResourcePathValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LocalResourcePathValueSemantics.java
@@ -64,7 +64,7 @@ implements
     // -- RENDERER
 
     @Override
-    public String presentationValue(final Context context, final LocalResourcePath value) {
+    public String simpleTextRepresentation(final Context context, final LocalResourcePath value) {
         return render(value, LocalResourcePath::getValue);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LongValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LongValueSemantics.java
index 2f1eb10..15e9dca 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LongValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LongValueSemantics.java
@@ -63,7 +63,7 @@ implements
     // -- RENDERER
 
     @Override
-    public String presentationValue(final Context context, final Long value) {
+    public String simpleTextRepresentation(final Context context, final Long value) {
         return render(value, getNumberFormat(context)::format);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/MarkupValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/MarkupValueSemantics.java
index 6af8f7a..c5dc211 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/MarkupValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/MarkupValueSemantics.java
@@ -24,8 +24,8 @@ 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.HtmlRenderer;
 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.applib.value.Markup;
 
@@ -36,7 +36,7 @@ extends AbstractValueSemanticsProvider<Markup>
 implements
     EncoderDecoder<Markup>,
     Parser<Markup>,
-    HtmlRenderer<Markup>{
+    Renderer<Markup>{
 
     // -- ENCODER DECODER
 
@@ -59,7 +59,7 @@ implements
     // -- RENDERER
 
     @Override
-    public String presentationValue(final ValueSemanticsProvider.Context context, final Markup value) {
+    public String simpleTextRepresentation(final ValueSemanticsProvider.Context context, final Markup value) {
         return value != null? value.asHtml(): "[null]";
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/PasswordValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/PasswordValueSemantics.java
index 1ee9342..17608de 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/PasswordValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/PasswordValueSemantics.java
@@ -59,7 +59,7 @@ implements
     // -- RENDERER
 
     @Override
-    public String presentationValue(final Context context, final Password value) {
+    public String simpleTextRepresentation(final Context context, final Password value) {
         return render(value, v->"*");
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ShortValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ShortValueSemantics.java
index 542daf4..14540b6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ShortValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ShortValueSemantics.java
@@ -63,7 +63,7 @@ implements
     // -- RENDERER
 
     @Override
-    public String presentationValue(final Context context, final Short value) {
+    public String simpleTextRepresentation(final Context context, final Short value) {
         return render(value, getNumberFormat(context)::format);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/StringValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/StringValueSemantics.java
index 5dffefa..34c13d0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/StringValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/StringValueSemantics.java
@@ -51,7 +51,7 @@ implements
     // -- RENDERER
 
     @Override
-    public String presentationValue(final Context context, final String value) {
+    public String simpleTextRepresentation(final Context context, final String value) {
         return value == null ? "" : value;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/TreeNodeValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/TreeNodeValueSemantics.java
index 2635a0d..a834948 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/TreeNodeValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/TreeNodeValueSemantics.java
@@ -47,7 +47,7 @@ implements
     // -- RENDERER
 
     @Override
-    public String presentationValue(final Context context, final TreeNode<?> value) {
+    public String simpleTextRepresentation(final Context context, final TreeNode<?> value) {
         return super.render(value, TreeNode::toString);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/URLValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/URLValueSemantics.java
index 7dbb3ad..d0dcc46 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/URLValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/URLValueSemantics.java
@@ -62,7 +62,7 @@ implements
     // -- RENDERER
 
     @Override
-    public String presentationValue(final ValueSemanticsProvider.Context context, final java.net.URL value) {
+    public String simpleTextRepresentation(final ValueSemanticsProvider.Context context, final java.net.URL value) {
         return value != null ? value.toString(): "";
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java
index 4f02d97..3e84a1e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java
@@ -55,7 +55,7 @@ implements
     // -- RENDERER
 
     @Override
-    public String presentationValue(final ValueSemanticsProvider.Context context, final UUID value) {
+    public String simpleTextRepresentation(final ValueSemanticsProvider.Context context, final UUID value) {
         return value == null ? "" : value.toString();
     }
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/CharacterValueSemanticsProviderTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/CharacterValueSemanticsProviderTest.java
index 97ee221..ccde741 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/CharacterValueSemanticsProviderTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/CharacterValueSemanticsProviderTest.java
@@ -57,7 +57,7 @@ extends ValueSemanticsProviderAbstractTestCase {
 
     @Test
     public void testTitleOf() {
-        assertEquals("r", value.presentationValue(null, character));
+        assertEquals("r", value.simpleTextRepresentation(null, character));
     }
 
     @Test
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/DoubleValueSemanticsProviderTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/DoubleValueSemanticsProviderTest.java
index 63a97d4..d15b703 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/DoubleValueSemanticsProviderTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/DoubleValueSemanticsProviderTest.java
@@ -49,7 +49,7 @@ extends ValueSemanticsProviderAbstractTestCase {
 
     @Test
     public void testValue() {
-        assertEquals("32.5", getValue().presentationValue(null, doubleObj));
+        assertEquals("32.5", getValue().simpleTextRepresentation(null, doubleObj));
     }
 
     @Test
@@ -63,7 +63,7 @@ extends ValueSemanticsProviderAbstractTestCase {
 
     @Test
     public void testTitleOf() {
-        assertEquals("35,000,000", getValue().presentationValue(null, Double.valueOf(35000000.0)));
+        assertEquals("35,000,000", getValue().simpleTextRepresentation(null, Double.valueOf(35000000.0)));
     }
 
     @Test
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/FloatValueSemanticsProviderTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/FloatValueSemanticsProviderTest.java
index ac6ee53..93c0496 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/FloatValueSemanticsProviderTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/FloatValueSemanticsProviderTest.java
@@ -59,7 +59,7 @@ extends ValueSemanticsProviderAbstractTestCase {
 
     @Test
     public void testTitleOf() {
-        assertEquals("32.5", value.presentationValue(null, float1));
+        assertEquals("32.5", value.simpleTextRepresentation(null, float1));
     }
 
     @Test
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaSqlDateValueSemanticsProviderTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaSqlDateValueSemanticsProviderTest.java
index df8d8ef..d493fd4 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaSqlDateValueSemanticsProviderTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaSqlDateValueSemanticsProviderTest.java
@@ -62,7 +62,7 @@ public class JavaSqlDateValueSemanticsProviderTest extends ValueSemanticsProvide
 
     @Test
     public void testTitleOf() {
-        assertEquals(DateFormat.getDateInstance(SimpleDateFormat.MEDIUM).format(new Date(0)), adapter.presentationValue(null, date));
+        assertEquals(DateFormat.getDateInstance(SimpleDateFormat.MEDIUM).format(new Date(0)), adapter.simpleTextRepresentation(null, date));
     }
 
     @Test
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaUtilDateValueSemanticsProviderTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaUtilDateValueSemanticsProviderTest.java
index f74e64b..162cb4e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaUtilDateValueSemanticsProviderTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaUtilDateValueSemanticsProviderTest.java
@@ -72,7 +72,7 @@ extends ValueSemanticsProviderAbstractTestCase {
     @Test
     public void testTitleOf() {
         final String EXPECTED = DateFormat.getDateTimeInstance(SimpleDateFormat.MEDIUM, SimpleDateFormat.SHORT).format(new java.util.Date(0));
-        assertEquals(EXPECTED, getValue().presentationValue(null, date));
+        assertEquals(EXPECTED, getValue().simpleTextRepresentation(null, date));
     }
 
     @Test
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
index 859e1cc..cdbdc26 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
@@ -179,14 +179,14 @@ public abstract class ValueSemanticsProviderAbstractTestCase {
         if(valueSemanticsProvider instanceof ValueSemanticsProviderAndFacetAbstract) {
             assertEquals("",
                     ((ValueSemanticsProviderAndFacetAbstract<?>)valueSemanticsProvider)
-                    .presentationValue(null, null));
+                    .simpleTextRepresentation(null, null));
         } else if(valueSemanticsProvider instanceof StringValueSemantics) {
             // string representation has null-to-empty semantics
             assertEquals("",
-                    valueSemanticsProvider.getRenderer().presentationValue(null, null));
+                    valueSemanticsProvider.getRenderer().simpleTextRepresentation(null, null));
         } else {
             assertEquals(AbstractValueSemanticsProvider.NULL_REPRESENTATION,
-                    valueSemanticsProvider.getRenderer().presentationValue(null, null));
+                    valueSemanticsProvider.getRenderer().simpleTextRepresentation(null, null));
         }
 
     }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/AsciiDocReaderService.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/AsciiDocReaderService.java
index b8f35d0..234e5ab 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/AsciiDocReaderService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/AsciiDocReaderService.java
@@ -18,22 +18,18 @@
  */
 package demoapp.dom._infra.resources;
 
-import java.util.stream.Collectors;
-
 import javax.inject.Named;
 
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.commons.internal.base._Refs;
 import org.apache.isis.commons.internal.base._Refs.StringReference;
-import org.apache.isis.commons.internal.base._Text;
 import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
-
 @Service
 @Named("demo.AsciiDocReaderService")
 @RequiredArgsConstructor
@@ -77,42 +73,7 @@ public class AsciiDocReaderService {
         return AsciiDoc.valueOf(
                 adocRef
                 .update(this::replaceVersion)
-                //.update(this::replaceJavaSourceReferences)
-                //.update(adoc->prependSource(adoc, aClass))
                 .getValue());
     }
 
-    // -- EXPERIMENTAL ... works within IDE, but not when packaged
-
-    private String replaceJavaSourceReferences(final String adoc) {
-        return _Text.getLines(adoc)
-        .stream()
-        .map(line->line.startsWith("include::")
-                        && line.contains(".java")
-                ? replaceJavaSourceReference(line)
-                : line
-        )
-        .collect(Collectors.joining("\n"));
-    }
-
-    //  "include::DemoHomePage.java" -> "include::{sourcedir}/DemoHomePage.java
-    private String replaceJavaSourceReference(final String line) {
-        val lineRef = _Refs.stringRef(line);
-        lineRef.cutAtIndexOfAndDrop("::");
-        val classFileSimpleName = lineRef.cutAtIndexOf(".java");
-        val remainder = lineRef.getValue();
-        return "include::{sourcedir}/" + classFileSimpleName + remainder;
-    }
-
-    // setting up the java source root relative to the current directory (application main)
-    //XXX dependent on the location of the 'main' class within the file system,
-    // if we ever want to improve on that, we should place a marker file on the project root,
-    // so we can search up the folder hierarchy on dynamically figure out how many ../
-    // actually are required
-    private String prependSource(final String adoc, final Class<?> aClass) {
-        val packagePath = aClass.getPackage().getName().replace('.', '/');
-        return ":sourcedir: ../../domain/src/main/java/" + packagePath + "\n\n" + adoc;
-    }
-
-
 }
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
index 3b924ba..e6a6aef 100644
--- 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
@@ -19,7 +19,7 @@ extends AsciiDocValueSemantics {
     @Inject AsciiDocConverterService asciiDocConverterService;
 
     @Override
-    public String presentationValue(final ValueSemanticsProvider.Context context, final AsciiDoc adoc) {
+    public String simpleTextRepresentation(final ValueSemanticsProvider.Context context, final AsciiDoc adoc) {
 
         return render(adoc, plainAdoc->
             asciiDocConverterService
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/ComplexNumberJdoValueSemantics.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/ComplexNumberJdoValueSemantics.java
index c699102..7f7d812 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/ComplexNumberJdoValueSemantics.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/ComplexNumberJdoValueSemantics.java
@@ -47,7 +47,7 @@ public class ComplexNumberJdoValueSemantics
  // tag::getRenderer[]
          return new Renderer<ComplexNumberJdo>() {
              @Override
-             public String presentationValue(final ValueSemanticsProvider.Context context, final ComplexNumberJdo object) {
+             public String simpleTextRepresentation(final ValueSemanticsProvider.Context context, final ComplexNumberJdo object) {
                  return object!=null ? object.title() : "NaN";
              }
          };
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/ComplexNumberJpaValueSemantics.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/ComplexNumberJpaValueSemantics.java
index e5c3360..affa2a2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/ComplexNumberJpaValueSemantics.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/ComplexNumberJpaValueSemantics.java
@@ -49,7 +49,7 @@ public class ComplexNumberJpaValueSemantics
 // tag::getRenderer[]
         return new Renderer<ComplexNumberJpa>() {
             @Override
-            public String presentationValue(final ValueSemanticsProvider.Context context, final ComplexNumberJpa object) {
+            public String simpleTextRepresentation(final ValueSemanticsProvider.Context context, final ComplexNumberJpa object) {
                 return object!=null ? object.title() : "NaN";
             }
         };
diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/markup/MarkupFieldFactory.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/markup/MarkupFieldFactory.java
index f62bf3a8..a6855e2 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/markup/MarkupFieldFactory.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/markup/MarkupFieldFactory.java
@@ -26,16 +26,10 @@ import javax.inject.Inject;
 import org.w3c.dom.events.EventTarget;
 import org.w3c.dom.html.HTMLAnchorElement;
 
-import org.apache.isis.applib.adapters.HtmlRenderer;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
-import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.incubator.viewer.javafx.ui.components.UiComponentHandlerFx;
 import org.apache.isis.viewer.common.model.components.UiComponentFactory.ComponentRequest;
 
-import lombok.RequiredArgsConstructor;
-import lombok.val;
-import lombok.extern.log4j.Log4j2;
-
 import javafx.application.HostServices;
 import javafx.application.Platform;
 import javafx.collections.ListChangeListener;
@@ -46,6 +40,9 @@ import javafx.scene.Node;
 import javafx.scene.layout.Region;
 import javafx.scene.web.WebEngine;
 import javafx.scene.web.WebView;
+import lombok.RequiredArgsConstructor;
+import lombok.val;
+import lombok.extern.log4j.Log4j2;
 import netscape.javascript.JSException;
 
 @org.springframework.stereotype.Component
@@ -57,21 +54,24 @@ public class MarkupFieldFactory implements UiComponentHandlerFx {
 
     @Override
     public boolean isHandling(final ComponentRequest request) {
-        return request.getFeatureTypeSpec().hasValueSemantics(HtmlRenderer.class);
+        //return request.getFeatureTypeSpec().hasValueSemantics(HtmlRenderer.class);
+        //TODO
+        return false;
     }
 
     @Override
     public Node handle(final ComponentRequest request) {
 
-        val pojo = request.getFeatureValue(Object.class);
-
-        val markupHtml = request.getFeatureTypeSpec().streamValueSemantics(HtmlRenderer.class)
-        .map(htmlRenderer->htmlRenderer.presentationValue(null, pojo))
-        .filter(_NullSafe::isPresent)
-        .findFirst()
-        .orElse("");
-
-        return new WebViewFitContent(hostServices::showDocument, markupHtml);
+//        val pojo = request.getFeatureValue(Object.class);
+//
+//        val markupHtml = request.getFeatureTypeSpec().streamValueSemantics(HtmlRenderer.class)
+//        .map(htmlRenderer->htmlRenderer.simpleTextRepresentation(null, pojo))
+//        .filter(_NullSafe::isPresent)
+//        .findFirst()
+//        .orElse("");
+//
+//        return new WebViewFitContent(hostServices::showDocument, markupHtml);
+        return null;
     }
 
     // -- HELPER
diff --git a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemantics.java b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemantics.java
index 1f94cf6..4583b5f 100644
--- a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemantics.java
+++ b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemantics.java
@@ -23,9 +23,10 @@ import javax.inject.Named;
 import org.springframework.stereotype.Component;
 
 import org.apache.isis.applib.adapters.AbstractValueSemanticsProvider;
-import org.apache.isis.applib.adapters.HtmlRenderer;
 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.applib.value.Markup;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
 @Component
@@ -33,16 +34,21 @@ import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 public class AsciiDocValueSemantics
 extends AbstractValueSemanticsProvider<AsciiDoc>
 implements
-    HtmlRenderer<AsciiDoc>,
+    Renderer<AsciiDoc>,
     Parser<AsciiDoc> {
 
     // -- RENDERER
 
     @Override
-    public String presentationValue(final ValueSemanticsProvider.Context context, final AsciiDoc adoc) {
+    public String simpleTextRepresentation(final ValueSemanticsProvider.Context context, final AsciiDoc adoc) {
         return render(adoc, AsciiDoc::asHtml);
     }
 
+    @Override
+    public Markup presentationValue(final Context context, final AsciiDoc value) {
+        return Markup.valueOf(simpleTextRepresentation(context, value));
+    }
+
     // -- PARSER
 
     @Override
diff --git a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/XmlValueSemanticsAbstract.java b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/XmlValueSemanticsAbstract.java
index 8386c99..2aa8cbb 100644
--- a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/XmlValueSemanticsAbstract.java
+++ b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/XmlValueSemanticsAbstract.java
@@ -19,7 +19,6 @@
 package org.apache.isis.valuetypes.asciidoc.metamodel.semantics;
 
 import org.apache.isis.applib.adapters.AbstractValueSemanticsProvider;
-import org.apache.isis.applib.adapters.HtmlRenderer;
 import org.apache.isis.applib.adapters.Renderer;
 import org.apache.isis.applib.adapters.ValueSemanticsProvider;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
@@ -33,12 +32,12 @@ import lombok.NonNull;
 abstract class XmlValueSemanticsAbstract<T>
 extends AbstractValueSemanticsProvider<T>
 implements
-    HtmlRenderer<T> {
+    Renderer<T> {
 
     // -- RENDERER
 
     @Override
-    public String presentationValue(final ValueSemanticsProvider.Context context, final T value) {
+    public String simpleTextRepresentation(final ValueSemanticsProvider.Context context, final T value) {
         return render(value, xmlContainer->asHtml(asXml(xmlContainer)));
     }
 
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
index 5ad5db5..6037709 100644
--- 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
@@ -24,8 +24,9 @@ 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.HtmlRenderer;
 import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.Renderer;
+import org.apache.isis.applib.value.Markup;
 import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
 @Component
@@ -35,7 +36,7 @@ extends AbstractValueSemanticsProvider<Markdown>
 implements
     EncoderDecoder<Markdown>,
     Parser<Markdown>,
-    HtmlRenderer<Markdown> {
+    Renderer<Markdown> {
 
     // -- ENCODER DECODER
 
@@ -58,10 +59,15 @@ implements
     // -- RENDERER
 
     @Override
-    public String presentationValue(final Context context, final Markdown value) {
+    public String simpleTextRepresentation(final Context context, final Markdown value) {
         return render(value, Markdown::asHtml);
     }
 
+    @Override
+    public Markup presentationValue(final Context context, final Markdown value) {
+        return Markup.valueOf(simpleTextRepresentation(context, value));
+    }
+
     // -- PARSER
 
     @Override