Search in sources :

Example 6 with Field

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;
    }
}
Also used : lombok.val(lombok.val) Field(org.apache.pulsar.client.api.schema.Field)

Example 7 with Field

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);
}
Also used : Field(org.apache.pulsar.client.api.schema.Field) KeyValue(org.apache.pulsar.common.schema.KeyValue) GenericRecord(org.apache.pulsar.client.api.schema.GenericRecord)

Example 8 with Field

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;
}
Also used : Field(org.apache.pulsar.client.api.schema.Field) SolrInputDocument(org.apache.solr.common.SolrInputDocument) GenericRecord(org.apache.pulsar.client.api.schema.GenericRecord)

Example 9 with Field

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());
    }
}
Also used : Field(org.apache.pulsar.client.api.schema.Field) TypeReference(com.fasterxml.jackson.core.type.TypeReference) GenericRecord(org.apache.pulsar.client.api.schema.GenericRecord) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap)

Example 10 with Field

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);
        }
    }
}
Also used : Field(org.apache.pulsar.client.api.schema.Field) Utf8(org.apache.avro.util.Utf8) GenericRecord(org.apache.pulsar.client.api.schema.GenericRecord)

Aggregations

Field (org.apache.pulsar.client.api.schema.Field)43 GenericRecord (org.apache.pulsar.client.api.schema.GenericRecord)26 Slf4j (lombok.extern.slf4j.Slf4j)10 SchemaInfo (org.apache.pulsar.common.schema.SchemaInfo)9 Test (org.testng.annotations.Test)9 Map (java.util.Map)8 List (java.util.List)7 Collectors (java.util.stream.Collectors)7 lombok.val (lombok.val)6 SchemaSerializationException (org.apache.pulsar.client.api.SchemaSerializationException)6 Record (org.apache.pulsar.functions.api.Record)6 KeyValue (org.apache.pulsar.common.schema.KeyValue)5 IOException (java.io.IOException)4 HashMap (java.util.HashMap)4 Set (java.util.Set)4 TimeUnit (java.util.concurrent.TimeUnit)4 Utf8 (org.apache.avro.util.Utf8)4 GenericObject (org.apache.pulsar.client.api.schema.GenericObject)4 SchemaType (org.apache.pulsar.common.schema.SchemaType)4 JsonNode (com.fasterxml.jackson.databind.JsonNode)3