This is an automated email from the ASF dual-hosted git repository.
exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new c90625a3e8 NIFI-11753: Remove deprecated JRuby and Luaj script engines
c90625a3e8 is described below
commit c90625a3e8ca9de613a2f7039d4d91e47e0e7e8a
Author: Matt Burgess <[email protected]>
AuthorDate: Mon Jun 26 14:20:10 2023 -0400
NIFI-11753: Remove deprecated JRuby and Luaj script engines
This closes #7436
Signed-off-by: David Handermann <[email protected]>
---
nifi-assembly/LICENSE | 23 ---
nifi-assembly/NOTICE | 1 -
.../src/main/resources/META-INF/LICENSE | 25 ----
.../src/main/resources/META-INF/NOTICE | 1 -
.../nifi-scripting-processors/pom.xml | 10 --
.../nifi/lookup/script/ScriptedLookupService.java | 2 +-
.../lookup/script/SimpleScriptedLookupService.java | 2 +-
.../nifi/processors/script/ExecuteScript.java | 2 +-
.../processors/script/InvokeScriptedProcessor.java | 2 +-
.../apache/nifi/record/script/ScriptedReader.java | 2 +-
.../record/script/ScriptedRecordSetWriter.java | 2 +-
.../record/sink/script/ScriptedRecordSink.java | 2 +-
.../reporting/script/ScriptedReportingTask.java | 2 +-
.../rules/engine/script/ScriptedRulesEngine.java | 2 +-
.../handlers/script/ScriptedActionHandler.java | 2 +-
.../nifi/script/ScriptingComponentHelper.java | 4 -
.../additionalDetails.html | 163 ++-------------------
.../additionalDetails.html | 9 --
.../nifi/processors/script/TestExecuteJRuby.java | 56 -------
.../nifi/processors/script/TestExecuteLua.java | 56 -------
.../script/TestScriptedTransformRecord.java | 5 -
.../src/test/resources/jruby/test_onTrigger.rb | 22 ---
.../src/test/resources/lua/test_onTrigger.lua | 21 ---
23 files changed, 25 insertions(+), 391 deletions(-)
diff --git a/nifi-assembly/LICENSE b/nifi-assembly/LICENSE
index 8ac4669c2b..8de4582be5 100644
--- a/nifi-assembly/LICENSE
+++ b/nifi-assembly/LICENSE
@@ -1663,29 +1663,6 @@ information can be found here: http://jsoup.org/license
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-This product bundles 'Luaj' which is available under an MIT style license. More
-information can be found here:
-
- Copyright (c) 2009 Luaj.org. All rights reserved.
-
- Permission is hereby granted, free of charge, to any person obtaining a
copy
- of this software and associated documentation files (the "Software"), to
deal
- in the Software without restriction, including without limitation the
rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
This product bundles 'js-beautify' which is available under an MIT license.
Copyright (c) 2007-2013 Einar Lielmanis and contributors.
diff --git a/nifi-assembly/NOTICE b/nifi-assembly/NOTICE
index 02b7c13102..be3a200e5c 100644
--- a/nifi-assembly/NOTICE
+++ b/nifi-assembly/NOTICE
@@ -2508,7 +2508,6 @@ The following binary components are provided under the
Eclipse Public License 1.
(EPL 1.0)(MPL 2.0) H2 Database (com.h2database:h2:jar:1.3.176 -
http://www.h2database.com/html/license.html)
(EPL 1.0)(LGPL 2.1) Logback Classic
(ch.qos.logback:logback-classic:jar:1.2.6 - http://logback.qos.ch/)
(EPL 1.0)(LGPL 2.1) Logback Core (ch.qos.logback:logback-core:jar:1.2.6 -
http://logback.qos.ch/)
- (EPLv1.0)(GPL 2)(LGPL 2.1) JRuby (org.jruby:jruby-complete -
http://jruby.org).
(EPL 1.0) Eclipse Paho MQTT Client
(org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.0 -
https://github.com/eclipse/paho.mqtt.java)
(EPL 1.0) Eclipse Link (org.eclipse.persistence:eclipselink:2.5.2 -
http://www.eclipse.org/eclipselink/)
(EPL 1.0) Common Service Data Objects
(org.eclipse.persistence:commonj.sdo:2.1.1 -
http://www.eclipse.org/eclipselink/)
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-nar/src/main/resources/META-INF/LICENSE
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-nar/src/main/resources/META-INF/LICENSE
index 53ceb74112..6f620c3af7 100644
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-nar/src/main/resources/META-INF/LICENSE
+++
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-nar/src/main/resources/META-INF/LICENSE
@@ -248,31 +248,6 @@ licenses.
8. By copying, installing or otherwise using Jython, Licensee agrees to be
bound by the terms and conditions of
this License Agreement.
-
- The binary distribution of this product bundles 'Luaj' under an MIT
- style license.
-
- Copyright © 2009-2014 Luaj.org.
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
The binary distribution of this product bundles 'clojure' under a EPL 1.0
license.
* Copyright (c) Rich Hickey. All rights reserved.
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-nar/src/main/resources/META-INF/NOTICE
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-nar/src/main/resources/META-INF/NOTICE
index f4a11d9068..fbb1a46a61 100644
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-nar/src/main/resources/META-INF/NOTICE
+++
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-nar/src/main/resources/META-INF/NOTICE
@@ -156,5 +156,4 @@ Eclipse Public License v1.0
The following binary components are provided under a EPL v1.0 license
- (EPLv1.0)(GPL 2)(LGPL 2.1) JRuby (org.jruby:jruby-complete -
http://jruby.org).
(EPLv1.0) Clojure (org.clojure:clojure:1.8.0 - http://clojure.org)
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/pom.xml
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/pom.xml
index ffdf9fe27d..716f3f4ed5 100644
--- a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/pom.xml
+++ b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/pom.xml
@@ -80,16 +80,6 @@
<artifactId>jython-standalone</artifactId>
<version>2.7.3</version>
</dependency>
- <dependency>
- <groupId>org.luaj</groupId>
- <artifactId>luaj-jse</artifactId>
- <version>3.0.1</version>
- </dependency>
- <dependency>
- <groupId>org.jruby</groupId>
- <artifactId>jruby-complete</artifactId>
- <version>9.4.2.0</version>
- </dependency>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>clojure</artifactId>
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/ScriptedLookupService.java
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/ScriptedLookupService.java
index a87b4fae97..9d09460ebe 100644
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/ScriptedLookupService.java
+++
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/ScriptedLookupService.java
@@ -33,7 +33,7 @@ import java.util.Set;
/**
* A Controller service that allows the user to script the lookup operation to
be performed (by LookupRecord, e.g.)
*/
-@Tags({"lookup", "record", "script", "invoke", "groovy", "python", "jython",
"jruby", "ruby", "lua", "luaj"})
+@Tags({"lookup", "record", "script", "invoke", "groovy", "python", "jython"})
@CapabilityDescription("Allows the user to provide a scripted LookupService
instance in order to enrich records from " +
"an incoming flow file. Please note, that due to a bug in Jython that
remains unresolved, it is not possible to use " +
"Jython to write a script for this service in Python.")
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/SimpleScriptedLookupService.java
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/SimpleScriptedLookupService.java
index 3420650bf8..a9f4c683ee 100644
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/SimpleScriptedLookupService.java
+++
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/lookup/script/SimpleScriptedLookupService.java
@@ -33,7 +33,7 @@ import java.util.Set;
/**
* A Controller service that allows the user to script the lookup operation to
be performed (by LookupAttribute, e.g.)
*/
-@Tags({"lookup", "script", "invoke", "groovy", "python", "jython", "jruby",
"ruby", "lua", "luaj"})
+@Tags({"lookup", "script", "invoke", "groovy", "python", "jython"})
@CapabilityDescription("Allows the user to provide a scripted LookupService
instance in order to enrich records from "
+ "an incoming flow file. The script is expected to return an optional
string value rather than an arbitrary object (record, e.g.). "
+ "Also the scripted lookup service should implement
StringLookupService, otherwise the getValueType() method must be implemented
even "
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ExecuteScript.java
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ExecuteScript.java
index 0a3f531689..a9ed75eb3e 100644
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ExecuteScript.java
+++
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ExecuteScript.java
@@ -64,7 +64,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-@Tags({"script", "execute", "groovy", "python", "jython", "jruby", "ruby",
"lua", "luaj", "clojure"})
+@Tags({"script", "execute", "groovy", "python", "jython", "clojure"})
@CapabilityDescription("Experimental - Executes a script given the flow file
and a process session. The script is responsible for "
+ "handling the incoming flow file (transfer to SUCCESS or remove,
e.g.) as well as any flow files created by "
+ "the script. If the handling is incomplete or incorrect, the session
will be rolled back. Experimental: "
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/InvokeScriptedProcessor.java
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/InvokeScriptedProcessor.java
index 815bc04a32..1bb973549a 100644
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/InvokeScriptedProcessor.java
+++
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/InvokeScriptedProcessor.java
@@ -68,7 +68,7 @@ import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
-@Tags({"script", "invoke", "groovy", "python", "jython", "jruby", "ruby",
"lua", "luaj"})
+@Tags({"script", "invoke", "groovy", "python", "jython"})
@CapabilityDescription("Experimental - Invokes a script engine for a Processor
defined in the given script. The script must define "
+ "a valid class that implements the Processor interface, and it must
set a variable 'processor' to an instance of "
+ "the class. Processor methods such as onTrigger() will be delegated
to the scripted Processor instance. Also any "
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/script/ScriptedReader.java
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/script/ScriptedReader.java
index 386949dbd3..d0932df33c 100644
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/script/ScriptedReader.java
+++
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/script/ScriptedReader.java
@@ -47,7 +47,7 @@ import java.util.Map;
/**
* A RecordReader implementation that allows the user to script the
RecordReader instance
*/
-@Tags({"record", "recordFactory", "script", "invoke", "groovy", "python",
"jython", "jruby", "ruby", "lua", "luaj"})
+@Tags({"record", "recordFactory", "script", "invoke", "groovy", "python",
"jython"})
@CapabilityDescription("Allows the user to provide a scripted
RecordReaderFactory instance in order to read/parse/generate records from an
incoming flow file.")
@DynamicProperty(name = "Script Engine Binding property", value = "Binding
property value passed to Script Runner",
expressionLanguageScope = ExpressionLanguageScope.VARIABLE_REGISTRY,
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/script/ScriptedRecordSetWriter.java
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/script/ScriptedRecordSetWriter.java
index 1dd88c38fd..1e8a7d31ea 100644
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/script/ScriptedRecordSetWriter.java
+++
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/script/ScriptedRecordSetWriter.java
@@ -47,7 +47,7 @@ import java.util.Map;
/**
* A RecordSetWriter implementation that allows the user to script the
RecordWriter instance
*/
-@Tags({"record", "writer", "script", "invoke", "groovy", "python", "jython",
"jruby", "ruby", "lua", "luaj"})
+@Tags({"record", "writer", "script", "invoke", "groovy", "python", "jython"})
@CapabilityDescription("Allows the user to provide a scripted
RecordSetWriterFactory instance in order to write records to an outgoing flow
file.")
@DynamicProperty(name = "Script Engine Binding property", value = "Binding
property value passed to Script Runner",
expressionLanguageScope = ExpressionLanguageScope.VARIABLE_REGISTRY,
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/sink/script/ScriptedRecordSink.java
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/sink/script/ScriptedRecordSink.java
index 8469c73d93..ede1f36f08 100644
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/sink/script/ScriptedRecordSink.java
+++
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/record/sink/script/ScriptedRecordSink.java
@@ -50,7 +50,7 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
-@Tags({"record", "record sink", "script", "invoke", "groovy", "python",
"jython", "jruby", "ruby", "lua", "luaj"})
+@Tags({"record", "record sink", "script", "invoke", "groovy", "python",
"jython"})
@CapabilityDescription("Allows the user to provide a scripted
RecordSinkService instance in order to transmit records to the desired target.
The script must set a variable 'recordSink' to an "
+ "implementation of RecordSinkService.")
@DynamicProperty(name = "Script Engine Binding property", value = "Binding
property value passed to Script Runner",
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/reporting/script/ScriptedReportingTask.java
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/reporting/script/ScriptedReportingTask.java
index 8ad89b874a..0aa634723c 100644
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/reporting/script/ScriptedReportingTask.java
+++
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/reporting/script/ScriptedReportingTask.java
@@ -56,7 +56,7 @@ import java.util.Map;
* A Reporting task whose body is provided by a script (via supported JSR-223
script engines)
*/
@SupportsSensitiveDynamicProperties
-@Tags({"reporting", "script", "execute", "groovy", "python", "jython",
"jruby", "ruby", "lua", "luaj"})
+@Tags({"reporting", "script", "execute", "groovy", "python", "jython"})
@CapabilityDescription("Provides reporting and status information to a script.
ReportingContext, ComponentLog, and VirtualMachineMetrics objects are made
available "
+ "as variables (context, log, and vmMetrics, respectively) to the
script for further processing. The context makes various information available
such "
+ "as events, provenance, bulletins, controller services, process
groups, Java Virtual Machine metrics, etc.")
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/engine/script/ScriptedRulesEngine.java
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/engine/script/ScriptedRulesEngine.java
index ee4c6955bb..d200778793 100644
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/engine/script/ScriptedRulesEngine.java
+++
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/engine/script/ScriptedRulesEngine.java
@@ -45,7 +45,7 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
-@Tags({"rules", "rules engine", "script", "invoke", "groovy", "python",
"jython", "jruby", "ruby", "lua", "luaj"})
+@Tags({"rules", "rules engine", "script", "invoke", "groovy", "python",
"jython"})
@CapabilityDescription("Allows the user to provide a scripted
RulesEngineService for custom firing of rules depending on the supplied facts.
The script must set a variable 'rulesEngine' to an "
+ "implementation of RulesEngineService.")
@DynamicProperty(name = "Script Engine Binding property", value = "Binding
property value passed to Script Runner",
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/handlers/script/ScriptedActionHandler.java
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/handlers/script/ScriptedActionHandler.java
index d2a7230ae3..e423ba953e 100644
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/handlers/script/ScriptedActionHandler.java
+++
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/rules/handlers/script/ScriptedActionHandler.java
@@ -47,7 +47,7 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
-@Tags({"rules", "rules engine", "action", "action handler", "script",
"invoke", "groovy", "python", "jython", "jruby", "ruby", "lua", "luaj"})
+@Tags({"rules", "rules engine", "action", "action handler", "script",
"invoke", "groovy", "python", "jython"})
@CapabilityDescription("Allows the user to provide a scripted ActionHandler
for custom firing of rules depending on the supplied facts. The script must set
a variable 'actionHandler' to an "
+ "implementation of ActionHandler.")
@DynamicProperty(name = "Script Engine Binding property", value = "Binding
property value passed to Script Runner",
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/ScriptingComponentHelper.java
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/ScriptingComponentHelper.java
index a485cd640b..b70b2fd2bf 100644
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/ScriptingComponentHelper.java
+++
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/ScriptingComponentHelper.java
@@ -145,10 +145,6 @@ public class ScriptingComponentHelper {
*/
public void createResources(final boolean requireInvocable) {
descriptors = new ArrayList<>();
- // The following is required for JRuby, should be transparent to
everything else.
- // Note this is not done in a ScriptRunner, as it is too early in the
lifecycle. The
- // setting must be there before the factories/engines are loaded.
- System.setProperty("org.jruby.embed.localvariable.behavior",
"persistent");
// Create list of available engines
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/resources/docs/org.apache.nifi.processors.script.ExecuteScript/additionalDetails.html
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/resources/docs/org.apache.nifi.processors.script.ExecuteScript/additionalDetails.html
index b262fd00c6..42e2c12795 100644
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/resources/docs/org.apache.nifi.processors.script.ExecuteScript/additionalDetails.html
+++
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/resources/docs/org.apache.nifi.processors.script.ExecuteScript/additionalDetails.html
@@ -46,7 +46,6 @@ td {text-align: left}
<b>Notes:</b>
<ul>
<li>The engine listed as "python" in the list of available script engines
is actually Jython, not Python. When using Jython, you cannot import pure
(CPython) modules such as pandas</li>
- <li>Lua does not allow for referencing static members of a class, so the
REL_SUCCESS and REL_FAILURE relationships are made available via script
bindings (aka variables), see the Variable Bindings section for more
details</li>
<li>ExecuteScript uses the JSR-223 Script Engine API to evaluate scripts,
so the use of idiomatic language structure is sometimes limited. For example,
in the case of Groovy, there is a separate ExecuteGroovyScript processor that
allows you to do many more idiomatic Groovy tasks. For example, it's easier to
interact with Controller Services via ExecuteGroovyScript vs. ExecuteScript
(see the ExecuteGroovyScript documentation for more details)</li>
</ul>
</p>
@@ -77,12 +76,12 @@ td {text-align: left}
</tr>
<tr>
<td><b>REL_SUCCESS</b></td>
- <td>This is a reference to the "success" relationship defined for the
processor. It could also be inherited by referencing the static member of the
parent class (ExecuteScript), but some engines such as Lua do not allow for
referencing static members, so this is a convenience variable. It also saves
having to use the fully-qualified name for the relationship.</td>
+ <td>This is a reference to the "success" relationship defined for the
processor. It could also be inherited by referencing the static member of the
parent class (ExecuteScript), this is a convenience variable. It also saves
having to use the fully-qualified name for the relationship.</td>
<td><a
href="https://www.javadoc.io/doc/org.apache.nifi/nifi-api/latest/org/apache/nifi/processor/Relationship.html">Relationship</a></td>
</tr>
<tr>
<td><b>REL_FAILURE</b></td>
- <td>This is a reference to the "failure" relationship defined for the
processor. As with REL_SUCCESS, it could also be inherited by referencing the
static member of the parent class (ExecuteScript), but some engines such as Lua
do not allow for referencing static members, so this is a convenience variable.
It also saves having to use the fully-qualified name for the relationship.</td>
+ <td>This is a reference to the "failure" relationship defined for the
processor. As with REL_SUCCESS, it could also be inherited by referencing the
static member of the parent class (ExecuteScript), this is a convenience
variable. It also saves having to use the fully-qualified name for the
relationship.</td>
<td><a
href="https://www.javadoc.io/doc/org.apache.nifi/nifi-api/latest/org/apache/nifi/processor/Relationship.html">Relationship</a></td>
</tr>
<tr>
@@ -108,12 +107,6 @@ if (flowFile != None):
# All processing code starts at this indent
# implicit return at the end
</pre>
-<p><em> JRuby</em></p>
-<pre>flowFile = session.get()
-if flowFile != nil
- # All processing code goes here
-end
-</pre>
<p> </p>
<p> </p>
<p><strong>Get multiple incoming FlowFiles from the session</strong>:</p>
@@ -134,14 +127,6 @@ if not flowFileList.isEmpty():
for flowFile in flowFileList:
# Process each FlowFile here
</pre>
-<p><em>JRuby</em></p>
-<pre>flowFileList = session.get(100)
-if !(flowFileList.isEmpty())
- flowFileList.each { |flowFile|
- # Process each FlowFile here
- }
-end
-</pre>
<p> </p>
<p> </p>
<p><strong>Create a new FlowFile</strong></p>
@@ -156,10 +141,6 @@ end
<pre>flowFile = session.create()
# Additional processing here
</pre>
-<p><em>JRuby</em></p>
-<pre>flowFile = session.create()
-# Additional processing here
-</pre>
<p> </p>
<p> </p>
<p><strong>Create a new FlowFile from a parent FlowFile</strong></p>
@@ -178,13 +159,6 @@ if (flowFile != None):
newFlowFile = session.create(flowFile)
# Additional processing here
</pre>
-<p><em>JRuby</em></p>
-<pre>flowFile = session.get()
-if flowFile != nil
- newFlowFile = session.create(flowFile)
- # Additional processing here
-end
-</pre>
<p> </p>
<p> </p>
<p><strong>Add an attribute to a FlowFile</strong></p>
@@ -203,18 +177,12 @@ if (flowFile != None):
flowFile = session.putAttribute(flowFile, 'myAttr', 'myValue')
# implicit return at the end
</pre>
-<p><em>JRuby</em></p>
-<pre>flowFile = session.get()
-if flowFile != nil
- flowFile = session.putAttribute(flowFile, 'myAttr', 'myValue')
-end
-</pre>
<p> </p>
<p> </p>
<p><strong>Add multiple attributes to a FlowFile</strong></p>
<p><strong>Use Case</strong>: You have a FlowFile to which you'd like to add
custom attributes.</p>
<p><strong>Approach</strong>: Use the putAllAttributes(<em>flowFile</em>,
<em>attributeMap</em>) method from the session object. This method updates the
given FlowFile's attributes with the key/value pairs from the given Map. NOTE:
The "uuid" attribute is fixed for a FlowFile and cannot be modified; if the key
is named "uuid", it will be ignored.</p>
-<p>The technique here is to create a Map (aka dictionary in Jython, hash in
JRuby) of the attribute key/value pairs you'd like to update, then call
putAllAttributes() on it. This is much more efficient than calling
putAttribute() for each key/value pair, as the latter case will cause the
framework to create a temporary version of the FlowFile for each attribute
added (see above recipe for discussion on FlowFile immutability). The examples
show a map of two entries myAttr1 and myAttr2, se [...]
+<p>The technique here is to create a Map (aka dictionary in Jython) of the
attribute key/value pairs you'd like to update, then call putAllAttributes() on
it. This is much more efficient than calling putAttribute() for each key/value
pair, as the latter case will cause the framework to create a temporary version
of the FlowFile for each attribute added (see above recipe for discussion on
FlowFile immutability). The examples show a map of two entries myAttr1 and
myAttr2, set to '1' and th [...]
<p><strong>Examples</strong>:</p>
<p><em>Groovy</em></p>
<pre>attrMap = ['myAttr1': '1', 'myAttr2': Integer.toString(2)]
@@ -229,13 +197,6 @@ if (flowFile != None):
flowFile = session.putAllAttributes(flowFile, attrMap)
# implicit return at the end
</pre>
-<p><em>JRuby</em></p>
-<pre>attrMap = {'myAttr1' => '1', 'myAttr2' => 2.to_s}
-flowFile = session.get()
-if flowFile != nil
- flowFile = session.putAllAttributes(flowFile, attrMap)
-end
-</pre>
<p> </p>
<p> </p>
<p><strong>Get an attribute from a FlowFile</strong></p>
@@ -253,12 +214,6 @@ if (flowFile != None):
myAttr = flowFile.getAttribute('filename')
# implicit return at the end
</pre>
-<p><em>JRuby</em></p>
-<pre>flowFile = session.get()
-if flowFile != nil
- myAttr = flowFile.getAttribute('filename')
-end
-</pre>
<p> </p>
<p> </p>
<p><strong>Get all attributes from a FlowFile</strong></p>
@@ -279,14 +234,6 @@ if (flowFile != None):
# Do something with key and/or value
# implicit return at the end
</pre>
-<p><em>JRuby</em></p>
-<pre>flowFile = session.get()
-if flowFile != nil
- flowFile.getAttributes().each { |key,value|
- # Do something with key and/or value
- }
-end
-</pre>
<p> </p>
<p><strong>Transfer a FlowFile to a relationship</strong></p>
<p><strong>Use Case</strong>: After processing a FlowFile (new or incoming),
you want to transfer the FlowFile to a relationship ("success" or "failure").
In this simple case let us assume there is a variable called "errorOccurred"
that indicates which relationship to which the FlowFile should be transferred.
Additional error handling techniques will be discussed in part 2 of this
series.</p>
@@ -314,17 +261,6 @@ if (flowFile != None):
session.transfer(flowFile, REL_SUCCESS)
# implicit return at the end
</pre>
-<p><em>JRuby</em></p>
-<pre>flowFile = session.get()
-if flowFile != nil
- # All processing code goes here
- if errorOccurred
- session.transfer(flowFile, REL_FAILURE)
- else
- session.transfer(flowFile, REL_SUCCESS)
- end
-end
-</pre>
<p> </p>
<p><strong>Send a message to the log at a specified logging level</strong></p>
<p><strong>Use Case</strong>: You want to report some event that has occurred
during processing to the logging framework.</p>
@@ -340,9 +276,7 @@ objArray = ['Hello',1,True]
javaArray = array(objArray, Object)
log.info('Found these things: {} {} {}', javaArray)
</pre>
-<p><em>JRuby</em></p>
-<pre>log.info('Found these things: {} {} {}', ['Hello',1,true].to_java)
-</pre>
+<p> </p>
<p> </p>
<p><strong>Read the contents of an incoming FlowFile using a
callback</strong></p>
<p><strong>Use Case</strong>: You have incoming connection(s) to ExecuteScript
and want to retrieve the contents of a FlowFile from the queue(s) for
processing.</p>
@@ -376,26 +310,9 @@ class PyInputStreamCallback(InputStreamCallback):
flowFile = session.get()
if(flowFile != None):
session.read(flowFile, PyInputStreamCallback())
-# implicit return at the end</pre>
-
-<p><em>JRuby</em></p>
-
-<pre>java_import org.apache.commons.io.IOUtils
-java_import org.apache.nifi.processor.io.InputStreamCallback
-
-# Define a subclass of InputStreamCallback for use in session.read()
-class JRubyInputStreamCallback
- include InputStreamCallback
- def process(inputStream)
- text = IOUtils.toString(inputStream)
- # Do something with text here
- end
-end
-jrubyInputStreamCallback = JRubyInputStreamCallback.new
-flowFile = session.get()
-if flowFile != nil
- session.read(flowFile, jrubyInputStreamCallback)
-end</pre>
+# implicit return at the end
+</pre>
+<p> </p>
<p> </p>
<p><strong>Write content to an outgoing FlowFile using a callback</strong></p>
<p><strong>Use Case</strong>: You want to generate content for an outgoing
FlowFile.</p>
@@ -429,26 +346,9 @@ class PyOutputStreamCallback(OutputStreamCallback):
flowFile = session.get()
if(flowFile != None):
flowFile = session.write(flowFile, PyOutputStreamCallback())
-# implicit return at the end</pre>
-
-<p><em>JRuby</em></p>
-
-<pre>java_import org.apache.commons.io.IOUtils
-java_import java.nio.charset.StandardCharsets
-java_import org.apache.nifi.processor.io.OutputStreamCallback
-
-# Define a subclass of OutputStreamCallback for use in session.write()
-class JRubyOutputStreamCallback
- include OutputStreamCallback
- def process(outputStream)
- outputStream.write("Hello
World!".to_java.getBytes(StandardCharsets::UTF_8))
- end
-end
-jrubyOutputStreamCallback = JRubyOutputStreamCallback.new
-flowFile = session.get()
-if flowFile != nil
- flowFile = session.write(flowFile, jrubyOutputStreamCallback)
-end</pre>
+# implicit return at the end
+</pre>
+<p> </p>
<p> </p>
<p><strong>Overwrite an incoming FlowFile with updated content using a
callback</strong></p>
<p><strong>Use Case</strong>: You want to reuse the incoming FlowFile but want
to modify its content for the outgoing FlowFile.</p>
@@ -488,27 +388,9 @@ class PyStreamCallback(StreamCallback):
flowFile = session.get()
if(flowFile != None):
flowFile = session.write(flowFile, PyStreamCallback())
-# implicit return at the end</pre>
-
-<p><em>JRuby</em></p>
-
-<pre>java_import org.apache.commons.io.IOUtils
-java_import java.nio.charset.StandardCharsets
-java_import org.apache.nifi.processor.io.StreamCallback
-
-# Define a subclass of StreamCallback for use in session.write()
-class JRubyStreamCallback
- include StreamCallback
- def process(inputStream, outputStream)
- text = IOUtils.toString(inputStream)
-
outputStream.write((text.reverse!).to_java.getBytes(StandardCharsets::UTF_8))
- end
-end
-jrubyStreamCallback = JRubyStreamCallback.new
-flowFile = session.get()
-if flowFile != nil
- flowFile = session.write(flowFile, jrubyStreamCallback)
-end</pre>
+# implicit return at the end
+</pre>
+<p> </p>
<p> </p>
<p><strong>Handle errors during script processing</strong></p>
<p><strong>Use Case</strong>: An error occurs in the script (either by data
validation or a thrown exception), and you want the script to handle it
gracefully.</p>
@@ -541,22 +423,7 @@ if(flowFile != None):
except:
log.error('Something went wrong', e)
session.transfer(flowFile, REL_FAILURE)
-# implicit return at the end</pre>
-
-<p><em>JRuby</em></p>
-
-<pre>flowFile = session.get()
-if flowFile != nil
- begin
- # Something that might raise an exception here
-
- # Last operation is transfer to success (failures handled in the rescue
block)
- session.transfer(flowFile, REL_SUCCESS)
- rescue Exception => e
- log.error('Something went wrong', e)
- session.transfer(flowFile, REL_FAILURE)
- end
-end</pre>
-
+# implicit return at the end
+</pre>
</body>
</html>
\ No newline at end of file
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/resources/docs/org.apache.nifi.processors.script.ScriptedTransformRecord/additionalDetails.html
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/resources/docs/org.apache.nifi.processors.script.ScriptedTransformRecord/additionalDetails.html
index 1378804e05..0435a72a39 100644
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/resources/docs/org.apache.nifi.processors.script.ScriptedTransformRecord/additionalDetails.html
+++
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/resources/docs/org.apache.nifi.processors.script.ScriptedTransformRecord/additionalDetails.html
@@ -191,15 +191,6 @@ _ = record
</td>
<td>21.0 million</td>
</tr>
- <tr>
- <td>ScriptedTransformRecord - Using Language: ruby</td>
- <td>
-<pre><code>record.setValue("num", 42)
-record
-</code></pre>
- </td>
- <td>2.67 million</td>
- </tr>
</table>
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestExecuteJRuby.java
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestExecuteJRuby.java
deleted file mode 100644
index d1af2f8d9d..0000000000
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestExecuteJRuby.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.nifi.processors.script;
-
-import org.apache.nifi.script.ScriptingComponentUtils;
-import org.apache.nifi.util.MockFlowFile;
-import org.apache.nifi.util.TestRunner;
-import org.apache.nifi.util.TestRunners;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import java.nio.charset.StandardCharsets;
-import java.util.List;
-
-public class TestExecuteJRuby extends BaseScriptTest {
- @BeforeEach
- public void setup() throws Exception {
- super.setupExecuteScript();
- }
-
- /**
- * Tests a script that has provides the body of an onTrigger() function.
- *
- */
- @Test
- public void testReadFlowFileContentAndStoreInFlowFileAttribute() {
- final TestRunner runner = TestRunners.newTestRunner(new
ExecuteScript());
- runner.setValidateExpressionUsage(false);
-
runner.setProperty(scriptingComponent.getScriptingComponentHelper().SCRIPT_ENGINE,
"ruby");
- runner.setProperty(ScriptingComponentUtils.SCRIPT_FILE,
"target/test/resources/jruby/test_onTrigger.rb");
- runner.setProperty(ScriptingComponentUtils.MODULES,
"target/test/resources/jruby");
-
- runner.assertValid();
- runner.enqueue("test content".getBytes(StandardCharsets.UTF_8));
- runner.run();
-
- runner.assertAllFlowFilesTransferred("success", 1);
- final List<MockFlowFile> result =
runner.getFlowFilesForRelationship("success");
- result.get(0).assertAttributeEquals("from-content", "test content");
- }
-
-}
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestExecuteLua.java
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestExecuteLua.java
deleted file mode 100644
index 6e9aaa122a..0000000000
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestExecuteLua.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.nifi.processors.script;
-
-import org.apache.nifi.script.ScriptingComponentUtils;
-import org.apache.nifi.util.MockFlowFile;
-import org.apache.nifi.util.TestRunner;
-import org.apache.nifi.util.TestRunners;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import java.nio.charset.StandardCharsets;
-import java.util.List;
-
-public class TestExecuteLua extends BaseScriptTest {
-
- @BeforeEach
- public void setup() throws Exception {
- super.setupExecuteScript();
- }
-
- /**
- * Tests a script that has provides the body of an onTrigger() function.
- *
- */
- @Test
- public void testReadFlowFileContentAndStoreInFlowFileAttribute() {
- final TestRunner runner = TestRunners.newTestRunner(new
ExecuteScript());
- runner.setValidateExpressionUsage(false);
-
runner.setProperty(scriptingComponent.getScriptingComponentHelper().SCRIPT_ENGINE,
"lua");
- runner.setProperty(ScriptingComponentUtils.SCRIPT_FILE,
"target/test/resources/lua/test_onTrigger.lua");
- runner.setProperty(ScriptingComponentUtils.MODULES,
"target/test/resources/lua");
-
- runner.assertValid();
- runner.enqueue("test content".getBytes(StandardCharsets.UTF_8));
- runner.run();
-
- runner.assertAllFlowFilesTransferred(ExecuteScript.REL_SUCCESS, 1);
- final List<MockFlowFile> result =
runner.getFlowFilesForRelationship(ExecuteScript.REL_SUCCESS);
- result.get(0).assertAttributeEquals("from-content", "test content");
- }
-}
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestScriptedTransformRecord.java
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestScriptedTransformRecord.java
index 82e9751f2a..3d866daf5f 100644
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestScriptedTransformRecord.java
+++
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestScriptedTransformRecord.java
@@ -61,11 +61,6 @@ public class TestScriptedTransformRecord {
testPassThrough("python", "_ = record");
}
- @Test
- public void testSimpleRubyScript() throws InitializationException {
- testPassThrough("ruby", "record");
- }
-
private void testPassThrough(final String language, final String script)
throws InitializationException {
final RecordSchema schema = createSimpleNumberSchema();
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/resources/jruby/test_onTrigger.rb
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/resources/jruby/test_onTrigger.rb
deleted file mode 100644
index d8a2b7b85e..0000000000
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/resources/jruby/test_onTrigger.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-java_import Java::org.apache.nifi.processors.script.ExecuteScript
-flowFile = session.get()
-if flowFile.nil?
- return
-end
-flowFile = session.putAttribute(flowFile, "from-content", "test content")
-session.transfer(flowFile, ExecuteScript::REL_SUCCESS)
\ No newline at end of file
diff --git
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/resources/lua/test_onTrigger.lua
b/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/resources/lua/test_onTrigger.lua
deleted file mode 100644
index 687cae15d5..0000000000
---
a/nifi-nar-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/resources/lua/test_onTrigger.lua
+++ /dev/null
@@ -1,21 +0,0 @@
--- Licensed to the Apache Software Foundation (ASF) under one
--- or more contributor license agreements. See the NOTICE file
--- distributed with this work for additional information
--- regarding copyright ownership. The ASF licenses this file
--- to you under the Apache License, Version 2.0 (the
--- "License"); you may not use this file except in compliance
--- with the License. You may obtain a copy of the License at
---
--- http://www.apache.org/licenses/LICENSE-2.0
---
--- Unless required by applicable law or agreed to in writing, software
--- distributed under the License is distributed on an "AS IS" BASIS,
--- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--- See the License for the specific language governing permissions and
--- limitations under the License.
-flowFile = session:get()
-if flowFile == nil then
- return
-end
-flowFile = session:putAttribute(flowFile, "from-content", "test content")
-session:transfer(flowFile, REL_SUCCESS)
\ No newline at end of file