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/10/07 10:39:10 UTC
[isis] 01/02: ISIS-2441: use _Result instead of _Either when
applicable
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch 2441-auditing
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 292afbade9569609f2e9e5936943a61db3a64842
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Oct 7 11:18:30 2020 +0200
ISIS-2441: use _Result instead of _Either when applicable
---
.../isis/commons/internal/resources/_Json.java | 82 ++++++----------------
.../isis/commons/internal/resources/_Yaml.java | 34 +++------
.../viewer/resources/ObjectActionArgHelper.java | 33 ++++-----
3 files changed, 47 insertions(+), 102 deletions(-)
diff --git a/commons/src/main/java/org/apache/isis/commons/internal/resources/_Json.java b/commons/src/main/java/org/apache/isis/commons/internal/resources/_Json.java
index 348335c..5b763f1 100644
--- a/commons/src/main/java/org/apache/isis/commons/internal/resources/_Json.java
+++ b/commons/src/main/java/org/apache/isis/commons/internal/resources/_Json.java
@@ -29,7 +29,7 @@ import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
-import org.apache.isis.commons.internal.base._Either;
+import org.apache.isis.commons.internal.base._Result;
import lombok.val;
@@ -73,12 +73,8 @@ public class _Json {
* @param content
* @return
*/
- public static <T> _Either<T, Exception> tryReadJson(final Class<T> clazz, InputStream content) {
- try {
- return _Either.left(readJson(clazz, content));
- } catch (Exception e) {
- return _Either.right(e);
- }
+ public static <T> _Result<T> tryReadJson(final Class<T> clazz, InputStream content) {
+ return _Result.of(()->readJson(clazz, content));
}
/**
@@ -108,12 +104,8 @@ public class _Json {
* @param content
* @return
*/
- public static <T> _Either<List<T>, Exception> tryReadJsonList(final Class<T> clazz, InputStream content) {
- try {
- return _Either.left(readJsonList(clazz, content));
- } catch (Exception e) {
- return _Either.right(e);
- }
+ public static <T> _Result<List<T>> tryReadJsonList(final Class<T> clazz, InputStream content) {
+ return _Result.of(()->readJsonList(clazz, content));
}
@@ -144,12 +136,8 @@ public class _Json {
* @param content
* @return
*/
- public static <T> _Either<T, Exception> tryReadJson(final Class<T> clazz, String content) {
- try {
- return _Either.left(readJson(clazz, content));
- } catch (Exception e) {
- return _Either.right(e);
- }
+ public static <T> _Result<T> tryReadJson(final Class<T> clazz, String content) {
+ return _Result.of(()->readJson(clazz, content));
}
/**
@@ -179,12 +167,8 @@ public class _Json {
* @param content
* @return
*/
- public static <T> _Either<List<T>, Exception> tryReadJsonList(final Class<T> clazz, String content) {
- try {
- return _Either.left(readJsonList(clazz, content));
- } catch (Exception e) {
- return _Either.right(e);
- }
+ public static <T> _Result<List<T>> tryReadJsonList(final Class<T> clazz, String content) {
+ return _Result.of(()->readJsonList(clazz, content));
}
@@ -215,12 +199,8 @@ public class _Json {
* @param content
* @return
*/
- public static <T> _Either<T, Exception> tryReadJson(final Class<T> clazz, File content) {
- try {
- return _Either.left(readJson(clazz, content));
- } catch (Exception e) {
- return _Either.right(e);
- }
+ public static <T> _Result<T> tryReadJson(final Class<T> clazz, File content) {
+ return _Result.of(()->readJson(clazz, content));
}
/**
@@ -250,12 +230,8 @@ public class _Json {
* @param content
* @return
*/
- public static <T> _Either<List<T>, Exception> tryReadJsonList(final Class<T> clazz, File content) {
- try {
- return _Either.left(readJsonList(clazz, content));
- } catch (Exception e) {
- return _Either.right(e);
- }
+ public static <T> _Result<List<T>> tryReadJsonList(final Class<T> clazz, File content) {
+ return _Result.of(()->readJsonList(clazz, content));
}
// -- BYTE CONTENT
@@ -285,12 +261,8 @@ public class _Json {
* @param content
* @return
*/
- public static <T> _Either<T, Exception> tryReadJson(final Class<T> clazz, byte[] content) {
- try {
- return _Either.left(readJson(clazz, content));
- } catch (Exception e) {
- return _Either.right(e);
- }
+ public static <T> _Result<T> tryReadJson(final Class<T> clazz, byte[] content) {
+ return _Result.of(()->readJson(clazz, content));
}
/**
@@ -320,12 +292,8 @@ public class _Json {
* @param content
* @return
*/
- public static <T> _Either<List<T>, Exception> tryReadJsonList(final Class<T> clazz, byte[] content) {
- try {
- return _Either.left(readJsonList(clazz, content));
- } catch (Exception e) {
- return _Either.right(e);
- }
+ public static <T> _Result<List<T>> tryReadJsonList(final Class<T> clazz, byte[] content) {
+ return _Result.of(()->readJsonList(clazz, content));
}
// -- WRITING
@@ -341,20 +309,12 @@ public class _Json {
return toString(objectMapper, pojo);
}
- public static <T> _Either<String, Exception> tryToString(ObjectMapper objectMapper, Object pojo) {
- try {
- return _Either.left(toString(objectMapper, pojo));
- } catch (Exception e) {
- return _Either.right(e);
- }
+ public static <T> _Result<String> tryToString(ObjectMapper objectMapper, Object pojo) {
+ return _Result.of(()->toString(objectMapper, pojo));
}
- public static <T> _Either<String, Exception> tryToString(Object pojo) {
- try {
- return _Either.left(toString(pojo));
- } catch (Exception e) {
- return _Either.right(e);
- }
+ public static <T> _Result<String> tryToString(Object pojo) {
+ return _Result.of(()->toString(pojo));
}
}
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 3f9a076..9d15e02 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
@@ -28,7 +28,7 @@ import java.io.InputStream;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.Constructor;
-import org.apache.isis.commons.internal.base._Either;
+import org.apache.isis.commons.internal.base._Result;
import lombok.val;
@@ -68,12 +68,8 @@ public class _Yaml {
* @param content
* @return
*/
- public static <T> _Either<T, Exception> tryReadYaml(final Class<T> clazz, InputStream content) {
- try {
- return _Either.left(readYaml(clazz, content));
- } catch (Exception e) {
- return _Either.right(e);
- }
+ public static <T> _Result<T> tryReadYaml(final Class<T> clazz, InputStream content) {
+ return _Result.of(()->readYaml(clazz, content));
}
// -- FROM STRING
@@ -99,12 +95,8 @@ public class _Yaml {
* @param content
* @return
*/
- public static <T> _Either<T, Exception> tryReadYaml(final Class<T> clazz, String content) {
- try {
- return _Either.left(readYaml(clazz, content));
- } catch (Exception e) {
- return _Either.right(e);
- }
+ public static <T> _Result<T> tryReadYaml(final Class<T> clazz, String content) {
+ return _Result.of(()->readYaml(clazz, content));
}
// -- FROM FILE
@@ -134,12 +126,8 @@ public class _Yaml {
* @param content
* @return
*/
- public static <T> _Either<T, Exception> tryReadYaml(final Class<T> clazz, File content) {
- try {
- return _Either.left(readYaml(clazz, content));
- } catch (Exception e) {
- return _Either.right(e);
- }
+ public static <T> _Result<T> tryReadYaml(final Class<T> clazz, File content) {
+ return _Result.of(()->readYaml(clazz, content));
}
// -- FROM BYTE ARRAY
@@ -168,12 +156,8 @@ public class _Yaml {
* @param content
* @return
*/
- public static <T> _Either<T, Exception> tryReadYaml(final Class<T> clazz, byte[] content) {
- try {
- return _Either.left(readYaml(clazz, content));
- } catch (Exception e) {
- return _Either.right(e);
- }
+ public static <T> _Result<T> tryReadYaml(final Class<T> clazz, byte[] content) {
+ return _Result.of(()->readYaml(clazz, content));
}
}
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectActionArgHelper.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectActionArgHelper.java
index 819e546..037791e 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectActionArgHelper.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ObjectActionArgHelper.java
@@ -23,6 +23,7 @@ import java.util.Map;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Either;
+import org.apache.isis.commons.internal.base._Result;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.core.metamodel.interactions.managed.InteractionVeto;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -54,23 +55,23 @@ public class ObjectActionArgHelper {
val parameters = action.getParameters();
for (int i = 0; i < jsonArgList.size(); i++) {
final JsonRepresentation argRepr = jsonArgList.get(i);
- val paramMeta = parameters.getElseFail(i);
+ final int argIndex = i;
+ val paramMeta = parameters.getElseFail(argIndex);
val paramSpec = paramMeta.getSpecification();
- try {
- if(paramMeta.isOptional() && argRepr == null) {
- argAdapters.add(_Either.leftNullable(ManagedObject.empty(paramSpec)));
- } else {
- val argAdapter = new JsonParserHelper(resourceContext, paramSpec)
- .objectAdapterFor(argRepr);
- argAdapters.add(_Either.left(argAdapter));
- }
- } catch (Exception e) {
-
- val veto = InteractionVeto.actionParamInvalid(
- String.format("exception when parsing paramNr %d [%s]: %s", i, argRepr, e));
-
- argAdapters.add(_Either.right(veto));
- }
+
+ val objectOrVeto = _Result.of(()->
+ (paramMeta.isOptional() && argRepr == null)
+ ? ManagedObject.empty(paramSpec)
+ : new JsonParserHelper(resourceContext, paramSpec)
+ .objectAdapterFor(argRepr))
+ .<_Either<ManagedObject, InteractionVeto>>fold(
+ _Either::left,
+ exception->_Either.right(
+ InteractionVeto.actionParamInvalid(
+ String.format("exception when parsing paramNr %d [%s]: %s",
+ argIndex, argRepr, exception))));
+
+ argAdapters.add(objectOrVeto);
}
return Can.ofCollection(argAdapters);
}