blob: acf0377375552af5a0ded11eb79f41f5b20990b4 [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 Wed Aug 14 17:37:13 PDT 2019 -->
<title>WindowFn (Apache Beam 2.15.0-SNAPSHOT)</title>
<meta name="date" content="2019-08-14">
<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="WindowFn (Apache Beam 2.15.0-SNAPSHOT)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":6,"i2":6,"i3":10,"i4":10,"i5":38,"i6":10,"i7":6,"i8":10,"i9":10,"i10":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated 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/Window.OnTimeBehavior.html" title="enum 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/WindowFn.AssignContext.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/WindowFn.html" target="_top">Frames</a></li>
<li><a href="WindowFn.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>Field&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>Field&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 WindowFn" class="title">Class WindowFn&lt;T,W extends <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/BoundedWindow.html" title="class in org.apache.beam.sdk.transforms.windowing">BoundedWindow</a>&gt;</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.beam.sdk.transforms.windowing.WindowFn&lt;T,W&gt;</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - type of elements being windowed</dd>
<dd><code>W</code> - <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/BoundedWindow.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>BoundedWindow</code></a> subclass used to represent the windows used by this <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>WindowFn</code></a></dd>
</dl>
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.io.Serializable, <a href="../../../../../../org/apache/beam/sdk/transforms/display/HasDisplayData.html" title="interface in org.apache.beam.sdk.transforms.display">HasDisplayData</a></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/InvalidWindows.html" title="class in org.apache.beam.sdk.transforms.windowing">InvalidWindows</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/NonMergingWindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing">NonMergingWindowFn</a>, <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Sessions.html" title="class in org.apache.beam.sdk.transforms.windowing">Sessions</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">WindowFn&lt;T,W extends <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/BoundedWindow.html" title="class in org.apache.beam.sdk.transforms.windowing">BoundedWindow</a>&gt;</span>
extends java.lang.Object
implements java.io.Serializable, <a href="../../../../../../org/apache/beam/sdk/transforms/display/HasDisplayData.html" title="interface in org.apache.beam.sdk.transforms.display">HasDisplayData</a></pre>
<div class="block">The argument to the <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Window.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>Window</code></a> transform used to assign elements into windows and to
determine how windows are merged. See <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 on how <code>WindowFn</code>s are used and for a library of predefined <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>WindowFns</code></a>.
<p>Users will generally want to use the predefined <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>WindowFns</code></a>, but it is also
possible to create new subclasses.
<p>To create a custom <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>WindowFn</code></a>, inherit from this class and override all required
methods. If no merging is required, inherit from <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/NonMergingWindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>NonMergingWindowFn</code></a> instead. If no
merging is required and each element is assigned to a single window, inherit from <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PartitioningWindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>PartitioningWindowFn</code></a>. Inheriting from the most specific subclass will enable more optimizations
in the runner.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../serialized-form.html#org.apache.beam.sdk.transforms.windowing.WindowFn">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>class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.AssignContext.html" title="class in org.apache.beam.sdk.transforms.windowing">WindowFn.AssignContext</a></span></code>
<div class="block">Information available when running <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html#assignWindows-org.apache.beam.sdk.transforms.windowing.WindowFn.AssignContext-"><code>assignWindows(org.apache.beam.sdk.transforms.windowing.WindowFn&lt;T, W&gt;.AssignContext)</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.MergeContext.html" title="class in org.apache.beam.sdk.transforms.windowing">WindowFn.MergeContext</a></span></code>
<div class="block">Information available when running <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html#mergeWindows-org.apache.beam.sdk.transforms.windowing.WindowFn.MergeContext-"><code>mergeWindows(org.apache.beam.sdk.transforms.windowing.WindowFn&lt;T, W&gt;.MergeContext)</code></a>.</div>
</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="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html#WindowFn--">WindowFn</a></span>()</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><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated 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/WindowFn.html#assignsToOneWindow--">assignsToOneWindow</a></span>()</code>
<div class="block">Returns true if this <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>WindowFn</code></a> always assigns an element to exactly one window.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>abstract java.util.Collection&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="type parameter in WindowFn">W</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html#assignWindows-org.apache.beam.sdk.transforms.windowing.WindowFn.AssignContext-">assignWindows</a></span>(<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.AssignContext.html" title="class in org.apache.beam.sdk.transforms.windowing">WindowFn.AssignContext</a>&nbsp;c)</code>
<div class="block">Given a timestamp and element, returns the set of windows into which it should be placed.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>abstract <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowMappingFn.html" title="class in org.apache.beam.sdk.transforms.windowing">WindowMappingFn</a>&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="type parameter in WindowFn">W</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html#getDefaultWindowMappingFn--">getDefaultWindowMappingFn</a></span>()</code>
<div class="block">Returns the default <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowMappingFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>WindowMappingFn</code></a> to use to map main input windows to side input
windows.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="https://static.javadoc.io/joda-time/joda-time/2.10.1/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/WindowFn.html#getOutputTime-org.joda.time.Instant-W-">getOutputTime</a></span>(<a href="https://static.javadoc.io/joda-time/joda-time/2.10.1/org/joda/time/Instant.html?is-external=true" title="class or interface in org.joda.time">Instant</a>&nbsp;inputTimestamp,
<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="type parameter in WindowFn">W</a>&nbsp;window)</code>
<div class="block">Returns the output timestamp to use for data depending on the given <code>inputTimestamp</code> in
the specified <code>window</code>.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="type parameter in WindowFn">W</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html#getWindowTypeDescriptor--">getWindowTypeDescriptor</a></span>()</code>
<div class="block">Returns a <a href="../../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> capturing what is known statically about the window type of
this <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>WindowFn</code></a> instance's most-derived class.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>abstract boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html#isCompatible-org.apache.beam.sdk.transforms.windowing.WindowFn-">isCompatible</a></span>(<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing">WindowFn</a>&lt;?,?&gt;&nbsp;other)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">please override verifyCompatibility to throw a useful error message; we will remove
isCompatible at version 3.0.0</span></div>
</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html#isNonMerging--">isNonMerging</a></span>()</code>
<div class="block">Returns true if this <code>WindowFn</code> never needs to merge any windows.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html#mergeWindows-org.apache.beam.sdk.transforms.windowing.WindowFn.MergeContext-">mergeWindows</a></span>(<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.MergeContext.html" title="class in org.apache.beam.sdk.transforms.windowing">WindowFn.MergeContext</a>&nbsp;c)</code>
<div class="block">Does whatever merging of windows is necessary.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html#populateDisplayData-org.apache.beam.sdk.transforms.display.DisplayData.Builder-">populateDisplayData</a></span>(<a href="../../../../../../org/apache/beam/sdk/transforms/display/DisplayData.Builder.html" title="interface in org.apache.beam.sdk.transforms.display">DisplayData.Builder</a>&nbsp;builder)</code>
<div class="block">Register display data for the given transform or component.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html#verifyCompatibility-org.apache.beam.sdk.transforms.windowing.WindowFn-">verifyCompatibility</a></span>(<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing">WindowFn</a>&lt;?,?&gt;&nbsp;other)</code>
<div class="block">Throw <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/IncompatibleWindowException.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>IncompatibleWindowException</code></a> if this WindowFn does not perform the same merging as
the given $<code>WindowFn</code>.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>abstract <a href="../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders">Coder</a>&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="type parameter in WindowFn">W</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html#windowCoder--">windowCoder</a></span>()</code>
<div class="block">Returns the <a href="../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders"><code>Coder</code></a> used for serializing the windows used by this windowFn.</div>
</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, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="WindowFn--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>WindowFn</h4>
<pre>public&nbsp;WindowFn()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="assignWindows-org.apache.beam.sdk.transforms.windowing.WindowFn.AssignContext-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>assignWindows</h4>
<pre>public abstract&nbsp;java.util.Collection&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="type parameter in WindowFn">W</a>&gt;&nbsp;assignWindows(<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.AssignContext.html" title="class in org.apache.beam.sdk.transforms.windowing">WindowFn.AssignContext</a>&nbsp;c)
throws java.lang.Exception</pre>
<div class="block">Given a timestamp and element, returns the set of windows into which it should be placed.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a name="mergeWindows-org.apache.beam.sdk.transforms.windowing.WindowFn.MergeContext-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>mergeWindows</h4>
<pre>public abstract&nbsp;void&nbsp;mergeWindows(<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.MergeContext.html" title="class in org.apache.beam.sdk.transforms.windowing">WindowFn.MergeContext</a>&nbsp;c)
throws java.lang.Exception</pre>
<div class="block">Does whatever merging of windows is necessary.
<p>See <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/MergeOverlappingIntervalWindows.html#mergeWindows-org.apache.beam.sdk.transforms.windowing.WindowFn.MergeContext-"><code>MergeOverlappingIntervalWindows.mergeWindows(org.apache.beam.sdk.transforms.windowing.WindowFn&lt;?, org.apache.beam.sdk.transforms.windowing.IntervalWindow&gt;.MergeContext)</code></a> for an example of how to override
this method.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a name="isCompatible-org.apache.beam.sdk.transforms.windowing.WindowFn-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isCompatible</h4>
<pre>@Deprecated
public abstract&nbsp;boolean&nbsp;isCompatible(<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing">WindowFn</a>&lt;?,?&gt;&nbsp;other)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">please override verifyCompatibility to throw a useful error message; we will remove
isCompatible at version 3.0.0</span></div>
<div class="block">Returns whether this performs the same merging as the given <code>WindowFn</code>.</div>
</li>
</ul>
<a name="verifyCompatibility-org.apache.beam.sdk.transforms.windowing.WindowFn-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>verifyCompatibility</h4>
<pre>public&nbsp;void&nbsp;verifyCompatibility(<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing">WindowFn</a>&lt;?,?&gt;&nbsp;other)
throws <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/IncompatibleWindowException.html" title="class in org.apache.beam.sdk.transforms.windowing">IncompatibleWindowException</a></pre>
<div class="block">Throw <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/IncompatibleWindowException.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>IncompatibleWindowException</code></a> if this WindowFn does not perform the same merging as
the given $<code>WindowFn</code>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/IncompatibleWindowException.html" title="class in org.apache.beam.sdk.transforms.windowing">IncompatibleWindowException</a></code> - if compared WindowFns are not compatible.</dd>
</dl>
</li>
</ul>
<a name="windowCoder--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>windowCoder</h4>
<pre>public abstract&nbsp;<a href="../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders">Coder</a>&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="type parameter in WindowFn">W</a>&gt;&nbsp;windowCoder()</pre>
<div class="block">Returns the <a href="../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders"><code>Coder</code></a> used for serializing the windows used by this windowFn.</div>
</li>
</ul>
<a name="getDefaultWindowMappingFn--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDefaultWindowMappingFn</h4>
<pre>public abstract&nbsp;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowMappingFn.html" title="class in org.apache.beam.sdk.transforms.windowing">WindowMappingFn</a>&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="type parameter in WindowFn">W</a>&gt;&nbsp;getDefaultWindowMappingFn()</pre>
<div class="block">Returns the default <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowMappingFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>WindowMappingFn</code></a> to use to map main input windows to side input
windows. This should accept arbitrary main input windows, and produce a <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/BoundedWindow.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>BoundedWindow</code></a>
that can be produced by this <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>WindowFn</code></a>.</div>
</li>
</ul>
<a name="getOutputTime-org.joda.time.Instant-org.apache.beam.sdk.transforms.windowing.BoundedWindow-">
<!-- -->
</a><a name="getOutputTime-org.joda.time.Instant-W-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOutputTime</h4>
<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#OUTPUT_TIME">OUTPUT_TIME</a>)
public&nbsp;<a href="https://static.javadoc.io/joda-time/joda-time/2.10.1/org/joda/time/Instant.html?is-external=true" title="class or interface in org.joda.time">Instant</a>&nbsp;getOutputTime(<a href="https://static.javadoc.io/joda-time/joda-time/2.10.1/org/joda/time/Instant.html?is-external=true" title="class or interface in org.joda.time">Instant</a>&nbsp;inputTimestamp,
<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="type parameter in WindowFn">W</a>&nbsp;window)</pre>
<div class="block">Returns the output timestamp to use for data depending on the given <code>inputTimestamp</code> in
the specified <code>window</code>.
<p>The result of this method must be between <code>inputTimestamp</code> and <code>window.maxTimestamp()</code> (inclusive on both sides).
<p>This function must be monotonic across input timestamps. Specifically, if <code>A &lt; B</code>,
then <code>getOutputTime(A, window) &lt;= getOutputTime(B, window)</code>.
<p>For a <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>WindowFn</code></a> that doesn't produce overlapping windows, this can (and typically
should) just return <code>inputTimestamp</code>. In the presence of overlapping windows, it is
suggested that the result in later overlapping windows is past the end of earlier windows so
that the later windows don't prevent the watermark from progressing past the end of the earlier
window.</div>
</li>
</ul>
<a name="isNonMerging--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isNonMerging</h4>
<pre>public&nbsp;boolean&nbsp;isNonMerging()</pre>
<div class="block">Returns true if this <code>WindowFn</code> never needs to merge any windows.</div>
</li>
</ul>
<a name="assignsToOneWindow--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>assignsToOneWindow</h4>
<pre>public&nbsp;boolean&nbsp;assignsToOneWindow()</pre>
<div class="block">Returns true if this <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>WindowFn</code></a> always assigns an element to exactly one window.
<p>If this varies per-element, or cannot be determined, conservatively return false.
<p>By default, returns false.</div>
</li>
</ul>
<a name="getWindowTypeDescriptor--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getWindowTypeDescriptor</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="type parameter in WindowFn">W</a>&gt;&nbsp;getWindowTypeDescriptor()</pre>
<div class="block">Returns a <a href="../../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> capturing what is known statically about the window type of
this <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>WindowFn</code></a> instance's most-derived class.
<p>In the normal case of a concrete <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>WindowFn</code></a> subclass with no generic type parameters
of its own (including anonymous inner classes), this will be a complete non-generic type.</div>
</li>
</ul>
<a name="populateDisplayData-org.apache.beam.sdk.transforms.display.DisplayData.Builder-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>populateDisplayData</h4>
<pre>public&nbsp;void&nbsp;populateDisplayData(<a href="../../../../../../org/apache/beam/sdk/transforms/display/DisplayData.Builder.html" title="interface in org.apache.beam.sdk.transforms.display">DisplayData.Builder</a>&nbsp;builder)</pre>
<div class="block">Register display data for the given transform or component.
<p><code>populateDisplayData(DisplayData.Builder)</code> is invoked by Pipeline runners to collect
display data via <a href="../../../../../../org/apache/beam/sdk/transforms/display/DisplayData.html#from-org.apache.beam.sdk.transforms.display.HasDisplayData-"><code>DisplayData.from(HasDisplayData)</code></a>. Implementations may call <code>super.populateDisplayData(builder)</code> in order to register display data in the current namespace,
but should otherwise use <code>subcomponent.populateDisplayData(builder)</code> to use the namespace
of the subcomponent.
<p>By default, does not register any display data. Implementors may override this method to
provide their own display data.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/beam/sdk/transforms/display/HasDisplayData.html#populateDisplayData-org.apache.beam.sdk.transforms.display.DisplayData.Builder-">populateDisplayData</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/beam/sdk/transforms/display/HasDisplayData.html" title="interface in org.apache.beam.sdk.transforms.display">HasDisplayData</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>builder</code> - The builder to populate with display data.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../org/apache/beam/sdk/transforms/display/HasDisplayData.html" title="interface in org.apache.beam.sdk.transforms.display"><code>HasDisplayData</code></a></dd>
</dl>
</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/Window.OnTimeBehavior.html" title="enum 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/WindowFn.AssignContext.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/WindowFn.html" target="_top">Frames</a></li>
<li><a href="WindowFn.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>Field&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>Field&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>