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 + "'");
}
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);
}
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;
}
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);
}
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());
}
Aggregations