@Override public byte[] decode(InputStream inStream) throws IOException, CoderException { return decode(inStream, Context.NESTED); }
@Override public BigInteger decode(InputStream inStream, Context context) throws IOException, CoderException { return new BigInteger(BYTE_ARRAY_CODER.decode(inStream, context)); }
@Override public BitSet decode(InputStream inStream, Context context) throws CoderException, IOException { return BitSet.valueOf(BYTE_ARRAY_CODER.decode(inStream, context)); }
@Override public BitSet decode(InputStream inStream, Context context) throws CoderException, IOException { return BitSet.valueOf(BYTE_ARRAY_CODER.decode(inStream, context)); }
@Override public ValueWithRecordId<ValueT> decode(InputStream inStream, Context context) throws IOException { return new ValueWithRecordId<>( valueCoder.decode(inStream), idCoder.decode(inStream, context)); }
@Override public T decode(InputStream is) throws IOException { return CoderUtils.decodeFromByteArray( innerCoder, Snappy.uncompress(ByteArrayCoder.of().decode(is))); }
@Override public IsmRecord<V> decode(InputStream inStream) throws CoderException, IOException { List<Object> keyComponents = new ArrayList<>(keyComponentCoders.size()); for (Coder<?> keyCoder : keyComponentCoders) { keyComponents.add(keyCoder.decode(inStream)); } if (isMetadataKey(keyComponents)) { return IsmRecord.meta(keyComponents, ByteArrayCoder.of().decode(inStream)); } else { return IsmRecord.of(keyComponents, valueCoder.decode(inStream)); } }
@Override public void restoreKeyGroupState(int keyGroupIndex, DataInputStream in) throws Exception { checkInitCache(); Integer size = VarIntCoder.of().decode(in, Context.NESTED); for (int i = 0; i < size; i++) { byte[] idBytes = ByteArrayCoder.of().decode(in, Context.NESTED); // restore the ids which not expired. shouldOutput(keyGroupIndex, ByteBuffer.wrap(idBytes)); } }
@Override public OutgoingMessage decode(InputStream inStream) throws CoderException, IOException { byte[] elementBytes = ByteArrayCoder.of().decode(inStream); Map<String, String> attributes = ATTRIBUTES_CODER.decode(inStream); long timestampMsSinceEpoch = BigEndianLongCoder.of().decode(inStream); @Nullable String recordId = RECORD_ID_CODER.decode(inStream); return new OutgoingMessage(elementBytes, attributes, timestampMsSinceEpoch, recordId); } }
private void verifyValues(List<byte[]> expectedValues, InputStream is) throws Exception { List<byte[]> values = new ArrayList<>(); long count; do { count = VarInt.decodeLong(is); for (int i = 0; i < count; ++i) { values.add(ByteArrayCoder.of().decode(is)); } } while (count > 0); if (expectedValues.isEmpty()) { assertTrue(values.isEmpty()); } else { assertThat(values, IsIterableContainingInOrder.contains(expectedValues.toArray())); } }
@Override public KinesisRecord decode(InputStream inStream) throws IOException { ByteBuffer data = ByteBuffer.wrap(BYTE_ARRAY_CODER.decode(inStream)); String sequenceNumber = STRING_CODER.decode(inStream); String partitionKey = STRING_CODER.decode(inStream); Instant approximateArrivalTimestamp = INSTANT_CODER.decode(inStream); long subSequenceNumber = VAR_LONG_CODER.decode(inStream); Instant readTimestamp = INSTANT_CODER.decode(inStream); String streamName = STRING_CODER.decode(inStream); String shardId = STRING_CODER.decode(inStream); return new KinesisRecord( data, sequenceNumber, subSequenceNumber, partitionKey, approximateArrivalTimestamp, readTimestamp, streamName, shardId); } }