public void unmarshal()

in c3r-sdk-core/src/main/java/com/amazonaws/c3r/action/RowUnmarshaller.java [80:109]


    public void unmarshal() {
        while (inputReader.hasNext()) {
            final Row<T> marshalledRow = inputReader.next();
            final Row<T> unmarshalledRow = valueFactory.newRow();
            for (ColumnHeader header : marshalledRow.getHeaders()) {
                final byte[] valueBytes = marshalledRow.getValue(header).getBytes();
                Transformer transformer = transformers.get(ColumnType.CLEARTEXT); // Default to pass through
                Function<byte[], byte[]> decode = x -> x;
                if (Transformer.hasDescriptor(transformers.get(ColumnType.SEALED), valueBytes)) {
                    transformer = transformers.get(ColumnType.SEALED);
                    decode = valueFactory::getValueBytesFromEncodedBytes;
                } else if (Transformer.hasDescriptor(transformers.get(ColumnType.FINGERPRINT), valueBytes)) {
                    transformer = transformers.get(ColumnType.FINGERPRINT);
                }
                try {
                    unmarshalledRow.putBytes(
                            header,
                            decode.apply(transformer.unmarshal(valueBytes)));
                } catch (Exception e) {
                    throw new C3rRuntimeException("Failed while unmarshalling data for column `"
                            + header + "` on row " + inputReader.getReadRowCount() + ". Error message received: " + e.getMessage(), e);
                }
            }
            outputWriter.writeRow(unmarshalledRow);
            if (inputReader.getReadRowCount() % RowMarshaller.LOG_ROW_UPDATE_FREQUENCY == 0) {
                log.info("{} rows decrypted.", inputReader.getReadRowCount());
            }
        }
        outputWriter.flush();
    }