protected static void transferEvent(final Event event, ProcessSession session, Relationship relationship) { FlowFile flowFile = session.create(); flowFile = session.putAllAttributes(flowFile, event.getHeaders()); flowFile = session.write(flowFile, new OutputStreamCallback() { @Override public void process(final OutputStream out) throws IOException { out.write(event.getBody()); } }); session.getProvenanceReporter() .create(flowFile); session.transfer(flowFile, relationship); }
@Override public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException { FlowFile flowFile = session.get(); if (flowFile == null) { return; } for (int i = 1; i <= context.getProperty(NUM_COPIES).evaluateAttributeExpressions(flowFile).asInteger(); i++) { FlowFile copy = session.clone(flowFile); copy = session.putAttribute(copy, COPY_INDEX_ATTRIBUTE, Integer.toString(i)); session.transfer(copy, REL_SUCCESS); } flowFile = session.putAttribute(flowFile, COPY_INDEX_ATTRIBUTE, "0"); session.transfer(flowFile, REL_SUCCESS); }
@Override public void process(OutputStream out) throws IOException { try (InputStream is = session.read(flowFile)) { IOUtils.copy(is, out); } } });
private FlowFile transferToFailure(final ProcessSession processSession, FlowFile flowfile, final String value) { flowfile = processSession.putAttribute(flowfile, ATTR_WS_FAILURE_DETAIL, value); processSession.transfer(flowfile, REL_FAILURE); return flowfile; }
@Override public void accept(final JMSResponse response) { if (response == null) { return; } FlowFile flowFile = processSession.create(); flowFile = processSession.write(flowFile, out -> out.write(response.getMessageBody())); final Map<String, String> jmsHeaders = response.getMessageHeaders(); final Map<String, String> jmsProperties = response.getMessageProperties(); flowFile = ConsumeJMS.this.updateFlowFileAttributesWithJMSAttributes(jmsHeaders, flowFile, processSession); flowFile = ConsumeJMS.this.updateFlowFileAttributesWithJMSAttributes(jmsProperties, flowFile, processSession); flowFile = processSession.putAttribute(flowFile, JMS_SOURCE_DESTINATION_NAME, destinationName); processSession.getProvenanceReporter().receive(flowFile, destinationName); processSession.transfer(flowFile, REL_SUCCESS); processSession.commit(); } });
protected void writeBatch(String payload, FlowFile parent, ProcessContext context, ProcessSession session, Map<String, String> extraAttributes, Relationship rel) throws UnsupportedEncodingException { String charset = context.getProperty(CHARSET).evaluateAttributeExpressions(parent).getValue(); FlowFile flowFile = parent != null ? session.create(parent) : session.create(); flowFile = session.importFrom(new ByteArrayInputStream(payload.getBytes(charset)), flowFile); flowFile = session.putAllAttributes(flowFile, extraAttributes); session.getProvenanceReporter().receive(flowFile, getURI(context)); session.transfer(flowFile, rel); }
public void handle(FlowFile original, ProcessSession processSession, String chunkName, byte[] badChunk) { FlowFile flowFile = processSession.create(original); flowFile = processSession.putAttribute(flowFile, CoreAttributes.FILENAME.key(), chunkName); flowFile = processSession.putAttribute(flowFile, CoreAttributes.MIME_TYPE.key(), MediaType.APPLICATION_BINARY.toString()); flowFile = processSession.write(flowFile, out -> out.write(badChunk)); processSession.transfer(flowFile, badChunkRelationship); } }
private void writeData(final ProcessSession session, ConsumerRecord<byte[], byte[]> record, final TopicPartition topicPartition) { FlowFile flowFile = session.create(); final BundleTracker tracker = new BundleTracker(record, topicPartition, keyEncoding); tracker.incrementRecordCount(1); final byte[] value = record.value(); if (value != null) { flowFile = session.write(flowFile, out -> { out.write(value); }); } tracker.updateFlowFile(flowFile); populateAttributes(tracker); session.transfer(tracker.flowFile, REL_SUCCESS); }
@Override public void onTrigger(ProcessContext context, ProcessSession session) throws ProcessException { FlowFile input = session.get(); if (input == null) { return; } try { Map<String, RecordPath> paths = getRecordPaths(context, input); Map<String, String> stats = getStats(input, paths, context, session); input = session.putAllAttributes(input, stats); session.transfer(input, REL_SUCCESS); } catch (Exception ex) { getLogger().error("Error processing stats.", ex); session.transfer(input, REL_FAILURE); } }
private void finalizeFlowFile(final ProcessSession session, final HBaseClientService hBaseClientService, FlowFile flowFile, final String tableName, Long rowsPulled, Exception e) { Relationship rel = REL_SUCCESS; flowFile = session.putAttribute(flowFile, HBASE_ROWS_COUNT_ATTR, rowsPulled.toString()); final AtomicReference<IOException> ioe = new AtomicReference<>(null); flowFile = session.append(flowFile, (out) -> { try{ out.write("]".getBytes()); }catch(IOException ei){ ioe.set(ei); } }); if (e != null || ioe.get() != null) { flowFile = session.putAttribute(flowFile, "scanhbase.error", (e==null?e:ioe.get()).toString()); rel = REL_FAILURE; } else { session.getProvenanceReporter().receive(flowFile, hBaseClientService.toTransitUri(tableName, "{ids}")); } session.transfer(flowFile, rel); }
private void onTrigger(final ProcessContext context, final ProcessSession session) { readLock.lock(); try { Set<Relationship> available = context.getAvailableRelationships(); while (!available.isEmpty()) { final List<FlowFile> flowFiles = session.get(100); if (flowFiles.isEmpty()) { break; } session.transfer(flowFiles, Relationship.ANONYMOUS); session.commit(); available = context.getAvailableRelationships(); } } finally { readLock.unlock(); } }
private void completeFlowFile(final ProcessSession session, final FlowFile flowFile, final RecordSetWriter writer, final Relationship relationship, final String details) throws IOException { final WriteResult writeResult = writer.finishRecordSet(); writer.close(); final Map<String, String> attributes = new HashMap<>(); attributes.putAll(writeResult.getAttributes()); attributes.put("record.count", String.valueOf(writeResult.getRecordCount())); attributes.put(CoreAttributes.MIME_TYPE.key(), writer.getMimeType()); session.putAllAttributes(flowFile, attributes); session.transfer(flowFile, relationship); session.getProvenanceReporter().route(flowFile, relationship, details); }
private FlowFile writeAggregationFlowFileContents(String name, String json, ProcessSession session, FlowFile aggFlowFile, Map<String, String> attributes) { aggFlowFile = session.write(aggFlowFile, out -> out.write(json.getBytes())); if (name != null) { aggFlowFile = session.putAttribute(aggFlowFile, "aggregation.name", name); } return session.putAllAttributes(aggFlowFile, attributes); }
public static <FCT> PartialFunctions.FetchFlowFiles<FCT> fetchSingleFlowFile() { return (context, session, functionContext, result) -> session.get(1); }
@Override public void onTrigger(ProcessContext context, ProcessSession session) throws ProcessException { FlowFile flowFile = session.get(); if (flowFile == null) { return; } session.adjustCounter(context.getProperty(COUNTER_NAME).evaluateAttributeExpressions(flowFile).getValue(), Long.parseLong(context.getProperty(DELTA).evaluateAttributeExpressions(flowFile).getValue()), false ); session.transfer(flowFile, SUCCESS); } }
private void transferTo(Relationship relationship, ProcessSession session, StopWatch stopWatch, String eventHubName, String partitionId, String consumerGroup, FlowFile flowFile) { session.transfer(flowFile, relationship); final String transitUri = "amqps://" + namespaceName + ".servicebus.windows.net/" + eventHubName + "/ConsumerGroups/" + consumerGroup + "/Partitions/" + partitionId; session.getProvenanceReporter().receive(flowFile, transitUri, stopWatch.getElapsed(TimeUnit.MILLISECONDS)); }
private FlowFile writeHitFlowFile(String json, ProcessSession session, FlowFile hitFlowFile, Map<String, String> attributes) { hitFlowFile = session.write(hitFlowFile, out -> out.write(json.getBytes())); return session.putAllAttributes(hitFlowFile, attributes); }
protected FlowFile saveRequestDetailsAsAttributes(final HttpServletRequest request, final ProcessSession session, String foundSubject, FlowFile flowFile) { Map<String, String> attributes = new HashMap<>(); addMatchingRequestHeaders(request, attributes); flowFile = session.putAllAttributes(flowFile, attributes); flowFile = session.putAttribute(flowFile, "restlistener.remote.source.host", request.getRemoteHost()); flowFile = session.putAttribute(flowFile, "restlistener.request.uri", request.getRequestURI()); flowFile = session.putAttribute(flowFile, "restlistener.remote.user.dn", foundSubject); return flowFile; }