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

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


The following commit(s) were added to refs/heads/main by this push:
     new b0a8187ef4a CAUSEWAY-3958: Clob content is required to be UTF-8
b0a8187ef4a is described below

commit b0a8187ef4ab61ebff875806ba6d227aee8ccb0f
Author: andi-huber <[email protected]>
AuthorDate: Sun Jan 18 16:58:07 2026 +0100

    CAUSEWAY-3958: Clob content is required to be UTF-8
    
    for other use-cases use Blob
---
 .../attributes/blobclob/ClobAttributePanel.java          | 16 +++++++++-------
 .../viewer/wicket/ui/exec/LobRequestHandler.java         |  5 +++--
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/blobclob/ClobAttributePanel.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/blobclob/ClobAttributePanel.java
index c4251c6610b..150d500f7b9 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/blobclob/ClobAttributePanel.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/blobclob/ClobAttributePanel.java
@@ -23,20 +23,19 @@
 
 import org.apache.wicket.markup.html.form.upload.FileUpload;
 import org.apache.wicket.model.IModel;
-import org.apache.wicket.request.resource.CharSequenceResource;
+import org.apache.wicket.request.resource.ByteArrayResource;
 import org.apache.wicket.request.resource.IResource;
 
+import org.apache.causeway.applib.value.Blob;
 import org.apache.causeway.applib.value.Clob;
 import org.apache.causeway.viewer.wicket.model.models.FileUploadModels;
 import org.apache.causeway.viewer.wicket.model.models.UiAttributeWkt;
 
 /**
  * Panel for rendering scalars of type {@link Clob}.
- *
- * <p>
- *    TODO: for now, this only handles {@link Clob}s encoded as UTF-8.
- *    One option might be to 'guess' the character encoding, eg akin to 
cpdetector?
- * </p>
+ * 
+ * <p>WARNING only handles {@link Clob}s encoded as UTF-8.
+ * For different use-cases use {@link Blob} instead.
  */
 class ClobAttributePanel extends BlobOrClobAttributePanel<Clob> {
 
@@ -53,7 +52,10 @@ protected IModel<List<FileUpload>> fileUploadModel() {
 
     @Override
     protected IResource newResource(final Clob clob) {
-        return new CharSequenceResource(clob.mimeType().getBaseType(), 
clob.chars(), clob.name());
+       var blob = clob.toBlobUtf8();
+       return new ByteArrayResource(blob.mimeType().getBaseType(), 
blob.bytes(), blob.name());
+       //[CAUSEWAY-3958] has issues with CSV files
+        //return new CharSequenceResource(clob.mimeType().getBaseType(), 
clob.chars(), clob.name());
     }
 
 }
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/exec/LobRequestHandler.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/exec/LobRequestHandler.java
index 134c1862487..4264a5bc45e 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/exec/LobRequestHandler.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/exec/LobRequestHandler.java
@@ -31,7 +31,6 @@
 import org.apache.wicket.util.resource.AbstractResourceStream;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
-import org.apache.wicket.util.resource.StringResourceStream;
 import org.jspecify.annotations.Nullable;
 
 import org.apache.causeway.applib.value.Blob;
@@ -91,7 +90,9 @@ private IResourceStream resourceStream(Blob blob) {
     }
 
     private IResourceStream resourceStream(Clob clob) {
-        return new StringResourceStream(clob.chars(), 
clob.mimeType().toString());
+        return resourceStream(clob.toBlobUtf8());
+        // [CAUSEWAY-3958] has issues with CSV files
+               // return new StringResourceStream(clob.chars(), 
clob.mimeType().toString());
     }
 
     private IResourceStream resourceStreamUnmatched() {

Reply via email to