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/11/10 16:34:03 UTC
[isis] 01/01: ISIS-2892: Upgrade Wicket 8.x -> 9.x
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch 2892_wicket9
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 8d8a7d29a1c35b26e65684c906e40ba1b97a0996
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Nov 10 17:33:14 2021 +0100
ISIS-2892: Upgrade Wicket 8.x -> 9.x
Task-Url: https://issues.apache.org/jira/browse/ISIS-2892
---
core/pom.xml | 6 +--
.../pdfjs/ui/components/PdfJsViewerPanel.java | 3 +-
.../ActionResultResponseHandlingStrategy.java | 33 ++++++-------
.../wicket/ui/actionresponse/_DownloadHandler.java | 3 +-
.../actionprompt/ActionPromptModalWindow.java | 2 +-
.../widgets/linkandlabel/ActionLink.java | 3 +-
.../org/apache/isis/viewer/wicket/ui/util/Wkt.java | 36 ++++++++++++--
.../viewer/wicketapp/IsisWicketApplication.java | 56 ++++++++++------------
8 files changed, 83 insertions(+), 59 deletions(-)
diff --git a/core/pom.xml b/core/pom.xml
index a777365..020450c 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -183,8 +183,8 @@
<vaadin.version>21.0.4</vaadin.version>
- <wicket.version>8.13.0</wicket.version>
- <wicket-bootstrap.version>3.0.0-M18</wicket-bootstrap.version> <!-- de.agilecoders.wicket:wicket-bootstrap... -->
+ <wicket.version>9.6.0</wicket.version>
+ <wicket-bootstrap.version>6.0.0-M4</wicket-bootstrap.version> <!-- de.agilecoders.wicket:wicket-bootstrap... -->
<wicket-fullcalendar.version>4.2</wicket-fullcalendar.version>
<wicket-source.version>7.0.0</wicket-source.version>
<wicket-webjars.version>2.0.20</wicket-webjars.version>
@@ -193,7 +193,7 @@
<bootstrap.version>4.6.0-1</bootstrap.version>
<popper-js.version>1.16.1-lts</popper-js.version> <!-- org.webjars:popper-js, dictated by bootstrap.version -->
- <wicketstuff.version>8.13.0</wicketstuff.version> <!-- org.wicketstuff:wicketstuff-select2 -->
+ <wicketstuff.version>9.5.0</wicketstuff.version> <!-- org.wicketstuff:wicketstuff-select2 -->
<wicketstuff-gmap3.version>${wicket.version}</wicketstuff-gmap3.version>
<xdocreport.version>2.0.2</xdocreport.version>
diff --git a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java
index 6854f4a..addc748 100644
--- a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java
+++ b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java
@@ -42,7 +42,6 @@ import org.apache.wicket.request.http.flow.AbortWithHttpErrorCodeException;
import org.apache.wicket.request.resource.ByteArrayResource;
import org.apache.wicket.request.resource.CssResourceReference;
import org.apache.wicket.request.resource.IResource;
-import org.apache.wicket.util.time.Duration;
import org.wicketstuff.pdfjs.PdfJsPanel;
import org.apache.isis.applib.services.user.UserService;
@@ -333,7 +332,7 @@ implements IRequestListener {
@Override protected void configureResponse(
final ResourceResponse response, final Attributes attributes) {
super.configureResponse(response, attributes);
- response.setCacheDuration(Duration.NONE);
+ response.disableCaching();
}
};
final ResourceRequestHandler handler = new ResourceRequestHandler(resource, null);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseHandlingStrategy.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseHandlingStrategy.java
index 1e92d66..ced4f3b 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseHandlingStrategy.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseHandlingStrategy.java
@@ -18,6 +18,8 @@
*/
package org.apache.isis.viewer.wicket.ui.actionresponse;
+import java.time.Duration;
+
import org.apache.wicket.Component;
import org.apache.wicket.Page;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -28,7 +30,6 @@ import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler;
import org.apache.wicket.request.resource.ContentDisposition;
import org.apache.wicket.util.resource.IResourceStream;
-import org.apache.wicket.util.time.Duration;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
@@ -40,8 +41,8 @@ public enum ActionResultResponseHandlingStrategy {
REDIRECT_TO_VOID {
@Override
public void handleResults(
- IsisAppCommonContext commonContext,
- ActionResultResponse resultResponse) {
+ final IsisAppCommonContext commonContext,
+ final ActionResultResponse resultResponse) {
final RequestCycle requestCycle = RequestCycle.get();
requestCycle.setResponsePage(new VoidReturnPage(new VoidModel(commonContext)));
@@ -50,8 +51,8 @@ public enum ActionResultResponseHandlingStrategy {
REDIRECT_TO_PAGE {
@Override
public void handleResults(
- IsisAppCommonContext commonContext,
- ActionResultResponse resultResponse) {
+ final IsisAppCommonContext commonContext,
+ final ActionResultResponse resultResponse) {
// force any changes in state etc to happen now prior to the redirect;
// in the case of an object being returned, this should cause our page mementos
@@ -67,8 +68,8 @@ public enum ActionResultResponseHandlingStrategy {
SCHEDULE_HANDLER {
@Override
public void handleResults(
- IsisAppCommonContext commonContext,
- ActionResultResponse resultResponse) {
+ final IsisAppCommonContext commonContext,
+ final ActionResultResponse resultResponse) {
final RequestCycle requestCycle = RequestCycle.get();
AjaxRequestTarget target = requestCycle.find(AjaxRequestTarget.class).orElse(null);
@@ -112,8 +113,8 @@ public enum ActionResultResponseHandlingStrategy {
OPEN_URL_IN_NEW_BROWSER_WINDOW {
@Override
public void handleResults(
- IsisAppCommonContext commonContext,
- ActionResultResponse resultResponse) {
+ final IsisAppCommonContext commonContext,
+ final ActionResultResponse resultResponse) {
final AjaxRequestTarget target = resultResponse.getTarget();
final String url = resultResponse.getUrl();
@@ -126,8 +127,8 @@ public enum ActionResultResponseHandlingStrategy {
OPEN_URL_IN_SAME_BROWSER_WINDOW {
@Override
public void handleResults(
- IsisAppCommonContext commonContext,
- ActionResultResponse resultResponse) {
+ final IsisAppCommonContext commonContext,
+ final ActionResultResponse resultResponse) {
final AjaxRequestTarget target = resultResponse.getTarget();
final String url = resultResponse.getUrl();
@@ -145,7 +146,7 @@ public enum ActionResultResponseHandlingStrategy {
/**
* @see #expanded(String)
*/
- public static String expanded(RequestCycle requestCycle, final String url) {
+ public static String expanded(final RequestCycle requestCycle, final String url) {
String urlStr = expanded(url);
return requestCycle.getUrlRenderer().renderFullUrl(Url.parse(urlStr));
}
@@ -161,15 +162,15 @@ public enum ActionResultResponseHandlingStrategy {
return urlStr;
}
- private static String javascriptFor_newWindow(CharSequence url) {
+ private static String javascriptFor_newWindow(final CharSequence url) {
return "function(){Wicket.Event.publish(Isis.Topic.OPEN_IN_NEW_TAB, '" + url + "');}";
}
- private static String javascriptFor_sameWindow(CharSequence url) {
+ private static String javascriptFor_sameWindow(final CharSequence url) {
return "\"window.location.href='" + url + "'\"";
}
- private static void scheduleJs(AjaxRequestTarget target, String js, int millis) {
+ private static void scheduleJs(final AjaxRequestTarget target, final String js, final int millis) {
// the timeout is needed to let Wicket release the channel
target.appendJavaScript(String.format("setTimeout(%s, %d);", js, millis));
}
@@ -186,7 +187,7 @@ public enum ActionResultResponseHandlingStrategy {
private final IResourceStream resourceStream;
private final Duration cacheDuration;
- public StreamAfterAjaxResponseBehavior(ResourceStreamRequestHandler scheduledHandler) {
+ public StreamAfterAjaxResponseBehavior(final ResourceStreamRequestHandler scheduledHandler) {
this.fileName = scheduledHandler.getFileName();
this.resourceStream = scheduledHandler.getResourceStream();
this.cacheDuration = scheduledHandler.getCacheDuration();
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/_DownloadHandler.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/_DownloadHandler.java
index 250df09..bf34127 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/_DownloadHandler.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/_DownloadHandler.java
@@ -21,6 +21,7 @@ package org.apache.isis.viewer.wicket.ui.actionresponse;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.time.Duration;
import org.apache.wicket.request.IRequestHandler;
import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler;
@@ -105,7 +106,7 @@ final class _DownloadHandler {
}
if(downloadHandler instanceof ResourceStreamRequestHandler)
((ResourceStreamRequestHandler) downloadHandler)
- .setCacheDuration(org.apache.wicket.util.time.Duration.seconds(0));
+ .setCacheDuration(Duration.ZERO);
return downloadHandler;
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptModalWindow.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptModalWindow.java
index f6f2665..de55141 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptModalWindow.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptModalWindow.java
@@ -62,7 +62,7 @@ implements ActionPromptWithExtraContent {
// appendDisableEnforceFocus called after the modal javascript object has already been created.
// so this patch makes sure it is called before hand. This results in the JavaScript fragment being
// invoked twice, but what the hey.
- appendDisableEnforceFocus(target);
+ //appendDisableEnforceFocus(target);
// we continue to call the original implementation, for maintainability
return super.appendShowDialogJavaScript(target);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLink.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLink.java
index 7f9dbc2..272383b 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLink.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLink.java
@@ -55,7 +55,6 @@ import org.apache.isis.viewer.wicket.ui.util.Wkt;
import static org.apache.isis.commons.internal.base._Casts.castTo;
-import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
import lombok.NonNull;
import lombok.val;
@@ -151,7 +150,7 @@ extends IndicatingAjaxLink<ManagedObject> {
@Override
protected void onComponentTag(final ComponentTag tag) {
super.onComponentTag(tag);
- Buttons.fixDisabledState(this, tag);
+ Wkt.fixDisabledState(this, tag);
}
@Override
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 de3a1b4..ff4e582 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
@@ -36,8 +36,10 @@ import org.apache.wicket.markup.head.JavaScriptContentHeaderItem;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Fragment;
@@ -61,7 +63,6 @@ import lombok.val;
import lombok.experimental.UtilityClass;
import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.CssClassNameAppender;
-import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
/**
* Wicket common idioms, in alphabetical order.
@@ -113,7 +114,7 @@ public class Wkt {
super.renderHead(component, response);
final String javascript = PRE_JS + getCallbackScript() + POST_JS;
response.render(
- JavaScriptContentHeaderItem.forScript(javascript, null, null));
+ new JavaScriptContentHeaderItem(javascript, null));
}
@Override protected void respond(final AjaxRequestTarget target) {
onRespond.accept(target);
@@ -351,14 +352,41 @@ public class Wkt {
@Override public void onClick(final AjaxRequestTarget target) {
onClick.accept(target);
}
- @SuppressWarnings("deprecation")
@Override protected void onComponentTag(final ComponentTag tag) {
super.onComponentTag(tag);
- Buttons.fixDisabledState(this, tag);
+ fixDisabledState(this, tag);
}
};
}
+ /**
+ * MOVED over from Wicket 8 - potentially no longer required
+ * <p>
+ * HACK issue #79: wicket changes tag name if component wasn't enabled
+ *
+ * @param component the component to fix
+ * @param tag the component tag
+ * @deprecated since Wicket 7.0: doesn't mangle the link/button's markup anymore
+ */
+ @Deprecated
+ public static void fixDisabledState(final Component component, final ComponentTag tag) {
+ if (!component.isEnabledInHierarchy()) {
+ if (component instanceof AbstractLink) {
+ tag.setName("a");
+ } else if (component instanceof Button) {
+ tag.setName("button");
+ } else {
+ if (tag.getAttribute("value") != null) {
+ tag.setName("input");
+ } else {
+ tag.setName("button");
+ }
+ }
+
+ tag.put("disabled", "disabled");
+ }
+ }
+
public AjaxLink<Void> linkAdd(
final MarkupContainer container,
final String id,
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/IsisWicketApplication.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/IsisWicketApplication.java
index 901c076..455d0cf 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/IsisWicketApplication.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/IsisWicketApplication.java
@@ -41,12 +41,6 @@ import org.apache.wicket.authentication.strategy.DefaultAuthenticationStrategy;
import org.apache.wicket.authroles.authentication.AuthenticatedWebApplication;
import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
import org.apache.wicket.core.request.mapper.MountedMapper;
-import org.apache.wicket.devutils.debugbar.DebugBar;
-import org.apache.wicket.devutils.debugbar.InspectorDebugPanel;
-import org.apache.wicket.devutils.debugbar.PageSizeDebugPanel;
-import org.apache.wicket.devutils.debugbar.SessionSizeDebugPanel;
-import org.apache.wicket.devutils.debugbar.VersionDebugContributor;
-import org.apache.wicket.devutils.diskstore.DebugDiskDataStore;
import org.apache.wicket.injection.Injector;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.ResourceAggregator;
@@ -212,6 +206,8 @@ implements
protected void init() {
super.init();
+ getCspSettings().blocking().disabled();
+
// Initialize Spring Dependency Injection (into Wicket components)
val springInjector = new SpringComponentInjector(this);
Injector.get().inject(this);
@@ -280,30 +276,30 @@ implements
// side-effects?
// SharedResources sharedResources = getSharedResources();
- if(systemEnvironment.isPrototyping()) {
- DebugDiskDataStore.register(this);
- log.debug("DebugDiskDataStore registered; access via ~/wicket/internal/debug/diskDataStore");
- log.debug("DebugDiskDataStore: eg, http://localhost:8080/wicket/wicket/internal/debug/diskDataStore");
-
- if(!getDebugSettings().isDevelopmentUtilitiesEnabled()) {
- boolean enableDevUtils = configuration.getViewer().getWicket().getDevelopmentUtilities().isEnable();
- if(enableDevUtils) {
- getDebugSettings().setDevelopmentUtilitiesEnabled(true);
-
- // copied from DebugBarInitializer
- // this is hacky, but need to do this because IInitializer#init() called before
- // the Application's #init() is called.
- // an alternative, better, design might be to move Isis' own initialization into an
- // implementation of IInitializer?
- DebugBar.registerContributor(VersionDebugContributor.DEBUG_BAR_CONTRIB, this);
- DebugBar.registerContributor(InspectorDebugPanel.DEBUG_BAR_CONTRIB, this);
- DebugBar.registerContributor(SessionSizeDebugPanel.DEBUG_BAR_CONTRIB, this);
- DebugBar.registerContributor(PageSizeDebugPanel.DEBUG_BAR_CONTRIB, this);
- }
- }
- }
-
- log.debug("storeSettings.inmemoryCacheSize : {}", getStoreSettings().getInmemoryCacheSize());
+// if(systemEnvironment.isPrototyping()) {
+// DebugDiskDataStore.register(this);
+// log.debug("DebugDiskDataStore registered; access via ~/wicket/internal/debug/diskDataStore");
+// log.debug("DebugDiskDataStore: eg, http://localhost:8080/wicket/wicket/internal/debug/diskDataStore");
+//
+// if(!getDebugSettings().isDevelopmentUtilitiesEnabled()) {
+// boolean enableDevUtils = configuration.getViewer().getWicket().getDevelopmentUtilities().isEnable();
+// if(enableDevUtils) {
+// getDebugSettings().setDevelopmentUtilitiesEnabled(true);
+//
+// // copied from DebugBarInitializer
+// // this is hacky, but need to do this because IInitializer#init() called before
+// // the Application's #init() is called.
+// // an alternative, better, design might be to move Isis' own initialization into an
+// // implementation of IInitializer?
+// DebugBar.registerContributor(VersionDebugContributor.DEBUG_BAR_CONTRIB, this);
+// DebugBar.registerContributor(InspectorDebugPanel.DEBUG_BAR_CONTRIB, this);
+// DebugBar.registerContributor(SessionSizeDebugPanel.DEBUG_BAR_CONTRIB, this);
+// //DebugBar.registerContributor(PageSizeDebugPanel.DEBUG_BAR_CONTRIB, this);
+// }
+// }
+// }
+
+ //log.debug("storeSettings.inmemoryCacheSize : {}", getStoreSettings().getInmemoryCacheSize());
log.debug("storeSettings.asynchronousQueueCapacity: {}", getStoreSettings().getAsynchronousQueueCapacity());
log.debug("storeSettings.maxSizePerSession : {}", getStoreSettings().getMaxSizePerSession());
log.debug("storeSettings.fileStoreFolder : {}", getStoreSettings().getFileStoreFolder());