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 88cca2f886 ISIS-3071: some refactoring yielding HeaderItem utils
88cca2f886 is described below

commit 88cca2f88688a40d0f5f2db4a34f867b903e3b1a
Author: Andi Huber <[email protected]>
AuthorDate: Sat Nov 12 07:27:42 2022 +0100

    ISIS-3071: some refactoring yielding HeaderItem utils
---
 .../fileinput/FileUploadFieldWithNestingFix.java   | 14 ++++---
 .../CausewayWicketViewerJsResourceReference.java   | 28 +++++++-------
 ...yHeaderContributor.java => WktHeaderItems.java} | 45 ++++++++++++++--------
 3 files changed, 52 insertions(+), 35 deletions(-)

diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/fileinput/FileUploadFieldWithNestingFix.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/fileinput/FileUploadFieldWithNestingFix.java
index 442495f4b3..7d8e4ce77c 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/fileinput/FileUploadFieldWithNestingFix.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/fileinput/FileUploadFieldWithNestingFix.java
@@ -20,23 +20,27 @@ package 
org.apache.causeway.viewer.wicket.ui.components.widgets.fileinput;
 
 import java.util.List;
 
+import org.apache.wicket.markup.head.HeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.html.form.upload.FileUpload;
 import org.apache.wicket.model.IModel;
 
-import org.apache.causeway.viewer.wicket.ui.util.OnDomReadyHeaderContributor;
+import org.apache.causeway.viewer.wicket.ui.util.WktHeaderItems;
 
 import 
de.agilecoders.wicket.extensions.markup.html.bootstrap.form.fileinput.BootstrapFileInputField;
 import 
de.agilecoders.wicket.extensions.markup.html.bootstrap.form.fileinput.FileInputConfig;
+import lombok.Getter;
 import lombok.SneakyThrows;
+import lombok.experimental.Accessors;
 
 public class FileUploadFieldWithNestingFix extends BootstrapFileInputField {
 
     private static final long serialVersionUID = 1L;
 
-    private static final OnDomReadyHeaderContributor 
FILE_UPLOAD_NESTING_FIX_JS =
-            OnDomReadyHeaderContributor.forScriptReference(
-                    FileUploadFieldWithNestingFix.class, 
"causeway-file-upload-nesting-fix.nocompress.js");
+    @Getter(lazy = true) @Accessors(fluent = true)
+    private static final HeaderItem headerItem =
+                WktHeaderItems.forScriptReferenceAsOnDomReady(
+                        FileUploadFieldWithNestingFix.class, 
"causeway-file-upload-nesting-fix.nocompress.js");
 
     public FileUploadFieldWithNestingFix(final String id,
             final IModel<List<FileUpload>> model, final FileInputConfig 
config) {
@@ -46,7 +50,7 @@ public class FileUploadFieldWithNestingFix extends 
BootstrapFileInputField {
     @Override @SneakyThrows
     public void renderHead(final IHeaderResponse response) {
         super.renderHead(response);
-        FILE_UPLOAD_NESTING_FIX_JS.renderHead(response);
+        response.render(headerItem());
     }
 
     @Override
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/viewer/js/CausewayWicketViewerJsResourceReference.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/viewer/js/CausewayWicketViewerJsResourceReference.java
index 9da4c7d4f5..c2d0039c82 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/viewer/js/CausewayWicketViewerJsResourceReference.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/viewer/js/CausewayWicketViewerJsResourceReference.java
@@ -18,31 +18,31 @@
  */
 package org.apache.causeway.viewer.wicket.ui.pages.common.viewer.js;
 
-import org.apache.wicket.markup.head.JavaScriptReferenceHeaderItem;
-import org.apache.wicket.request.resource.JavaScriptResourceReference;
+import org.apache.wicket.markup.head.HeaderItem;
+
+import org.apache.causeway.viewer.wicket.ui.util.WktHeaderItems;
 
 import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 import lombok.experimental.Accessors;
 
 /**
  * Javascript (client-side) extensions and fixes.
  */
-public class CausewayWicketViewerJsResourceReference
-extends JavaScriptResourceReference {
-    private static final long serialVersionUID = 1L;
+@RequiredArgsConstructor
+public class CausewayWicketViewerJsResourceReference {
 
     @Getter(lazy = true) @Accessors(fluent = true)
     private static final CausewayWicketViewerJsResourceReference instance =
-        new CausewayWicketViewerJsResourceReference();
+        new CausewayWicketViewerJsResourceReference(
+                WktHeaderItems.forScriptReference(
+                        CausewayWicketViewerJsResourceReference.class,
+                        "causeway-jquery-wicket-viewer.nocompress.js"));
 
-    public static JavaScriptReferenceHeaderItem asHeaderItem() {
-        return 
JavaScriptReferenceHeaderItem.forReference(CausewayWicketViewerJsResourceReference.instance());
-    }
+    private final HeaderItem headerItem;
 
-    /**
-     * Private constructor.
-     */
-    private CausewayWicketViewerJsResourceReference() {
-        super(CausewayWicketViewerJsResourceReference.class, 
"causeway-jquery-wicket-viewer.nocompress.js");
+    public static HeaderItem asHeaderItem() {
+        return instance().headerItem;
     }
+
 }
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/OnDomReadyHeaderContributor.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/WktHeaderItems.java
similarity index 66%
rename from 
viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/OnDomReadyHeaderContributor.java
rename to 
viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/WktHeaderItems.java
index f8e9d367d1..f7e18c47da 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/OnDomReadyHeaderContributor.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/WktHeaderItems.java
@@ -21,20 +21,24 @@ package org.apache.causeway.viewer.wicket.ui.util;
 import java.nio.charset.StandardCharsets;
 import java.util.stream.Collectors;
 
+import org.apache.wicket.markup.head.HeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptReferenceHeaderItem;
 import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.markup.html.IHeaderContributor;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
 
 import org.apache.causeway.commons.internal.base._Strings;
 import org.apache.causeway.commons.internal.base._Text;
 
+import lombok.Getter;
 import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
+import lombok.experimental.UtilityClass;
 
-@RequiredArgsConstructor
-public class OnDomReadyHeaderContributor
-implements IHeaderContributor {
+@UtilityClass
+public class WktHeaderItems {
 
     // -- FACTORIES
 
@@ -44,15 +48,34 @@ implements IHeaderContributor {
      * @apiNote that could be done by the yui-compressor maven plugin as well,
      *      but at the time of writing did not look into it
      */
-    public static OnDomReadyHeaderContributor forScriptReference(
+    public OnDomReadyHeaderItem forScriptReferenceAsOnDomReady(
             final @NonNull Class<?> resourceLocation,
             final @NonNull String resourceName) {
-        return new 
OnDomReadyHeaderContributor(readJsResource(resourceLocation, resourceName));
+        return OnDomReadyHeaderItem.forScript(readJsResource(resourceLocation, 
resourceName));
     }
 
+    public JavaScriptReferenceHeaderItem forScriptReference(
+            final @NonNull Class<?> resourceLocation,
+            final @NonNull String resourceName) {
+        return JavaScriptReferenceHeaderItem.forReference(
+                new JavaScriptResourceReference(resourceLocation, 
resourceName));
+    }
+
+    @RequiredArgsConstructor
+    public class HeaderContributor
+    implements IHeaderContributor {
+        private static final long serialVersionUID = 1L;
+        @Getter private final HeaderItem headerItem;
+        @Override public void renderHead(final IHeaderResponse response) {
+            response.render(headerItem);
+        }
+    }
+
+    // -- HELPER
+
     /** skips 18 license header lines and any single line comments as well as 
empty lines */
     @SneakyThrows
-    private static String readJsResource(
+    private String readJsResource(
             final @NonNull Class<?> resourceLocation,
             final @NonNull String resourceName) {
         return _Text.readLinesFromResource(
@@ -64,14 +87,4 @@ implements IHeaderContributor {
                 .collect(Collectors.joining("\n"));
     }
 
-    // -- HEADER CONTRIBUTOR
-
-    private final String jsScriptSource;
-
-    @Override
-    public void renderHead(final IHeaderResponse response) {
-        response.render(OnDomReadyHeaderItem.forScript(jsScriptSource));
-    }
-
-
 }

Reply via email to