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/05/10 05:50:16 UTC
[isis] branch master updated: ISIS-3040: separation of concerns
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 ddf6f6a61c ISIS-3040: separation of concerns
ddf6f6a61c is described below
commit ddf6f6a61c3df0c4e62725b94d99986c0defa0a9
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue May 10 07:50:10 2022 +0200
ISIS-3040: separation of concerns
- encapsulate resource specifica in their corresponding classes
---
.../fullcalendar/selector/EventSourceSelector.java | 3 +-
.../wkt/viewer/CalendaredCollectionAbstract.java | 4 +-
.../fullcalendar/wkt/viewer/_Sample.java | 4 +-
.../wicket/pdfjs/wkt/integration/PdfJsPanel.java | 46 ++++++---------
.../wkt/integration/WicketStuffPdfJsReference.java | 43 --------------
.../PdfJsIntegrationReference.java} | 50 +++++++++--------
.../pdfjs/wkt/integration/res/PdfJsReference.java | 65 ++++++++++++++++++++++
.../{wicketstuff-pdf.js => pdfjs-integration.js} | 0
.../wkt/ui/components/PdfJsViewerReference.java | 5 +-
.../org/apache/isis/viewer/wicket/ui/util/Wkt.java | 10 ++++
10 files changed, 127 insertions(+), 103 deletions(-)
diff --git a/extensions/vw/fullcalendar/wicket/integration/src/main/java/org/apache/isis/extensions/fullcalendar/wkt/fullcalendar/selector/EventSourceSelector.java b/extensions/vw/fullcalendar/wicket/integration/src/main/java/org/apache/isis/extensions/fullcalendar/wkt/fullcalendar/selector/EventSourceSelector.java
index 714ffc930c..0edf5fc4a2 100644
--- a/extensions/vw/fullcalendar/wicket/integration/src/main/java/org/apache/isis/extensions/fullcalendar/wkt/fullcalendar/selector/EventSourceSelector.java
+++ b/extensions/vw/fullcalendar/wicket/integration/src/main/java/org/apache/isis/extensions/fullcalendar/wkt/fullcalendar/selector/EventSourceSelector.java
@@ -22,6 +22,7 @@ import org.apache.wicket.markup.html.IHeaderContributor;
import org.apache.wicket.markup.html.WebComponent;
import org.apache.isis.extensions.fullcalendar.wkt.fullcalendar.FullCalendar;
+import org.apache.isis.viewer.wicket.ui.util.Wkt;
public class EventSourceSelector extends WebComponent implements IHeaderContributor {
@@ -32,7 +33,7 @@ public class EventSourceSelector extends WebComponent implements IHeaderContribu
public EventSourceSelector(final String id, final FullCalendar calendar) {
super(id);
this.calendar = calendar;
- setOutputMarkupId(true);
+ Wkt.ajaxEnable(this);
}
diff --git a/extensions/vw/fullcalendar/wicket/ui/src/main/java/org/apache/isis/extensions/fullcalendar/wkt/viewer/CalendaredCollectionAbstract.java b/extensions/vw/fullcalendar/wicket/ui/src/main/java/org/apache/isis/extensions/fullcalendar/wkt/viewer/CalendaredCollectionAbstract.java
index 63c047bf7f..05db86ff97 100644
--- a/extensions/vw/fullcalendar/wicket/ui/src/main/java/org/apache/isis/extensions/fullcalendar/wkt/viewer/CalendaredCollectionAbstract.java
+++ b/extensions/vw/fullcalendar/wicket/ui/src/main/java/org/apache/isis/extensions/fullcalendar/wkt/viewer/CalendaredCollectionAbstract.java
@@ -34,6 +34,7 @@ import org.apache.isis.extensions.fullcalendar.wkt.fullcalendar.selector.EventSo
import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
import org.apache.isis.viewer.wicket.ui.panels.PanelUtil;
+import org.apache.isis.viewer.wicket.ui.util.Wkt;
import lombok.val;
@@ -70,8 +71,7 @@ extends PanelAbstract<DataTableModel, EntityCollectionModel> {
final EntityCollectionModel model = getModel();
- final NotificationPanel feedback = new NotificationPanel(ID_FEEDBACK);
- feedback.setOutputMarkupId(true);
+ final NotificationPanel feedback = Wkt.ajaxEnable(new NotificationPanel(ID_FEEDBACK));
addOrReplace(feedback);
val config = new CalendarConfig();
diff --git a/extensions/vw/fullcalendar/wicket/ui/src/main/java/org/apache/isis/extensions/fullcalendar/wkt/viewer/_Sample.java b/extensions/vw/fullcalendar/wicket/ui/src/main/java/org/apache/isis/extensions/fullcalendar/wkt/viewer/_Sample.java
index d61215495b..b0652c3808 100644
--- a/extensions/vw/fullcalendar/wicket/ui/src/main/java/org/apache/isis/extensions/fullcalendar/wkt/viewer/_Sample.java
+++ b/extensions/vw/fullcalendar/wicket/ui/src/main/java/org/apache/isis/extensions/fullcalendar/wkt/viewer/_Sample.java
@@ -36,6 +36,7 @@ import org.apache.isis.extensions.fullcalendar.wkt.fullcalendar.callback.Selecte
import org.apache.isis.extensions.fullcalendar.wkt.fullcalendar.callback.View;
import org.apache.isis.extensions.fullcalendar.wkt.fullcalendar.selector.EventSourceSelector;
import org.apache.isis.valuetypes.jodatime.applib.value.JodaTimeConverters;
+import org.apache.isis.viewer.wicket.ui.util.Wkt;
import lombok.RequiredArgsConstructor;
import lombok.val;
@@ -50,8 +51,7 @@ class _Sample {
public void buildCalendar(final WebMarkupContainer container, final String id) {
- final FeedbackPanel feedback = new FeedbackPanel("feedback");
- feedback.setOutputMarkupId(true);
+ final FeedbackPanel feedback = Wkt.ajaxEnable(new FeedbackPanel("feedback"));
container.addOrReplace(feedback);
val config = new CalendarConfig();
diff --git a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/PdfJsPanel.java b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/PdfJsPanel.java
index 95f2031831..f09eebe1fb 100644
--- a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/PdfJsPanel.java
+++ b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/PdfJsPanel.java
@@ -19,14 +19,18 @@
package org.apache.isis.extensions.viewer.wicket.pdfjs.wkt.integration;
import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.apache.wicket.markup.html.WebComponent;
import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.request.Url;
-import org.apache.wicket.util.lang.Args;
import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config.PdfJsConfig;
+import org.apache.isis.extensions.viewer.wicket.pdfjs.wkt.integration.res.PdfJsIntegrationReference;
+import org.apache.isis.extensions.viewer.wicket.pdfjs.wkt.integration.res.PdfJsReference;
+import org.apache.isis.viewer.wicket.ui.util.Wkt;
+
+import lombok.Getter;
+import lombok.NonNull;
+import lombok.val;
+import lombok.experimental.Accessors;
/**
* A panel for rendering PDF documents inline in the page
@@ -35,6 +39,9 @@ public class PdfJsPanel extends Panel {
private static final long serialVersionUID = 1L;
+ private final static String ID_PDFJSCANVAS = "pdfJsCanvas";
+
+ @Getter @Accessors(makeFinal = true)
private final PdfJsConfig config;
/**
@@ -42,41 +49,22 @@ public class PdfJsPanel extends Panel {
*
* @param id The component id
*/
- public PdfJsPanel(final String id, final PdfJsConfig config) {
+ public PdfJsPanel(final String id, final @NonNull PdfJsConfig config) {
super(id);
- this.config = Args.notNull(config, "config");
+ this.config = config;
- final WebComponent pdfJsCanvas = new WebComponent("pdfJsCanvas");
- pdfJsCanvas.setOutputMarkupId(true);
+ val pdfJsCanvas = Wkt.add(this, Wkt.ajaxEnable(new WebComponent(ID_PDFJSCANVAS)));
config.withCanvasId(pdfJsCanvas.getMarkupId());
- add(pdfJsCanvas);
- }
-
- public final PdfJsConfig getConfig() {
- return config;
}
@Override
public void renderHead(final IHeaderResponse response) {
super.renderHead(response);
- response.render(JavaScriptHeaderItem.forReference(PdfJsReference.INSTANCE));
- renderWicketStuffPdfJs(response);
- }
-
- protected void renderWicketStuffPdfJs(final IHeaderResponse response) {
- config.withWorkerUrl(createPdfJsWorkerUrl());
- response.render(JavaScriptHeaderItem.forReference(WicketStuffPdfJsReference.INSTANCE));
- response.render(OnDomReadyHeaderItem.forScript(String.format("WicketStuff.PDFJS.init(%s)", config.toJsonString())));
- }
-
- protected String createPdfJsWorkerUrl() {
- final CharSequence _pdfJsUrl = urlFor(PdfJsReference.INSTANCE, null);
- final Url pdfJsUrl = Url.parse(_pdfJsUrl);
- final Url pdfJsWorkerUrl = Url.parse("./pdf.worker.js");
- pdfJsUrl.resolveRelative(pdfJsWorkerUrl);
- return pdfJsUrl.toString();
+ response.render(PdfJsReference.asHeaderItem(config));
+ response.render(PdfJsIntegrationReference.asHeaderItem());
+ response.render(PdfJsIntegrationReference.domReadyScript(config));
}
}
diff --git a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/WicketStuffPdfJsReference.java b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/WicketStuffPdfJsReference.java
deleted file mode 100644
index 66e0d52ea9..0000000000
--- a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/WicketStuffPdfJsReference.java
+++ /dev/null
@@ -1,43 +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.extensions.viewer.wicket.pdfjs.wkt.integration;
-
-import java.util.List;
-
-import org.apache.wicket.markup.head.HeaderItem;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-import org.apache.wicket.resource.JQueryPluginResourceReference;
-
-public class WicketStuffPdfJsReference extends JQueryPluginResourceReference {
-
- private static final long serialVersionUID = 1L;
-
- public static final WicketStuffPdfJsReference INSTANCE = new WicketStuffPdfJsReference();
-
- private WicketStuffPdfJsReference() {
- super(WicketStuffPdfJsReference.class, "res/wicketstuff-pdf.js");
- }
-
- @Override
- public List<HeaderItem> getDependencies() {
- final List<HeaderItem> dependencies = super.getDependencies();
- dependencies.add(JavaScriptHeaderItem.forReference(PdfJsReference.INSTANCE));
- return dependencies;
- }
-}
diff --git a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/PdfJsReference.java b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/res/PdfJsIntegrationReference.java
similarity index 50%
rename from extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/PdfJsReference.java
rename to extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/res/PdfJsIntegrationReference.java
index 7e0ad847fd..d601148590 100644
--- a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/PdfJsReference.java
+++ b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/res/PdfJsIntegrationReference.java
@@ -16,38 +16,42 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.extensions.viewer.wicket.pdfjs.wkt.integration;
+package org.apache.isis.extensions.viewer.wicket.pdfjs.wkt.integration.res;
-import java.util.List;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.ajax.WicketAjaxJQueryResourceReference;
import org.apache.wicket.markup.head.HeaderItem;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.resource.JQueryPluginResourceReference;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
+
+import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config.PdfJsConfig;
+
+import lombok.Getter;
+import lombok.experimental.Accessors;
-public class PdfJsReference extends JQueryPluginResourceReference {
+public class PdfJsIntegrationReference
+extends JavaScriptResourceReference {
private static final long serialVersionUID = 1L;
- public static final PdfJsReference INSTANCE = new PdfJsReference();
+ @Getter(lazy = true) @Accessors(fluent = true)
+ private static final PdfJsIntegrationReference instance =
+ new PdfJsIntegrationReference();
- private PdfJsReference() {
- super(PdfJsReference.class, "res/pdf.js");
+ private PdfJsIntegrationReference() {
+ super(PdfJsIntegrationReference.class, "pdfjs-integration.js");
}
- @Override
- public List<HeaderItem> getDependencies() {
- final List<HeaderItem> dependencies = super.getDependencies();
- ResourceReference wicketEventReference;
- if (Application.exists()) {
- wicketEventReference = Application.get()
- .getJavaScriptLibrarySettings().getJQueryReference();
- } else {
- wicketEventReference = WicketAjaxJQueryResourceReference.get();
- }
- dependencies.add(JavaScriptHeaderItem.forReference(wicketEventReference));
- return dependencies;
+ /**
+ * @return this resource reference singleton instance as header item
+ */
+ public static HeaderItem asHeaderItem() {
+ return JavaScriptHeaderItem.forReference(instance());
}
+
+ public static OnDomReadyHeaderItem domReadyScript(
+ final PdfJsConfig config) {
+ return OnDomReadyHeaderItem.forScript(
+ String.format("WicketStuff.PDFJS.init(%s)", config.toJsonString()));
+ }
+
}
diff --git a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/res/PdfJsReference.java b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/res/PdfJsReference.java
new file mode 100644
index 0000000000..a19a37bef1
--- /dev/null
+++ b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/res/PdfJsReference.java
@@ -0,0 +1,65 @@
+/*
+ * 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.extensions.viewer.wicket.pdfjs.wkt.integration.res;
+
+import org.apache.wicket.markup.head.HeaderItem;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
+
+import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config.PdfJsConfig;
+
+import lombok.Getter;
+import lombok.experimental.Accessors;
+
+public class PdfJsReference
+extends JavaScriptResourceReference {
+
+ private static final long serialVersionUID = 1L;
+
+ @Getter(lazy = true) @Accessors(fluent = true)
+ private static final PdfJsReference instance =
+ new PdfJsReference();
+
+ private PdfJsReference() {
+ super(PdfJsReference.class, "pdf.js");
+ }
+
+ /**
+ * As a side-effect updates config's worker-url.
+ * @param config
+ * @return this resource reference singleton instance as header item
+ */
+ public static HeaderItem asHeaderItem(final PdfJsConfig config) {
+ config.withWorkerUrl(createPdfJsWorkerUrl());
+ return JavaScriptHeaderItem.forReference(instance());
+ }
+
+ // -- HELPER
+
+ private static String createPdfJsWorkerUrl() {
+ final CharSequence _pdfJsUrl = RequestCycle.get().urlFor(instance(), null);
+ final Url pdfJsUrl = Url.parse(_pdfJsUrl);
+ final Url pdfJsWorkerUrl = Url.parse("./pdf.worker.js");
+ pdfJsUrl.resolveRelative(pdfJsWorkerUrl);
+ return pdfJsUrl.toString();
+ }
+
+}
diff --git a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/res/wicketstuff-pdf.js b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/res/pdfjs-integration.js
similarity index 100%
rename from extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/res/wicketstuff-pdf.js
rename to extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/res/pdfjs-integration.js
diff --git a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/ui/components/PdfJsViewerReference.java b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/ui/components/PdfJsViewerReference.java
index abcecbc2a2..4a2aa0d9ae 100644
--- a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/ui/components/PdfJsViewerReference.java
+++ b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/ui/components/PdfJsViewerReference.java
@@ -21,10 +21,9 @@ package org.apache.isis.extensions.viewer.wicket.pdfjs.wkt.ui.components;
import java.util.List;
import org.apache.wicket.markup.head.HeaderItem;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.resource.JQueryPluginResourceReference;
-import org.apache.isis.extensions.viewer.wicket.pdfjs.wkt.integration.WicketStuffPdfJsReference;
+import org.apache.isis.extensions.viewer.wicket.pdfjs.wkt.integration.res.PdfJsIntegrationReference;
class PdfJsViewerReference extends JQueryPluginResourceReference {
@@ -37,7 +36,7 @@ class PdfJsViewerReference extends JQueryPluginResourceReference {
@Override
public List<HeaderItem> getDependencies() {
final List<HeaderItem> dependencies = super.getDependencies();
- dependencies.add(JavaScriptHeaderItem.forReference(WicketStuffPdfJsReference.INSTANCE));
+ dependencies.add(PdfJsIntegrationReference.asHeaderItem());
return dependencies;
}
}
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 7518ec8a56..51db7e14b4 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
@@ -115,6 +115,16 @@ public class Wkt {
return behavior;
}
+ // -- AJAX ENABLER
+
+ /**
+ * Requirement for AJAX updates to work.
+ */
+ public <T extends Component> T ajaxEnable(final T component) {
+ component.setOutputMarkupId(true);
+ return component;
+ }
+
// -- ATTRIBUTES
/**