blob: d365f9e801479bef67a9f6af87022f2344c25688 [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:30 PST 2020 -->
<title>ProtoCoder (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="ProtoCoder (Apache Beam 2.20.0-SNAPSHOT)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":9,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":9,"i12":9,"i13":10,"i14":10,"i15":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance 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/extensions/protobuf/ProtoByteBuddyUtils.html" title="class in org.apache.beam.sdk.extensions.protobuf"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoDomain.html" title="class in org.apache.beam.sdk.extensions.protobuf"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" target="_top">Frames</a></li>
<li><a href="ProtoCoder.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.classes.inherited.from.class.org.apache.beam.sdk.coders.Coder">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.extensions.protobuf</div>
<h2 title="Class ProtoCoder" class="title">Class ProtoCoder&lt;T extends <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf">Message</a>&gt;</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders">org.apache.beam.sdk.coders.Coder</a>&lt;T&gt;</li>
<li>
<ul class="inheritance">
<li><a href="../../../../../../org/apache/beam/sdk/coders/CustomCoder.html" title="class in org.apache.beam.sdk.coders">org.apache.beam.sdk.coders.CustomCoder</a>&lt;T&gt;</li>
<li>
<ul class="inheritance">
<li>org.apache.beam.sdk.extensions.protobuf.ProtoCoder&lt;T&gt;</li>
</ul>
</li>
</ul>
</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> - the Protocol Buffers <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf"><code>Message</code></a> handled by this <a href="../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders"><code>Coder</code></a>.</dd>
</dl>
<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/extensions/protobuf/DynamicProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf">DynamicProtoCoder</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">ProtoCoder&lt;T extends <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf">Message</a>&gt;</span>
extends <a href="../../../../../../org/apache/beam/sdk/coders/CustomCoder.html" title="class in org.apache.beam.sdk.coders">CustomCoder</a>&lt;T&gt;</pre>
<div class="block">A <a href="../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders"><code>Coder</code></a> using Google Protocol Buffers binary format. <a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a> supports both
Protocol Buffers syntax versions 2 and 3.
<p>To learn more about Protocol Buffers, visit: <a
href="https://developers.google.com/protocol-buffers">https://developers.google.com/protocol-buffers</a>
<p><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a> is registered in the global <a href="../../../../../../org/apache/beam/sdk/coders/CoderRegistry.html" title="class in org.apache.beam.sdk.coders"><code>CoderRegistry</code></a> as the default <a href="../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders"><code>Coder</code></a> for any <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf"><code>Message</code></a> object. Custom message extensions are also supported, but these
extensions must be registered for a particular <a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a> instance and that instance must
be registered on the <a href="../../../../../../org/apache/beam/sdk/values/PCollection.html" title="class in org.apache.beam.sdk.values"><code>PCollection</code></a> that needs the extensions:
<pre><code>
import MyProtoFile;
import MyProtoFile.MyMessage;
Coder&lt;MyMessage&gt; coder = ProtoCoder.of(MyMessage.class).withExtensionsFrom(MyProtoFile.class);
PCollection&lt;MyMessage&gt; records = input.apply(...).setCoder(coder);
</code></pre>
<h3>Versioning</h3>
<p><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a> supports both versions 2 and 3 of the Protocol Buffers syntax. However, the
Java runtime version of the <code>google.com.protobuf</code> library must match exactly the
version of <code>protoc</code> that was used to produce the JAR files containing the compiled
<code>.proto</code> messages.
<p>For more information, see the <a
href="https://developers.google.com/protocol-buffers/docs/proto3#using-proto2-message-types">Protocol
Buffers documentation</a>.
<h3><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a> and Determinism</h3>
<p>In general, Protocol Buffers messages can be encoded deterministically within a single
pipeline as long as:
<ul>
<li>The encoded messages (and any transitively linked messages) do not use <code>map</code>
fields.
<li>Every Java VM that encodes or decodes the messages use the same runtime version of the
Protocol Buffers library and the same compiled <code>.proto</code> file JAR.
</ul>
<h3><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a> and Encoding Stability</h3>
<p>When changing Protocol Buffers messages, follow the rules in the Protocol Buffers language
guides for <a href="https://developers.google.com/protocol-buffers/docs/proto#updating"><code>proto2</code></a> and <a
href="https://developers.google.com/protocol-buffers/docs/proto3#updating"><code>proto3</code></a>
syntaxes, depending on your message type. Following these guidelines will ensure that the old
encoded data can be read by new versions of the code.
<p>Generally, any change to the message type, registered extensions, runtime library, or compiled
proto JARs may change the encoding. Thus even if both the original and updated messages can be
encoded deterministically within a single job, these deterministic encodings may not be the same
across jobs.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../serialized-form.html#org.apache.beam.sdk.extensions.protobuf.ProtoCoder">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>
<ul class="blockList">
<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.beam.sdk.coders.Coder">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.beam.sdk.coders.<a href="../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders">Coder</a></h3>
<code><a href="../../../../../../org/apache/beam/sdk/coders/Coder.Context.html" title="class in org.apache.beam.sdk.coders">Coder.Context</a>, <a href="../../../../../../org/apache/beam/sdk/coders/Coder.NonDeterministicException.html" title="class in org.apache.beam.sdk.coders">Coder.NonDeterministicException</a></code></li>
</ul>
</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>static long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#serialVersionUID">serialVersionUID</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/extensions/protobuf/ProtoCoder.html#ProtoCoder-java.lang.Class-java.util.Set-">ProtoCoder</a></span>(java.lang.Class&lt;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a>&gt;&nbsp;protoMessageClass,
java.util.Set&lt;java.lang.Class&lt;?&gt;&gt;&nbsp;extensionHostClasses)</code>
<div class="block">Private constructor.</div>
</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="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></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="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><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#decode-java.io.InputStream-">decode</a></span>(java.io.InputStream&nbsp;inStream)</code>
<div class="block">Decodes a value of type <code>T</code> from the given input stream in the given context.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#decode-java.io.InputStream-org.apache.beam.sdk.coders.Coder.Context-">decode</a></span>(java.io.InputStream&nbsp;inStream,
<a href="../../../../../../org/apache/beam/sdk/coders/Coder.Context.html" title="class in org.apache.beam.sdk.coders">Coder.Context</a>&nbsp;context)</code>
<div class="block">Decodes a value of type <code>T</code> from the given input stream in the given context.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#encode-T-java.io.OutputStream-">encode</a></span>(<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a>&nbsp;value,
java.io.OutputStream&nbsp;outStream)</code>
<div class="block">Encodes the given value of type <code>T</code> onto the given output stream.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#encode-T-java.io.OutputStream-org.apache.beam.sdk.coders.Coder.Context-">encode</a></span>(<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a>&nbsp;value,
java.io.OutputStream&nbsp;outStream,
<a href="../../../../../../org/apache/beam/sdk/coders/Coder.Context.html" title="class in org.apache.beam.sdk.coders">Coder.Context</a>&nbsp;context)</code>
<div class="block">Encodes the given value of type <code>T</code> onto the given output stream in the given context.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#equals-java.lang.Object-">equals</a></span>(java.lang.Object&nbsp;other)</code>&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static <a href="../../../../../../org/apache/beam/sdk/coders/CoderProvider.html" title="class in org.apache.beam.sdk.coders">CoderProvider</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#getCoderProvider--">getCoderProvider</a></span>()</code>
<div class="block">Returns a <a href="../../../../../../org/apache/beam/sdk/coders/CoderProvider.html" title="class in org.apache.beam.sdk.coders"><code>CoderProvider</code></a> which uses the <a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a> for <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf"><code>proto
messages</code></a>.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>java.util.Set&lt;java.lang.Class&lt;?&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#getExtensionHosts--">getExtensionHosts</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/ExtensionRegistry.html?is-external=true" title="class or interface in com.google.protobuf">ExtensionRegistry</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#getExtensionRegistry--">getExtensionRegistry</a></span>()</code>
<div class="block">Returns the <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/ExtensionRegistry.html?is-external=true" title="class or interface in com.google.protobuf"><code>ExtensionRegistry</code></a> listing all known Protocol Buffers extension messages to
<code>T</code> registered with this <a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a>.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>java.lang.Class&lt;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#getMessageType--">getMessageType</a></span>()</code>
<div class="block">Returns the Protocol Buffers <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf"><code>Message</code></a> type this <a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a> supports.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>protected <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Parser.html?is-external=true" title="class or interface in com.google.protobuf">Parser</a>&lt;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#getParser--">getParser</a></span>()</code>
<div class="block">Get the memoized <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Parser.html?is-external=true" title="class or interface in com.google.protobuf"><code>Parser</code></a>, possibly initializing it lazily.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#hashCode--">hashCode</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>static &lt;T extends <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf">Message</a>&gt;<br><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf">ProtoCoder</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#of-java.lang.Class-">of</a></span>(java.lang.Class&lt;T&gt;&nbsp;protoMessageClass)</code>
<div class="block">Returns a <a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a> for the given Protocol Buffers <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf"><code>Message</code></a>.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>static &lt;T extends <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf">Message</a>&gt;<br><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf">ProtoCoder</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#of-org.apache.beam.sdk.values.TypeDescriptor-">of</a></span>(<a href="../../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;T&gt;&nbsp;protoMessageType)</code>
<div class="block">Returns a <a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a> for the Protocol Buffers <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf"><code>Message</code></a> indicated by the given
<a href="../../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a>.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#verifyDeterministic--">verifyDeterministic</a></span>()</code>
<div class="block">Throw <a href="../../../../../../org/apache/beam/sdk/coders/Coder.NonDeterministicException.html" title="class in org.apache.beam.sdk.coders"><code>Coder.NonDeterministicException</code></a> if the coding is not deterministic.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf">ProtoCoder</a>&lt;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#withExtensionsFrom-java.lang.Class...-">withExtensionsFrom</a></span>(java.lang.Class&lt;?&gt;...&nbsp;moreExtensionHosts)</code>
<div class="block">See <a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#withExtensionsFrom-java.lang.Iterable-"><code>withExtensionsFrom(Iterable)</code></a>.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf">ProtoCoder</a>&lt;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#withExtensionsFrom-java.lang.Iterable-">withExtensionsFrom</a></span>(java.lang.Iterable&lt;java.lang.Class&lt;?&gt;&gt;&nbsp;moreExtensionHosts)</code>
<div class="block">Returns a <a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a> like this one, but with the extensions from the given classes
registered.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.beam.sdk.coders.CustomCoder">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.beam.sdk.coders.<a href="../../../../../../org/apache/beam/sdk/coders/CustomCoder.html" title="class in org.apache.beam.sdk.coders">CustomCoder</a></h3>
<code><a href="../../../../../../org/apache/beam/sdk/coders/CustomCoder.html#getCoderArguments--">getCoderArguments</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.beam.sdk.coders.Coder">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.beam.sdk.coders.<a href="../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders">Coder</a></h3>
<code><a href="../../../../../../org/apache/beam/sdk/coders/Coder.html#consistentWithEquals--">consistentWithEquals</a>, <a href="../../../../../../org/apache/beam/sdk/coders/Coder.html#getEncodedElementByteSize-T-">getEncodedElementByteSize</a>, <a href="../../../../../../org/apache/beam/sdk/coders/Coder.html#getEncodedTypeDescriptor--">getEncodedTypeDescriptor</a>, <a href="../../../../../../org/apache/beam/sdk/coders/Coder.html#isRegisterByteSizeObserverCheap-T-">isRegisterByteSizeObserverCheap</a>, <a href="../../../../../../org/apache/beam/sdk/coders/Coder.html#registerByteSizeObserver-T-org.apache.beam.sdk.util.common.ElementByteSizeObserver-">registerByteSizeObserver</a>, <a href="../../../../../../org/apache/beam/sdk/coders/Coder.html#structuralValue-T-">structuralValue</a>, <a href="../../../../../../org/apache/beam/sdk/coders/Coder.html#verifyDeterministic-org.apache.beam.sdk.coders.Coder-java.lang.String-org.apache.beam.sdk.coders.Coder...-">verifyDeterministic</a>, <a href="../../../../../../org/apache/beam/sdk/coders/Coder.html#verifyDeterministic-org.apache.beam.sdk.coders.Coder-java.lang.String-java.lang.Iterable-">verifyDeterministic</a></code></li>
</ul>
<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, toString, 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="serialVersionUID">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>serialVersionUID</h4>
<pre>public static final&nbsp;long serialVersionUID</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.beam.sdk.extensions.protobuf.ProtoCoder.serialVersionUID">Constant Field Values</a></dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="ProtoCoder-java.lang.Class-java.util.Set-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ProtoCoder</h4>
<pre>protected&nbsp;ProtoCoder(java.lang.Class&lt;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a>&gt;&nbsp;protoMessageClass,
java.util.Set&lt;java.lang.Class&lt;?&gt;&gt;&nbsp;extensionHostClasses)</pre>
<div class="block">Private constructor.</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="of-java.lang.Class-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>of</h4>
<pre>public static&nbsp;&lt;T extends <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf">Message</a>&gt;&nbsp;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf">ProtoCoder</a>&lt;T&gt;&nbsp;of(java.lang.Class&lt;T&gt;&nbsp;protoMessageClass)</pre>
<div class="block">Returns a <a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a> for the given Protocol Buffers <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf"><code>Message</code></a>.</div>
</li>
</ul>
<a name="of-org.apache.beam.sdk.values.TypeDescriptor-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>of</h4>
<pre>public static&nbsp;&lt;T extends <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf">Message</a>&gt;&nbsp;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf">ProtoCoder</a>&lt;T&gt;&nbsp;of(<a href="../../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;T&gt;&nbsp;protoMessageType)</pre>
<div class="block">Returns a <a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a> for the Protocol Buffers <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf"><code>Message</code></a> indicated by the given
<a href="../../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a>.</div>
</li>
</ul>
<a name="withExtensionsFrom-java.lang.Iterable-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>withExtensionsFrom</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf">ProtoCoder</a>&lt;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a>&gt;&nbsp;withExtensionsFrom(java.lang.Iterable&lt;java.lang.Class&lt;?&gt;&gt;&nbsp;moreExtensionHosts)</pre>
<div class="block">Returns a <a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a> like this one, but with the extensions from the given classes
registered.
<p>Each of the extension host classes must be an class automatically generated by the Protocol
Buffers compiler, <code>protoc</code>, that contains messages.
<p>Does not modify this object.</div>
</li>
</ul>
<a name="withExtensionsFrom-java.lang.Class...-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>withExtensionsFrom</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf">ProtoCoder</a>&lt;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a>&gt;&nbsp;withExtensionsFrom(java.lang.Class&lt;?&gt;...&nbsp;moreExtensionHosts)</pre>
<div class="block">See <a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html#withExtensionsFrom-java.lang.Iterable-"><code>withExtensionsFrom(Iterable)</code></a>.
<p>Does not modify this object.</div>
</li>
</ul>
<a name="encode-com.google.protobuf.Message-java.io.OutputStream-">
<!-- -->
</a><a name="encode-T-java.io.OutputStream-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>encode</h4>
<pre>public&nbsp;void&nbsp;encode(<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a>&nbsp;value,
java.io.OutputStream&nbsp;outStream)
throws java.io.IOException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/beam/sdk/coders/Coder.html#encode-T-java.io.OutputStream-">Coder</a></code></span></div>
<div class="block">Encodes the given value of type <code>T</code> onto the given output stream.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/beam/sdk/coders/Coder.html#encode-T-java.io.OutputStream-">encode</a></code>&nbsp;in class&nbsp;<code><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/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a> extends <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf">Message</a>&gt;</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if writing to the <code>OutputStream</code> fails for some reason</dd>
<dd><code><a href="../../../../../../org/apache/beam/sdk/coders/CoderException.html" title="class in org.apache.beam.sdk.coders">CoderException</a></code> - if the value could not be encoded for some reason</dd>
</dl>
</li>
</ul>
<a name="encode-com.google.protobuf.Message-java.io.OutputStream-org.apache.beam.sdk.coders.Coder.Context-">
<!-- -->
</a><a name="encode-T-java.io.OutputStream-org.apache.beam.sdk.coders.Coder.Context-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>encode</h4>
<pre>public&nbsp;void&nbsp;encode(<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a>&nbsp;value,
java.io.OutputStream&nbsp;outStream,
<a href="../../../../../../org/apache/beam/sdk/coders/Coder.Context.html" title="class in org.apache.beam.sdk.coders">Coder.Context</a>&nbsp;context)
throws java.io.IOException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/beam/sdk/coders/Coder.html#encode-T-java.io.OutputStream-org.apache.beam.sdk.coders.Coder.Context-">Coder</a></code></span></div>
<div class="block">Encodes the given value of type <code>T</code> onto the given output stream in the given context.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../org/apache/beam/sdk/coders/Coder.html#encode-T-java.io.OutputStream-org.apache.beam.sdk.coders.Coder.Context-">encode</a></code>&nbsp;in class&nbsp;<code><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/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a> extends <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf">Message</a>&gt;</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if writing to the <code>OutputStream</code> fails for some reason</dd>
<dd><code><a href="../../../../../../org/apache/beam/sdk/coders/CoderException.html" title="class in org.apache.beam.sdk.coders">CoderException</a></code> - if the value could not be encoded for some reason</dd>
</dl>
</li>
</ul>
<a name="decode-java.io.InputStream-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decode</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a>&nbsp;decode(java.io.InputStream&nbsp;inStream)
throws java.io.IOException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/beam/sdk/coders/Coder.html#decode-java.io.InputStream-">Coder</a></code></span></div>
<div class="block">Decodes a value of type <code>T</code> from the given input stream in the given context. Returns the
decoded value.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/beam/sdk/coders/Coder.html#decode-java.io.InputStream-">decode</a></code>&nbsp;in class&nbsp;<code><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/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a> extends <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf">Message</a>&gt;</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if reading from the <code>InputStream</code> fails for some reason</dd>
<dd><code><a href="../../../../../../org/apache/beam/sdk/coders/CoderException.html" title="class in org.apache.beam.sdk.coders">CoderException</a></code> - if the value could not be decoded for some reason</dd>
</dl>
</li>
</ul>
<a name="decode-java.io.InputStream-org.apache.beam.sdk.coders.Coder.Context-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decode</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a>&nbsp;decode(java.io.InputStream&nbsp;inStream,
<a href="../../../../../../org/apache/beam/sdk/coders/Coder.Context.html" title="class in org.apache.beam.sdk.coders">Coder.Context</a>&nbsp;context)
throws java.io.IOException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/beam/sdk/coders/Coder.html#decode-java.io.InputStream-org.apache.beam.sdk.coders.Coder.Context-">Coder</a></code></span></div>
<div class="block">Decodes a value of type <code>T</code> from the given input stream in the given context. Returns the
decoded value.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../org/apache/beam/sdk/coders/Coder.html#decode-java.io.InputStream-org.apache.beam.sdk.coders.Coder.Context-">decode</a></code>&nbsp;in class&nbsp;<code><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/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a> extends <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf">Message</a>&gt;</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if reading from the <code>InputStream</code> fails for some reason</dd>
<dd><code><a href="../../../../../../org/apache/beam/sdk/coders/CoderException.html" title="class in org.apache.beam.sdk.coders">CoderException</a></code> - if the value could not be decoded for some reason</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;other)</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="verifyDeterministic--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>verifyDeterministic</h4>
<pre>public&nbsp;void&nbsp;verifyDeterministic()
throws <a href="../../../../../../org/apache/beam/sdk/coders/Coder.NonDeterministicException.html" title="class in org.apache.beam.sdk.coders">Coder.NonDeterministicException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/beam/sdk/coders/CustomCoder.html#verifyDeterministic--">CustomCoder</a></code></span></div>
<div class="block">Throw <a href="../../../../../../org/apache/beam/sdk/coders/Coder.NonDeterministicException.html" title="class in org.apache.beam.sdk.coders"><code>Coder.NonDeterministicException</code></a> if the coding is not deterministic.
<p>In order for a <code>Coder</code> to be considered deterministic, the following must be true:
<ul>
<li>two values that compare as equal (via <code>Object.equals()</code> or <code>Comparable.compareTo()</code>, if supported) have the same encoding.
<li>the <code>Coder</code> always produces a canonical encoding, which is the same for an instance
of an object even if produced on different computers at different times.
</ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../org/apache/beam/sdk/coders/CustomCoder.html#verifyDeterministic--">verifyDeterministic</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/beam/sdk/coders/CustomCoder.html" title="class in org.apache.beam.sdk.coders">CustomCoder</a>&lt;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a> extends <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf">Message</a>&gt;</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/beam/sdk/coders/Coder.NonDeterministicException.html" title="class in org.apache.beam.sdk.coders">Coder.NonDeterministicException</a></code> - if this coder is not deterministic.</dd>
</dl>
</li>
</ul>
<a name="getMessageType--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMessageType</h4>
<pre>public&nbsp;java.lang.Class&lt;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a>&gt;&nbsp;getMessageType()</pre>
<div class="block">Returns the Protocol Buffers <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf"><code>Message</code></a> type this <a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a> supports.</div>
</li>
</ul>
<a name="getExtensionHosts--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getExtensionHosts</h4>
<pre>public&nbsp;java.util.Set&lt;java.lang.Class&lt;?&gt;&gt;&nbsp;getExtensionHosts()</pre>
</li>
</ul>
<a name="getExtensionRegistry--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getExtensionRegistry</h4>
<pre>public&nbsp;<a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/ExtensionRegistry.html?is-external=true" title="class or interface in com.google.protobuf">ExtensionRegistry</a>&nbsp;getExtensionRegistry()</pre>
<div class="block">Returns the <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/ExtensionRegistry.html?is-external=true" title="class or interface in com.google.protobuf"><code>ExtensionRegistry</code></a> listing all known Protocol Buffers extension messages to
<code>T</code> registered with this <a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a>.</div>
</li>
</ul>
<a name="getParser--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParser</h4>
<pre>protected&nbsp;<a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Parser.html?is-external=true" title="class or interface in com.google.protobuf">Parser</a>&lt;<a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="type parameter in ProtoCoder">T</a>&gt;&nbsp;getParser()</pre>
<div class="block">Get the memoized <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Parser.html?is-external=true" title="class or interface in com.google.protobuf"><code>Parser</code></a>, possibly initializing it lazily.</div>
</li>
</ul>
<a name="getCoderProvider--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getCoderProvider</h4>
<pre>public static&nbsp;<a href="../../../../../../org/apache/beam/sdk/coders/CoderProvider.html" title="class in org.apache.beam.sdk.coders">CoderProvider</a>&nbsp;getCoderProvider()</pre>
<div class="block">Returns a <a href="../../../../../../org/apache/beam/sdk/coders/CoderProvider.html" title="class in org.apache.beam.sdk.coders"><code>CoderProvider</code></a> which uses the <a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" title="class in org.apache.beam.sdk.extensions.protobuf"><code>ProtoCoder</code></a> for <a href="https://static.javadoc.io/com.google.protobuf/protobuf-java/3.11.1/com/google/protobuf/Message.html?is-external=true" title="class or interface in com.google.protobuf"><code>proto
messages</code></a>.
<p>This method is invoked reflectively from <a href="../../../../../../org/apache/beam/sdk/coders/DefaultCoder.html" title="annotation in org.apache.beam.sdk.coders"><code>DefaultCoder</code></a>.</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/extensions/protobuf/ProtoByteBuddyUtils.html" title="class in org.apache.beam.sdk.extensions.protobuf"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/beam/sdk/extensions/protobuf/ProtoDomain.html" title="class in org.apache.beam.sdk.extensions.protobuf"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/beam/sdk/extensions/protobuf/ProtoCoder.html" target="_top">Frames</a></li>
<li><a href="ProtoCoder.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.classes.inherited.from.class.org.apache.beam.sdk.coders.Coder">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>