When implementing your reactive pipeline, you write lots of functions (java.util.function.Function), consumers (java.util.function.Consumer), suppliers (java.util.function.Supplier) and so on.
By default, you cannot throw checked exceptions.
When integrating libraries throwing checked exceptions (like IOException) it’s not very convenient to add a try/catch block and wrap the thrown exception into a runtime exception:
Uni<Integer> uni = item.onItem().transform(i -> {
try {
return methodThrowingIoException(i);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
});
Mutiny provides utilities to avoid having to do this manually.
If your operation throws a checked exception, you can use the io.smallrye.mutiny.unchecked.Unchecked wrappers.
For example, if your synchronous transformation uses a method throwing a checked exception, wrap it using Unchecked.function:
Uni<Integer> uni = item.onItem().transform(Unchecked.function(i -> {
// Can throw checked exception
return methodThrowingIoException(i);
}));
You can also wrap consumers such as in:
Uni<Integer> uni = item.onItem().invoke(Unchecked.consumer(i -> {
// Can throw checked exception
throw new IOException("boom");
}));
|
Static Import
You can add the following import statement to simplify the usage of the provided methods:
|