public class UnionCoder extends StructuredCoder<RawUnionValue>
Coder.Context, Coder.NonDeterministicException
Modifier and Type | Method and Description |
---|---|
RawUnionValue |
decode(java.io.InputStream inStream)
Decodes a value of type
T from the given input stream in
the given context. |
RawUnionValue |
decode(java.io.InputStream inStream,
Coder.Context context)
Decodes a value of type
T from the given input stream in
the given context. |
void |
encode(RawUnionValue union,
java.io.OutputStream outStream)
Encodes the given value of type
T onto the given output stream. |
void |
encode(RawUnionValue union,
java.io.OutputStream outStream,
Coder.Context context)
Encodes the given value of type
T onto the given output stream
in the given context. |
java.util.List<? extends Coder<?>> |
getCoderArguments()
|
java.util.List<? extends Coder<?>> |
getComponents()
|
java.util.List<? extends Coder<?>> |
getElementCoders() |
boolean |
isRegisterByteSizeObserverCheap(RawUnionValue union)
Since this coder uses elementCoders.get(index) and coders that are known to run in constant
time, we defer the return value to that coder.
|
static UnionCoder |
of(java.util.List<Coder<?>> elementCoders)
Builds a union coder with the given list of element coders.
|
void |
registerByteSizeObserver(RawUnionValue union,
org.apache.beam.sdk.util.common.ElementByteSizeObserver observer)
Notifies ElementByteSizeObserver about the byte size of the encoded value using this coder.
|
void |
verifyDeterministic()
Throw
Coder.NonDeterministicException if the coding is not deterministic. |
equals, hashCode, toString
consistentWithEquals, getEncodedElementByteSize, getEncodedTypeDescriptor, structuralValue, verifyDeterministic, verifyDeterministic
public static UnionCoder of(java.util.List<Coder<?>> elementCoders)
public void encode(RawUnionValue union, java.io.OutputStream outStream) throws java.io.IOException, CoderException
Coder
T
onto the given output stream.encode
in class Coder<RawUnionValue>
java.io.IOException
- if writing to the OutputStream
fails
for some reasonCoderException
- if the value could not be encoded for some reasonpublic void encode(RawUnionValue union, java.io.OutputStream outStream, Coder.Context context) throws java.io.IOException, CoderException
Coder
T
onto the given output stream
in the given context.encode
in class Coder<RawUnionValue>
java.io.IOException
- if writing to the OutputStream
fails
for some reasonCoderException
- if the value could not be encoded for some reasonpublic RawUnionValue decode(java.io.InputStream inStream) throws java.io.IOException, CoderException
Coder
T
from the given input stream in
the given context. Returns the decoded value.decode
in class Coder<RawUnionValue>
java.io.IOException
- if reading from the InputStream
fails
for some reasonCoderException
- if the value could not be decoded for some reasonpublic RawUnionValue decode(java.io.InputStream inStream, Coder.Context context) throws java.io.IOException, CoderException
Coder
T
from the given input stream in
the given context. Returns the decoded value.decode
in class Coder<RawUnionValue>
java.io.IOException
- if reading from the InputStream
fails
for some reasonCoderException
- if the value could not be decoded for some reasonpublic java.util.List<? extends Coder<?>> getCoderArguments()
Coder
Coder
for a parameterized type, returns the
list of Coder
s being used for each of the parameters in the same order they appear
within the parameterized type's type signature. If this cannot be done, or this
Coder
does not encode/decode a parameterized type, returns the empty list.getCoderArguments
in class Coder<RawUnionValue>
public java.util.List<? extends Coder<?>> getComponents()
StructuredCoder
Coders
that are components of this Coder
.
The default components will be equal to the value returned by Coder.getCoderArguments()
.
getComponents
in class StructuredCoder<RawUnionValue>
public java.util.List<? extends Coder<?>> getElementCoders()
public boolean isRegisterByteSizeObserverCheap(RawUnionValue union)
isRegisterByteSizeObserverCheap
in class Coder<RawUnionValue>
public void registerByteSizeObserver(RawUnionValue union, org.apache.beam.sdk.util.common.ElementByteSizeObserver observer) throws java.lang.Exception
registerByteSizeObserver
in class Coder<RawUnionValue>
java.lang.Exception
public void verifyDeterministic() throws Coder.NonDeterministicException
Coder
Coder.NonDeterministicException
if the coding is not deterministic.
In order for a Coder
to be considered deterministic,
the following must be true:
Object.equals()
or Comparable.compareTo()
, if supported) have the same
encoding.
Coder
always produces a canonical encoding, which is the
same for an instance of an object even if produced on different
computers at different times.
verifyDeterministic
in class Coder<RawUnionValue>
Coder.NonDeterministicException
- if this coder is not deterministic.