use of org.apache.pulsar.client.api.schema.Field in project pulsar by apache.
the class BatchSink method getFiled.
protected Object getFiled(GenericRecord record, String fieldName) {
List<Field> fields = record.getFields();
val fieldMatch = fields.stream().filter(field -> fieldName.equals(field.getName())).findAny().orElse(null);
if (null != fieldMatch) {
return record.getField(fieldMatch);
} else {
return null;
}
}
use of org.apache.pulsar.client.api.schema.Field in project pulsar by apache.
the class SourceTester method validateSourceResultAvro.
public void validateSourceResultAvro(Consumer<KeyValue<GenericRecord, GenericRecord>> consumer, int number, String eventType) throws Exception {
int recordsNumber = 0;
Message<KeyValue<GenericRecord, GenericRecord>> msg = consumer.receive(initialDelayForMsgReceive(), TimeUnit.SECONDS);
while (msg != null) {
recordsNumber++;
GenericRecord keyRecord = msg.getValue().getKey();
Assert.assertNotNull(keyRecord.getFields());
Assert.assertTrue(keyRecord.getFields().size() > 0);
GenericRecord valueRecord = msg.getValue().getValue();
Assert.assertNotNull(valueRecord.getFields());
Assert.assertTrue(valueRecord.getFields().size() > 0);
log.info("Received message: key = {}, value = {}.", keyRecord.getNativeObject(), valueRecord.getNativeObject());
for (Field field : valueRecord.getFields()) {
log.info("validating field {}", field.getName());
Assert.assertTrue(DEBEZIUM_FIELD_SET.contains(field.getName()));
}
if (eventType != null) {
String op = valueRecord.getField("op").toString();
Assert.assertEquals(this.eventContains(eventType, false), op);
}
consumer.acknowledge(msg);
msg = consumer.receive(1, TimeUnit.SECONDS);
}
Assert.assertEquals(recordsNumber, number);
log.info("Stop {} server container. topic: {} has {} records.", getSourceType(), consumer.getTopic(), recordsNumber);
}
use of org.apache.pulsar.client.api.schema.Field in project pulsar by apache.
the class SolrGenericRecordSink method convert.
@Override
public SolrInputDocument convert(Record<GenericRecord> message) {
SolrInputDocument doc = new SolrInputDocument();
GenericRecord record = message.getValue();
List<Field> fields = record.getFields();
for (Field field : fields) {
Object fieldValue = record.getField(field);
doc.setField(field.getName(), fieldValue);
}
return doc;
}
use of org.apache.pulsar.client.api.schema.Field in project pulsar-io-cloud-storage by streamnative.
the class JsonFormat method convertRecordToObject.
private Map<String, Object> convertRecordToObject(GenericRecord record) throws IOException {
if (record.getSchemaType().isStruct()) {
List<Field> fields = record.getFields();
Map<String, Object> result = new LinkedHashMap<>(fields.size());
for (Field field : fields) {
String name = field.getName();
Object value = record.getField(field);
if (value instanceof GenericRecord) {
value = convertRecordToObject((GenericRecord) value);
}
result.put(name, value);
}
return result;
} else if (record.getSchemaType() == SchemaType.STRING) {
TypeReference<Map<String, Object>> typeRef = new TypeReference<Map<String, Object>>() {
};
return objectMapper.readValue((String) record.getNativeObject(), typeRef);
} else if (record.getSchemaType() == SchemaType.BYTES) {
TypeReference<Map<String, Object>> typeRef = new TypeReference<Map<String, Object>>() {
};
return objectMapper.readValue((byte[]) record.getNativeObject(), typeRef);
} else {
throw new UnsupportedOperationException("Unsupported value schemaType=" + record.getSchemaType());
}
}
use of org.apache.pulsar.client.api.schema.Field in project pulsar-io-cloud-storage by streamnative.
the class FormatTestBase method assertEquals.
protected void assertEquals(GenericRecord msgValue, org.apache.avro.generic.GenericRecord record) {
for (Field field : msgValue.getFields()) {
Object sourceValue = getField(msgValue, field);
Object newValue = record.get(field.getName());
if (newValue instanceof Utf8) {
newValue = ((Utf8) newValue).toString();
}
if (sourceValue instanceof GenericRecord && newValue instanceof org.apache.avro.generic.GenericRecord) {
assertEquals((GenericRecord) sourceValue, (org.apache.avro.generic.GenericRecord) newValue);
} else {
Assert.assertEquals(MessageFormat.format("field[{0} sourceValue [{1}] not equal newValue [{2}]", field.getName(), sourceValue, newValue), sourceValue, newValue);
}
}
}
Aggregations