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 2022/08/05 08:01:45 UTC
[isis] branch master updated: ISIS-3112: fixes Prism JS load order
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 80c58f2a67 ISIS-3112: fixes Prism JS load order
80c58f2a67 is described below
commit 80c58f2a67403faa383e4a4edb7cac7c6d6d0543
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Aug 5 10:01:39 2022 +0200
ISIS-3112: fixes Prism JS load order
---
.../demoapp/dom/domain/_changes/ChangesVm.java | 34 ++++------
.../wicket/markup/ListeningMarkupComponent.java | 4 +-
.../ui/wkt/components/AsciiDocComponentWkt.java | 50 ++------------
.../ui/wkt/components/MarkdownComponentWkt.java | 47 +------------
.../wkt/components/MarkdownPanelFactoriesWkt.java | 2 +-
.../isis/viewer/commons/prism/PrismLanguage.java | 5 +-
.../components/scalars/markup/MarkupComponent.java | 76 +++++++++++++++++++---
.../wicket/ui/errors/ExceptionStackTracePanel.java | 6 +-
.../org/apache/isis/viewer/wicket/ui/util/Wkt.java | 3 +-
9 files changed, 95 insertions(+), 132 deletions(-)
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/_changes/ChangesVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/_changes/ChangesVm.java
index a4c2c92af0..3d5fdf1b24 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/_changes/ChangesVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/_changes/ChangesVm.java
@@ -19,43 +19,28 @@
package demoapp.dom.domain._changes;
import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
import javax.inject.Named;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.Collection;
-import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.MemberSupport;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.LabelPosition;
import org.apache.isis.applib.annotation.Nature;
import org.apache.isis.applib.annotation.ObjectSupport;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.annotation.ValueSemantics;
import org.apache.isis.applib.jaxb.JavaTimeXMLGregorianCalendarMarshalling;
-import org.apache.isis.applib.jaxb.JavaUtilJaxbAdapters;
-import org.apache.isis.applib.util.JaxbUtil;
-import org.apache.isis.applib.util.schema.ChangesDtoUtils;
import org.apache.isis.schema.chg.v2.ChangesDto;
-import org.apache.isis.schema.common.v2.OidsDto;
+import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
-import lombok.val;
-
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain.actions.Action.associateWith.child.ActionAssociateWithChildVm;
@XmlRootElement(name = "root")
@XmlType
@@ -65,21 +50,24 @@ import demoapp.dom.domain.actions.Action.associateWith.child.ActionAssociateWith
nature=Nature.VIEW_MODEL
)
@NoArgsConstructor
+@AllArgsConstructor
public class ChangesVm {
+ @ObjectSupport
public String title() {
int numCreated = changesDto.getObjects().getCreated().getOid().size();
int numUpdated = changesDto.getObjects().getUpdated().getOid().size();
int numDeleted = changesDto.getObjects().getDeleted().getOid().size();
- LocalDateTime completedAt = JavaTimeXMLGregorianCalendarMarshalling.toLocalDateTime(changesDto.getCompletedAt());
- return String.format("%s: %d created, %d updated, %d deleted", completedAt, numCreated, numUpdated, numDeleted);
+ LocalDateTime completedAt = JavaTimeXMLGregorianCalendarMarshalling
+ .toLocalDateTime(changesDto.getCompletedAt());
+ return String.format("%s: %d created, %d updated, %d deleted",
+ completedAt, numCreated, numUpdated, numDeleted);
}
+ @Property(editing = Editing.DISABLED)
+ @PropertyLayout(fieldSetName = "ChangesDto", labelPosition = LabelPosition.NONE)
@ValueSemantics(provider = "pretty-render")
@Getter @Setter
private ChangesDto changesDto;
- public ChangesVm(ChangesDto dto) {
- this.changesDto = dto;
- }
}
diff --git a/extensions/vw/sse/wicket/src/main/java/org/apache/isis/extensions/sse/wicket/markup/ListeningMarkupComponent.java b/extensions/vw/sse/wicket/src/main/java/org/apache/isis/extensions/sse/wicket/markup/ListeningMarkupComponent.java
index acad3ccd5b..b206256c43 100644
--- a/extensions/vw/sse/wicket/src/main/java/org/apache/isis/extensions/sse/wicket/markup/ListeningMarkupComponent.java
+++ b/extensions/vw/sse/wicket/src/main/java/org/apache/isis/extensions/sse/wicket/markup/ListeningMarkupComponent.java
@@ -43,14 +43,14 @@ public class ListeningMarkupComponent extends MarkupComponent {
final String id,
final ScalarModel model,
final LocalResourcePath observing){
- super(id, model);
+ super(id, model, Options.defaults());
this.observing = observing;
}
public ListeningMarkupComponent(
final String id,
final ValueModel model){
- super(id, model);
+ super(id, model, Options.defaults());
this.observing = null;
}
diff --git a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocComponentWkt.java b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocComponentWkt.java
index b2b78e69cf..508a5b88df 100644
--- a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocComponentWkt.java
+++ b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocComponentWkt.java
@@ -18,59 +18,19 @@
*/
package org.apache.isis.valuetypes.asciidoc.ui.wkt.components;
-import java.util.List;
-
-import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.MarkupStream;
-import org.apache.wicket.markup.head.CssHeaderItem;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.model.IModel;
-import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.model.models.ValueModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponent;
-import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponent_reloadJs;
-import org.apache.isis.viewer.wicket.ui.util.PrismResourcesWkt;
-
-import lombok.val;
public class AsciiDocComponentWkt extends MarkupComponent {
private static final long serialVersionUID = 1L;
- public AsciiDocComponentWkt(final String id, final ScalarModel model){
- super(id, model);
- }
-
- public AsciiDocComponentWkt(final String id, final ValueModel model){
- super(id, model);
+ public AsciiDocComponentWkt(final String id, final IModel<?> model){
+ super(id, model,
+ Options.builder()
+ .syntaxHighLighter(SyntaxHighLighter.PRISM)
+ .build());
}
- public AsciiDocComponentWkt(final String id, final IModel<String> model){
- super(id, model);
- }
-
- @Override
- public void onComponentTagBody(final MarkupStream markupStream, final ComponentTag openTag) {
- val htmlContent = extractHtmlOrElse(getDefaultModelObject(), "" /*fallback*/);
- replaceComponentTagBody(markupStream, openTag,
- MarkupComponent_reloadJs.decorate(htmlContent, jsRefs()));
- }
-
- @Override
- public void renderHead(final IHeaderResponse response) {
- super.renderHead(response);
- response.render(CssHeaderItem.forReference(PrismResourcesWkt.getCssResourceReferenceWkt()));
- for(ResourceReference jsRef : jsRefs()) {
- response.render(JavaScriptHeaderItem.forReference(jsRef));
- }
- }
-
- private static final List<ResourceReference> jsRefs() {
- return PrismResourcesWkt.getJsResourceReferencesWkt();
- }
-
-
}
diff --git a/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownComponentWkt.java b/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownComponentWkt.java
index 3f376d4e59..7fe70548d1 100644
--- a/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownComponentWkt.java
+++ b/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownComponentWkt.java
@@ -18,59 +18,16 @@
*/
package org.apache.isis.valuetypes.markdown.ui.wkt.components;
-import java.util.List;
-
-import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.MarkupStream;
-import org.apache.wicket.markup.head.CssHeaderItem;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.model.IModel;
-import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.model.models.ValueModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponent;
-import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponent_reloadJs;
-import org.apache.isis.viewer.wicket.ui.util.PrismResourcesWkt;
-
-import lombok.val;
public class MarkdownComponentWkt extends MarkupComponent {
private static final long serialVersionUID = 1L;
- public MarkdownComponentWkt(final String id, final ScalarModel model){
- super(id, model);
- }
-
- public MarkdownComponentWkt(final String id, final ValueModel model){
- super(id, model);
- }
-
- public MarkdownComponentWkt(final String id, final IModel<String> model){
- super(id, model);
- }
-
-
- @Override
- public void onComponentTagBody(final MarkupStream markupStream, final ComponentTag openTag) {
- val htmlContent = extractHtmlOrElse(getDefaultModelObject(), "" /*fallback*/);
- replaceComponentTagBody(markupStream, openTag,
- MarkupComponent_reloadJs.decorate(htmlContent, jsRefs()));
- }
-
- @Override
- public void renderHead(final IHeaderResponse response) {
- super.renderHead(response);
- response.render(CssHeaderItem.forReference(PrismResourcesWkt.getCssResourceReferenceWkt()));
- for(ResourceReference jsRef : jsRefs()) {
- response.render(JavaScriptHeaderItem.forReference(jsRef));
- }
- }
-
- private static final List<ResourceReference> jsRefs() {
- return PrismResourcesWkt.getJsResourceReferencesWkt();
+ public MarkdownComponentWkt(final String id, final IModel<?> model){
+ super(id, model, Options.defaults());
}
}
diff --git a/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownPanelFactoriesWkt.java b/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownPanelFactoriesWkt.java
index fa2d043dc0..57dcfe78b2 100644
--- a/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownPanelFactoriesWkt.java
+++ b/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownPanelFactoriesWkt.java
@@ -67,7 +67,7 @@ public class MarkdownPanelFactoriesWkt {
@Override
protected MarkupComponent newMarkupComponent(final String id, final ValueModel model) {
- return new MarkupComponent(id, model);
+ return new MarkdownComponentWkt(id, model);
}
}
diff --git a/viewers/commons/prism/src/main/java/org/apache/isis/viewer/commons/prism/PrismLanguage.java b/viewers/commons/prism/src/main/java/org/apache/isis/viewer/commons/prism/PrismLanguage.java
index 8521dc4b54..88e49f68f0 100644
--- a/viewers/commons/prism/src/main/java/org/apache/isis/viewer/commons/prism/PrismLanguage.java
+++ b/viewers/commons/prism/src/main/java/org/apache/isis/viewer/commons/prism/PrismLanguage.java
@@ -31,10 +31,12 @@ public enum PrismLanguage {
JAVA("java"),
JAVASCRIPT("javascript"),
ASCIIDOC("asciidoc"),
- JAVADOC("javadoc"),
JAVADOCLIKE("javadoclike"),
+ JAVADOC("javadoc"),
JSON("json"),
PROPERTIES("properties"),
+ XML_DOC("xml-doc"),
+ YAML("yaml"),
;
final String languageSuffix;
public String jsFile() {
@@ -42,6 +44,7 @@ public enum PrismLanguage {
}
public static List<PrismLanguage> mostCommon() {
+ //order matters, eg. JAVADOCLIKE must come before JAVADOC
return Arrays.asList(PrismLanguage.values());
}
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 a46175b942..3b9af3b8f7 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
@@ -18,48 +18,104 @@
*/
package org.apache.isis.viewer.wicket.ui.components.scalars.markup;
+import java.io.Serializable;
+import java.util.List;
import java.util.Optional;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.MarkupStream;
+import org.apache.wicket.markup.head.CssHeaderItem;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.html.WebComponent;
import org.apache.wicket.markup.parser.XmlTag.TagType;
import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
+import org.apache.wicket.request.resource.ResourceReference;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
import org.apache.isis.viewer.commons.model.feature.ParameterUiModel;
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.model.models.ScalarPropertyModel;
import org.apache.isis.viewer.wicket.model.models.ValueModel;
+import org.apache.isis.viewer.wicket.ui.util.PrismResourcesWkt;
+import lombok.Builder;
+import lombok.Value;
import lombok.val;
public class MarkupComponent extends WebComponent {
private static final long serialVersionUID = 1L;
- public MarkupComponent(final String id, final ScalarModel model){
- super(id, model);
+ public static enum SyntaxHighLighter {
+ NONE {
+ @Override
+ void renderHead(final IHeaderResponse response) {
+ }
+ @Override
+ CharSequence htmlContentPostProcess(final CharSequence htmlContent) {
+ return htmlContent;
+ }
+ },
+ PRISM {
+ @Override
+ void renderHead(final IHeaderResponse response) {
+ response.render(CssHeaderItem.forReference(PrismResourcesWkt.getCssResourceReferenceWkt()));
+ for(ResourceReference jsRef : prismJsRefs()) {
+ response.render(JavaScriptHeaderItem.forReference(jsRef));
+ }
+ }
+ @Override
+ CharSequence htmlContentPostProcess(final CharSequence htmlContent) {
+ return MarkupComponent_reloadJs.decorate(htmlContent, prismJsRefs());
+ }
+ };
+ abstract void renderHead(IHeaderResponse response);
+ abstract CharSequence htmlContentPostProcess(CharSequence htmlContent);
+ private static final List<ResourceReference> prismJsRefs() {
+ return PrismResourcesWkt.getJsResourceReferencesWkt();
+ }
}
- public MarkupComponent(final String id, final ValueModel model){
- super(id, model);
+ @Value @Builder
+ public static class Options implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Builder.Default
+ private SyntaxHighLighter syntaxHighLighter = SyntaxHighLighter.NONE;
+
+ public static Options defaults() {
+ return Options.builder().build();
+ }
}
- public MarkupComponent(final String id, final IModel<String> model){
+ // -- CONSTRUCTION
+
+ private final Options options;
+
+ protected MarkupComponent(final String id, final IModel<?> model, final Options options) {
super(id, model);
+ this.options = options;
+ }
+
+ public MarkupComponent(final String id, final IModel<?> model) {
+ this(id, model, Options.defaults());
}
- public MarkupComponent(final String id, final String html){
- super(id, Model.of(html));
+ // --
+
+ @Override
+ public final void renderHead(final IHeaderResponse response) {
+ super.renderHead(response);
+ options.getSyntaxHighLighter().renderHead(response);
}
+
@Override
public void onComponentTagBody(final MarkupStream markupStream, final ComponentTag openTag){
val htmlContent = extractHtmlOrElse(getDefaultModelObject(), "" /*fallback*/);
- replaceComponentTagBody(markupStream, openTag, htmlContent);
+ replaceComponentTagBody(markupStream, openTag,
+ options.getSyntaxHighLighter().htmlContentPostProcess(htmlContent));
}
@Override
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.java
index d31fcde73e..98335c4a06 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/ExceptionStackTracePanel.java
@@ -37,14 +37,12 @@ import org.apache.wicket.request.resource.JavaScriptResourceReference;
import org.apache.isis.applib.services.error.Ticket;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.model.models.PageType;
-import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponent;
import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModel;
import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModelProvider;
import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
-import org.apache.isis.viewer.wicket.ui.pages.home.HomePage;
+import org.apache.isis.viewer.wicket.ui.util.Wkt;
import org.apache.isis.viewer.wicket.ui.util.WktComponents;
import org.apache.isis.viewer.wicket.ui.util.WktLinks;
-import org.apache.isis.viewer.wicket.ui.util.Wkt;
public class ExceptionStackTracePanel extends Panel {
@@ -98,7 +96,7 @@ public class ExceptionStackTracePanel extends Panel {
if(ticketMarkup == null) {
WktComponents.permanentlyHide(this, ID_TICKET_MARKUP);
} else {
- add(new MarkupComponent(ID_TICKET_MARKUP, Model.of(ticket.getMarkup())));
+ Wkt.markupAdd(this, ID_TICKET_MARKUP, ticket.getMarkup());
}
final boolean suppressExceptionDetail =
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java
index f25e6168ed..ff1753a1cd 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java
@@ -63,6 +63,7 @@ import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.OddEvenItem;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.CssResourceReference;
import org.apache.wicket.request.resource.IResource;
@@ -823,7 +824,7 @@ public class Wkt {
}
public MarkupComponent markup(final String id, final String html) {
- return new MarkupComponent(id, html);
+ return markup(id, Model.of(html));
}
public MarkupComponent markupAdd(final MarkupContainer container, final String id, final String html) {