com.google.cloud.dataflow.sdk.transforms

## Class DoFnWithContext.Context

- java.lang.Object
- - com.google.cloud.dataflow.sdk.transforms.DoFnWithContext.Context

Direct Known Subclasses:
  DoFnWithContext.ProcessContext

Enclosing class:
  DoFnWithContext<InputT,OutputT>

    public abstract class DoFnWithContext.Context
    extends Object

Information accessible to all methods in this `DoFnWithContext`.

### Constructor Summary

Constructors
Constructor and Description
`Context()`

### Method Summary

All Methods Instance Methods Abstract Methods
`abstract PipelineOptions` `getPipelineOptions()` Returns the `PipelineOptions` specified with the `PipelineRunner` invoking this `DoFnWithContext`.
`abstract void` `output(OutputT output)` Adds the given element to the main output `PCollection`.
`abstract void` `outputWithTimestamp(OutputT output, Instant timestamp)` Adds the given element to the main output `PCollection`, with the given timestamp.
`abstract <T> void` `sideOutput(TupleTag<T> tag, T output)` Adds the given element to the side output `PCollection` with the given tag.
`abstract <T> void` `sideOutputWithTimestamp(TupleTag<T> tag, T output, Instant timestamp)` Adds the given element to the specified side output `PCollection`, with the given timestamp.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### Context

    public Context()

### Method Detail

#### getPipelineOptions

    public abstract PipelineOptions getPipelineOptions()

Returns the `PipelineOptions` specified with the `PipelineRunner` invoking this `DoFnWithContext`. The `PipelineOptions` will be the default running via `DoFnTester`.

#### output

    public abstract void output(OutputT output)

Adds the given element to the main output `PCollection`.

Once passed to `output` the element should not be modified in any way.

If invoked from `DoFnWithContext.ProcessElement`, the output element will have the same timestamp and be in the same windows as the input element passed to the method annotated with `@ProcessElement`.

If invoked from `DoFnWithContext.StartBundle` or `DoFnWithContext.FinishBundle`, this will attempt to use the `WindowFn` of the input `PCollection` to determine what windows the element should be in, throwing an exception if the `WindowFn` attempts to access any information about the input element. The output element will have a timestamp of negative infinity.

#### outputWithTimestamp

    public abstract void outputWithTimestamp(OutputT output,
                                             Instant timestamp)

Adds the given element to the main output `PCollection`, with the given timestamp.

Once passed to `outputWithTimestamp` the element should not be modified in any way.

If invoked from `DoFnWithContext.ProcessElement`), the timestamp must not be older than the input element's timestamp minus `DoFn.getAllowedTimestampSkew()`. The output element will be in the same windows as the input element.

If invoked from `DoFnWithContext.StartBundle` or `DoFnWithContext.FinishBundle`, this will attempt to use the `WindowFn` of the input `PCollection` to determine what windows the element should be in, throwing an exception if the `WindowFn` attempts to access any information about the input element except for the timestamp.

#### sideOutput

    public abstract <T> void sideOutput(TupleTag<T> tag,
                                        T output)

Adds the given element to the side output `PCollection` with the given tag.

Once passed to `sideOutput` the element should not be modified in any way.

The caller of `ParDo` uses `ParDo.withOutputTags(com.google.cloud.dataflow.sdk.values.TupleTag<OutputT>, com.google.cloud.dataflow.sdk.values.TupleTagList)` to specify the tags of side outputs that it consumes. Non-consumed side outputs, e.g., outputs for monitoring purposes only, don't necessarily need to be specified.

The output element will have the same timestamp and be in the same windows as the input element passed to `DoFnWithContext.ProcessElement`).

If invoked from `DoFnWithContext.StartBundle` or `DoFnWithContext.FinishBundle`, this will attempt to use the `WindowFn` of the input `PCollection` to determine what windows the element should be in, throwing an exception if the `WindowFn` attempts to access any information about the input element. The output element will have a timestamp of negative infinity.

See Also:
  `ParDo.withOutputTags(com.google.cloud.dataflow.sdk.values.TupleTag<OutputT>, com.google.cloud.dataflow.sdk.values.TupleTagList)`

#### sideOutputWithTimestamp

    public abstract <T> void sideOutputWithTimestamp(TupleTag<T> tag,
                                                     T output,
                                                     Instant timestamp)

Adds the given element to the specified side output `PCollection`, with the given timestamp.

Once passed to `sideOutputWithTimestamp` the element should not be modified in any way.

If invoked from `DoFnWithContext.ProcessElement`), the timestamp must not be older than the input element's timestamp minus `DoFn.getAllowedTimestampSkew()`. The output element will be in the same windows as the input element.

If invoked from `DoFnWithContext.StartBundle` or `DoFnWithContext.FinishBundle`, this will attempt to use the `WindowFn` of the input `PCollection` to determine what windows the element should be in, throwing an exception if the `WindowFn` attempts to access any information about the input element except for the timestamp.

See Also:
  `ParDo.withOutputTags(com.google.cloud.dataflow.sdk.values.TupleTag<OutputT>, com.google.cloud.dataflow.sdk.values.TupleTagList)`