/** * Translates a Java DoFn parameter to a proto representation. * * <p>Returns {@code null} rather than crashing for parameters that are not yet supported, to * allow legacy Java-based runners to perform a proto round-trip and afterwards use {@link * DoFnSignatures} to analyze. * * <p>The proto definition for parameters is provisional and those parameters that are not needed * for portability will be removed from the enum. */ // Using nullability instead of optional because of shading public static @Nullable RunnerApi.Parameter translateParameter(Parameter parameter) { return parameter.match( new Cases.WithDefault</* @Nullable in Java 8 */ RunnerApi.Parameter>() { @Override public RunnerApi.Parameter dispatch(WindowParameter p) { return RunnerApi.Parameter.newBuilder().setType(Type.Enum.WINDOW).build(); } @Override public RunnerApi.Parameter dispatch(RestrictionTrackerParameter p) { return RunnerApi.Parameter.newBuilder().setType(Type.Enum.RESTRICTION_TRACKER).build(); } @Override // Java 7 + findbugs limitation. The return type is nullable. protected @Nullable RunnerApi.Parameter dispatchDefault(Parameter p) { return null; } }); }
.extraParameters() .get(1) .match( new Parameter.Cases.WithDefault<Void>() { @Override
static StackManipulation getExtraContextParameter( DoFnSignature.Parameter parameter, final StackManipulation pushDelegate) { return parameter.match( new Cases<StackManipulation>() {
DoFnSignature signature = DoFnSignatures.signatureForDoFn(origFn); for (DoFnSignature.Parameter param : signature.processElement().extraParameters()) { param.match( new DoFnSignature.Parameter.Cases.WithDefault<Void>() { @Override