blob: c767221d2c4363f7f91671a0771cc1e2e9555011 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_181-google-v7) on Mon Jan 27 16:42:31 PST 2020 -->
<title>Trigger (Apache Beam 2.20.0-SNAPSHOT)</title>
<meta name="date" content="2020-01-27">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Trigger (Apache Beam 2.20.0-SNAPSHOT)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":6,"i3":6,"i4":10,"i5":10,"i6":6,"i7":10,"i8":10,"i9":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/TimestampTransform.Delay.html" title="class in org.apache.beam.sdk.transforms.windowing"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.OnceTrigger.html" title="class in org.apache.beam.sdk.transforms.windowing"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/beam/sdk/transforms/windowing/Trigger.html" target="_top">Frames</a></li>
<li><a href="Trigger.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.beam.sdk.transforms.windowing</div>
<h2 title="Class Trigger" class="title">Class Trigger</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.beam.sdk.transforms.windowing.Trigger</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.io.Serializable</dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/AfterEach.html" title="class in org.apache.beam.sdk.transforms.windowing">AfterEach</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/AfterWatermark.AfterWatermarkEarlyAndLate.html" title="class in org.apache.beam.sdk.transforms.windowing">AfterWatermark.AfterWatermarkEarlyAndLate</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/DefaultTrigger.html" title="class in org.apache.beam.sdk.transforms.windowing">DefaultTrigger</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/OrFinallyTrigger.html" title="class in org.apache.beam.sdk.transforms.windowing">OrFinallyTrigger</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Repeatedly.html" title="class in org.apache.beam.sdk.transforms.windowing">Repeatedly</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/ReshuffleTrigger.html" title="class in org.apache.beam.sdk.transforms.windowing">ReshuffleTrigger</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.OnceTrigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger.OnceTrigger</a></dd>
</dl>
<hr>
<br>
<pre><a href="../../../../../../org/apache/beam/sdk/annotations/Experimental.html" title="annotation in org.apache.beam.sdk.annotations">@Experimental</a>(<a href="../../../../../../org/apache/beam/sdk/annotations/Experimental.html#value--">value</a>=<a href="../../../../../../org/apache/beam/sdk/annotations/Experimental.Kind.html#TRIGGER">TRIGGER</a>)
public abstract class <span class="typeNameLabel">Trigger</span>
extends java.lang.Object
implements java.io.Serializable</pre>
<div class="block">Triggers control when the elements for a specific key and window are output. As elements arrive,
they are put into one or more windows by a <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Window.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>Window</code></a> transform and its associated <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>WindowFn</code></a>, and then passed to the associated <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>Trigger</code></a> to determine if the <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/BoundedWindow.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>Window's</code></a> contents should be output.
<p>See <a href="../../../../../../org/apache/beam/sdk/transforms/GroupByKey.html" title="class in org.apache.beam.sdk.transforms"><code>GroupByKey</code></a> and <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Window.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>Window</code></a> for more information about how grouping with windows
works.
<p>The elements that are assigned to a window since the last time it was fired (or since the
window was created) are placed into the current window pane. Triggers are evaluated against the
elements as they are added. When the root trigger fires, the elements in the current pane will be
output. When the root trigger finishes (indicating it will never fire again), the window is
closed and any new elements assigned to that window are discarded.
<p>Several predefined triggers are provided:
<ul>
<li><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/AfterWatermark.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>AfterWatermark</code></a> for firing when the watermark passes a timestamp determined from
either the end of the window or the arrival of the first element in a pane.
<li><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/AfterProcessingTime.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>AfterProcessingTime</code></a> for firing after some amount of processing time has elapsed
(typically since the first element in a pane).
<li><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/AfterPane.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>AfterPane</code></a> for firing off a property of the elements in the current pane, such as
the number of elements that have been assigned to the current pane.
</ul>
<p>In addition, triggers can be combined in a variety of ways:
<ul>
<li><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Repeatedly.html#forever-org.apache.beam.sdk.transforms.windowing.Trigger-"><code>Repeatedly.forever(org.apache.beam.sdk.transforms.windowing.Trigger)</code></a> to create a trigger that executes forever. Any time its argument
finishes it gets reset and starts over. Can be combined with <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#orFinally-org.apache.beam.sdk.transforms.windowing.Trigger.OnceTrigger-"><code>orFinally(org.apache.beam.sdk.transforms.windowing.Trigger.OnceTrigger)</code></a> to
specify a condition that causes the repetition to stop.
<li><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/AfterEach.html#inOrder-org.apache.beam.sdk.transforms.windowing.Trigger...-"><code>AfterEach.inOrder(org.apache.beam.sdk.transforms.windowing.Trigger...)</code></a> to execute each trigger in sequence, firing each (and every) time
that a trigger fires, and advancing to the next trigger in the sequence when it finishes.
<li><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/AfterFirst.html#of-org.apache.beam.sdk.transforms.windowing.Trigger.OnceTrigger...-"><code>AfterFirst.of(org.apache.beam.sdk.transforms.windowing.Trigger.OnceTrigger...)</code></a> to create a trigger that fires after at least one of its arguments
fires. An <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/AfterFirst.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>AfterFirst</code></a> trigger finishes after it fires once.
<li><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/AfterAll.html#of-org.apache.beam.sdk.transforms.windowing.Trigger.OnceTrigger...-"><code>AfterAll.of(org.apache.beam.sdk.transforms.windowing.Trigger.OnceTrigger...)</code></a> to create a trigger that fires after all least one of its arguments
have fired at least once. An <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/AfterAll.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>AfterAll</code></a> trigger finishes after it fires once.
</ul></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../serialized-form.html#org.apache.beam.sdk.transforms.windowing.Trigger">Serialized Form</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.OnceTrigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger.OnceTrigger</a></span></code>
<div class="block"><b><i>For internal use only; no backwards-compatibility guarantees.</i></b></div>
</td>
</tr>
</table>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected java.util.List&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#subTriggers">subTriggers</a></span></code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colLast" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#Trigger--">Trigger</a></span>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#Trigger-java.util.List-">Trigger</a></span>(java.util.List&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger</a>&gt;&nbsp;subTriggers)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#equals-java.lang.Object-">equals</a></span>(java.lang.Object&nbsp;obj)</code>&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#getContinuationTrigger--">getContinuationTrigger</a></span>()</code>
<div class="block">Return a trigger to use after a <a href="../../../../../../org/apache/beam/sdk/transforms/GroupByKey.html" title="class in org.apache.beam.sdk.transforms"><code>GroupByKey</code></a> to preserve the intention of this trigger.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected abstract <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#getContinuationTrigger-java.util.List-">getContinuationTrigger</a></span>(java.util.List&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger</a>&gt;&nbsp;continuationTriggers)</code>
<div class="block">Subclasses should override this to return the <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#getContinuationTrigger--"><code>getContinuationTrigger()</code></a> of this <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>Trigger</code></a>.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>abstract <a href="https://static.javadoc.io/joda-time/joda-time/2.10.3/org/joda/time/Instant.html?is-external=true" title="class or interface in org.joda.time">Instant</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#getWatermarkThatGuaranteesFiring-org.apache.beam.sdk.transforms.windowing.BoundedWindow-">getWatermarkThatGuaranteesFiring</a></span>(<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/BoundedWindow.html" title="class in org.apache.beam.sdk.transforms.windowing">BoundedWindow</a>&nbsp;window)</code>
<div class="block"><b><i>For internal use only; no backwards-compatibility guarantees.</i></b></div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#hashCode--">hashCode</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#isCompatible-org.apache.beam.sdk.transforms.windowing.Trigger-">isCompatible</a></span>(<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger</a>&nbsp;other)</code>
<div class="block"><b><i>For internal use only; no backwards-compatibility guarantees.</i></b></div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>abstract boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#mayFinish--">mayFinish</a></span>()</code>
<div class="block"><b><i>For internal use only; no backwards-compatibility guarantees.</i></b></div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/OrFinallyTrigger.html" title="class in org.apache.beam.sdk.transforms.windowing">OrFinallyTrigger</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#orFinally-org.apache.beam.sdk.transforms.windowing.Trigger.OnceTrigger-">orFinally</a></span>(<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.OnceTrigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger.OnceTrigger</a>&nbsp;until)</code>
<div class="block">Specify an ending condition for this trigger.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>java.util.List&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#subTriggers--">subTriggers</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#toString--">toString</a></span>()</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, finalize, getClass, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="subTriggers">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>subTriggers</h4>
<pre><a href="https://static.javadoc.io/com.google.code.findbugs/jsr305/3.0.2/javax/annotation/Nullable.html?is-external=true" title="class or interface in javax.annotation">@Nullable</a>
protected final&nbsp;java.util.List&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger</a>&gt; subTriggers</pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="Trigger-java.util.List-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Trigger</h4>
<pre>protected&nbsp;Trigger(<a href="https://static.javadoc.io/com.google.code.findbugs/jsr305/3.0.2/javax/annotation/Nullable.html?is-external=true" title="class or interface in javax.annotation">@Nullable</a>
java.util.List&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger</a>&gt;&nbsp;subTriggers)</pre>
</li>
</ul>
<a name="Trigger--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>Trigger</h4>
<pre>protected&nbsp;Trigger()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="subTriggers--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>subTriggers</h4>
<pre>public&nbsp;java.util.List&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger</a>&gt;&nbsp;subTriggers()</pre>
</li>
</ul>
<a name="getContinuationTrigger--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getContinuationTrigger</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger</a>&nbsp;getContinuationTrigger()</pre>
<div class="block">Return a trigger to use after a <a href="../../../../../../org/apache/beam/sdk/transforms/GroupByKey.html" title="class in org.apache.beam.sdk.transforms"><code>GroupByKey</code></a> to preserve the intention of this trigger.
Specifically, triggers that are time based and intended to provide speculative results should
continue providing speculative results. Triggers that fire once (or multiple times) should
continue firing once (or multiple times).
<p>If this method is not overridden, its default implementation delegates its behavior to
<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#getContinuationTrigger-java.util.List-"><code>getContinuationTrigger(List)</code></a> which is expected to be implemented by subclasses.</div>
</li>
</ul>
<a name="getContinuationTrigger-java.util.List-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getContinuationTrigger</h4>
<pre><a href="https://static.javadoc.io/com.google.code.findbugs/jsr305/3.0.2/javax/annotation/Nullable.html?is-external=true" title="class or interface in javax.annotation">@Nullable</a>
protected abstract&nbsp;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger</a>&nbsp;getContinuationTrigger(<a href="https://static.javadoc.io/com.google.code.findbugs/jsr305/3.0.2/javax/annotation/Nullable.html?is-external=true" title="class or interface in javax.annotation">@Nullable</a>
java.util.List&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger</a>&gt;&nbsp;continuationTriggers)</pre>
<div class="block">Subclasses should override this to return the <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#getContinuationTrigger--"><code>getContinuationTrigger()</code></a> of this <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>Trigger</code></a>. For convenience, this is provided the continuation trigger of each of the
sub-triggers in the same order as <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#subTriggers"><code>subTriggers</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>continuationTriggers</code> - <code>null</code> if <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#subTriggers"><code>subTriggers</code></a> is <code>null</code>, otherwise
contains the result of <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html#getContinuationTrigger--"><code>getContinuationTrigger()</code></a> on each of the subTriggers in the
same order.</dd>
</dl>
</li>
</ul>
<a name="getWatermarkThatGuaranteesFiring-org.apache.beam.sdk.transforms.windowing.BoundedWindow-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getWatermarkThatGuaranteesFiring</h4>
<pre><a href="../../../../../../org/apache/beam/sdk/annotations/Internal.html" title="annotation in org.apache.beam.sdk.annotations">@Internal</a>
public abstract&nbsp;<a href="https://static.javadoc.io/joda-time/joda-time/2.10.3/org/joda/time/Instant.html?is-external=true" title="class or interface in org.joda.time">Instant</a>&nbsp;getWatermarkThatGuaranteesFiring(<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/BoundedWindow.html" title="class in org.apache.beam.sdk.transforms.windowing">BoundedWindow</a>&nbsp;window)</pre>
<div class="block"><b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
<p>Returns a bound in event time by which this trigger would have fired at least once for a
given window had there been input data.
<p>For triggers that do not fire based on the watermark advancing, returns <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/BoundedWindow.html#TIMESTAMP_MAX_VALUE"><code>BoundedWindow.TIMESTAMP_MAX_VALUE</code></a>.
<p>This estimate may be used, for example, to determine that there are no elements in a
side-input window, which causes the default value to be used instead.</div>
</li>
</ul>
<a name="mayFinish--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>mayFinish</h4>
<pre><a href="../../../../../../org/apache/beam/sdk/annotations/Internal.html" title="annotation in org.apache.beam.sdk.annotations">@Internal</a>
public abstract&nbsp;boolean&nbsp;mayFinish()</pre>
<div class="block"><b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
<p>Indicates whether this trigger may "finish". A top level trigger that finishes can cause
data loss, so is rejected by GroupByKey validation.</div>
</li>
</ul>
<a name="isCompatible-org.apache.beam.sdk.transforms.windowing.Trigger-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isCompatible</h4>
<pre><a href="../../../../../../org/apache/beam/sdk/annotations/Internal.html" title="annotation in org.apache.beam.sdk.annotations">@Internal</a>
public&nbsp;boolean&nbsp;isCompatible(<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger</a>&nbsp;other)</pre>
<div class="block"><b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
<p>Returns whether this performs the same triggering as the given <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>Trigger</code></a>.</div>
</li>
</ul>
<a name="toString--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;java.lang.String&nbsp;toString()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>toString</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
<a name="equals-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre>public&nbsp;boolean&nbsp;equals(java.lang.Object&nbsp;obj)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>equals</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
<a name="hashCode--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hashCode</h4>
<pre>public&nbsp;int&nbsp;hashCode()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>hashCode</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
<a name="orFinally-org.apache.beam.sdk.transforms.windowing.Trigger.OnceTrigger-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>orFinally</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/OrFinallyTrigger.html" title="class in org.apache.beam.sdk.transforms.windowing">OrFinallyTrigger</a>&nbsp;orFinally(<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.OnceTrigger.html" title="class in org.apache.beam.sdk.transforms.windowing">Trigger.OnceTrigger</a>&nbsp;until)</pre>
<div class="block">Specify an ending condition for this trigger. If the <code>until</code> <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>Trigger</code></a> fires then
the combination fires.
<p>The expression <code>t1.orFinally(t2)</code> fires every time <code>t1</code> fires, and finishes as
soon as either <code>t1</code> finishes or <code>t2</code> fires, in which case it fires one last time
for <code>t2</code>. Both <code>t1</code> and <code>t2</code> are executed in parallel. This means that <code>t1</code> may have fired since <code>t2</code> started, so not all of the elements that <code>t2</code> has
seen are necessarily in the current pane.
<p>For example the final firing of the following trigger may only have 1 element:
<pre><code>
Repeatedly.forever(AfterPane.elementCountAtLeast(2))
.orFinally(AfterPane.elementCountAtLeast(5))
</code></pre>
<p>Note that if <code>t1</code> is <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.OnceTrigger.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>Trigger.OnceTrigger</code></a>, then <code>t1.orFinally(t2)</code> is the same as
<code>AfterFirst.of(t1, t2)</code>.</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/TimestampTransform.Delay.html" title="class in org.apache.beam.sdk.transforms.windowing"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Trigger.OnceTrigger.html" title="class in org.apache.beam.sdk.transforms.windowing"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/beam/sdk/transforms/windowing/Trigger.html" target="_top">Frames</a></li>
<li><a href="Trigger.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>