public abstract class InferableFunction<InputT,OutputT> extends java.lang.Object implements ProcessFunction<InputT,OutputT>, HasDisplayData
ProcessFunction
which is not a functional interface. Concrete subclasses allow
us to infer type information, which in turn aids Coder
inference.
See SimpleFunction
for providing robust type information where a SerializableFunction
is required.
Modifier | Constructor and Description |
---|---|
protected |
InferableFunction() |
protected |
InferableFunction(ProcessFunction<InputT,OutputT> fn) |
Modifier and Type | Method and Description |
---|---|
OutputT |
apply(InputT input)
Returns the result of invoking this function on the given input.
|
static <InputT,OutputT> |
fromProcessFunctionWithOutputType(ProcessFunction<InputT,OutputT> fn,
TypeDescriptor<OutputT> outputType) |
TypeDescriptor<InputT> |
getInputTypeDescriptor()
Returns a
TypeDescriptor capturing what is known statically about the input type of
this InferableFunction instance's most-derived class. |
TypeDescriptor<OutputT> |
getOutputTypeDescriptor()
Returns a
TypeDescriptor capturing what is known statically about the output type of
this InferableFunction instance's most-derived class. |
void |
populateDisplayData(DisplayData.Builder builder)
Register display data for the given transform or component.
|
protected InferableFunction()
protected InferableFunction(ProcessFunction<InputT,OutputT> fn)
public OutputT apply(InputT input) throws java.lang.Exception
ProcessFunction
apply
in interface ProcessFunction<InputT,OutputT>
java.lang.Exception
public static <InputT,OutputT> InferableFunction<InputT,OutputT> fromProcessFunctionWithOutputType(ProcessFunction<InputT,OutputT> fn, TypeDescriptor<OutputT> outputType)
public TypeDescriptor<InputT> getInputTypeDescriptor()
TypeDescriptor
capturing what is known statically about the input type of
this InferableFunction
instance's most-derived class.
See getOutputTypeDescriptor()
for more discussion.
public TypeDescriptor<OutputT> getOutputTypeDescriptor()
TypeDescriptor
capturing what is known statically about the output type of
this InferableFunction
instance's most-derived class.
In the normal case of a concrete InferableFunction
subclass with no generic type
parameters of its own (including anonymous inner classes), this will be a complete non-generic
type, which is good for choosing a default output Coder<OutputT>
for the output PCollection<OutputT>
.
public void populateDisplayData(DisplayData.Builder builder)
populateDisplayData(DisplayData.Builder)
is invoked by Pipeline runners to collect
display data via DisplayData.from(HasDisplayData)
. Implementations may call super.populateDisplayData(builder)
in order to register display data in the current namespace,
but should otherwise use subcomponent.populateDisplayData(builder)
to use the namespace
of the subcomponent.
By default, does not register any display data. Implementors may override this method to provide their own display data.
populateDisplayData
in interface HasDisplayData
builder
- The builder to populate with display data.HasDisplayData