@Override public String getErrorSourceData(@NonNull final ErrorData errorData) { try { return DatatypeConverter.printHexBinary((byte []) errorData.getRawData().getData()); } catch (Exception e) { log.debug("Not able to retrieve Error source data from ErrorData"); return DEFAULT_ERROR_SOURCE_DATA; } }
public ConverterResult(@NonNull final ID errorData, @NotEmpty final String errorMessage) { this.successData = Optional.absent(); this.errorData = Optional.of(new ErrorData<>(errorMessage, new RawData<>(errorData))); }
@Override public String getErrorSourceData(@NonNull final ErrorData errorData) { return errorData.getRawData().toString(); } }
@Override public String getRowKey(@NonNull final RawData rawdata) { try { return (String) ((AvroPayload) rawdata.getData()).getField(ErrorTableUtil.HADOOP_ROW_KEY); } catch (Exception e) { log.debug("Not able to extract Hadoop_row_key from RawData"); return DEFAULT_ROW_KEY; } }
public ConverterResult(@NonNull final ID errorData, @NotEmpty final String errorMessage, @NonNull final OD successData) { this.successData = Optional.of(new ValidData<>(successData)); this.errorData = Optional.of(new ErrorData<>(errorMessage, new RawData<>(errorData))); } }
@Override public String getErrorSourceData(@NonNull final ErrorData errorData) { try { AvroPayload payload = (AvroPayload) errorData.getRawData().getData(); return payload.getData().toString(); } catch (Exception e) { log.debug("Not able to extract Error source data from ErrorData"); return DEFAULT_ERROR_SOURCE_DATA; } }
public static <T> RawData getRawData(@NonNull final T data) { if (data instanceof byte[]) { return new BinaryRawData((byte[]) data); } return new RawData(data); } }
@Override public String getRowKey(@NonNull final RawData rawdata) { try { return ((HoodieRecord) rawdata.getData()).getKey().getRecordKey(); } catch (Exception e) { log.debug("Not able to extract Hadoop_row_key from RawData"); return DEFAULT_ROW_KEY; } }
@Override public String getErrorSourceData(@NonNull final ErrorData errorData) { try { HoodieRecord<HoodieRecordPayload> payload = (HoodieRecord) errorData.getRawData().getData(); String data = String.format("%s. %s", payload.getKey().toString(), String.format("HoodieRecordPayload %s", payload.getData().toString())); return data; } catch (Exception e) { log.debug("Not able to extract Error source data from ErrorData"); return DEFAULT_ERROR_SOURCE_DATA; } }
@Test public void convertIncorrectSchema() throws Exception { final String badData = "{\"firstName\": \"Eric\", \"lastName\": \"Sayle\", \"address\": {\"line1\": \"1234 Main St\", \"city\": \"The City\", \"zip\": \"MyZip\"}}"; final Configuration conf = new Configuration(); final Schema schema = new Schema.Parser().parse( getClass().getClassLoader().getResourceAsStream("schemas/schemasource/myTestSchema.1.avsc")); final JSONFileSourceDataConverter converter = new JSONFileSourceDataConverter( conf, new KafkaSourceConverterErrorExtractor(), schema); final List<ConverterResult<String, AvroPayload>> results = converter.convert(badData); Assert.assertEquals(1, results.size()); Assert.assertFalse(results.get(0).getSuccessData().isPresent()); Assert.assertTrue(results.get(0).getErrorData().isPresent()); Assert.assertEquals(badData, results.get(0).getErrorData().get().getRawData().getData()); }