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 2020/12/19 07:36:52 UTC

[isis] branch master updated: ISIS-2033: convert _Yaml utility methods to use 'Result' as the default result

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 ec751dd  ISIS-2033: convert _Yaml utility methods to use 'Result' as the default result
ec751dd is described below

commit ec751dd3bb7e89f1b1e55e7f31287f6d9cefe788
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Dec 19 08:36:38 2020 +0100

    ISIS-2033: convert _Yaml utility methods to use 'Result' as the default
    result
---
 .../org/apache/isis/commons/functional/Result.java |  4 +-
 .../isis/commons/internal/resources/_Yaml.java     | 59 +++++-----------------
 .../internal/resources/JsonYamlReaderTest.java     |  3 +-
 .../jpa/applib/services/JpaSupportService.java     |  2 +-
 .../org/apache/isis/tooling/cli/CliConfig.java     | 14 ++---
 .../isis/tooling/cli/test/CliConfigTest.java       |  4 +-
 6 files changed, 24 insertions(+), 62 deletions(-)

diff --git a/commons/src/main/java/org/apache/isis/commons/functional/Result.java b/commons/src/main/java/org/apache/isis/commons/functional/Result.java
index 27e3234..d855dcd 100644
--- a/commons/src/main/java/org/apache/isis/commons/functional/Result.java
+++ b/commons/src/main/java/org/apache/isis/commons/functional/Result.java
@@ -204,7 +204,7 @@ public final class Result<L> {
         throw toThrowable.apply(throwable);
     }
     
-    public L orDefault(final @NonNull L defaultValue) {
+    public L orElse(final @NonNull L defaultValue) {
         if (isSuccess()) {
             if(value!=null) {
                 return value;
@@ -213,7 +213,7 @@ public final class Result<L> {
         return defaultValue;
     }
     
-    public @Nullable L nullableOrDefault(final @Nullable L defaultValue) {
+    public @Nullable L nullableOrElse(final @Nullable L defaultValue) {
         if (isSuccess()) {
             return value;
         }
diff --git a/commons/src/main/java/org/apache/isis/commons/internal/resources/_Yaml.java b/commons/src/main/java/org/apache/isis/commons/internal/resources/_Yaml.java
index e084105..0d4e524 100644
--- a/commons/src/main/java/org/apache/isis/commons/internal/resources/_Yaml.java
+++ b/commons/src/main/java/org/apache/isis/commons/internal/resources/_Yaml.java
@@ -47,15 +47,7 @@ public class _Yaml {
 
     // -- FROM INPUT STREAM
     
-    /**
-     * Deserialize YAML content from given YAML content InputStream into an instance of 
-     * given {@code clazz} type.
-     * @param <T>
-     * @param clazz
-     * @param content
-     * @return
-     */
-    public static <T> T readYaml(final Class<T> clazz, InputStream content) {
+    private static <T> T _readYaml(final Class<T> clazz, InputStream content) {
         val yaml = new Yaml(new Constructor(clazz));
         return yaml.load(content);
     }
@@ -68,21 +60,13 @@ public class _Yaml {
      * @param content
      * @return
      */
-    public static <T> Result<T> tryReadYaml(final Class<T> clazz, InputStream content) {
-        return Result.of(()->readYaml(clazz, content));
+    public static <T> Result<T> readYaml(final Class<T> clazz, InputStream content) {
+        return Result.of(()->_readYaml(clazz, content));
     }
     
     // -- FROM STRING
     
-    /**
-     * Deserialize YAML content from given YAML content String into an instance of 
-     * given {@code clazz} type.
-     * @param <T>
-     * @param clazz
-     * @param content
-     * @return
-     */
-    public static <T> T readYaml(final Class<T> clazz, String content) {
+    private static <T> T _readYaml(final Class<T> clazz, String content) {
         val yaml = new Yaml(new Constructor(clazz));
         return yaml.load(content);
     }
@@ -95,23 +79,13 @@ public class _Yaml {
      * @param content
      * @return
      */
-    public static <T> Result<T> tryReadYaml(final Class<T> clazz, String content) {
-        return Result.of(()->readYaml(clazz, content));
+    public static <T> Result<T> readYaml(final Class<T> clazz, String content) {
+        return Result.of(()->_readYaml(clazz, content));
     }
     
     // -- FROM FILE
     
-    /**
-     * Deserialize YAML content from given YAML content File into an instance of 
-     * given {@code clazz} type.
-     * @param <T>
-     * @param clazz
-     * @param content
-     * @return
-     * @throws IOException 
-     * @throws FileNotFoundException 
-     */
-    public static <T> T readYaml(final Class<T> clazz, File content) throws FileNotFoundException, IOException {
+    private static <T> T _readYaml(final Class<T> clazz, File content) throws FileNotFoundException, IOException {
         try(val fis = new FileInputStream(content)) {
             val yaml = new Yaml(new Constructor(clazz));
             return yaml.load(fis);
@@ -126,22 +100,13 @@ public class _Yaml {
      * @param content
      * @return
      */
-    public static <T> Result<T> tryReadYaml(final Class<T> clazz, File content) {
-        return Result.of(()->readYaml(clazz, content));
+    public static <T> Result<T> readYaml(final Class<T> clazz, File content) {
+        return Result.of(()->_readYaml(clazz, content));
     }
     
     // -- FROM BYTE ARRAY
     
-    /**
-     * Deserialize YAML content from given YAML content byte[] into an instance of 
-     * given {@code clazz} type.
-     * @param <T>
-     * @param clazz
-     * @param content
-     * @return
-     * @throws IOException 
-     */
-    public static <T> T readYaml(final Class<T> clazz, byte[] content) throws IOException {
+    private static <T> T _readYaml(final Class<T> clazz, byte[] content) throws IOException {
         try(val bais = new ByteArrayInputStream(content)) {
             val yaml = new Yaml(new Constructor(clazz));
             return yaml.load(bais);
@@ -156,8 +121,8 @@ public class _Yaml {
      * @param content
      * @return
      */
-    public static <T> Result<T> tryReadYaml(final Class<T> clazz, byte[] content) {
-        return Result.of(()->readYaml(clazz, content));
+    public static <T> Result<T> readYaml(final Class<T> clazz, byte[] content) {
+        return Result.of(()->_readYaml(clazz, content));
     }
     
 }
diff --git a/commons/src/test/java/org/apache/isis/commons/internal/resources/JsonYamlReaderTest.java b/commons/src/test/java/org/apache/isis/commons/internal/resources/JsonYamlReaderTest.java
index faab29c..9c626bf 100644
--- a/commons/src/test/java/org/apache/isis/commons/internal/resources/JsonYamlReaderTest.java
+++ b/commons/src/test/java/org/apache/isis/commons/internal/resources/JsonYamlReaderTest.java
@@ -58,7 +58,8 @@ class JsonYamlReaderTest {
 
     @Test
     void loadCustomerFromYaml() {
-        val customer = _Yaml.readYaml(Customer.class, this.getClass().getResourceAsStream("customer.yml"));
+        val customer = _Yaml.readYaml(Customer.class, this.getClass().getResourceAsStream("customer.yml"))
+                .nullableOrElse(null);
         assertCustomerIsJohnDoe(customer);
     }
     
diff --git a/persistence/jpa/applib/src/main/java/org/apache/isis/persistence/jpa/applib/services/JpaSupportService.java b/persistence/jpa/applib/src/main/java/org/apache/isis/persistence/jpa/applib/services/JpaSupportService.java
index eb658f3..b44e522 100644
--- a/persistence/jpa/applib/src/main/java/org/apache/isis/persistence/jpa/applib/services/JpaSupportService.java
+++ b/persistence/jpa/applib/src/main/java/org/apache/isis/persistence/jpa/applib/services/JpaSupportService.java
@@ -55,7 +55,7 @@ public interface JpaSupportService {
         return getEntityManager(entityType)
                 .orElseThrow(cause->new IllegalStateException(
                         String.format(
-                        "Current thread either has no open interaction or"
+                        "Current thread either has no open interaction"
                         + " or no unique EntityManager managing type %s can be resolved.", entityType), cause));
     }
     
diff --git a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/CliConfig.java b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/CliConfig.java
index f06e6fb..8cce64d 100644
--- a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/CliConfig.java
+++ b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/CliConfig.java
@@ -19,7 +19,6 @@
 package org.apache.isis.tooling.cli;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.util.LinkedHashMap;
 import java.util.Optional;
 
@@ -82,16 +81,11 @@ public class CliConfig {
     // -- LOADING
 
     public static CliConfig read(final @NonNull File file) {
-        if(!file.canRead()) {
+        return _Yaml.readYaml(CliConfig.class, file)
+        .ifFailure(e->{
             System.err.println(String.format("config file '%s' not readable, using defaults", file.getAbsolutePath()));
-            return new CliConfig();
-        }
-        try {
-            return _Yaml.readYaml(CliConfig.class, new FileInputStream(file));
-        } catch (Exception e) {
-            System.err.println(String.format("config file '%s' not readable, using defaults", file.getAbsolutePath()));
-            return new CliConfig();
-        }
+        })
+        .orElseGet(CliConfig::new);
     }
 
 
diff --git a/tooling/cli/src/test/java/org/apache/isis/tooling/cli/test/CliConfigTest.java b/tooling/cli/src/test/java/org/apache/isis/tooling/cli/test/CliConfigTest.java
index 10c372d..deb41ba 100644
--- a/tooling/cli/src/test/java/org/apache/isis/tooling/cli/test/CliConfigTest.java
+++ b/tooling/cli/src/test/java/org/apache/isis/tooling/cli/test/CliConfigTest.java
@@ -43,7 +43,9 @@ class CliConfigTest {
 
     @Test
     void loadConfigFromYaml() {
-        val config = _Yaml.readYaml(CliConfig.class, this.getClass().getResourceAsStream("isis-tooling.yml"));
+        val config = _Yaml.readYaml(CliConfig.class, this.getClass().getResourceAsStream("isis-tooling.yml"))
+                .ifFailure(System.err::println)
+                .nullableOrElse(null);
         assertConfigIsPopulated(config);
     }