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);
+        }
+    }
+
 }

Reply via email to