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

danhaywood pushed a commit to branch ISIS-2222
in repository https://gitbox.apache.org/repos/asf/isis.git

commit ae58e1ac5e78b96a2a92976590736ac67ddfb7d7
Author: danhaywood <[email protected]>
AuthorDate: Mon Aug 17 08:21:39 2020 +0100

    ISIS-2422: adds support for schema DTOs as value types.
    
    ... and extends asciidoc wicket component to render prettily
---
 .../core/metamodel/IsisModuleCoreMetamodel.java    |   6 +-
 .../facets/schema/IsisSchemaMetaModelRefiner.java  |  47 +++++++++
 .../facets/schema/IsisSchemaValueTypeProvider.java |  46 +++++++++
 .../facets/schema/chg/ChangesDtoValueFacet.java    |  20 ++--
 ...DtoValueFacetUsingSemanticsProviderFactory.java |  41 ++++++++
 .../chg/v2/ChangesDtoValueSemanticsProvider.java   | 110 ++++++++++++++++++++
 .../facets/schema/cmd/CommandDtoValueFacet.java    |  20 ++--
 ...DtoValueFacetUsingSemanticsProviderFactory.java |  41 ++++++++
 .../cmd/v2/CommandDtoValueSemanticsProvider.java   | 113 +++++++++++++++++++++
 .../schema/ixn/InteractionDtoValueFacet.java       |  20 ++--
 ...DtoValueFacetUsingSemanticsProviderFactory.java |  41 ++++++++
 .../v2/InteractionDtoValueSemanticsProvider.java   | 110 ++++++++++++++++++++
 .../ui/wkt/IsisModuleValAsciidocUiWkt.java         |   9 ++
 .../AsciiDocForXmlComponentWkt.java}               |  38 ++++---
 .../wkt/components/AsciiDocPanelFactoriesWkt.java  |   5 +-
 .../schema/chg/v2/ChangesDtoComponentWkt.java}     |  33 +++---
 .../chg/v2/ChangesDtoPanelFactoriesWkt.java}       |  33 ++----
 .../schema/cmd/v2/CommandDtoComponentWkt.java}     |  33 +++---
 .../cmd/v2/CommandDtoPanelFactoriesWkt.java}       |  33 ++----
 .../schema/ixn/v2/InteractionDtoComponentWkt.java} |  33 +++---
 .../ixn/v2/InteractionDtoPanelFactoriesWkt.java}   |  33 ++----
 .../components/scalars/markup/MarkupComponent.java |  16 ++-
 22 files changed, 710 insertions(+), 171 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
index 3b34bde..1e2b3af 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
@@ -24,6 +24,8 @@ import org.springframework.context.annotation.Import;
 import org.apache.isis.applib.IsisModuleApplib;
 import org.apache.isis.core.config.IsisModuleCoreConfig;
 import org.apache.isis.core.metamodel.context.MetaModelContexts;
+import org.apache.isis.core.metamodel.facets.schema.IsisSchemaMetaModelRefiner;
+import 
org.apache.isis.core.metamodel.facets.schema.IsisSchemaValueTypeProvider;
 import 
org.apache.isis.core.metamodel.inspect.IsisModuleCoreMetamodelInspection;
 import org.apache.isis.core.metamodel.objectmanager.ObjectManagerDefault;
 import 
org.apache.isis.core.metamodel.progmodel.ProgrammingModelInitFilterDefault;
@@ -99,7 +101,9 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
 
         // @Repository's
         ApplicationFeatureRepositoryDefault.class,
-        
+
+        IsisSchemaMetaModelRefiner.class,
+        IsisSchemaValueTypeProvider.class,
 
 })
 public class IsisModuleCoreMetamodel {
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaMetaModelRefiner.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaMetaModelRefiner.java
new file mode 100644
index 0000000..111187f
--- /dev/null
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaMetaModelRefiner.java
@@ -0,0 +1,47 @@
+/*
+ *  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.core.metamodel.facets.schema;
+
+import javax.inject.Named;
+
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
+import 
org.apache.isis.core.metamodel.facets.schema.chg.v2.ChangesDtoValueFacetUsingSemanticsProviderFactory;
+import 
org.apache.isis.core.metamodel.facets.schema.cmd.v2.CommandDtoValueFacetUsingSemanticsProviderFactory;
+import 
org.apache.isis.core.metamodel.facets.schema.ixn.v2.InteractionDtoValueFacetUsingSemanticsProviderFactory;
+import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
+
+@Component
+@Named("isisMetaModel.isisSchema.MetaModelRefiner")
+public class IsisSchemaMetaModelRefiner implements MetaModelRefiner {
+    @Override
+    public void refineProgrammingModel(ProgrammingModel programmingModel) {
+        programmingModel.addFactory(
+                ProgrammingModel.FacetProcessingOrder.G1_VALUE_TYPES,
+                InteractionDtoValueFacetUsingSemanticsProviderFactory.class);
+        programmingModel.addFactory(
+                ProgrammingModel.FacetProcessingOrder.G1_VALUE_TYPES,
+                ChangesDtoValueFacetUsingSemanticsProviderFactory.class);
+        programmingModel.addFactory(
+                ProgrammingModel.FacetProcessingOrder.G1_VALUE_TYPES,
+                CommandDtoValueFacetUsingSemanticsProviderFactory.class);
+    }
+}
+
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaValueTypeProvider.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaValueTypeProvider.java
new file mode 100644
index 0000000..01f96a3
--- /dev/null
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/IsisSchemaValueTypeProvider.java
@@ -0,0 +1,46 @@
+/*
+ *  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.core.metamodel.facets.schema;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import javax.inject.Named;
+
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.core.metamodel.valuetypes.ValueTypeDefinition;
+import org.apache.isis.core.metamodel.valuetypes.ValueTypeProvider;
+import org.apache.isis.schema.chg.v2.ChangesDto;
+import org.apache.isis.schema.cmd.v2.CommandDto;
+import org.apache.isis.schema.common.v2.ValueType;
+import org.apache.isis.schema.ixn.v2.InteractionDto;
+
+@Component
+@Named("isisMetaModel.isisSchema.ValueTypeProvider")
+public class IsisSchemaValueTypeProvider implements ValueTypeProvider {
+    @Override
+    public Collection<ValueTypeDefinition> definitions() {
+        return Arrays.asList(
+                ValueTypeDefinition.of(InteractionDto.class, ValueType.STRING)
+                , ValueTypeDefinition.of(ChangesDto.class, ValueType.STRING)
+                , ValueTypeDefinition.of(CommandDto.class, ValueType.STRING)
+        );
+    }
+}
diff --git 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/ChangesDtoValueFacet.java
similarity index 60%
copy from 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
copy to 
core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/ChangesDtoValueFacet.java
index 0d09de0..e2aa514 100644
--- 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/ChangesDtoValueFacet.java
@@ -16,19 +16,15 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.valuetypes.asciidoc.ui.wkt;
 
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
+package org.apache.isis.core.metamodel.facets.schema.chg;
 
-import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
-import 
org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
+
+public interface ChangesDtoValueFacet extends Facet {
+    
+    String changesDtoValue(ManagedObject object);
+    ManagedObject createValue(ManagedObject object, String xml);
 
-@Configuration
-@Import({
-    IsisModuleValAsciidocApplib.class,
-    AsciiDocPanelFactoriesWkt.Parented.class,
-    AsciiDocPanelFactoriesWkt.Standalone.class,
-})
-public class IsisModuleValAsciidocUiWkt {
 }
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueFacetUsingSemanticsProviderFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueFacetUsingSemanticsProviderFactory.java
new file mode 100644
index 0000000..6d06b91
--- /dev/null
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueFacetUsingSemanticsProviderFactory.java
@@ -0,0 +1,41 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.core.metamodel.facets.schema.chg.v2;
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import 
org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProviderFactory;
+import org.apache.isis.schema.chg.v2.ChangesDto;
+
+import lombok.val;
+
+public class ChangesDtoValueFacetUsingSemanticsProviderFactory extends 
ValueFacetUsingSemanticsProviderFactory<ChangesDto> {
+
+    @Override
+    public void process(final ProcessClassContext processClassContext) {
+        final Class<?> type = processClassContext.getCls();
+        final FacetHolder holder = processClassContext.getFacetHolder();
+
+        if (!(ChangesDto.class.isAssignableFrom(type))) {
+            return;
+        }
+        val provider = new ChangesDtoValueSemanticsProvider(holder);
+        addFacets(provider);
+    }
+}
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueSemanticsProvider.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueSemanticsProvider.java
new file mode 100644
index 0000000..0e1dd82
--- /dev/null
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueSemanticsProvider.java
@@ -0,0 +1,110 @@
+/*
+ *  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.core.metamodel.facets.schema.chg.v2;
+
+import org.apache.isis.applib.adapters.EncoderDecoder;
+import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.util.schema.ChangesDtoUtils;
+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.facets.schema.chg.ChangesDtoValueFacet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.schema.chg.v2.ChangesDto;
+
+import lombok.val;
+
+public class ChangesDtoValueSemanticsProvider
+extends ValueSemanticsProviderAndFacetAbstract<ChangesDto>
+implements ChangesDtoValueFacet {
+
+    private static final int TYPICAL_LENGTH = 0;
+
+    private static Class<? extends Facet> type() {
+        return ChangesDtoValueFacet.class;
+    }
+
+    private static final ChangesDto DEFAULT_VALUE = null;
+
+    /**
+     * Required because implementation of {@link Parser} and
+     * {@link EncoderDecoder}.
+     */
+    public ChangesDtoValueSemanticsProvider() {
+        this(null);
+    }
+
+    public ChangesDtoValueSemanticsProvider(final FacetHolder holder) {
+        super(type(), holder, ChangesDto.class, TYPICAL_LENGTH, -1, 
Immutability.IMMUTABLE, EqualByContent.NOT_HONOURED, DEFAULT_VALUE);
+    }
+
+
+    @Override
+    protected ChangesDto doParse(final Object context, final String str) {
+        return doRestore(str);
+    }
+
+    @Override
+    public String titleString(final Object object) {
+        if (object == null) return "[null]";
+        final ChangesDto changesDto = (ChangesDto) object;
+        return ChangesDtoUtils.toXml(changesDto);
+    }
+
+    @Override
+    public String titleStringWithMask(final Object value, final String 
usingMask) {
+        return titleString(value);
+    }
+
+
+    @Override
+    public String changesDtoValue(final ManagedObject object) {
+        if (object == null) {
+            return "";
+        }
+        val changesDto = (ChangesDto) object.getPojo();
+        return ChangesDtoUtils.toXml(changesDto);
+    }
+
+    @Override
+    public ManagedObject createValue(final ManagedObject object, final String 
xml) {
+        val changesDto = ChangesDtoUtils.fromXml(xml);
+        return getObjectManager().adapt(changesDto);
+    }
+
+
+    @Override
+    protected String doEncode(final Object object) {
+        val changesDto = (ChangesDto) object;
+        return ChangesDtoUtils.toXml(changesDto);
+    }
+
+    @Override
+    protected ChangesDto doRestore(final String xml) {
+        return ChangesDtoUtils.fromXml(xml);
+    }
+
+
+    @Override
+    public String toString() {
+        return "InteractionDtoValueSemanticsProvider";
+    }
+
+}
diff --git 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/CommandDtoValueFacet.java
similarity index 60%
copy from 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
copy to 
core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/CommandDtoValueFacet.java
index 0d09de0..12f2b85 100644
--- 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/CommandDtoValueFacet.java
@@ -16,19 +16,15 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.valuetypes.asciidoc.ui.wkt;
 
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
+package org.apache.isis.core.metamodel.facets.schema.cmd;
 
-import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
-import 
org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
+
+public interface CommandDtoValueFacet extends Facet {
+    
+    String commandDtoValue(ManagedObject object);
+    ManagedObject createValue(ManagedObject object, String xml);
 
-@Configuration
-@Import({
-    IsisModuleValAsciidocApplib.class,
-    AsciiDocPanelFactoriesWkt.Parented.class,
-    AsciiDocPanelFactoriesWkt.Standalone.class,
-})
-public class IsisModuleValAsciidocUiWkt {
 }
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueFacetUsingSemanticsProviderFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueFacetUsingSemanticsProviderFactory.java
new file mode 100644
index 0000000..b0d377a
--- /dev/null
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueFacetUsingSemanticsProviderFactory.java
@@ -0,0 +1,41 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.core.metamodel.facets.schema.cmd.v2;
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import 
org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProviderFactory;
+import org.apache.isis.schema.cmd.v2.CommandDto;
+
+import lombok.val;
+
+public class CommandDtoValueFacetUsingSemanticsProviderFactory extends 
ValueFacetUsingSemanticsProviderFactory<CommandDto> {
+
+    @Override
+    public void process(final ProcessClassContext processClassContext) {
+        final Class<?> type = processClassContext.getCls();
+        final FacetHolder holder = processClassContext.getFacetHolder();
+
+        if (!(CommandDto.class.isAssignableFrom(type))) {
+            return;
+        }
+        val provider = new CommandDtoValueSemanticsProvider(holder);
+        addFacets(provider);
+    }
+}
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueSemanticsProvider.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueSemanticsProvider.java
new file mode 100644
index 0000000..16f90e6
--- /dev/null
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueSemanticsProvider.java
@@ -0,0 +1,113 @@
+/*
+ *  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.core.metamodel.facets.schema.cmd.v2;
+
+import org.apache.isis.applib.adapters.EncoderDecoder;
+import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.util.schema.ChangesDtoUtils;
+import org.apache.isis.applib.util.schema.CommandDtoUtils;
+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.facets.schema.cmd.CommandDtoValueFacet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.schema.chg.v2.ChangesDto;
+import org.apache.isis.schema.cmd.v2.CommandDto;
+import org.apache.isis.schema.cmd.v2.CommandsDto;
+
+import lombok.val;
+
+public class CommandDtoValueSemanticsProvider
+extends ValueSemanticsProviderAndFacetAbstract<CommandDto>
+implements CommandDtoValueFacet {
+
+    private static final int TYPICAL_LENGTH = 0;
+
+    private static Class<? extends Facet> type() {
+        return CommandDtoValueFacet.class;
+    }
+
+    private static final CommandDto DEFAULT_VALUE = null;
+
+    /**
+     * Required because implementation of {@link Parser} and
+     * {@link EncoderDecoder}.
+     */
+    public CommandDtoValueSemanticsProvider() {
+        this(null);
+    }
+
+    public CommandDtoValueSemanticsProvider(final FacetHolder holder) {
+        super(type(), holder, CommandDto.class, TYPICAL_LENGTH, -1, 
Immutability.IMMUTABLE, EqualByContent.NOT_HONOURED, DEFAULT_VALUE);
+    }
+
+
+    @Override
+    protected CommandDto doParse(final Object context, final String str) {
+        return doRestore(str);
+    }
+
+    @Override
+    public String titleString(final Object object) {
+        if (object == null) return "[null]";
+        val commandDto = (CommandDto) object;
+        return CommandDtoUtils.toXml(commandDto);
+    }
+
+    @Override
+    public String titleStringWithMask(final Object value, final String 
usingMask) {
+        return titleString(value);
+    }
+
+
+    @Override
+    public String commandDtoValue(final ManagedObject object) {
+        if (object == null) {
+            return "";
+        }
+        val commandDto = (CommandDto) object.getPojo();
+        return CommandDtoUtils.toXml(commandDto);
+    }
+
+    @Override
+    public ManagedObject createValue(final ManagedObject object, final String 
xml) {
+        val commandDto = CommandDtoUtils.fromXml(xml);
+        return getObjectManager().adapt(commandDto);
+    }
+
+
+    @Override
+    protected String doEncode(final Object object) {
+        val commandDto = (CommandDto) object;
+        return CommandDtoUtils.toXml(commandDto);
+    }
+
+    @Override
+    protected CommandDto doRestore(final String xml) {
+        return CommandDtoUtils.fromXml(xml);
+    }
+
+
+    @Override
+    public String toString() {
+        return "InteractionDtoValueSemanticsProvider";
+    }
+
+}
diff --git 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/InteractionDtoValueFacet.java
similarity index 60%
copy from 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
copy to 
core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/InteractionDtoValueFacet.java
index 0d09de0..94145ae 100644
--- 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/InteractionDtoValueFacet.java
@@ -16,19 +16,15 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.valuetypes.asciidoc.ui.wkt;
 
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
+package org.apache.isis.core.metamodel.facets.schema.ixn;
 
-import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
-import 
org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
+
+public interface InteractionDtoValueFacet extends Facet {
+    
+    String interactionDtoValue(ManagedObject object);
+    ManagedObject createValue(ManagedObject object, String xml);
 
-@Configuration
-@Import({
-    IsisModuleValAsciidocApplib.class,
-    AsciiDocPanelFactoriesWkt.Parented.class,
-    AsciiDocPanelFactoriesWkt.Standalone.class,
-})
-public class IsisModuleValAsciidocUiWkt {
 }
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueFacetUsingSemanticsProviderFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueFacetUsingSemanticsProviderFactory.java
new file mode 100644
index 0000000..8113dc1
--- /dev/null
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueFacetUsingSemanticsProviderFactory.java
@@ -0,0 +1,41 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.core.metamodel.facets.schema.ixn.v2;
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import 
org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProviderFactory;
+import org.apache.isis.schema.ixn.v2.InteractionDto;
+
+import lombok.val;
+
+public class InteractionDtoValueFacetUsingSemanticsProviderFactory extends 
ValueFacetUsingSemanticsProviderFactory<InteractionDto> {
+
+    @Override
+    public void process(final ProcessClassContext processClassContext) {
+        final Class<?> type = processClassContext.getCls();
+        final FacetHolder holder = processClassContext.getFacetHolder();
+
+        if (!(InteractionDto.class.isAssignableFrom(type))) {
+            return;
+        }
+        val provider = new InteractionDtoValueSemanticsProvider(holder);
+        addFacets(provider);
+    }
+}
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueSemanticsProvider.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueSemanticsProvider.java
new file mode 100644
index 0000000..82c3839
--- /dev/null
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueSemanticsProvider.java
@@ -0,0 +1,110 @@
+/*
+ *  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.core.metamodel.facets.schema.ixn.v2;
+
+import org.apache.isis.applib.adapters.EncoderDecoder;
+import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.util.schema.InteractionDtoUtils;
+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.facets.schema.ixn.InteractionDtoValueFacet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.schema.ixn.v2.InteractionDto;
+
+import lombok.val;
+
+public class InteractionDtoValueSemanticsProvider
+extends ValueSemanticsProviderAndFacetAbstract<InteractionDto>
+implements InteractionDtoValueFacet {
+
+    private static final int TYPICAL_LENGTH = 0;
+
+    private static Class<? extends Facet> type() {
+        return InteractionDtoValueFacet.class;
+    }
+
+    private static final InteractionDto DEFAULT_VALUE = null;
+
+    /**
+     * Required because implementation of {@link Parser} and
+     * {@link EncoderDecoder}.
+     */
+    public InteractionDtoValueSemanticsProvider() {
+        this(null);
+    }
+
+    public InteractionDtoValueSemanticsProvider(final FacetHolder holder) {
+        super(type(), holder, InteractionDto.class, TYPICAL_LENGTH, -1, 
Immutability.IMMUTABLE, EqualByContent.NOT_HONOURED, DEFAULT_VALUE);
+    }
+
+
+    @Override
+    protected InteractionDto doParse(final Object context, final String str) {
+        return doRestore(str);
+    }
+
+    @Override
+    public String titleString(final Object object) {
+        if (object == null) return "[null]";
+        final InteractionDto interactionDto = (InteractionDto) object;
+        return InteractionDtoUtils.toXml(interactionDto);
+    }
+
+    @Override
+    public String titleStringWithMask(final Object value, final String 
usingMask) {
+        return titleString(value);
+    }
+
+
+    @Override
+    public String interactionDtoValue(final ManagedObject object) {
+        if (object == null) {
+            return "";
+        }
+        val interactionDto = (InteractionDto) object.getPojo();
+        return InteractionDtoUtils.toXml(interactionDto);
+    }
+
+    @Override
+    public ManagedObject createValue(final ManagedObject object, final String 
xml) {
+        val interactionDto = InteractionDtoUtils.fromXml(xml);
+        return getObjectManager().adapt(interactionDto);
+    }
+
+
+    @Override
+    protected String doEncode(final Object object) {
+        val interactionDto = (InteractionDto) object;
+        return InteractionDtoUtils.toXml(interactionDto);
+    }
+
+    @Override
+    protected InteractionDto doRestore(final String xml) {
+        return InteractionDtoUtils.fromXml(xml);
+    }
+
+
+    @Override
+    public String toString() {
+        return "InteractionDtoValueSemanticsProvider";
+    }
+
+}
diff --git 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
index 0d09de0..3dea07c 100644
--- 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
+++ 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
@@ -23,12 +23,21 @@ import org.springframework.context.annotation.Import;
 
 import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
 import 
org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt;
+import 
org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.chg.v2.ChangesDtoPanelFactoriesWkt;
+import 
org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.cmd.v2.CommandDtoPanelFactoriesWkt;
+import 
org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.ixn.v2.InteractionDtoPanelFactoriesWkt;
 
 @Configuration
 @Import({
     IsisModuleValAsciidocApplib.class,
     AsciiDocPanelFactoriesWkt.Parented.class,
     AsciiDocPanelFactoriesWkt.Standalone.class,
+    InteractionDtoPanelFactoriesWkt.Parented.class,
+    InteractionDtoPanelFactoriesWkt.Standalone.class,
+    ChangesDtoPanelFactoriesWkt.Parented.class,
+    ChangesDtoPanelFactoriesWkt.Standalone.class,
+    CommandDtoPanelFactoriesWkt.Parented.class,
+    CommandDtoPanelFactoriesWkt.Standalone.class,
 })
 public class IsisModuleValAsciidocUiWkt {
 }
diff --git 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocForXmlComponentWkt.java
similarity index 50%
copy from 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
copy to 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocForXmlComponentWkt.java
index 0d09de0..1119309 100644
--- 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
+++ 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocForXmlComponentWkt.java
@@ -16,19 +16,33 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.valuetypes.asciidoc.ui.wkt;
+package org.apache.isis.valuetypes.asciidoc.ui.wkt.components;
 
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
+import org.apache.wicket.model.IModel;
 
-import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
-import 
org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt;
+import org.apache.isis.applib.util.schema.CommandDtoUtils;
+import org.apache.isis.schema.cmd.v2.CommandDto;
+import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
+
+import lombok.val;
+
+public class AsciiDocForXmlComponentWkt extends AsciiDocComponentWkt {
+
+    private static final long serialVersionUID = 1L;
+
+    public AsciiDocForXmlComponentWkt(String id, IModel<?> model) {
+        super(id, model);
+        setEnabled(false);
+    }
+
+    /**
+     * for convenience of subtypes.
+     * @param xml
+     * @return
+     */
+    protected final String asHtml(String xml) {
+        val adoc = "[source,xml]\n----\n" + xml + "\n----";
+        return AsciiDoc.valueOfAdoc(adoc).asHtml();
+    }
 
-@Configuration
-@Import({
-    IsisModuleValAsciidocApplib.class,
-    AsciiDocPanelFactoriesWkt.Parented.class,
-    AsciiDocPanelFactoriesWkt.Standalone.class,
-})
-public class IsisModuleValAsciidocUiWkt {
 }
diff --git 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
index 1a58f4a..fae7df5 100644
--- 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
+++ 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
@@ -69,10 +69,7 @@ public class AsciiDocPanelFactoriesWkt {
 
         @Override
         protected MarkupComponentFactory getMarkupComponentFactory() {
-            return (id, model) -> {
-                val markupComponent = new AsciiDocComponentWkt(id, model);
-                return markupComponent;    
-            };
+            return AsciiDocComponentWkt::new;
         }
 
     }
diff --git 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoComponentWkt.java
similarity index 56%
copy from 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
copy to 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoComponentWkt.java
index 0d09de0..02d2f46 100644
--- 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
+++ 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoComponentWkt.java
@@ -16,19 +16,28 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.valuetypes.asciidoc.ui.wkt;
+package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.chg.v2;
 
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
+import org.apache.wicket.model.IModel;
 
-import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
-import 
org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt;
+import org.apache.isis.applib.util.schema.ChangesDtoUtils;
+import org.apache.isis.schema.chg.v2.ChangesDto;
+import 
org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocForXmlComponentWkt;
+
+public class ChangesDtoComponentWkt extends AsciiDocForXmlComponentWkt {
+
+    private static final long serialVersionUID = 1L;
+
+    public ChangesDtoComponentWkt(String id, IModel<?> model) {
+        super(id, model);
+    }
+
+    @Override
+    protected String asHtml(Object value) {
+        if(value instanceof ChangesDto) {
+            return asHtml(ChangesDtoUtils.toXml((ChangesDto) value));
+        }
+        return super.asHtml(value);
+    }
 
-@Configuration
-@Import({
-    IsisModuleValAsciidocApplib.class,
-    AsciiDocPanelFactoriesWkt.Parented.class,
-    AsciiDocPanelFactoriesWkt.Standalone.class,
-})
-public class IsisModuleValAsciidocUiWkt {
 }
diff --git 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoPanelFactoriesWkt.java
similarity index 65%
copy from 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
copy to 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoPanelFactoriesWkt.java
index 1a58f4a..200f797 100644
--- 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
+++ 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoPanelFactoriesWkt.java
@@ -17,23 +17,15 @@
  *  under the License.
  */
 
-package org.apache.isis.valuetypes.asciidoc.ui.wkt.components;
+package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.chg.v2;
 
 import org.springframework.stereotype.Component;
 
-import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
+import org.apache.isis.schema.chg.v2.ChangesDto;
 import 
org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponentFactory;
 import 
org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupPanelFactories;
 
-import lombok.val;
-
-/**
- * @implNote Almost a copy of {@code Parented} and {@code Standalone} in 
- * {@link MarkupPanelFactories}, but specific to 
- * the {@link AsciiDoc} value-type which requires client-side java-script to be
- * executed to enable syntax highlighting
- */
-public class AsciiDocPanelFactoriesWkt {
+public class ChangesDtoPanelFactoriesWkt {
 
     // -- PARENTED
 
@@ -42,19 +34,13 @@ public class AsciiDocPanelFactoriesWkt {
         private static final long serialVersionUID = 1L;
 
         public Parented() {
-            super(AsciiDoc.class);
+            super(ChangesDto.class);
         }
 
         @Override
         protected MarkupComponentFactory getMarkupComponentFactory() {
-            return (id, model) -> {
-                val markupComponent = new AsciiDocComponentWkt(id, model);
-                markupComponent.setEnabled(false);
-                return markupComponent;    
-            };
-
+            return ChangesDtoComponentWkt::new;
         }
-
     }
 
     // -- STANDALONE
@@ -64,18 +50,13 @@ public class AsciiDocPanelFactoriesWkt {
         private static final long serialVersionUID = 1L;
 
         public Standalone() {
-            super(AsciiDoc.class);
+            super(ChangesDto.class);
         }
 
         @Override
         protected MarkupComponentFactory getMarkupComponentFactory() {
-            return (id, model) -> {
-                val markupComponent = new AsciiDocComponentWkt(id, model);
-                return markupComponent;    
-            };
+            return ChangesDtoComponentWkt::new;
         }
-
     }
 
-
 }
diff --git 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoComponentWkt.java
similarity index 56%
copy from 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
copy to 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoComponentWkt.java
index 0d09de0..f8df038 100644
--- 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
+++ 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoComponentWkt.java
@@ -16,19 +16,28 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.valuetypes.asciidoc.ui.wkt;
+package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.cmd.v2;
 
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
+import org.apache.wicket.model.IModel;
 
-import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
-import 
org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt;
+import org.apache.isis.applib.util.schema.CommandDtoUtils;
+import org.apache.isis.schema.cmd.v2.CommandDto;
+import 
org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocForXmlComponentWkt;
+
+public class CommandDtoComponentWkt extends AsciiDocForXmlComponentWkt {
+
+    private static final long serialVersionUID = 1L;
+
+    public CommandDtoComponentWkt(String id, IModel<?> model) {
+        super(id, model);
+    }
+
+    @Override
+    protected String asHtml(Object value) {
+        if(value instanceof CommandDto) {
+            return asHtml(CommandDtoUtils.toXml((CommandDto) value));
+        }
+        return super.asHtml(value);
+    }
 
-@Configuration
-@Import({
-    IsisModuleValAsciidocApplib.class,
-    AsciiDocPanelFactoriesWkt.Parented.class,
-    AsciiDocPanelFactoriesWkt.Standalone.class,
-})
-public class IsisModuleValAsciidocUiWkt {
 }
diff --git 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoPanelFactoriesWkt.java
similarity index 65%
copy from 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
copy to 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoPanelFactoriesWkt.java
index 1a58f4a..946d492 100644
--- 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
+++ 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoPanelFactoriesWkt.java
@@ -17,23 +17,15 @@
  *  under the License.
  */
 
-package org.apache.isis.valuetypes.asciidoc.ui.wkt.components;
+package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.cmd.v2;
 
 import org.springframework.stereotype.Component;
 
-import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
+import org.apache.isis.schema.cmd.v2.CommandDto;
 import 
org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponentFactory;
 import 
org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupPanelFactories;
 
-import lombok.val;
-
-/**
- * @implNote Almost a copy of {@code Parented} and {@code Standalone} in 
- * {@link MarkupPanelFactories}, but specific to 
- * the {@link AsciiDoc} value-type which requires client-side java-script to be
- * executed to enable syntax highlighting
- */
-public class AsciiDocPanelFactoriesWkt {
+public class CommandDtoPanelFactoriesWkt {
 
     // -- PARENTED
 
@@ -42,19 +34,13 @@ public class AsciiDocPanelFactoriesWkt {
         private static final long serialVersionUID = 1L;
 
         public Parented() {
-            super(AsciiDoc.class);
+            super(CommandDto.class);
         }
 
         @Override
         protected MarkupComponentFactory getMarkupComponentFactory() {
-            return (id, model) -> {
-                val markupComponent = new AsciiDocComponentWkt(id, model);
-                markupComponent.setEnabled(false);
-                return markupComponent;    
-            };
-
+            return CommandDtoComponentWkt::new;
         }
-
     }
 
     // -- STANDALONE
@@ -64,18 +50,13 @@ public class AsciiDocPanelFactoriesWkt {
         private static final long serialVersionUID = 1L;
 
         public Standalone() {
-            super(AsciiDoc.class);
+            super(CommandDto.class);
         }
 
         @Override
         protected MarkupComponentFactory getMarkupComponentFactory() {
-            return (id, model) -> {
-                val markupComponent = new AsciiDocComponentWkt(id, model);
-                return markupComponent;    
-            };
+            return CommandDtoComponentWkt::new;
         }
-
     }
 
-
 }
diff --git 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoComponentWkt.java
similarity index 55%
copy from 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
copy to 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoComponentWkt.java
index 0d09de0..d727b5e 100644
--- 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/IsisModuleValAsciidocUiWkt.java
+++ 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoComponentWkt.java
@@ -16,19 +16,28 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.valuetypes.asciidoc.ui.wkt;
+package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.ixn.v2;
 
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
+import org.apache.wicket.model.IModel;
 
-import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
-import 
org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocPanelFactoriesWkt;
+import org.apache.isis.applib.util.schema.InteractionDtoUtils;
+import org.apache.isis.schema.ixn.v2.InteractionDto;
+import 
org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocForXmlComponentWkt;
+
+public class InteractionDtoComponentWkt extends AsciiDocForXmlComponentWkt {
+
+    private static final long serialVersionUID = 1L;
+
+    public InteractionDtoComponentWkt(String id, IModel<?> model) {
+        super(id, model);
+    }
+
+    @Override
+    protected String asHtml(Object value) {
+        if(value instanceof InteractionDto) {
+            return asHtml(InteractionDtoUtils.toXml((InteractionDto) value));
+        }
+        return super.asHtml(value);
+    }
 
-@Configuration
-@Import({
-    IsisModuleValAsciidocApplib.class,
-    AsciiDocPanelFactoriesWkt.Parented.class,
-    AsciiDocPanelFactoriesWkt.Standalone.class,
-})
-public class IsisModuleValAsciidocUiWkt {
 }
diff --git 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoPanelFactoriesWkt.java
similarity index 65%
copy from 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
copy to 
valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoPanelFactoriesWkt.java
index 1a58f4a..9edcc4f 100644
--- 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocPanelFactoriesWkt.java
+++ 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoPanelFactoriesWkt.java
@@ -17,23 +17,15 @@
  *  under the License.
  */
 
-package org.apache.isis.valuetypes.asciidoc.ui.wkt.components;
+package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.ixn.v2;
 
 import org.springframework.stereotype.Component;
 
-import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
+import org.apache.isis.schema.ixn.v2.InteractionDto;
 import 
org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponentFactory;
 import 
org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupPanelFactories;
 
-import lombok.val;
-
-/**
- * @implNote Almost a copy of {@code Parented} and {@code Standalone} in 
- * {@link MarkupPanelFactories}, but specific to 
- * the {@link AsciiDoc} value-type which requires client-side java-script to be
- * executed to enable syntax highlighting
- */
-public class AsciiDocPanelFactoriesWkt {
+public class InteractionDtoPanelFactoriesWkt {
 
     // -- PARENTED
 
@@ -42,19 +34,13 @@ public class AsciiDocPanelFactoriesWkt {
         private static final long serialVersionUID = 1L;
 
         public Parented() {
-            super(AsciiDoc.class);
+            super(InteractionDto.class);
         }
 
         @Override
         protected MarkupComponentFactory getMarkupComponentFactory() {
-            return (id, model) -> {
-                val markupComponent = new AsciiDocComponentWkt(id, model);
-                markupComponent.setEnabled(false);
-                return markupComponent;    
-            };
-
+            return InteractionDtoComponentWkt::new;
         }
-
     }
 
     // -- STANDALONE
@@ -64,18 +50,13 @@ public class AsciiDocPanelFactoriesWkt {
         private static final long serialVersionUID = 1L;
 
         public Standalone() {
-            super(AsciiDoc.class);
+            super(InteractionDto.class);
         }
 
         @Override
         protected MarkupComponentFactory getMarkupComponentFactory() {
-            return (id, model) -> {
-                val markupComponent = new AsciiDocComponentWkt(id, model);
-                return markupComponent;    
-            };
+            return InteractionDtoComponentWkt::new;
         }
-
     }
 
-
 }
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent.java
index 9d1b4d5..84c2d96 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent.java
@@ -52,7 +52,7 @@ public class MarkupComponent extends WebComponent {
 
     // -- HELPER
 
-    protected static CharSequence extractHtmlOrElse(Object modelObject, final 
String fallback) {
+    protected CharSequence extractHtmlOrElse(Object modelObject, final String 
fallback) {
 
         if(modelObject==null) {
             return fallback;
@@ -67,15 +67,23 @@ public class MarkupComponent extends WebComponent {
 
             final Object value = adapter.getPojo();
 
-            if(!(value instanceof HasHtml))
-                return fallback;
+            val asHtml = asHtml(value);
+            if(asHtml != null) {
+                return asHtml;
+            }
 
-            return ((HasHtml)value).asHtml();
+            return fallback;
         }
 
         return modelObject.toString();
 
     }
 
+    protected String asHtml(Object value) {
+        if (value instanceof HasHtml) {
+            return ((HasHtml)value).asHtml();
+        }
+        return null;
+    }
 
 }

Reply via email to