@Override public OutputStream write(final ContentClaim claim) throws IOException { final ContentClaim backupClaim = getBackupClaim(claim); return backupClaim == null ? getContent(claim).write() : getBackupRepository().write(backupClaim); }
@Override public long size(final ContentClaim claim) throws IOException { if (claim == null) { return 0L; } final ContentClaim backupClaim = getBackupClaim(claim); return backupClaim == null ? getContent(claim).getSize() : getBackupRepository().size(claim); }
private void decrementClaimCount(final ContentClaim claim) { if (claim == null) { return; } context.getContentRepository().decrementClaimantCount(claim); }
@Override public FlowFile penalize(FlowFile flowFile) { verifyTaskActive(); flowFile = validateRecordState(flowFile); final StandardRepositoryRecord record = getRecord(flowFile); final long expirationEpochMillis = System.currentTimeMillis() + context.getConnectable().getPenalizationPeriod(TimeUnit.MILLISECONDS); final FlowFileRecord newFile = new StandardFlowFileRecord.Builder().fromFlowFile(record.getCurrent()).penaltyExpirationTime(expirationEpochMillis).build(); record.setWorking(newFile); return newFile; }
@Override public long getCurrentClaimOffset() { return (getCurrent() == null) ? 0L : getCurrent().getContentClaimOffset(); }
@Override public ContentClaim getCurrentClaim() { return (getCurrent() == null) ? null : getCurrent().getContentClaim(); }
@Override public long importFrom(final InputStream in, final ContentClaim claim) throws IOException { final ContentClaim backupClaim = getBackupClaim(claim); if (backupClaim == null) { final ContentBlock content = getContent(claim); content.reset(); return StreamUtils.copy(in, content.write()); } else { return getBackupRepository().importFrom(in, claim); } }
@Override public Long getRecordIdentifier(final RepositoryRecord record) { return record.getCurrent().getId(); }
@Override public InputStream read(final ContentClaim claim) throws IOException { if (claim == null) { return new ByteArrayInputStream(new byte[0]); } final ContentClaim backupClaim = getBackupClaim(claim); return backupClaim == null ? getContent(claim).read() : getBackupRepository().read(backupClaim); }
private FlowFile getMostRecent(final FlowFile flowFile) { final StandardRepositoryRecord existingRecord = getRecord(flowFile); return existingRecord == null ? flowFile : existingRecord.getCurrent(); }
private RepositoryRecord createRepositoryRecord(final FlowFileRecord flowFile) { final StandardRepositoryRecord record = new StandardRepositoryRecord(flowFileQueue, flowFile); record.markForDelete(); return record; }
/** * Destroys a ContentClaim that was being written to but is no longer needed * * @param claim claim to destroy */ private void destroyContent(final ContentClaim claim) { if (claim == null) { return; } final int decrementedClaimCount = context.getContentRepository().decrementClaimantCount(claim); if (decrementedClaimCount <= 0) { resetWriteClaims(); // Have to ensure that we are not currently writing to the claim before we can destroy it. context.getContentRepository().remove(claim); } }
@Override public synchronized void commit() { verifyTaskActive(); checkpoint(); commit(this.checkpoint); this.checkpoint = null; }
@Override public List<FlowFile> get(final FlowFileFilter filter) { verifyTaskActive(); return get(new ConnectionPoller() { @Override public List<FlowFileRecord> poll(final Connection connection, final Set<FlowFileRecord> expiredRecords) { return connection.poll(filter, expiredRecords); } }, true); }
public void setSwapLocation(final String swapLocation) { this.swapLocation = swapLocation; if (type != RepositoryRecordType.SWAP_OUT) { setType(RepositoryRecordType.SWAP_IN); // we are swapping in a new record } }
@Override public OutputStream write(final FlowFile source) { return session.write(source); } }
@Override public void transfer(final Collection<FlowFile> flowFiles) { for (final FlowFile flowFile : flowFiles) { transfer(flowFile); } }
@Override public Long getRecordIdentifier(final RepositoryRecord record) { return record.getCurrent().getId(); }
/** * Creates a new record which has no original claim or flow file - it is entirely new * * @param originalQueue queue */ public StandardRepositoryRecord(final FlowFileQueue originalQueue) { this(originalQueue, null); setType(RepositoryRecordType.CREATE); }