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

ahuber pushed a commit to branch v3
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/v3 by this push:
     new 6eea6929e51 CAUSEWAY-3950: disables preview for uploaded files (wicket)
6eea6929e51 is described below

commit 6eea6929e51c914a45ff8f811ce0a626af2ac3fc
Author: andi-huber <[email protected]>
AuthorDate: Tue Jan 13 13:28:49 2026 +0100

    CAUSEWAY-3950: disables preview for uploaded files (wicket)
---
 .../fileinput/FileUploadFieldWithNestingFix.java   |  4 +-
 .../apache/causeway/viewer/wicket/ui/util/Wkt.java | 48 +++++++++++-----------
 2 files changed, 25 insertions(+), 27 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 40727f14867..4aac401b942 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
@@ -44,7 +44,7 @@ public class FileUploadFieldWithNestingFix extends 
BootstrapFileInputField {
     private static final HeaderItem headerItem =
                 WktHeaderItems.forScriptReferenceAsOnDomReady(
                         FileUploadFieldWithNestingFix.class, 
"causeway-file-upload-nesting-fix.nocompress.js");
-    
+
     private static final CssResourceReference CSS =
         new CssResourceReference(FileUploadFieldWithNestingFix.class, 
"FileUploadFieldWithNestingFix.css");
 
@@ -59,7 +59,7 @@ public void renderHead(final IHeaderResponse response) {
         response.render(headerItem());
         response.render(CssHeaderItem.forReference(CSS));
     }
-    
+
     @Override
     public boolean isRequired() {
         //FIXME[CAUSEWAY-3203]
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/Wkt.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/Wkt.java
index 3bd8340a21a..8e63caf69ac 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/Wkt.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/Wkt.java
@@ -199,9 +199,8 @@ public <T extends Component> T attributeReplace(
             final @Nullable String attributeName,
             final @Nullable String attributeValue) {
         if(component==null
-                || _Strings.isEmpty(attributeName)) {
+                || _Strings.isEmpty(attributeName))
             return component;
-        }
         if(_Strings.isEmpty(attributeValue)) {
             component.add(AttributeModifier.remove(attributeName));
             return component;
@@ -269,9 +268,8 @@ private static class 
ReplaceDisabledTagWithReadonlyTagBehavior extends Behavior
         private static final long serialVersionUID = 1L;
         @Override public void onComponentTag(final Component component, final 
ComponentTag tag) {
             super.onComponentTag(component, tag);
-            if(component.isEnabled()) {
+            if(component.isEnabled())
                 return;
-            }
             tag.remove("disabled");
             tag.put("readonly","readonly");
         }
@@ -304,9 +302,8 @@ public Behavior behaviorAddConfirm(
     }
 
     public void behaviorAddReplaceDisabledTagWithReadonlyTag(final @Nullable 
Component component) {
-        if(component==null) {
+        if(component==null)
             return;
-        }
         if 
(component.getBehaviors(ReplaceDisabledTagWithReadonlyTagBehavior.class).isEmpty())
 {
             component.add(new ReplaceDisabledTagWithReadonlyTagBehavior());
         }
@@ -320,7 +317,7 @@ public BookmarkablePageLink<Void> 
bookmarkablePageLinkWithVisibility(
             final PageParameters pageParameters,
             final SerializableBooleanSupplier dynamicVisibility) {
 
-        return new BookmarkablePageLink<Void>(
+        return new BookmarkablePageLink<>(
                 id, pageClass, pageParameters) {
 
             private static final long serialVersionUID = 1L;
@@ -533,9 +530,8 @@ public static AjaxCheckBox checkbox(
              */
             private boolean hasMemoizedDataRow(final IModel<Boolean> model) {
                 if(model instanceof DataRowToggleWkt dataRowToggleWkt) {
-                    if(dataRowToggleWkt.delegate() instanceof DataRowWkt 
dataRowWkt) {
+                    if(dataRowToggleWkt.delegate() instanceof DataRowWkt 
dataRowWkt)
                         return dataRowWkt.isTableDataLoaded();
-                    }
                 }
                 return false;
             }
@@ -645,7 +641,7 @@ public ResourceLinkVolatile downloadLinkNoCache(final 
String id, final IResource
     public <T extends Serializable> DropDownChoice<T> dropDownChoice(final 
String id,
             final IModel<T> model,
             final List<? extends T> choices) {
-        return new DropDownChoice<T>(id, model, choices);
+        return new DropDownChoice<>(id, model, choices);
     }
 
     public <T extends Serializable> DropDownChoice<T> 
dropDownChoiceWithAjaxUpdate(final String id,
@@ -673,9 +669,8 @@ public <T extends Serializable> DropDownChoice<T> 
dropDownChoiceWithAjaxUpdateAd
      */
     public void fileDownloadClickHandler(final IModel<File> model, final 
CommonMimeType mime, final String fileName) {
         final File file = model.getObject();
-        if (file == null) {
+        if (file == null)
             throw _Exceptions.illegalState("Failed to retrieve a File object 
from model %s", model.getClass().getName());
-        }
         RequestCycle.get().scheduleRequestHandlerAfterCurrent(
                 Wkt.fileResourceStreamRequestHandler(file, mime)
                 .setFileName(fileName)
@@ -715,7 +710,11 @@ public FileUploadField fileUploadField(
                     .mainClass("input-group-sm")
                     .initialCaption(initialCaption)
                     .captionClass("form-control-sm")
-                    .showUpload(false));
+                    .showUpload(false)
+                    //[CAUSEWAY-3950] preview may trigger unwanted downloads 
of the file that just got uploaded
+                    // we were seeing this with Chrome browser and files of 
type CSV
+                    .showPreview(false)
+                    );
         return fileUploadField;
     }
 
@@ -801,7 +800,7 @@ public Fragment fragmentAddNoTab(final MarkupContainer 
container,
     // -- FORM
 
     public static Form<Object> form(final String id) {
-        return new Form<Object>(id);
+        return new Form<>(id);
     }
 
     public static Form<Object> formAdd(final MarkupContainer container, final 
String id) {
@@ -903,7 +902,7 @@ public <T> Label labelAddWithConverter(
     public ResourceLink<Void> link(final String id, final BufferedImage 
buffImg) {
         var imageResource = new BufferedDynamicImageResource();
         imageResource.setImage(buffImg);
-        return new ResourceLink<Void>(id, imageResource);
+        return new ResourceLink<>(id, imageResource);
     }
 
     public AjaxLinkNoPropagate link(final String id, final 
SerializableConsumer<AjaxRequestTarget> onClick) {
@@ -950,7 +949,7 @@ public <T> ListView<T> listView(
             final String id,
             final List<T> list,
             final SerializableConsumer<ListItem<T>> itemPopulator) {
-        return new ListView<T>(id, list) {
+        return new ListView<>(id, list) {
             private static final long serialVersionUID = 1L;
             @Override protected void populateItem(final ListItem<T> item) {
                 itemPopulator.accept(item);
@@ -962,7 +961,7 @@ public <T> ListView<T> listView(
             final String id,
             final IModel<? extends List<T>> listModel,
             final SerializableConsumer<ListItem<T>> itemPopulator) {
-        return new ListView<T>(id, listModel) {
+        return new ListView<>(id, listModel) {
             private static final long serialVersionUID = 1L;
             @Override protected void populateItem(final ListItem<T> item) {
                 itemPopulator.accept(item);
@@ -1035,7 +1034,7 @@ public <T> Item<T> oddEvenItem(
             final String id, final int index, final IModel<T> model,
             final SerializableFunction<T, String> cssClassProvider) {
 
-        return new OddEvenItem<T>(id, index, model) {
+        return new OddEvenItem<>(id, index, model) {
             private static final long serialVersionUID = 1L;
 
             @Override
@@ -1049,11 +1048,11 @@ protected void onComponentTag(final ComponentTag tag) {
     // -- TEXT AREA
 
     public TextArea<String> textArea(final String id, final IModel<String> 
textModel) {
-        return new TextArea<String>(id, textModel);
+        return new TextArea<>(id, textModel);
     }
 
     public TextArea<String> textAreaNoTab(final String id, final 
IModel<String> textModel) {
-        return new TextArea<String>(id, textModel) {
+        return new TextArea<>(id, textModel) {
             private static final long serialVersionUID = 1L;
             @Override protected void onComponentTag(final ComponentTag tag) {
                 super.onComponentTag(tag);
@@ -1075,7 +1074,7 @@ public <T> TextArea<T> textAreaWithConverter(
             final @NonNull IModel<T> model,
             final @NonNull Class<T> type,
             final @NonNull Optional<IConverter<T>> converter) {
-        return new TextAreaWithConverter<T>(id, model, type, converter);
+        return new TextAreaWithConverter<>(id, model, type, converter);
     }
 
     // -- TEXT FIELD
@@ -1088,7 +1087,7 @@ public <T> TextField<T> textFieldWithConverter(
             final @NonNull IModel<T> model,
             final @NonNull Class<T> type,
             final @NonNull Optional<IConverter<T>> converter) {
-        return new TextFieldWithConverter<T>(id, model, type, converter);
+        return new TextFieldWithConverter<>(id, model, type, converter);
     }
 
     public <T> TextField<T> passwordFieldWithConverter(
@@ -1096,7 +1095,7 @@ public <T> TextField<T> passwordFieldWithConverter(
             final @NonNull IModel<T> model,
             final @NonNull Class<T> type,
             final @NonNull Optional<IConverter<T>> converter) {
-        return new TextFieldWithConverter<T>(id, model, type, converter) {
+        return new TextFieldWithConverter<>(id, model, type, converter) {
             private static final long serialVersionUID = 2L;
             @Override protected void onComponentTag(final ComponentTag tag) {
                 Attributes.set(tag, "type", "password");
@@ -1176,9 +1175,8 @@ public boolean errorMessageIgnoringResourceBundles(
             final @Nullable FormComponent<?> formComponent,
             final @Nullable IValidationError error) {
         if(formComponent==null
-                || error==null) {
+                || error==null)
             return true;
-        }
         if(error instanceof ValidationError) {
             var message = ((ValidationError)error).getMessage();
             // use plain error message from ConversionException, circumventing 
resource bundles.

Reply via email to