I've run into this problem before as well. Doesn't changing the signature
involve a backwards-incompatible change though?

On Wed, Oct 3, 2018 at 5:11 PM Jeff Klukas <jklu...@mozilla.com> wrote:

> I'm working on https://issues.apache.org/jira/browse/BEAM-5638 to add
> exception handling options to single message transforms in the Java SDK.
>
> MapElements' via() method is overloaded to accept either a SimpleFunction,
> a SerializableFunction, or a Contextful, all of which are ultimately stored
> as a Contextful where the mapping functionis expected to have signature:
>
> OutputT apply(InputT element, Context c) throws Exception;
>
> So Contextful.Fn allows throwing checked exceptions, but neither
> SerializableFunction nor SimpleFunction do. The user-provided function
> has to satisfy the more restrictive signature:
>
> OutputT apply(InputT input);
>
> Is there background about why we allow arbitrary checked exceptions to be
> thrown in one case but not the other two? Could we consider expanding
> SerializableFunction and SimpleFunction to the following?:
>
> OutputT apply(InputT input) throws Exception;
>
> This would, for example, simplify the implementation of ParseJsons and
> AsJsons, where we have to catch an IOException in MapElements#via only to
> rethrow as RuntimeException.
>

Reply via email to