From e01b399484376842f0c6e95e03afd0a1cd2e2898 Mon Sep 17 00:00:00 2001 From: David Greven Date: Thu, 9 Dec 2021 17:46:23 +0100 Subject: [PATCH 1/3] Add AnyThrowingFunction & ThrowingFunction Signed-off-by: David Greven --- .../common/function/AnyThrowingFunction.java | 27 +++++++++++++ .../common/function/ThrowingFunction.java | 28 +++++++++++++ .../function/AnyThrowingFunctionTest.java | 32 +++++++++++++++ .../common/function/ThrowingFunctionTest.java | 39 +++++++++++++++++++ 4 files changed, 126 insertions(+) create mode 100644 common-types/src/main/java/io/carbynestack/common/function/AnyThrowingFunction.java create mode 100644 common-types/src/main/java/io/carbynestack/common/function/ThrowingFunction.java create mode 100644 common-types/src/test/java/io/carbynestack/common/function/AnyThrowingFunctionTest.java create mode 100644 common-types/src/test/java/io/carbynestack/common/function/ThrowingFunctionTest.java diff --git a/common-types/src/main/java/io/carbynestack/common/function/AnyThrowingFunction.java b/common-types/src/main/java/io/carbynestack/common/function/AnyThrowingFunction.java new file mode 100644 index 0000000..6901740 --- /dev/null +++ b/common-types/src/main/java/io/carbynestack/common/function/AnyThrowingFunction.java @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2021 - for information on the respective copyright owner + * see the NOTICE file and/or the repository https://github.com/carbynestack/common. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package io.carbynestack.common.function; + +/** + * Represents a {@link ThrowingFunction} throwing any kind of {@link Throwable}. + * + * @param the type of the input to the function + * @param the type of the result of the function + * @since 0.2.0 + */ +public interface AnyThrowingFunction extends ThrowingFunction { + /** + * {@inheritDoc} + * + * @param t the function argument + * @return the function result + * @throws Throwable some throwable + * @since 0.2.0 + */ + @Override + R apply(T t) throws Throwable; +} diff --git a/common-types/src/main/java/io/carbynestack/common/function/ThrowingFunction.java b/common-types/src/main/java/io/carbynestack/common/function/ThrowingFunction.java new file mode 100644 index 0000000..df29091 --- /dev/null +++ b/common-types/src/main/java/io/carbynestack/common/function/ThrowingFunction.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2021 - for information on the respective copyright owner + * see the NOTICE file and/or the repository https://github.com/carbynestack/common. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package io.carbynestack.common.function; + +/** + * Represents a throwing function that accepts one + * argument and produces a result. + * + * @param the type of the input to the function + * @param the type of the result of the function + * @since 0.2.0 + */ +public interface ThrowingFunction { + /** + * Applies this function to the given argument + * or throws a {@link Throwable} of type {@link E}. + * + * @param t the function argument + * @return the function result + * @throws E a throwable + * @since 0.2.0 + */ + R apply(T t) throws E; +} diff --git a/common-types/src/test/java/io/carbynestack/common/function/AnyThrowingFunctionTest.java b/common-types/src/test/java/io/carbynestack/common/function/AnyThrowingFunctionTest.java new file mode 100644 index 0000000..04f2628 --- /dev/null +++ b/common-types/src/test/java/io/carbynestack/common/function/AnyThrowingFunctionTest.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2021 - for information on the respective copyright owner + * see the NOTICE file and/or the repository https://github.com/carbynestack/common. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package io.carbynestack.common.function; + +import org.junit.jupiter.api.Test; + +import java.io.IOException; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +public class AnyThrowingFunctionTest { + @Test + void apply() throws Throwable { + var value = 12; + AnyThrowingFunction function = v -> v; + assertThat(function.apply(value)).isEqualTo(value); + } + + @Test + void applyThrowsException() { + AnyThrowingFunction function = v -> { + throw new IOException(); + }; + assertThatThrownBy(() -> function.apply(12)) + .isExactlyInstanceOf(IOException.class); + } +} diff --git a/common-types/src/test/java/io/carbynestack/common/function/ThrowingFunctionTest.java b/common-types/src/test/java/io/carbynestack/common/function/ThrowingFunctionTest.java new file mode 100644 index 0000000..4eec290 --- /dev/null +++ b/common-types/src/test/java/io/carbynestack/common/function/ThrowingFunctionTest.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2021 - for information on the respective copyright owner + * see the NOTICE file and/or the repository https://github.com/carbynestack/common. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package io.carbynestack.common.function; + +import org.junit.jupiter.api.Test; + +import java.io.IOException; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +class ThrowingFunctionTest { + @Test + void apply() { + var value = 12; + ThrowingFunction function = v -> v; + assertThat(function.apply(value)).isEqualTo(value); + } + + @Test + void applyCheckedException() throws IOException { + var value = 12; + ThrowingFunction function = v -> v; + assertThat(function.apply(value)).isEqualTo(value); + } + + @Test + void applyThrowsException() { + ThrowingFunction function = v -> { + throw new IOException(); + }; + assertThatThrownBy(() -> function.apply(12)) + .isExactlyInstanceOf(IOException.class); + } +} From c8fa88e982e687ff4b9d63cd92fb90c20abbd2c1 Mon Sep 17 00:00:00 2001 From: David Greven Date: Thu, 9 Dec 2021 17:58:36 +0100 Subject: [PATCH 2/3] Add missing version tag Signed-off-by: David Greven --- .../io/carbynestack/common/function/AnyThrowingFunction.java | 1 + .../java/io/carbynestack/common/function/ThrowingFunction.java | 1 + 2 files changed, 2 insertions(+) diff --git a/common-types/src/main/java/io/carbynestack/common/function/AnyThrowingFunction.java b/common-types/src/main/java/io/carbynestack/common/function/AnyThrowingFunction.java index 6901740..643ce54 100644 --- a/common-types/src/main/java/io/carbynestack/common/function/AnyThrowingFunction.java +++ b/common-types/src/main/java/io/carbynestack/common/function/AnyThrowingFunction.java @@ -11,6 +11,7 @@ * * @param the type of the input to the function * @param the type of the result of the function + * @version JDK 8 * @since 0.2.0 */ public interface AnyThrowingFunction extends ThrowingFunction { diff --git a/common-types/src/main/java/io/carbynestack/common/function/ThrowingFunction.java b/common-types/src/main/java/io/carbynestack/common/function/ThrowingFunction.java index df29091..a38838c 100644 --- a/common-types/src/main/java/io/carbynestack/common/function/ThrowingFunction.java +++ b/common-types/src/main/java/io/carbynestack/common/function/ThrowingFunction.java @@ -12,6 +12,7 @@ * * @param the type of the input to the function * @param the type of the result of the function + * @version JDK 8 * @since 0.2.0 */ public interface ThrowingFunction { From 2be9596a73bcd5294e9b349da7ac0ca099138fca Mon Sep 17 00:00:00 2001 From: David Greven Date: Thu, 9 Dec 2021 18:00:56 +0100 Subject: [PATCH 3/3] Remove public modifier Signed-off-by: David Greven --- .../carbynestack/common/function/AnyThrowingFunctionTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common-types/src/test/java/io/carbynestack/common/function/AnyThrowingFunctionTest.java b/common-types/src/test/java/io/carbynestack/common/function/AnyThrowingFunctionTest.java index 04f2628..6a4ea97 100644 --- a/common-types/src/test/java/io/carbynestack/common/function/AnyThrowingFunctionTest.java +++ b/common-types/src/test/java/io/carbynestack/common/function/AnyThrowingFunctionTest.java @@ -13,7 +13,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -public class AnyThrowingFunctionTest { +class AnyThrowingFunctionTest { @Test void apply() throws Throwable { var value = 12;