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 09:18:43 UTC

[isis] branch master updated (1e56fe9d6c -> 4293500de3)

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


    from 1e56fe9d6c ISIS-3040: convert all resource references to singletons (optimization)
     new 228b35a16b ISIS-3040: remove superfluous header ref.
     new 4293500de3 ISIS-3040: decouple pdf.js applib and metamodel from wicket

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 extensions/vw/pdfjs/applib/pom.xml                 |  12 +--
 .../wicket/pdfjs/applib/config/PdfJsConfig.java    | 109 ++++++++-------------
 .../viewer/wicket/pdfjs/applib/config/Scale.java   |   8 +-
 extensions/vw/pdfjs/metamodel/pom.xml              |   5 -
 .../facet/PdfJsViewerFacetFromAnnotation.java      |  17 ++--
 .../pdfjs/wkt/integration/PdfJsConfigWkt.java}     |  36 ++++---
 .../wicket/pdfjs/wkt/integration/PdfJsPanel.java   |  13 ++-
 .../integration/res/PdfJsIntegrationReference.java |   4 +-
 .../pdfjs/wkt/integration/res/PdfJsReference.java  |  11 ++-
 extensions/vw/pdfjs/wicket/pom.xml                 |   7 ++
 .../wkt/ui/components/PdfJsViewerJsReference.java  |  15 +--
 .../pdfjs/wkt/ui/components/PdfJsViewerPanel.java  |  15 ++-
 12 files changed, 115 insertions(+), 137 deletions(-)
 copy extensions/vw/pdfjs/{applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/PdfJsConfig.java => wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/PdfJsConfigWkt.java} (70%)


[isis] 01/02: ISIS-3040: remove superfluous header ref.

Posted by ah...@apache.org.
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

commit 228b35a16b234ce05908a27c55caaa131ea2c179
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue May 10 08:44:51 2022 +0200

    ISIS-3040: remove superfluous header ref.
---
 .../pdfjs/wkt/ui/components/PdfJsViewerJsReference.java   | 15 +++------------
 1 file changed, 3 insertions(+), 12 deletions(-)

diff --git a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/ui/components/PdfJsViewerJsReference.java b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/ui/components/PdfJsViewerJsReference.java
index 09d404b09b..d18ecf3df9 100644
--- a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/ui/components/PdfJsViewerJsReference.java
+++ b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/ui/components/PdfJsViewerJsReference.java
@@ -18,18 +18,15 @@
  */
 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.res.PdfJsIntegrationReference;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
 
 import lombok.Getter;
 import lombok.experimental.Accessors;
 
-class PdfJsViewerJsReference extends JQueryPluginResourceReference {
+class PdfJsViewerJsReference
+extends JavaScriptResourceReference {
 
     private static final long serialVersionUID = 1L;
 
@@ -48,10 +45,4 @@ class PdfJsViewerJsReference extends JQueryPluginResourceReference {
         return JavaScriptHeaderItem.forReference(instance());
     }
 
-    @Override
-    public List<HeaderItem> getDependencies() {
-        final List<HeaderItem> dependencies = super.getDependencies();
-        dependencies.add(PdfJsIntegrationReference.asHeaderItem());
-        return dependencies;
-    }
 }


[isis] 02/02: ISIS-3040: decouple pdf.js applib and metamodel from wicket

Posted by ah...@apache.org.
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

commit 4293500de3a89bd722d2146ca5bf50d818a5565d
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue May 10 11:18:38 2022 +0200

    ISIS-3040: decouple pdf.js applib and metamodel from wicket
---
 extensions/vw/pdfjs/applib/pom.xml                 |  12 +--
 .../wicket/pdfjs/applib/config/PdfJsConfig.java    | 109 ++++++++-------------
 .../viewer/wicket/pdfjs/applib/config/Scale.java   |   8 +-
 extensions/vw/pdfjs/metamodel/pom.xml              |   5 -
 .../facet/PdfJsViewerFacetFromAnnotation.java      |  17 ++--
 .../pdfjs/wkt/integration/PdfJsConfigWkt.java}     |  36 ++++---
 .../wicket/pdfjs/wkt/integration/PdfJsPanel.java   |  13 ++-
 .../integration/res/PdfJsIntegrationReference.java |   4 +-
 .../pdfjs/wkt/integration/res/PdfJsReference.java  |  11 ++-
 extensions/vw/pdfjs/wicket/pom.xml                 |   7 ++
 .../pdfjs/wkt/ui/components/PdfJsViewerPanel.java  |  15 ++-
 11 files changed, 112 insertions(+), 125 deletions(-)

diff --git a/extensions/vw/pdfjs/applib/pom.xml b/extensions/vw/pdfjs/applib/pom.xml
index 2e18e36b4a..961ee74da5 100644
--- a/extensions/vw/pdfjs/applib/pom.xml
+++ b/extensions/vw/pdfjs/applib/pom.xml
@@ -37,15 +37,13 @@
     <dependencies>
 
         <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-applib</artifactId>
+            <groupId>org.apache.isis.commons</groupId>
+            <artifactId>isis-commons</artifactId>
         </dependency>
-
+        
         <dependency>
-            <groupId>de.agilecoders.wicket</groupId>
-            <artifactId>wicket-bootstrap-core</artifactId>
-            <!-- to avoid polluting the classpath -->
-            <optional>true</optional>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-applib</artifactId>
         </dependency>
 
     </dependencies>
diff --git a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/PdfJsConfig.java b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/PdfJsConfig.java
index 4c7474962d..375ead641a 100644
--- a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/PdfJsConfig.java
+++ b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/PdfJsConfig.java
@@ -18,93 +18,68 @@
  */
 package org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config;
 
-import org.apache.wicket.util.lang.Args;
+import java.io.Serializable;
 
-import de.agilecoders.wicket.jquery.AbstractConfig;
-import de.agilecoders.wicket.jquery.IKey;
-import de.agilecoders.wicket.jquery.Key;
+import org.springframework.util.Assert;
+
+import org.apache.isis.commons.internal.resources._Json;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.With;
 
 /**
  * @since 2.0 {@index}
  */
-public class PdfJsConfig extends AbstractConfig {
+@Getter @With @AllArgsConstructor @NoArgsConstructor @Builder
+public class PdfJsConfig implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
-    private static final IKey<Integer> INITIAL_PAGE = new Key<>("initialPage", 1);
-    private static final IKey<String> INITIAL_SCALE = new Key<>("initialScale", Scale._1_00.getValue());
-    private static final IKey<Integer> INITIAL_HEIGHT = new Key<>("initialHeight", 800);
-    private static final IKey<Boolean> WORKER_DISABLED = new Key<>("workerDisabled", false);
-    private static final IKey<CharSequence> PDF_DOCUMENT_URL = new Key<>("documentUrl", null);
-    private static final IKey<CharSequence> WORKER_URL = new Key<>("workerUrl", null);
-    private static final IKey<CharSequence> CANVAS_ID = new Key<>("canvasId", null);
+    @Builder.Default
+    private int initialPage = 1;
+
+    @Builder.Default
+    private Scale initialScale = Scale._1_00;
+
+    @Builder.Default
+    private int initialHeight = 800;
+
+    @Builder.Default
+    private boolean workerDisabled = false;
+
+    private CharSequence documentUrl;
+    private CharSequence workerUrl;
+    private CharSequence canvasId;
 
     public PdfJsConfig withInitialPage(int initialPage) {
         if (initialPage < 1) {
             initialPage = 1;
         }
-        put(INITIAL_PAGE, initialPage);
-        return this;
-    }
-
-    public int getInitialPage() {
-        return get(INITIAL_PAGE);
+        return asBuilder().initialPage(initialPage).build();
     }
 
     public PdfJsConfig withInitialHeight(final int initialHeight) {
-        Args.isTrue(initialHeight >= 400 && initialHeight <= 2000,
-                "'initialHeight' must be between 400 and 2000");
-        put(INITIAL_HEIGHT, initialHeight);
-        return this;
-    }
-
-    public int getInitialHeight() {
-        return get(INITIAL_HEIGHT);
-    }
-
-    public PdfJsConfig withInitialScale(final Scale initialScale) {
-        put(INITIAL_SCALE, initialScale.getValue());
-        return this;
-    }
-
-    public String getInitialScale() {
-        return get(INITIAL_SCALE);
-    }
-
-    public PdfJsConfig disableWorker(final boolean disable) {
-        put(WORKER_DISABLED, disable);
-        return this;
-    }
-
-    public boolean isWorkerDisabled() {
-        return get(WORKER_DISABLED);
-    }
-
-    public PdfJsConfig withDocumentUrl(final CharSequence url) {
-        put(PDF_DOCUMENT_URL, url);
-        return this;
-    }
-
-    public CharSequence getDocumentUrl() {
-        return get(PDF_DOCUMENT_URL);
-    }
-
-    public PdfJsConfig withWorkerUrl(final String url) {
-        put(WORKER_URL, url);
-        return this;
-    }
-
-    public CharSequence getWorkerUrl() {
-        return get(WORKER_URL);
+        Assert.isTrue(initialHeight >= 400 && initialHeight <= 2000,
+                ()->String.format("'initialHeight' must be between 400 and 2000; got %d", initialHeight));
+        return asBuilder().initialHeight(initialHeight).build();
     }
 
-    public PdfJsConfig withCanvasId(final String url) {
-        put(CANVAS_ID, url);
-        return this;
+    public PdfJsConfig.PdfJsConfigBuilder asBuilder() {
+        return PdfJsConfig.builder()
+                .canvasId(getCanvasId())
+                .documentUrl(getDocumentUrl())
+                .initialHeight(getInitialHeight())
+                .initialPage(getInitialPage())
+                .initialScale(getInitialScale())
+                .workerDisabled(isWorkerDisabled())
+                .workerUrl(getWorkerUrl());
     }
 
-    public CharSequence getCanvasId() {
-        return get(CANVAS_ID);
+    public String toJsonString() {
+        return _Json.toString(this);
     }
 
 }
diff --git a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/Scale.java b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/Scale.java
index 459a61f76d..53061a7fd0 100644
--- a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/Scale.java
+++ b/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/Scale.java
@@ -18,7 +18,9 @@
  */
 package org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config;
 
-import org.apache.wicket.util.lang.Objects;
+import java.util.Objects;
+
+import com.fasterxml.jackson.annotation.JsonValue;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
@@ -50,7 +52,7 @@ public enum Scale {
     /** 400% */
     _4_00("4.00"),;
 
-    @Getter
+    @Getter @JsonValue
     private final String value;
 
     public static Scale forValue(final String scaleValue) {
@@ -58,7 +60,7 @@ public enum Scale {
             return null;
         }
         for (Scale scale : Scale.values()) {
-            if (Objects.equal(scale.value, scaleValue)) {
+            if (Objects.equals(scale.value, scaleValue)) {
                 return scale;
             }
         }
diff --git a/extensions/vw/pdfjs/metamodel/pom.xml b/extensions/vw/pdfjs/metamodel/pom.xml
index dda1fbb4d0..0844885f43 100644
--- a/extensions/vw/pdfjs/metamodel/pom.xml
+++ b/extensions/vw/pdfjs/metamodel/pom.xml
@@ -46,11 +46,6 @@
             <artifactId>isis-core-metamodel</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>de.agilecoders.wicket</groupId>
-            <artifactId>wicket-bootstrap-core</artifactId>
-        </dependency>
-
     </dependencies>
 
 </project>
diff --git a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetFromAnnotation.java b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetFromAnnotation.java
index 4a02a80008..eb771c46e9 100644
--- a/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetFromAnnotation.java
+++ b/extensions/vw/pdfjs/metamodel/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/metamodel/facet/PdfJsViewerFacetFromAnnotation.java
@@ -42,21 +42,21 @@ public class PdfJsViewerFacetFromAnnotation extends PdfJsViewerFacetAbstract {
             final PdfJsViewer annotation,
             final FacetHolder holder) {
 
-        PdfJsConfig config = new PdfJsConfig();
+        var config = new PdfJsConfig();
 
         int initialPage = annotation.initialPageNum();
         if (initialPage > 0) {
-            config.withInitialPage(initialPage);
+            config = config.withInitialPage(initialPage);
         }
 
         final Scale initialScale = annotation.initialScale();
         if (initialScale != Scale._1_00) {
-            config.withInitialScale(initialScale);
+            config = config.withInitialScale(initialScale);
         }
 
         int initialHeight = annotation.initialHeight();
         if (initialHeight > 0) {
-            config.withInitialHeight(initialHeight);
+            config = config.withInitialHeight(initialHeight);
         }
 
         return new PdfJsViewerFacetFromAnnotation(config, holder);
@@ -64,7 +64,7 @@ public class PdfJsViewerFacetFromAnnotation extends PdfJsViewerFacetAbstract {
 
     @Override
     public PdfJsConfig configFor(final PdfJsViewerAdvisor.InstanceKey instanceKey) {
-        final PdfJsConfig config = super.configFor(instanceKey);
+        var config = super.configFor(instanceKey);
 
         if(advisors != null) {
             for (PdfJsViewerAdvisor advisor : advisors) {
@@ -72,15 +72,15 @@ public class PdfJsViewerFacetFromAnnotation extends PdfJsViewerFacetAbstract {
                 if(advice != null) {
                     final Integer pageNum = advice.getPageNum();
                     if(pageNum != null) {
-                        config.withInitialPage(pageNum);
+                        config = config.withInitialPage(pageNum);
                     }
                     final Scale scale = advice.getScale();
                     if(scale != null) {
-                        config.withInitialScale(scale);
+                        config = config.withInitialScale(scale);
                     }
                     final Integer height = advice.getHeight();
                     if(height != null) {
-                        config.withInitialHeight(height);
+                        config = config.withInitialHeight(height);
                     }
                     break;
                 }
@@ -90,5 +90,4 @@ public class PdfJsViewerFacetFromAnnotation extends PdfJsViewerFacetAbstract {
         return config;
     }
 
-
 }
diff --git a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/PdfJsConfig.java b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/PdfJsConfigWkt.java
similarity index 70%
copy from extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/PdfJsConfig.java
copy to extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/PdfJsConfigWkt.java
index 4c7474962d..c50af9edf9 100644
--- a/extensions/vw/pdfjs/applib/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/applib/config/PdfJsConfig.java
+++ b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/PdfJsConfigWkt.java
@@ -16,18 +16,18 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config;
+package org.apache.isis.extensions.viewer.wicket.pdfjs.wkt.integration;
 
 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.applib.config.Scale;
+
 import de.agilecoders.wicket.jquery.AbstractConfig;
 import de.agilecoders.wicket.jquery.IKey;
 import de.agilecoders.wicket.jquery.Key;
 
-/**
- * @since 2.0 {@index}
- */
-public class PdfJsConfig extends AbstractConfig {
+public class PdfJsConfigWkt extends AbstractConfig {
 
     private static final long serialVersionUID = 1L;
 
@@ -39,7 +39,19 @@ public class PdfJsConfig extends AbstractConfig {
     private static final IKey<CharSequence> WORKER_URL = new Key<>("workerUrl", null);
     private static final IKey<CharSequence> CANVAS_ID = new Key<>("canvasId", null);
 
-    public PdfJsConfig withInitialPage(int initialPage) {
+    public static PdfJsConfigWkt from(final PdfJsConfig config) {
+        return new PdfJsConfigWkt()
+            .withCanvasId(config.getCanvasId())
+            .withDocumentUrl(config.getDocumentUrl())
+            .withInitialHeight(config.getInitialHeight())
+            .withInitialScale(config.getInitialScale())
+            .withInitialHeight(config.getInitialHeight())
+            .withWorkerUrl(config.getWorkerUrl())
+            .disableWorker(config.isWorkerDisabled())
+            ;
+    }
+
+    public PdfJsConfigWkt withInitialPage(int initialPage) {
         if (initialPage < 1) {
             initialPage = 1;
         }
@@ -51,7 +63,7 @@ public class PdfJsConfig extends AbstractConfig {
         return get(INITIAL_PAGE);
     }
 
-    public PdfJsConfig withInitialHeight(final int initialHeight) {
+    public PdfJsConfigWkt withInitialHeight(final int initialHeight) {
         Args.isTrue(initialHeight >= 400 && initialHeight <= 2000,
                 "'initialHeight' must be between 400 and 2000");
         put(INITIAL_HEIGHT, initialHeight);
@@ -62,7 +74,7 @@ public class PdfJsConfig extends AbstractConfig {
         return get(INITIAL_HEIGHT);
     }
 
-    public PdfJsConfig withInitialScale(final Scale initialScale) {
+    public PdfJsConfigWkt withInitialScale(final Scale initialScale) {
         put(INITIAL_SCALE, initialScale.getValue());
         return this;
     }
@@ -71,7 +83,7 @@ public class PdfJsConfig extends AbstractConfig {
         return get(INITIAL_SCALE);
     }
 
-    public PdfJsConfig disableWorker(final boolean disable) {
+    public PdfJsConfigWkt disableWorker(final boolean disable) {
         put(WORKER_DISABLED, disable);
         return this;
     }
@@ -80,7 +92,7 @@ public class PdfJsConfig extends AbstractConfig {
         return get(WORKER_DISABLED);
     }
 
-    public PdfJsConfig withDocumentUrl(final CharSequence url) {
+    public PdfJsConfigWkt withDocumentUrl(final CharSequence url) {
         put(PDF_DOCUMENT_URL, url);
         return this;
     }
@@ -89,7 +101,7 @@ public class PdfJsConfig extends AbstractConfig {
         return get(PDF_DOCUMENT_URL);
     }
 
-    public PdfJsConfig withWorkerUrl(final String url) {
+    public PdfJsConfigWkt withWorkerUrl(final CharSequence url) {
         put(WORKER_URL, url);
         return this;
     }
@@ -98,7 +110,7 @@ public class PdfJsConfig extends AbstractConfig {
         return get(WORKER_URL);
     }
 
-    public PdfJsConfig withCanvasId(final String url) {
+    public PdfJsConfigWkt withCanvasId(final CharSequence url) {
         put(CANVAS_ID, url);
         return this;
     }
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 f09eebe1fb..93168c1e7a 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
@@ -22,7 +22,6 @@ import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.html.WebComponent;
 import org.apache.wicket.markup.html.panel.Panel;
 
-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;
@@ -42,27 +41,27 @@ public class PdfJsPanel extends Panel {
     private final static String ID_PDFJSCANVAS = "pdfJsCanvas";
 
     @Getter @Accessors(makeFinal = true)
-    private final PdfJsConfig config;
+    private PdfJsConfigWkt config;
 
     /**
      * Constructor.
      *
      * @param id The component id
      */
-    public PdfJsPanel(final String id, final @NonNull PdfJsConfig config) {
+    public PdfJsPanel(final String id, final @NonNull PdfJsConfigWkt config) {
         super(id);
 
-        this.config = config;
-
         val pdfJsCanvas = Wkt.add(this, Wkt.ajaxEnable(new WebComponent(ID_PDFJSCANVAS)));
-        config.withCanvasId(pdfJsCanvas.getMarkupId());
+
+        this.config = PdfJsReference.configureWorkerUrl(config)
+                .withCanvasId(pdfJsCanvas.getMarkupId());
     }
 
     @Override
     public void renderHead(final IHeaderResponse response) {
         super.renderHead(response);
 
-        response.render(PdfJsReference.asHeaderItem(config));
+        response.render(PdfJsReference.asHeaderItem());
         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/res/PdfJsIntegrationReference.java b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/res/PdfJsIntegrationReference.java
index d601148590..3ed6fa164f 100644
--- a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/res/PdfJsIntegrationReference.java
+++ b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/integration/res/PdfJsIntegrationReference.java
@@ -23,7 +23,7 @@ import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 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 org.apache.isis.extensions.viewer.wicket.pdfjs.wkt.integration.PdfJsConfigWkt;
 
 import lombok.Getter;
 import lombok.experimental.Accessors;
@@ -49,7 +49,7 @@ extends JavaScriptResourceReference {
     }
 
     public static OnDomReadyHeaderItem domReadyScript(
-            final PdfJsConfig config) {
+            final PdfJsConfigWkt 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
index a19a37bef1..2a4d6cbee2 100644
--- 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
@@ -24,7 +24,7 @@ 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 org.apache.isis.extensions.viewer.wicket.pdfjs.wkt.integration.PdfJsConfigWkt;
 
 import lombok.Getter;
 import lombok.experimental.Accessors;
@@ -43,15 +43,16 @@ extends JavaScriptResourceReference {
     }
 
     /**
-     * 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());
+    public static HeaderItem asHeaderItem() {
         return JavaScriptHeaderItem.forReference(instance());
     }
 
+    public static PdfJsConfigWkt configureWorkerUrl(final PdfJsConfigWkt config) {
+        return config.withWorkerUrl(createPdfJsWorkerUrl());
+    }
+
     // -- HELPER
 
     private static String createPdfJsWorkerUrl() {
diff --git a/extensions/vw/pdfjs/wicket/pom.xml b/extensions/vw/pdfjs/wicket/pom.xml
index 0a03e1ba91..5b234e48d5 100644
--- a/extensions/vw/pdfjs/wicket/pom.xml
+++ b/extensions/vw/pdfjs/wicket/pom.xml
@@ -35,5 +35,12 @@
     	<module>integration</module>
     	<module>ui</module>
     </modules>
+
+	<dependency>
+		<groupId>de.agilecoders.wicket</groupId>
+		<artifactId>wicket-bootstrap-core</artifactId>
+		<!-- to avoid polluting the classpath -->
+		<optional>true</optional>
+	</dependency>
     
 </project>
diff --git a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/ui/components/PdfJsViewerPanel.java b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/ui/components/PdfJsViewerPanel.java
index 611a16774d..fc3835f7a1 100644
--- a/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/ui/components/PdfJsViewerPanel.java
+++ b/extensions/vw/pdfjs/wicket/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/wkt/ui/components/PdfJsViewerPanel.java
@@ -48,6 +48,7 @@ import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config.PdfJsConfig;
 import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.config.Scale;
 import org.apache.isis.extensions.viewer.wicket.pdfjs.applib.spi.PdfJsViewerAdvisor;
 import org.apache.isis.extensions.viewer.wicket.pdfjs.metamodel.facet.PdfJsViewerFacet;
+import org.apache.isis.extensions.viewer.wicket.pdfjs.wkt.integration.PdfJsConfigWkt;
 import org.apache.isis.extensions.viewer.wicket.pdfjs.wkt.integration.PdfJsPanel;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 
@@ -211,16 +212,14 @@ implements IRequestListener {
         if (adapter != null
                 && blob != null) {
 
-            val pdfJsConfig =
+            val pdfJsConfig = PdfJsConfigWkt.from(
                     scalarModel.lookupFacet(PdfJsViewerFacet.class)
                     .map(pdfJsViewerFacet->pdfJsViewerFacet.configFor(buildKey()))
-                    .orElseGet(PdfJsConfig::new);
+                    .orElseGet(PdfJsConfig::new)
+                    .withDocumentUrl(urlFor(
+                            new ListenerRequestHandler(
+                                    new PageAndComponentProvider(getPage(), this)))));
 
-            // Wicket 8 migration: previously this was urlFor(IResourceListener.INTERFACE, null);
-            val urlStr = urlFor(
-                    new ListenerRequestHandler(
-                            new PageAndComponentProvider(getPage(), this)));
-            pdfJsConfig.withDocumentUrl(urlStr);
             val pdfJsPanel = new PdfJsPanel(ID_SCALAR_VALUE, pdfJsConfig);
 
             val prevPageButton = createComponent("prevPage", pdfJsConfig);
@@ -273,7 +272,7 @@ implements IRequestListener {
         return containerIfCompact;
     }
 
-    private MarkupContainer createComponent(final String id, final PdfJsConfig config) {
+    private MarkupContainer createComponent(final String id, final PdfJsConfigWkt config) {
         return new WebMarkupContainer(id) {
             private static final long serialVersionUID = 1L;