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/12/01 17:56:11 UTC

[isis] branch master updated: ISIS-3300: adds utf8 specific shortcuts to Blob and Clob (Convenience)

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 f88d301cad ISIS-3300: adds utf8 specific shortcuts to Blob and Clob (Convenience)
f88d301cad is described below

commit f88d301cadefbd222beba33b6de76928ff072a74
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Dec 1 18:56:00 2022 +0100

    ISIS-3300: adds utf8 specific shortcuts to Blob and Clob (Convenience)
---
 .../org/apache/causeway/applib/value/Blob.java     |  4 ++++
 .../org/apache/causeway/applib/value/Clob.java     | 28 +++++++++++++++++++++-
 2 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/api/applib/src/main/java/org/apache/causeway/applib/value/Blob.java b/api/applib/src/main/java/org/apache/causeway/applib/value/Blob.java
index 794df8b10c..8779bdca27 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/value/Blob.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/value/Blob.java
@@ -189,6 +189,10 @@ public final class Blob implements NamedWithMimeType {
 
     // -- UTILITIES
 
+    /**
+     * Converts to a {@link Clob}, using given {@link Charset}
+     * for the underlying byte[] to String conversion.
+     */
     public Clob toClob(final @NonNull Charset charset) {
         return new Clob(getName(), getMimeType(), _Strings.ofBytes(getBytes(), charset));
     }
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/value/Clob.java b/api/applib/src/main/java/org/apache/causeway/applib/value/Clob.java
index 5e7cb3f9d7..2861e84194 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/value/Clob.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/value/Clob.java
@@ -138,6 +138,14 @@ public final class Clob implements NamedWithMimeType {
         });
     }
 
+    /**
+     * Shortcut for {@link #tryRead(String, org.apache.causeway.applib.value.NamedWithMimeType.CommonMimeType, File, Charset)}
+     * using {@link StandardCharsets#UTF_8}.
+     */
+    public static Try<Clob> tryReadUtf8(final String name, final CommonMimeType mimeType, final File file) {
+        return tryRead(name, mimeType, file, StandardCharsets.UTF_8);
+    }
+
     // --
 
     public Clob(final String name, final String primaryType, final String subType, final char[] chars) {
@@ -194,10 +202,21 @@ public final class Clob implements NamedWithMimeType {
 
     // -- UTILITIES
 
+    /**
+     * Converts to a {@link Blob}, using given {@link Charset}
+     * for the underlying String to byte[] conversion.
+     */
     public Blob toBlob(final @NonNull Charset charset) {
         return new Blob(getName(), getMimeType(), _Strings.toBytes(getChars().toString(), charset));
     }
 
+    /**
+     * Shortcut for {@link #toBlob(Charset)} using {@link StandardCharsets#UTF_8}.
+     */
+    public Blob toBlobUtf8() {
+        return toBlob(StandardCharsets.UTF_8);
+    }
+
     public void writeCharsTo(final Writer wr) throws IOException {
         if(wr!=null && chars!=null){
             wr.append(chars);
@@ -223,10 +242,17 @@ public final class Clob implements NamedWithMimeType {
             return; // just ignore
         }
         try(val os = new FileOutputStream(file)){
-            writeCharsTo(new OutputStreamWriter(os, StandardCharsets.UTF_8));
+            writeCharsTo(new OutputStreamWriter(os, charset));
         }
     }
 
+    /**
+     * Shortcut for {@link #writeTo(File, Charset)} using {@link StandardCharsets#UTF_8}.
+     */
+    public void writeToUtf8(final @Nullable File file) {
+        writeTo(file, StandardCharsets.UTF_8);
+    }
+
     @SneakyThrows
     public String asString() {
         val sw = new StringWriter();