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 06:09:47 UTC
[isis] branch master updated: ISIS-2871: prepare: allow plain HTML
rendering based on value semantics
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 e28fb29 ISIS-2871: prepare: allow plain HTML rendering based on value semantics
e28fb29 is described below
commit e28fb29f2da3bc4f01cc04e7bc23e149b3cceb95
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Sep 18 08:09:36 2021 +0200
ISIS-2871: prepare: allow plain HTML rendering based on value semantics
without the need of ever creating additional UI components
---
.../HasHtml.java => adapters/HtmlRenderer.java} | 10 ++--
.../org/apache/isis/applib/adapters/Renderer.java | 5 +-
.../java/org/apache/isis/applib/value/Markup.java | 47 ++++-------------
.../facets/value/markup/MarkupValueSemantics.java | 4 +-
.../dom/types/isisext/sse/AsyncActionMenu.java | 2 +-
.../ui/components/markup/MarkupFieldFactory.java | 28 ++++++----
.../valuetypes/asciidoc/applib/value/AsciiDoc.java | 8 +--
.../metamodel/IsisModuleValAsciidocMetaModel.java | 6 +++
.../semantics/AsciiDocValueSemantics.java | 4 +-
.../semantics/ChangesDtoValueSemantics.java} | 31 +++++------
.../semantics/CommandDtoValueSemantics.java} | 29 +++++-----
.../semantics/InteractionDtoValueSemantics.java} | 29 +++++-----
...mantics.java => XmlValueSemanticsAbstract.java} | 43 ++++++---------
.../ui/wkt/IsisModuleValAsciidocUiWkt.java | 9 ----
.../schema/chg/v2/ChangesDtoComponentWkt.java | 44 ----------------
.../schema/chg/v2/ChangesDtoPanelFactoriesWkt.java | 61 ----------------------
.../schema/cmd/v2/CommandDtoPanelFactoriesWkt.java | 61 ----------------------
.../ixn/v2/InteractionDtoPanelFactoriesWkt.java | 61 ----------------------
.../valuetypes/markdown/applib/value/Markdown.java | 4 +-
.../semantics/MarkdownValueSemantics.java | 4 +-
.../ui/wkt/webmodule/ServerSentEventsServlet.java | 2 +-
21 files changed, 108 insertions(+), 384 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/value/HasHtml.java b/api/applib/src/main/java/org/apache/isis/applib/adapters/HtmlRenderer.java
similarity index 81%
rename from api/applib/src/main/java/org/apache/isis/applib/value/HasHtml.java
rename to api/applib/src/main/java/org/apache/isis/applib/adapters/HtmlRenderer.java
index e6a0a23..afa72e0 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/value/HasHtml.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/adapters/HtmlRenderer.java
@@ -16,14 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
-
-package org.apache.isis.applib.value;
+package org.apache.isis.applib.adapters;
/**
- * @since 2.0 {@index}
+ * Indicates the underlying {@link Renderer} produces plain HTML.
+ * @since 2.x {@index}
*/
-public interface HasHtml {
-
- String asHtml();
+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 6acf062..e865c6bf 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
@@ -18,10 +18,13 @@
*/
package org.apache.isis.applib.adapters;
+/**
+ * @since 2.x {@index}
+ */
public interface Renderer<T> {
/**
- * The value in its read-only presentation form, eg. html. (irreversible)
+ * The value in its read-only presentation form. (irreversible)
*/
String presentationValue(ValueSemanticsProvider.Context context, T 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 6933d77..ad1a57e 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
@@ -29,20 +29,26 @@ import org.apache.isis.applib.IsisModuleApplib;
import org.apache.isis.applib.annotation.Value;
import org.apache.isis.commons.internal.base._Strings;
+import lombok.EqualsAndHashCode;
+
/**
- * Intended to be used as a read-only property, to render arbitrary HTML
- * markup into the user interface.
+ * Intended to be used as a read-only property, to render plain HTML.
*
* @since 2.0 {@index}
*/
@Value(logicalTypeName = IsisModuleApplib.NAMESPACE + ".value.Markup")
@XmlJavaTypeAdapter(Markup.JaxbToStringAdapter.class) // for JAXB view model support
-public final class Markup implements HasHtml, Serializable {
+@EqualsAndHashCode
+public final class Markup implements Serializable {
private static final long serialVersionUID = 1L;
private final String html;
+ public static Markup valueOf(final String html) {
+ return new Markup(html);
+ }
+
public Markup() {
this(null);
}
@@ -51,40 +57,10 @@ public final class Markup implements HasHtml, Serializable {
this.html = html!=null ? html : "";
}
- @Override
public String asHtml() {
return html;
}
- public boolean isEqualTo(final Markup other) {
- return other==null ? false : this.html.equals(other.html);
- }
-
- public String title() {
- return "Markup[length="+html.length()+"]";
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- return isEqualTo((Markup) obj);
- }
-
- @Override
- public int hashCode() {
- return html.hashCode();
- }
-
- @Override
- public String toString() {
- return "Markup[length="+html.length()+", html="+html+"]";
- }
-
public static final class JaxbToStringAdapter extends XmlAdapter<String, Markup> {
/**
@@ -111,9 +87,6 @@ public final class Markup implements HasHtml, Serializable {
}
}
- /** syntactic sugar */
- public static Markup valueOfHtml(final String html) {
- return new Markup(html);
- }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/markup/MarkupValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/markup/MarkupValueSemantics.java
index 0e873ea..683b881 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/markup/MarkupValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/markup/MarkupValueSemantics.java
@@ -22,8 +22,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;
@@ -33,7 +33,7 @@ extends AbstractValueSemanticsProvider<Markup>
implements
EncoderDecoder<Markup>,
Parser<Markup>,
- Renderer<Markup>{
+ HtmlRenderer<Markup>{
// -- ENCODER DECODER
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/sse/AsyncActionMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/sse/AsyncActionMenu.java
index d6fff00..0ecc8ef 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/sse/AsyncActionMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/sse/AsyncActionMenu.java
@@ -48,7 +48,7 @@ public class AsyncActionMenu {
public AsyncActionDemo asyncActions(){
val demo = factoryService.viewModel(new AsyncActionDemo());
// demo.initDefaults();
- demo.setProgressView(Markup.valueOfHtml("Please start a task!"));
+ demo.setProgressView(Markup.valueOf("Please start a task!"));
return demo;
}
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 98160ae..f62bf3a8 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,14 +26,15 @@ 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.applib.value.HasHtml;
+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.extern.log4j.Log4j2;
import lombok.val;
+import lombok.extern.log4j.Log4j2;
import javafx.application.HostServices;
import javafx.application.Platform;
@@ -55,15 +56,20 @@ public class MarkupFieldFactory implements UiComponentHandlerFx {
private final HostServices hostServices;
@Override
- public boolean isHandling(ComponentRequest request) {
- return request.isFeatureTypeInstanceOf(HasHtml.class);
+ public boolean isHandling(final ComponentRequest request) {
+ return request.getFeatureTypeSpec().hasValueSemantics(HtmlRenderer.class);
}
@Override
- public Node handle(ComponentRequest request) {
- val markupHtml = request.getFeatureValue(HasHtml.class)
- .map(HasHtml::asHtml)
- .orElse("");
+ 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);
}
@@ -88,7 +94,7 @@ public class MarkupFieldFactory implements UiComponentHandlerFx {
private final WebView webview = new WebView();
private final WebEngine webEngine = webview.getEngine();
- public WebViewFitContent(Consumer<String> hrefHandler, String content) {
+ public WebViewFitContent(final Consumer<String> hrefHandler, final String content) {
this.hrefHandler = hrefHandler;
@@ -106,7 +112,7 @@ public class MarkupFieldFactory implements UiComponentHandlerFx {
}
});
- webview.getChildrenUnmodifiable().addListener((ListChangeListener.Change<? extends Node> change) -> {
+ webview.getChildrenUnmodifiable().addListener((final ListChangeListener.Change<? extends Node> change) -> {
val scrolls = webview.lookupAll(".scroll-bar");
for (val scroll : scrolls) {
scroll.setVisible(false);
@@ -169,7 +175,7 @@ public class MarkupFieldFactory implements UiComponentHandlerFx {
- private String getHtml(String content) {
+ private String getHtml(final String content) {
return "<html><body>" +
"<div id=\"mydiv\">" + content + "</div>" +
"</body></html>";
diff --git a/valuetypes/asciidoc/applib/src/main/java/org/apache/isis/valuetypes/asciidoc/applib/value/AsciiDoc.java b/valuetypes/asciidoc/applib/src/main/java/org/apache/isis/valuetypes/asciidoc/applib/value/AsciiDoc.java
index f6ee1d1..e845be0 100644
--- a/valuetypes/asciidoc/applib/src/main/java/org/apache/isis/valuetypes/asciidoc/applib/value/AsciiDoc.java
+++ b/valuetypes/asciidoc/applib/src/main/java/org/apache/isis/valuetypes/asciidoc/applib/value/AsciiDoc.java
@@ -24,7 +24,6 @@ import java.util.Objects;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.apache.isis.applib.IsisModuleApplib;
-import org.apache.isis.applib.value.HasHtml;
import org.apache.isis.valuetypes.asciidoc.applib.jaxb.AsciiDocJaxbAdapter;
import lombok.AccessLevel;
@@ -41,7 +40,7 @@ import lombok.experimental.Accessors;
logicalTypeName = IsisModuleApplib.NAMESPACE + ".value.AsciiDoc")
@EqualsAndHashCode
@XmlJavaTypeAdapter(AsciiDocJaxbAdapter.class) // for JAXB view model support
-public final class AsciiDoc implements HasHtml, Serializable {
+public final class AsciiDoc implements Serializable {
private static final long serialVersionUID = 1L;
@@ -64,7 +63,6 @@ public final class AsciiDoc implements HasHtml, Serializable {
this.adoc = adoc !=null ? adoc : "";
}
- @Override
public String asHtml() {
return html();
}
@@ -80,6 +78,10 @@ public final class AsciiDoc implements HasHtml, Serializable {
// -- UTILITY
+ /**
+ * Not strictly required, but allows for eager loading.
+ * Is a one-shot, that may take about 5 seconds.
+ */
public static void loadJRuby() {
Converter.getAsciidoctor();
}
diff --git a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/IsisModuleValAsciidocMetaModel.java b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/IsisModuleValAsciidocMetaModel.java
index 5a94add..382945e 100644
--- a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/IsisModuleValAsciidocMetaModel.java
+++ b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/IsisModuleValAsciidocMetaModel.java
@@ -34,6 +34,9 @@ import org.apache.isis.core.metamodel.valuetypes.ValueTypeProvider;
import org.apache.isis.schema.common.v2.ValueType;
import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
import org.apache.isis.valuetypes.asciidoc.metamodel.semantics.AsciiDocValueSemantics;
+import org.apache.isis.valuetypes.asciidoc.metamodel.semantics.ChangesDtoValueSemantics;
+import org.apache.isis.valuetypes.asciidoc.metamodel.semantics.CommandDtoValueSemantics;
+import org.apache.isis.valuetypes.asciidoc.metamodel.semantics.InteractionDtoValueSemantics;
/**
* @since 2.0 {@index}
@@ -44,6 +47,9 @@ import org.apache.isis.valuetypes.asciidoc.metamodel.semantics.AsciiDocValueSema
IsisModuleValAsciidocMetaModel.AsciiDocValueTypeProvider.class,
AsciiDocValueSemantics.class,
+ ChangesDtoValueSemantics.class,
+ CommandDtoValueSemantics.class,
+ InteractionDtoValueSemantics.class,
})
public class IsisModuleValAsciidocMetaModel {
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 47f81d0..1f94cf6 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,8 +23,8 @@ 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.valuetypes.asciidoc.applib.value.AsciiDoc;
@@ -33,7 +33,7 @@ import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
public class AsciiDocValueSemantics
extends AbstractValueSemanticsProvider<AsciiDoc>
implements
- Renderer<AsciiDoc>,
+ HtmlRenderer<AsciiDoc>,
Parser<AsciiDoc> {
// -- RENDERER
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocForXmlComponentWkt.java b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/ChangesDtoValueSemantics.java
similarity index 55%
rename from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocForXmlComponentWkt.java
rename to valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/ChangesDtoValueSemantics.java
index 29a4864..82ce7c6 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocForXmlComponentWkt.java
+++ b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/ChangesDtoValueSemantics.java
@@ -16,30 +16,25 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.valuetypes.asciidoc.ui.wkt.components;
+package org.apache.isis.valuetypes.asciidoc.metamodel.semantics;
-import org.apache.wicket.model.IModel;
+import javax.inject.Named;
-import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
+import org.springframework.stereotype.Component;
-import lombok.val;
+import org.apache.isis.applib.util.schema.ChangesDtoUtils;
+import org.apache.isis.schema.chg.v2.ChangesDto;
-public class AsciiDocForXmlComponentWkt extends AsciiDocComponentWkt {
+import lombok.NonNull;
- private static final long serialVersionUID = 1L;
+@Component
+@Named("isis.val.ChangesDtoValueSemantics")
+public class ChangesDtoValueSemantics
+extends XmlValueSemanticsAbstract<ChangesDto> {
- public AsciiDocForXmlComponentWkt(final String id, final IModel<?> model) {
- super(id, model);
- setEnabled(false);
- }
-
- /**
- * for convenience of subtypes.
- * @param xml
- */
- protected final String asHtml(final String xml) {
- val adoc = "[source,xml]\n----\n" + xml + "\n----";
- return AsciiDoc.valueOf(adoc).asHtml();
+ @Override
+ protected String asXml(@NonNull final ChangesDto value) {
+ return ChangesDtoUtils.toXml(value);
}
}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoComponentWkt.java b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/CommandDtoValueSemantics.java
similarity index 56%
rename from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoComponentWkt.java
rename to valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/CommandDtoValueSemantics.java
index 0791dfd..1db01a7 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoComponentWkt.java
+++ b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/CommandDtoValueSemantics.java
@@ -16,30 +16,25 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.cmd.v2;
+package org.apache.isis.valuetypes.asciidoc.metamodel.semantics;
-import org.apache.wicket.model.IModel;
+import javax.inject.Named;
+
+import org.springframework.stereotype.Component;
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;
-@Deprecated
-public class CommandDtoComponentWkt extends AsciiDocForXmlComponentWkt {
+import lombok.NonNull;
- private static final long serialVersionUID = 1L;
+@Component
+@Named("isis.val.CommandDtoValueSemantics")
+public class CommandDtoValueSemantics
+extends XmlValueSemanticsAbstract<CommandDto> {
- public CommandDtoComponentWkt(final String id, final IModel<?> model) {
- super(id, model);
+ @Override
+ protected String asXml(@NonNull final CommandDto value) {
+ return CommandDtoUtils.toXml(value);
}
- //TODO provide custom value semantics instead
-// @Override
-// protected String asHtml(Object value) {
-// if(value instanceof CommandDto) {
-// return asHtml(CommandDtoUtils.toXml((CommandDto) value));
-// }
-// return super.asHtml(value);
-// }
-
}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoComponentWkt.java b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/InteractionDtoValueSemantics.java
similarity index 56%
rename from valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoComponentWkt.java
rename to valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/InteractionDtoValueSemantics.java
index 9872c03..6bacaa3 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoComponentWkt.java
+++ b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/InteractionDtoValueSemantics.java
@@ -16,30 +16,25 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.ixn.v2;
+package org.apache.isis.valuetypes.asciidoc.metamodel.semantics;
-import org.apache.wicket.model.IModel;
+import javax.inject.Named;
+
+import org.springframework.stereotype.Component;
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;
-@Deprecated
-public class InteractionDtoComponentWkt extends AsciiDocForXmlComponentWkt {
+import lombok.NonNull;
- private static final long serialVersionUID = 1L;
+@Component
+@Named("isis.val.InteractionDtoValueSemantics")
+public class InteractionDtoValueSemantics
+extends XmlValueSemanticsAbstract<InteractionDto> {
- public InteractionDtoComponentWkt(final String id, final IModel<?> model) {
- super(id, model);
+ @Override
+ protected String asXml(@NonNull final InteractionDto value) {
+ return InteractionDtoUtils.toXml(value);
}
- //TODO provide custom value semantics instead
-// @Override
-// protected String asHtml(Object value) {
-// if(value instanceof InteractionDto) {
-// return asHtml(InteractionDtoUtils.toXml((InteractionDto) value));
-// }
-// return super.asHtml(value);
-// }
-
}
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/XmlValueSemanticsAbstract.java
similarity index 59%
copy from valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemantics.java
copy to valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/XmlValueSemanticsAbstract.java
index 47f81d0..8386c99 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/XmlValueSemanticsAbstract.java
@@ -18,46 +18,35 @@
*/
package org.apache.isis.valuetypes.asciidoc.metamodel.semantics;
-import javax.inject.Named;
-
-import org.springframework.stereotype.Component;
-
import org.apache.isis.applib.adapters.AbstractValueSemanticsProvider;
-import org.apache.isis.applib.adapters.Parser;
+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;
-@Component
-@Named("isis.val.AsciiDocValueSemantics")
-public class AsciiDocValueSemantics
-extends AbstractValueSemanticsProvider<AsciiDoc>
+import lombok.NonNull;
+
+/**
+ * Provides a {@link Renderer} that generates syntax highlighted XML.
+ * @implNote using ascii-doctor under the hoods
+ */
+abstract class XmlValueSemanticsAbstract<T>
+extends AbstractValueSemanticsProvider<T>
implements
- Renderer<AsciiDoc>,
- Parser<AsciiDoc> {
+ HtmlRenderer<T> {
// -- RENDERER
@Override
- public String presentationValue(final ValueSemanticsProvider.Context context, final AsciiDoc adoc) {
- return render(adoc, AsciiDoc::asHtml);
+ public String presentationValue(final ValueSemanticsProvider.Context context, final T value) {
+ return render(value, xmlContainer->asHtml(asXml(xmlContainer)));
}
- // -- PARSER
+ protected abstract String asXml(@NonNull T value);
- @Override
- public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final AsciiDoc adoc) {
- return adoc!=null ? adoc.getAdoc() : null;
- }
-
- @Override
- public AsciiDoc parseTextRepresentation(final ValueSemanticsProvider.Context context, final String adoc) {
- return adoc!=null ? AsciiDoc.valueOf(adoc) : null;
- }
-
- @Override
- public int typicalLength() {
- return 0;
+ private String asHtml(final String xml) {
+ final var adoc = "[source,xml]\n----\n" + xml + "\n----";
+ return AsciiDoc.valueOf(adoc).asHtml();
}
}
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 a7faf59..f05fd13 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,9 +23,6 @@ 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;
/**
* @since 2.0 {@index}
@@ -35,12 +32,6 @@ import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.ixn.v2.Inter
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/components/schema/chg/v2/ChangesDtoComponentWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoComponentWkt.java
deleted file mode 100644
index 5791518..0000000
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoComponentWkt.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.chg.v2;
-
-import org.apache.wicket.model.IModel;
-
-import org.apache.isis.valuetypes.asciidoc.ui.wkt.components.AsciiDocForXmlComponentWkt;
-
-@Deprecated
-public class ChangesDtoComponentWkt extends AsciiDocForXmlComponentWkt {
-
- private static final long serialVersionUID = 1L;
-
- public ChangesDtoComponentWkt(final String id, final IModel<?> model) {
- super(id, model);
- }
-
-
-//TODO provide custom value semantics instead
-// @Override
-// protected String asHtml(Object value) {
-// if(value instanceof ChangesDto) {
-// return asHtml(ChangesDtoUtils.toXml((ChangesDto) value));
-// }
-// return super.asHtml(value);
-// }
-
-}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoPanelFactoriesWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoPanelFactoriesWkt.java
deleted file mode 100644
index 93874d9..0000000
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/chg/v2/ChangesDtoPanelFactoriesWkt.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.chg.v2;
-
-import org.springframework.stereotype.Component;
-
-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;
-
-public class ChangesDtoPanelFactoriesWkt {
-
- // -- PARENTED
-
- @Component
- public static class Parented extends MarkupPanelFactories.ParentedAbstract {
- private static final long serialVersionUID = 1L;
-
- public Parented() {
- super(ChangesDto.class);
- }
-
- @Override
- protected MarkupComponentFactory getMarkupComponentFactory() {
- return ChangesDtoComponentWkt::new;
- }
- }
-
- // -- STANDALONE
-
- @Component
- public static class Standalone extends MarkupPanelFactories.StandaloneAbstract {
- private static final long serialVersionUID = 1L;
-
- public Standalone() {
- super(ChangesDto.class);
- }
-
- @Override
- protected MarkupComponentFactory getMarkupComponentFactory() {
- return ChangesDtoComponentWkt::new;
- }
- }
-
-}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoPanelFactoriesWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoPanelFactoriesWkt.java
deleted file mode 100644
index 3fc3db6..0000000
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/cmd/v2/CommandDtoPanelFactoriesWkt.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.cmd.v2;
-
-import org.springframework.stereotype.Component;
-
-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;
-
-public class CommandDtoPanelFactoriesWkt {
-
- // -- PARENTED
-
- @Component
- public static class Parented extends MarkupPanelFactories.ParentedAbstract {
- private static final long serialVersionUID = 1L;
-
- public Parented() {
- super(CommandDto.class);
- }
-
- @Override
- protected MarkupComponentFactory getMarkupComponentFactory() {
- return CommandDtoComponentWkt::new;
- }
- }
-
- // -- STANDALONE
-
- @Component
- public static class Standalone extends MarkupPanelFactories.StandaloneAbstract {
- private static final long serialVersionUID = 1L;
-
- public Standalone() {
- super(CommandDto.class);
- }
-
- @Override
- protected MarkupComponentFactory getMarkupComponentFactory() {
- return CommandDtoComponentWkt::new;
- }
- }
-
-}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoPanelFactoriesWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoPanelFactoriesWkt.java
deleted file mode 100644
index 81c9d32..0000000
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/schema/ixn/v2/InteractionDtoPanelFactoriesWkt.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.valuetypes.asciidoc.ui.wkt.components.schema.ixn.v2;
-
-import org.springframework.stereotype.Component;
-
-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;
-
-public class InteractionDtoPanelFactoriesWkt {
-
- // -- PARENTED
-
- @Component
- public static class Parented extends MarkupPanelFactories.ParentedAbstract {
- private static final long serialVersionUID = 1L;
-
- public Parented() {
- super(InteractionDto.class);
- }
-
- @Override
- protected MarkupComponentFactory getMarkupComponentFactory() {
- return InteractionDtoComponentWkt::new;
- }
- }
-
- // -- STANDALONE
-
- @Component
- public static class Standalone extends MarkupPanelFactories.StandaloneAbstract {
- private static final long serialVersionUID = 1L;
-
- public Standalone() {
- super(InteractionDto.class);
- }
-
- @Override
- protected MarkupComponentFactory getMarkupComponentFactory() {
- return InteractionDtoComponentWkt::new;
- }
- }
-
-}
diff --git a/valuetypes/markdown/applib/src/main/java/org/apache/isis/valuetypes/markdown/applib/value/Markdown.java b/valuetypes/markdown/applib/src/main/java/org/apache/isis/valuetypes/markdown/applib/value/Markdown.java
index be1949a..ffc6154 100644
--- a/valuetypes/markdown/applib/src/main/java/org/apache/isis/valuetypes/markdown/applib/value/Markdown.java
+++ b/valuetypes/markdown/applib/src/main/java/org/apache/isis/valuetypes/markdown/applib/value/Markdown.java
@@ -24,7 +24,6 @@ import java.util.Objects;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.apache.isis.applib.IsisModuleApplib;
-import org.apache.isis.applib.value.HasHtml;
import org.apache.isis.valuetypes.markdown.applib.jaxb.MarkdownJaxbAdapter;
import lombok.AccessLevel;
@@ -41,7 +40,7 @@ import lombok.experimental.Accessors;
logicalTypeName = IsisModuleApplib.NAMESPACE + ".value.Markdown")
@EqualsAndHashCode
@XmlJavaTypeAdapter(MarkdownJaxbAdapter.class) // for JAXB view model support
-public class Markdown implements HasHtml, Serializable {
+public class Markdown implements Serializable {
private static final long serialVersionUID = 1L;
@@ -64,7 +63,6 @@ public class Markdown implements HasHtml, Serializable {
this.markdown = markdown !=null ? markdown : "";
}
- @Override
public String asHtml() {
return html();
}
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 70238e7..5ad5db5 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,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.valuetypes.markdown.applib.value.Markdown;
@Component
@@ -35,7 +35,7 @@ extends AbstractValueSemanticsProvider<Markdown>
implements
EncoderDecoder<Markdown>,
Parser<Markdown>,
- Renderer<Markdown> {
+ HtmlRenderer<Markdown> {
// -- ENCODER DECODER
diff --git a/valuetypes/sse/ui/wicket/src/main/java/org/apache/isis/valuetypes/sse/ui/wkt/webmodule/ServerSentEventsServlet.java b/valuetypes/sse/ui/wicket/src/main/java/org/apache/isis/valuetypes/sse/ui/wkt/webmodule/ServerSentEventsServlet.java
index c02f18f..5fd8aa3 100644
--- a/valuetypes/sse/ui/wicket/src/main/java/org/apache/isis/valuetypes/sse/ui/wkt/webmodule/ServerSentEventsServlet.java
+++ b/valuetypes/sse/ui/wicket/src/main/java/org/apache/isis/valuetypes/sse/ui/wkt/webmodule/ServerSentEventsServlet.java
@@ -136,7 +136,7 @@ public class ServerSentEventsServlet extends HttpServlet {
return false; // stop listening
}
- val payload = marshaller.marshal(Markup.valueOfHtml(source.getPayload()));
+ val payload = marshaller.marshal(Markup.valueOf(source.getPayload()));
writer
.append("data: ")