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 <ahu...@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();