Created 07-14-2017 06:22 AM
I'm new in NiFi and i'm trying to make a simple processor in Java. I need to send flowFile content to String and compare with Processor Property (which is actually in string). Is any method in NiFi packages for it?
Created 07-14-2017 07:41 PM
@Marceli Stawicki There are a few ways to do this. The most common way is to read the FlowFile contents in a ProcessSession#read and assign the contents to an AtomicReference. For example:
final AtomicReference<String> contentsRef = new AtomicReference<>(null); session.read(flowFile, new InputStreamCallback() { @Override public void process(final InputStream in) throws IOException { final String contents = IOUtils.toString(in, "UTF-8"); contentsRef.set(contents); } }) final String contents = contentsRef.get();
Another approach is to use ProcessSession#exportTo:
final ByteArrayOutputStream bytes = new ByteArrayOutputStream(); session.exportTo(flowFile, bytes); final String contents = bytes.toString();
From there you should be able to compare contents to the value of the property.
Created 07-14-2017 07:41 PM
@Marceli Stawicki There are a few ways to do this. The most common way is to read the FlowFile contents in a ProcessSession#read and assign the contents to an AtomicReference. For example:
final AtomicReference<String> contentsRef = new AtomicReference<>(null); session.read(flowFile, new InputStreamCallback() { @Override public void process(final InputStream in) throws IOException { final String contents = IOUtils.toString(in, "UTF-8"); contentsRef.set(contents); } }) final String contents = contentsRef.get();
Another approach is to use ProcessSession#exportTo:
final ByteArrayOutputStream bytes = new ByteArrayOutputStream(); session.exportTo(flowFile, bytes); final String contents = bytes.toString();
From there you should be able to compare contents to the value of the property.
Created 07-15-2017 11:03 AM
Thanks, it worked!