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/causeway.git
The following commit(s) were added to refs/heads/master by this push:
new 087dc9132f CAUSEWAY-3733: Migrate from PDFJS 3.x to 4.x
087dc9132f is described below
commit 087dc9132f1402be11509e163e3c605722f43ad7
Author: Andi Huber <[email protected]>
AuthorDate: Mon May 6 11:54:36 2024 +0200
CAUSEWAY-3733: Migrate from PDFJS 3.x to 4.x
---
.../CausewayModuleExtPdfjsWicketIntegration.java | 7 +++----
.../pdfjs/wkt/integration/PdfJsVersion.java | 9 ++++++---
.../integration/res/PdfJsIntegrationReference.java | 11 ++++++++---
.../pdfjs/wkt/integration/res/PdfJsReference.java | 11 ++++++++---
.../wkt/integration/res/PdfJsWorkerReference.java | 11 ++++++++---
...ration-v2plus.js => pdfjs-integration-v2x3x.js} | 0
...egration-v2plus.js => pdfjs-integration-v4.mjs} | 5 ++---
.../viewer/wicketapp/config/WebjarsInitWkt.java | 23 ++++++++++++++++++++++
8 files changed, 58 insertions(+), 19 deletions(-)
diff --git
a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/CausewayModuleExtPdfjsWicketIntegration.java
b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/CausewayModuleExtPdfjsWicketIntegration.java
index 487a1a0c15..c0ddea2362 100644
---
a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/CausewayModuleExtPdfjsWicketIntegration.java
+++
b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/CausewayModuleExtPdfjsWicketIntegration.java
@@ -22,7 +22,6 @@ import
org.apache.wicket.markup.html.SecurePackageResourceGuard;
import org.apache.wicket.protocol.http.WebApplication;
import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
import
org.apache.causeway.viewer.wicket.model.causeway.WicketApplicationInitializer;
@@ -32,9 +31,6 @@ import lombok.val;
* @since 2.0 {@index}
*/
@Configuration
-@Import({
-
-})
public class CausewayModuleExtPdfjsWicketIntegration
implements WicketApplicationInitializer {
@@ -43,7 +39,10 @@ implements WicketApplicationInitializer {
// pdf.js cmap support
val resourceGuard =
(SecurePackageResourceGuard)
webApplication.getResourceSettings().getPackageResourceGuard();
+ // allows *.bcmap, otherwise Wicket throws 'Access denied to (static)
package resource'
resourceGuard.addPattern("+*.bcmap");
+ // allows *.mjs, otherwise Wicket throws 'Access denied to (static)
package resource'
+ resourceGuard.addPattern("+*.mjs");
}
public static PdfJsVersion getPdfJsVersion() {
diff --git
a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/PdfJsVersion.java
b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/PdfJsVersion.java
index 8a50f872e9..ac5b13b5bd 100644
---
a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/PdfJsVersion.java
+++
b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/PdfJsVersion.java
@@ -18,16 +18,19 @@
*/
package org.apache.causeway.extensions.pdfjs.wkt.integration;
+import org.apache.wicket.markup.head.JavaScriptReferenceType;
+
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public enum PdfJsVersion {
- //V2_X("v2plus", "pdfjs-dist/2.16.105"),
- //V3_X("v2plus", "pdfjs-dist/3.11.174"),
- V4_X("v2plus", "pdfjs-dist/4.2.67")
+ V2_X("v2x3x", "pdfjs-dist/2.16.105",
JavaScriptReferenceType.TEXT_JAVASCRIPT),
+ V3_X("v2x3x", "pdfjs-dist/3.11.174",
JavaScriptReferenceType.TEXT_JAVASCRIPT),
+ V4_X("v4", "pdfjs-dist/4.2.67", JavaScriptReferenceType.MODULE)
;
@Getter private final String integrationScriptSuffix;
@Getter private final String webjarPath;
+ @Getter private final JavaScriptReferenceType javascriptRefType;
}
diff --git
a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/PdfJsIntegrationReference.java
b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/PdfJsIntegrationReference.java
index ab3081d3ed..ad5ac3ea9a 100644
---
a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/PdfJsIntegrationReference.java
+++
b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/PdfJsIntegrationReference.java
@@ -20,6 +20,7 @@ package
org.apache.causeway.extensions.pdfjs.wkt.integration.res;
import org.apache.wicket.markup.head.HeaderItem;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.JavaScriptReferenceType;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.apache.wicket.request.resource.JavaScriptResourceReference;
@@ -40,15 +41,19 @@ extends JavaScriptResourceReference {
private PdfJsIntegrationReference() {
super(PdfJsIntegrationReference.class,
- String.format("pdfjs-integration-%s.js",
-
CausewayModuleExtPdfjsWicketIntegration.getPdfJsVersion().getIntegrationScriptSuffix()));
+ String.format("pdfjs-integration-%s.%s",
+
CausewayModuleExtPdfjsWicketIntegration.getPdfJsVersion().getIntegrationScriptSuffix(),
+
CausewayModuleExtPdfjsWicketIntegration.getPdfJsVersion().getJavascriptRefType()==JavaScriptReferenceType.MODULE
+ ? "mjs"
+ : "js"));
}
/**
* @return this resource reference singleton instance as header item
*/
public static HeaderItem asHeaderItem() {
- return JavaScriptHeaderItem.forReference(instance());
+ return JavaScriptHeaderItem.forReference(instance())
+
.setType(CausewayModuleExtPdfjsWicketIntegration.getPdfJsVersion().getJavascriptRefType());
}
public static OnDomReadyHeaderItem domReadyScript(
diff --git
a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/PdfJsReference.java
b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/PdfJsReference.java
index 63730ebcdc..85cf2cf403 100644
---
a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/PdfJsReference.java
+++
b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/PdfJsReference.java
@@ -20,6 +20,7 @@ package
org.apache.causeway.extensions.pdfjs.wkt.integration.res;
import org.apache.wicket.markup.head.HeaderItem;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.JavaScriptReferenceType;
import
org.apache.causeway.extensions.pdfjs.wkt.integration.CausewayModuleExtPdfjsWicketIntegration;
@@ -38,15 +39,19 @@ extends WebjarsJavaScriptResourceReference {
new PdfJsReference();
private PdfJsReference() {
- super(String.format("%s/build/pdf.min.js",
-
CausewayModuleExtPdfjsWicketIntegration.getPdfJsVersion().getWebjarPath()));
+ super(String.format("%s/build/pdf.min.%s",
+
CausewayModuleExtPdfjsWicketIntegration.getPdfJsVersion().getWebjarPath(),
+
CausewayModuleExtPdfjsWicketIntegration.getPdfJsVersion().getJavascriptRefType()==JavaScriptReferenceType.MODULE
+ ? "mjs"
+ : "js"));
}
/**
* @return this resource reference singleton instance as header item
*/
public static HeaderItem asHeaderItem() {
- return JavaScriptHeaderItem.forReference(instance());
+ return JavaScriptHeaderItem.forReference(instance())
+
.setType(CausewayModuleExtPdfjsWicketIntegration.getPdfJsVersion().getJavascriptRefType());
}
}
diff --git
a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/PdfJsWorkerReference.java
b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/PdfJsWorkerReference.java
index d3657d8070..e4503440d4 100644
---
a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/PdfJsWorkerReference.java
+++
b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/PdfJsWorkerReference.java
@@ -20,6 +20,7 @@ package
org.apache.causeway.extensions.pdfjs.wkt.integration.res;
import org.apache.wicket.markup.head.HeaderItem;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.JavaScriptReferenceType;
import org.apache.wicket.request.Url;
import org.apache.wicket.request.cycle.RequestCycle;
@@ -41,15 +42,19 @@ extends WebjarsJavaScriptResourceReference {
new PdfJsWorkerReference();
private PdfJsWorkerReference() {
- super(String.format("%s/build/pdf.worker.min.js",
-
CausewayModuleExtPdfjsWicketIntegration.getPdfJsVersion().getWebjarPath()));
+ super(String.format("%s/build/pdf.worker.min.%s",
+
CausewayModuleExtPdfjsWicketIntegration.getPdfJsVersion().getWebjarPath(),
+
CausewayModuleExtPdfjsWicketIntegration.getPdfJsVersion().getJavascriptRefType()==JavaScriptReferenceType.MODULE
+ ? "mjs"
+ : "js"));
}
/**
* @return this resource reference singleton instance as header item
*/
public static HeaderItem asHeaderItem() {
- return JavaScriptHeaderItem.forReference(instance());
+ return JavaScriptHeaderItem.forReference(instance())
+
.setType(CausewayModuleExtPdfjsWicketIntegration.getPdfJsVersion().getJavascriptRefType());
}
public static String workerUrl() {
diff --git
a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/pdfjs-integration-v2plus.js
b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/pdfjs-integration-v2x3x.js
similarity index 100%
copy from
extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/pdfjs-integration-v2plus.js
copy to
extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/pdfjs-integration-v2x3x.js
diff --git
a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/pdfjs-integration-v2plus.js
b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/pdfjs-integration-v4.mjs
similarity index 99%
rename from
extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/pdfjs-integration-v2plus.js
rename to
extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/pdfjs-integration-v4.mjs
index e96e26371d..d04bf76fe6 100644
---
a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/pdfjs-integration-v2plus.js
+++
b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/causeway/extensions/pdfjs/wkt/integration/res/pdfjs-integration-v4.mjs
@@ -20,9 +20,8 @@
'use strict';
- if (!pdfjsLib.getDocument
- /* || !pdfjsViewer.PDFPageView */) {
- console.error("Missing pdf.js prerequisites.");
+ if (!pdfjsLib.getDocument) {
+ console.error("Missing pdf.mjs prerequisites.");
exit;
}
diff --git
a/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/wicketapp/config/WebjarsInitWkt.java
b/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/wicketapp/config/WebjarsInitWkt.java
index 168faeb945..150dd9b96d 100644
---
a/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/wicketapp/config/WebjarsInitWkt.java
+++
b/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/wicketapp/config/WebjarsInitWkt.java
@@ -20,8 +20,14 @@ package
org.apache.causeway.viewer.wicket.viewer.wicketapp.config;
import org.apache.wicket.protocol.http.WebApplication;
+import org.springframework.boot.web.server.MimeMappings;
+import org.springframework.boot.web.server.WebServerFactoryCustomizer;
+import
org.springframework.boot.web.servlet.server.AbstractServletWebServerFactory;
+import
org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+import org.apache.causeway.commons.internal.base._Casts;
import
org.apache.causeway.viewer.wicket.model.causeway.WicketApplicationInitializer;
import de.agilecoders.wicket.webjars.WicketWebjars;
@@ -29,6 +35,9 @@ import
de.agilecoders.wicket.webjars.settings.IWebjarsSettings;
import de.agilecoders.wicket.webjars.settings.WebjarsSettings;
@Configuration
+@Import({
+ WebjarsInitWkt.JavaScriptModuleMimeSupport.class
+})
public class WebjarsInitWkt implements WicketApplicationInitializer {
@Override
@@ -37,4 +46,18 @@ public class WebjarsInitWkt implements
WicketApplicationInitializer {
WicketWebjars.install(webApplication, settings);
}
+ @Configuration
+ public static class JavaScriptModuleMimeSupport
+ implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory>
{
+ @Override
+ public void customize(final ConfigurableServletWebServerFactory
factory) {
+ var mappings =
_Casts.castTo(AbstractServletWebServerFactory.class, factory)
+ .map(AbstractServletWebServerFactory::getMimeMappings)
+ .orElseGet(()->new MimeMappings(MimeMappings.DEFAULT));
+ mappings.remove("mjs");
+ mappings.add("mjs", "application/javascript;charset=utf-8");
+ factory.setMimeMappings(mappings);
+ }
+ }
+
}