[ https://issues.apache.org/jira/browse/NIFI-7016?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dmitry Lukyanov updated NIFI-7016: ---------------------------------- Description: Currently the following methods implemented but they differ from groovy flavor. All those methods should return the object returned by Closure and streams/readers/writers must be closed after closure finished. Check any of this methods in groovy: http://docs.groovy-lang.org/latest/html/groovy-jdk/java/io/File.html#withOutputStream(groovy.lang.Closure) The idea of usage like this: {code:java} def jsonData = flowFile.withReader("UTF-8"){ new JsonSlurper().parse(it) } {code} methods to be fixed according to groovy behavior: {code:java} Object withInputStream(Closure closure) // Creates a new InputStream for this file and passes it into the closure. // Input stream must be closed after closure finished // Returns value returned by closure Object withOutputStream(Closure closure) // Creates a new OutputStream for this file and passes it into the closure. // OutputStream must be closed after closure finished. // Returns value returned by closure Object withReader(String charset, Closure closure) // Creates a new BufferedReader for this file using the specified charset and then passes it into the closure, ensuring the reader is closed after the closure returns. // Returns value returned by closure Object withWriter(String charset, Closure closure) // Creates a new BufferedWriter for this file, passes it to the closure, and ensures the stream is flushed and closed after the closure returns. // Returns value returned by closure {code} was: Currently the following methods implemented but they differ from groovy flavor. All those methods should return the object returned by Closure and streams/readers/writers must be closed after closure finished. Check of this kind of methods - they all returns the value returned by closure. The idea of usage like this: {code:java} def jsonData = flowFile.withReader("UTF-8"){ new JsonSlurper().parse(it) } {code} methods to be fixed according to groovy behavior: {code:java} Object withInputStream(Closure closure) // Creates a new InputStream for this file and passes it into the closure. // Input stream must be closed after closure finished // Returns value returned by closure Object withOutputStream(Closure closure) // Creates a new OutputStream for this file and passes it into the closure. // OutputStream must be closed after closure finished. // Returns value returned by closure Object withReader(String charset, Closure closure) // Creates a new BufferedReader for this file using the specified charset and then passes it into the closure, ensuring the reader is closed after the closure returns. // Returns value returned by closure Object withWriter(String charset, Closure closure) // Creates a new BufferedWriter for this file, passes it to the closure, and ensures the stream is flushed and closed after the closure returns. // Returns value returned by closure {code} > Make groovy File functions available for FlowFile to simplify scripting > [modified] > ---------------------------------------------------------------------------------- > > Key: NIFI-7016 > URL: https://issues.apache.org/jira/browse/NIFI-7016 > Project: Apache NiFi > Issue Type: New Feature > Reporter: Dmitry Lukyanov > Assignee: Matt Burgess > Priority: Minor > Fix For: 1.10.0 > > > Currently the following methods implemented but they differ from groovy > flavor. > All those methods should return the object returned by Closure and > streams/readers/writers must be closed after closure finished. > Check any of this methods in groovy: > http://docs.groovy-lang.org/latest/html/groovy-jdk/java/io/File.html#withOutputStream(groovy.lang.Closure) > The idea of usage like this: > {code:java} > def jsonData = flowFile.withReader("UTF-8"){ new JsonSlurper().parse(it) } > {code} > methods to be fixed according to groovy behavior: > {code:java} > Object withInputStream(Closure closure) > // Creates a new InputStream for this file and passes it into the closure. > // Input stream must be closed after closure finished > // Returns value returned by closure > Object withOutputStream(Closure closure) > // Creates a new OutputStream for this file and passes it into the closure. > // OutputStream must be closed after closure finished. > // Returns value returned by closure > Object withReader(String charset, Closure closure) > // Creates a new BufferedReader for this file using the specified charset and > then passes it into the closure, ensuring the reader is closed after the > closure returns. > // Returns value returned by closure > Object withWriter(String charset, Closure closure) > // Creates a new BufferedWriter for this file, passes it to the closure, and > ensures the stream is flushed and closed after the closure returns. > // Returns value returned by closure > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)