- Subscribe to RSS Feed
- Mark Question as New
- Mark Question as Read
- Float this Question for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page
How can I send FlowFile content to String in Java?
- Labels:
-
Apache NiFi
Created 07-14-2017 06:22 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks, it worked!
