Search in sources :

Example 11 with Record

use of org.apache.nifi.repository.schema.Record in project nifi by apache.

the class SchemaRepositoryRecordSerde method deserializeRecord.

@Override
public RepositoryRecord deserializeRecord(final DataInputStream in, final int version) throws IOException {
    final SchemaRecordReader reader = SchemaRecordReader.fromSchema(recoverySchema);
    final Record updateRecord = reader.readRecord(in);
    if (updateRecord == null) {
        // null may be returned by reader.readRecord() if it encounters end-of-stream
        return null;
    }
    // Top level is always going to be a "Repository Record Update" record because we need a 'Union' type record at the
    // top level that indicates which type of record we have.
    final Record record = (Record) updateRecord.getFieldValue(RepositoryRecordSchema.REPOSITORY_RECORD_UPDATE_V2);
    final String actionType = (String) record.getFieldValue(RepositoryRecordSchema.ACTION_TYPE_FIELD);
    final RepositoryRecordType recordType = RepositoryRecordType.valueOf(actionType);
    switch(recordType) {
        case CREATE:
            return createRecord(record);
        case CONTENTMISSING:
        case DELETE:
            return deleteRecord(record);
        case SWAP_IN:
            return swapInRecord(record);
        case SWAP_OUT:
            return swapOutRecord(record);
        case UPDATE:
            return updateRecord(record);
    }
    throw new IOException("Found unrecognized Update Type '" + actionType + "'");
}
Also used : Record(org.apache.nifi.repository.schema.Record) IOException(java.io.IOException) SchemaRecordReader(org.apache.nifi.repository.schema.SchemaRecordReader)

Example 12 with Record

use of org.apache.nifi.repository.schema.Record in project nifi by apache.

the class SchemaRepositoryRecordSerde method populateContentClaim.

private void populateContentClaim(final StandardFlowFileRecord.Builder ffBuilder, final Record record) {
    final Object claimMap = record.getFieldValue(FlowFileSchema.CONTENT_CLAIM);
    if (claimMap == null) {
        return;
    }
    final Record claimRecord = (Record) claimMap;
    final ContentClaim contentClaim = ContentClaimFieldMap.getContentClaim(claimRecord, resourceClaimManager);
    final Long offset = ContentClaimFieldMap.getContentClaimOffset(claimRecord);
    ffBuilder.contentClaim(contentClaim);
    ffBuilder.contentClaimOffset(offset);
}
Also used : ContentClaim(org.apache.nifi.controller.repository.claim.ContentClaim) Record(org.apache.nifi.repository.schema.Record)

Example 13 with Record

use of org.apache.nifi.repository.schema.Record in project nifi by apache.

the class ContentClaimFieldMap method getContentClaim.

public static ContentClaim getContentClaim(final Record claimRecord, final ResourceClaimManager resourceClaimManager) {
    final Record resourceClaimRecord = (Record) claimRecord.getFieldValue(ContentClaimSchema.RESOURCE_CLAIM);
    final String container = (String) resourceClaimRecord.getFieldValue(ContentClaimSchema.CLAIM_CONTAINER);
    final String section = (String) resourceClaimRecord.getFieldValue(ContentClaimSchema.CLAIM_SECTION);
    final String identifier = (String) resourceClaimRecord.getFieldValue(ContentClaimSchema.CLAIM_IDENTIFIER);
    final Boolean lossTolerant = (Boolean) resourceClaimRecord.getFieldValue(ContentClaimSchema.LOSS_TOLERANT);
    final Long length = (Long) claimRecord.getFieldValue(ContentClaimSchema.CONTENT_CLAIM_LENGTH);
    final Long resourceOffset = (Long) claimRecord.getFieldValue(ContentClaimSchema.RESOURCE_CLAIM_OFFSET);
    // Make sure that we preserve the existing ResourceClaim, if there is already one held by the Resource Claim Manager
    // because we need to honor its determination of whether or not the claim is writable. If the Resource Claim Manager
    // does not have a copy of this Resource Claim, then we can go ahead and just create one and assume that it is not
    // writable (because if it were writable, then the Resource Claim Manager would know about it).
    ResourceClaim resourceClaim = resourceClaimManager.getResourceClaim(container, section, identifier);
    if (resourceClaim == null) {
        resourceClaim = resourceClaimManager.newResourceClaim(container, section, identifier, lossTolerant, false);
    }
    final StandardContentClaim contentClaim = new StandardContentClaim(resourceClaim, resourceOffset);
    contentClaim.setLength(length);
    return contentClaim;
}
Also used : StandardContentClaim(org.apache.nifi.controller.repository.claim.StandardContentClaim) Record(org.apache.nifi.repository.schema.Record) ResourceClaim(org.apache.nifi.controller.repository.claim.ResourceClaim)

Example 14 with Record

use of org.apache.nifi.repository.schema.Record in project nifi by apache.

the class EventIdFirstSchemaRecordWriter method writeRecord.

@Override
protected void writeRecord(final ProvenanceEventRecord event, final long eventId, final DataOutputStream out) throws IOException {
    final Record eventRecord = createRecord(event, eventId);
    schemaRecordWriter.writeRecord(eventRecord, out);
}
Also used : Record(org.apache.nifi.repository.schema.Record) LookupTableEventRecord(org.apache.nifi.provenance.schema.LookupTableEventRecord) FieldMapRecord(org.apache.nifi.repository.schema.FieldMapRecord)

Example 15 with Record

use of org.apache.nifi.repository.schema.Record in project nifi by apache.

the class ByteArraySchemaRecordReader method nextRecord.

@Override
protected StandardProvenanceEventRecord nextRecord(final DataInputStream in, final int serializationVersion) throws IOException {
    verifySerializationVersion(serializationVersion);
    final long byteOffset = getBytesConsumed();
    final int recordLength = in.readInt();
    final InputStream limitedIn = new LimitingInputStream(in, recordLength);
    final Record eventRecord = recordReader.readRecord(limitedIn);
    if (eventRecord == null) {
        return null;
    }
    return EventRecord.getEvent(eventRecord, getFilename(), byteOffset, getMaxAttributeLength());
}
Also used : DataInputStream(java.io.DataInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) LimitingInputStream(org.apache.nifi.stream.io.LimitingInputStream) InputStream(java.io.InputStream) LimitingInputStream(org.apache.nifi.stream.io.LimitingInputStream) Record(org.apache.nifi.repository.schema.Record) EventRecord(org.apache.nifi.provenance.schema.EventRecord)

Aggregations

Record (org.apache.nifi.repository.schema.Record)19 FieldMapRecord (org.apache.nifi.repository.schema.FieldMapRecord)7 ProvenanceEventRecord (org.apache.nifi.provenance.ProvenanceEventRecord)5 StandardProvenanceEventRecord (org.apache.nifi.provenance.StandardProvenanceEventRecord)5 RecordField (org.apache.nifi.repository.schema.RecordField)5 RecordSchema (org.apache.nifi.repository.schema.RecordSchema)5 ByteArrayInputStream (java.io.ByteArrayInputStream)4 HashMap (java.util.HashMap)4 Map (java.util.Map)4 FlowFileRecord (org.apache.nifi.controller.repository.FlowFileRecord)4 LookupTableEventRecord (org.apache.nifi.provenance.schema.LookupTableEventRecord)4 DataInputStream (java.io.DataInputStream)3 IOException (java.io.IOException)3 InputStream (java.io.InputStream)3 ArrayList (java.util.ArrayList)3 List (java.util.List)3 SwapSummary (org.apache.nifi.controller.repository.SwapSummary)3 ContentClaim (org.apache.nifi.controller.repository.claim.ContentClaim)3 ResourceClaim (org.apache.nifi.controller.repository.claim.ResourceClaim)3 SchemaRecordReader (org.apache.nifi.repository.schema.SchemaRecordReader)3