This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch NIFI-15318-1
in repository https://gitbox.apache.org/repos/asf/nifi.git

commit 588cde2d313d22cf7e55d9a7195991b828a94b63
Author: exceptionfactory <[email protected]>
AuthorDate: Tue Dec 9 21:15:12 2025 -0600

    NIFI-15317 Fixed Script Engine property name migration
    
    - Reverted Script Language property name to Script Engine
    - Added migrate properties method to scripting components to cover released 
versions
    - Added unit tests for migrate properties in representative components
    
    Signed-off-by: Pierre Villard <[email protected]>
    
    This closes #10623.
    
    (cherry picked from commit 6e866b85db640cea63887ef016134ee2340998d6)
---
 .../nifi/processors/script/ExecuteScript.java      |  5 ++++
 .../processors/script/InvokeScriptedProcessor.java |  6 ++++
 .../processors/script/ScriptedRecordProcessor.java |  9 ++----
 .../reporting/script/ScriptedReportingTask.java    |  6 ++++
 .../script/AbstractScriptedControllerService.java  |  6 ++++
 .../nifi/script/ScriptingComponentHelper.java      | 33 ++++++++++++++++------
 .../processors/script/ExecuteScriptGroovyTest.java | 20 ++++++++++++-
 .../script/TestScriptingComponentHelper.java       | 32 +++++++++++++++++++--
 .../nifi/record/script/ScriptedReaderTest.java     | 20 +++++++++++++
 .../script/ScriptedReportingTaskTest.java          | 33 ++++++++++++++++++++--
 10 files changed, 149 insertions(+), 21 deletions(-)

diff --git 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ExecuteScript.java
 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ExecuteScript.java
index 277a79e507..865e255949 100644
--- 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ExecuteScript.java
+++ 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ExecuteScript.java
@@ -37,6 +37,7 @@ import org.apache.nifi.components.ValidationResult;
 import org.apache.nifi.components.state.Scope;
 import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.logging.ComponentLog;
+import org.apache.nifi.migration.PropertyConfiguration;
 import org.apache.nifi.processor.AbstractSessionFactoryProcessor;
 import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.ProcessSession;
@@ -100,6 +101,10 @@ public class ExecuteScript extends 
AbstractSessionFactoryProcessor implements Se
     private volatile String scriptToRun = null;
     volatile ScriptingComponentHelper scriptingComponentHelper = new 
ScriptingComponentHelper();
 
+    @Override
+    public void migrateProperties(final PropertyConfiguration config) {
+        ScriptingComponentHelper.migrateProperties(config);
+    }
 
     /**
      * Returns the valid relationships for this processor.
diff --git 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/InvokeScriptedProcessor.java
 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/InvokeScriptedProcessor.java
index afb9308f13..f96e5d5594 100644
--- 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/InvokeScriptedProcessor.java
+++ 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/InvokeScriptedProcessor.java
@@ -42,6 +42,7 @@ import org.apache.nifi.controller.ControllerServiceLookup;
 import org.apache.nifi.controller.NodeTypeProvider;
 import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.logging.ComponentLog;
+import org.apache.nifi.migration.PropertyConfiguration;
 import org.apache.nifi.processor.AbstractSessionFactoryProcessor;
 import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.ProcessSessionFactory;
@@ -106,6 +107,11 @@ public class InvokeScriptedProcessor extends 
AbstractSessionFactoryProcessor {
     private volatile File kerberosServiceKeytab = null;
     volatile ScriptingComponentHelper scriptingComponentHelper = new 
ScriptingComponentHelper();
 
+    @Override
+    public void migrateProperties(final PropertyConfiguration config) {
+        ScriptingComponentHelper.migrateProperties(config);
+    }
+
     /**
      * Returns the valid relationships for this processor as supplied by the
      * script itself.
diff --git 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ScriptedRecordProcessor.java
 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ScriptedRecordProcessor.java
index 6272ac9087..88bb16b276 100644
--- 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ScriptedRecordProcessor.java
+++ 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/processors/script/ScriptedRecordProcessor.java
@@ -70,12 +70,9 @@ abstract class ScriptedRecordProcessor extends 
AbstractProcessor implements Sear
             .identifiesControllerService(RecordSetWriterFactory.class)
             .build();
 
-    static final PropertyDescriptor LANGUAGE = new PropertyDescriptor.Builder()
-            .name(ScriptingComponentHelper.SCRIPT_ENGINE_PROPERTY)
-            .description("The Language to use for the script")
+    static final PropertyDescriptor LANGUAGE = 
ScriptingComponentHelper.getScriptEnginePropertyBuilder()
             .allowableValues(SCRIPT_OPTIONS)
             .defaultValue("Groovy")
-            .required(true)
             .build();
 
     protected static final List<PropertyDescriptor> PROPERTY_DESCRIPTORS = 
List.of(
@@ -140,8 +137,8 @@ abstract class ScriptedRecordProcessor extends 
AbstractProcessor implements Sear
     }
 
     @Override
-    public void migrateProperties(PropertyConfiguration config) {
-        config.renameProperty("Script Engine", LANGUAGE.getName());
+    public void migrateProperties(final PropertyConfiguration config) {
+        ScriptingComponentHelper.migrateProperties(config);
     }
 
     protected static Bindings setupBindings(final ScriptEngine scriptEngine) {
diff --git 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/reporting/script/ScriptedReportingTask.java
 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/reporting/script/ScriptedReportingTask.java
index c90099da36..dc48a37c8a 100644
--- 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/reporting/script/ScriptedReportingTask.java
+++ 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/reporting/script/ScriptedReportingTask.java
@@ -32,6 +32,7 @@ import org.apache.nifi.controller.ConfigurationContext;
 import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.logging.ComponentLog;
 import org.apache.nifi.metrics.jvm.JmxJvmMetrics;
+import org.apache.nifi.migration.PropertyConfiguration;
 import org.apache.nifi.processor.exception.ProcessException;
 import org.apache.nifi.processor.util.StandardValidators;
 import org.apache.nifi.processors.script.ScriptRunner;
@@ -79,6 +80,11 @@ public class ScriptedReportingTask extends 
AbstractReportingTask {
     private volatile String scriptToRun = null;
     private volatile JmxJvmMetrics vmMetrics;
 
+    @Override
+    public void migrateProperties(final PropertyConfiguration config) {
+        ScriptingComponentHelper.migrateProperties(config);
+    }
+
     /**
      * Returns a list of property descriptors supported by this processor. The 
list always includes properties such as
      * script engine name, script file name, script body name, script 
arguments, and an external module path. If the
diff --git 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/AbstractScriptedControllerService.java
 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/AbstractScriptedControllerService.java
index 174f3dcd65..8931039ab6 100644
--- 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/AbstractScriptedControllerService.java
+++ 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/AbstractScriptedControllerService.java
@@ -25,6 +25,7 @@ import org.apache.nifi.controller.AbstractControllerService;
 import org.apache.nifi.controller.ConfigurationContext;
 import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.logging.ComponentLog;
+import org.apache.nifi.migration.PropertyConfiguration;
 import org.apache.nifi.processor.util.StandardValidators;
 import org.apache.nifi.processors.script.ScriptRunner;
 import org.apache.nifi.util.StringUtils;
@@ -52,6 +53,11 @@ public abstract class AbstractScriptedControllerService 
extends AbstractControll
     protected volatile ScriptingComponentHelper scriptingComponentHelper = new 
ScriptingComponentHelper();
     protected volatile ConfigurationContext configurationContext = null;
 
+    @Override
+    public void migrateProperties(final PropertyConfiguration config) {
+        ScriptingComponentHelper.migrateProperties(config);
+    }
+
     /**
      * Returns a list of property descriptors supported by this record reader. 
The
      * list always includes properties such as script engine name, script file
diff --git 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/ScriptingComponentHelper.java
 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/ScriptingComponentHelper.java
index f6d23c6517..21f255a2fc 100644
--- 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/ScriptingComponentHelper.java
+++ 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/main/java/org/apache/nifi/script/ScriptingComponentHelper.java
@@ -24,6 +24,7 @@ import org.apache.nifi.components.resource.ResourceReferences;
 import org.apache.nifi.context.PropertyContext;
 import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.logging.ComponentLog;
+import org.apache.nifi.migration.PropertyConfiguration;
 import org.apache.nifi.processor.exception.ProcessException;
 import org.apache.nifi.processors.script.ScriptRunner;
 import org.apache.nifi.util.StringUtils;
@@ -43,6 +44,7 @@ import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
@@ -54,9 +56,11 @@ import static 
org.apache.commons.lang3.StringUtils.defaultIfBlank;
  * This class contains variables and methods common to scripting processors, 
reporting tasks, etc.
  */
 public class ScriptingComponentHelper {
-    public static final String SCRIPT_ENGINE_PROPERTY = "Script Language";
     private static final String UNKNOWN_VERSION = "UNKNOWN";
 
+    private static final String SCRIPT_ENGINE_PROPERTY_NAME = "Script Engine";
+    private static final String SCRIPT_LANGUAGE_PROPERTY_NAME = "Script 
Language";
+
     public PropertyDescriptor SCRIPT_ENGINE;
 
     public final AtomicBoolean isInitialized = new AtomicBoolean(false);
@@ -71,6 +75,25 @@ public class ScriptingComponentHelper {
 
     public BlockingQueue<ScriptRunner> scriptRunnerQ = null;
 
+    /**
+     * Get Property Descriptor Builder for Script Engine with standard 
settings and no default value configured
+     *
+     * @return Property Descriptor Builder
+     */
+    public static PropertyDescriptor.Builder getScriptEnginePropertyBuilder() {
+        return new PropertyDescriptor.Builder()
+                .name("Script Engine")
+                .required(true)
+                .description("Language Engine for executing scripts")
+                .expressionLanguageSupported(ExpressionLanguageScope.NONE);
+    }
+
+    public static void migrateProperties(final PropertyConfiguration 
configuration) {
+        Objects.requireNonNull(configuration, "Property Configuration 
required");
+        // Revert name changes from NIFI-15108
+        configuration.renameProperty(SCRIPT_LANGUAGE_PROPERTY_NAME, 
SCRIPT_ENGINE_PROPERTY_NAME);
+    }
+
     public String getScriptEngineName() {
         return scriptEngineName;
     }
@@ -175,13 +198,7 @@ public class ScriptingComponentHelper {
             engineAllowableValues = engineList;
             AllowableValue[] engines = engineList.toArray(new 
AllowableValue[0]);
 
-            final PropertyDescriptor.Builder enginePropertyBuilder = new 
PropertyDescriptor.Builder()
-                    .name(SCRIPT_ENGINE_PROPERTY)
-                    .required(true)
-                    .description("Language Engine for executing scripts")
-                    .required(true)
-                    .expressionLanguageSupported(ExpressionLanguageScope.NONE);
-
+            final PropertyDescriptor.Builder enginePropertyBuilder = 
getScriptEnginePropertyBuilder();
             if (engineList.isEmpty()) {
                 enginePropertyBuilder.description("No Script Engines found");
             } else {
diff --git 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/ExecuteScriptGroovyTest.java
 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/ExecuteScriptGroovyTest.java
index 0febf5c18f..eebdd7d20a 100644
--- 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/ExecuteScriptGroovyTest.java
+++ 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/ExecuteScriptGroovyTest.java
@@ -16,15 +16,19 @@
  */
 package org.apache.nifi.processors.script;
 
+import org.apache.nifi.script.ScriptingComponentHelper;
 import org.apache.nifi.script.ScriptingComponentUtils;
 import org.apache.nifi.util.MockFlowFile;
 import org.apache.nifi.util.MockProcessContext;
+import org.apache.nifi.util.PropertyMigrationResult;
 import org.apache.nifi.util.TestRunners;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import java.util.Map;
 import java.util.regex.Pattern;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
@@ -32,7 +36,7 @@ class ExecuteScriptGroovyTest extends BaseScriptTest {
     private static final Pattern SINGLE_POOL_THREAD_PATTERN = 
Pattern.compile("pool-\\d+-thread-1");
 
     @BeforeEach
-    public void setUp() throws Exception {
+    public void setUp() {
         super.setupExecuteScript();
         runner.setValidateExpressionUsage(false);
         
runner.setProperty(scriptingComponent.getScriptingComponentHelper().SCRIPT_ENGINE,
 "Groovy");
@@ -40,6 +44,20 @@ class ExecuteScriptGroovyTest extends BaseScriptTest {
         runner.setProperty(ScriptingComponentUtils.MODULES, 
TEST_RESOURCE_LOCATION + "groovy");
     }
 
+    @Test
+    void testMigrateProperties() {
+        runner.clearProperties();
+
+        final String scriptLanguage = "Script Language";
+        runner.setProperty(scriptLanguage, "Groovy");
+
+        final PropertyMigrationResult result = runner.migrateProperties();
+
+        final Map<String, String> propertiesRenamed = 
result.getPropertiesRenamed();
+        final String scriptLanguageRenamed = 
propertiesRenamed.get(scriptLanguage);
+        
assertEquals(ScriptingComponentHelper.getScriptEnginePropertyBuilder().build().getName(),
 scriptLanguageRenamed);
+    }
+
     @Test
     void testShouldExecuteScript() {
         runner.assertValid();
diff --git 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestScriptingComponentHelper.java
 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestScriptingComponentHelper.java
index 8cf55d79ff..79f733f96a 100644
--- 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestScriptingComponentHelper.java
+++ 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/processors/script/TestScriptingComponentHelper.java
@@ -19,25 +19,35 @@ package org.apache.nifi.processors.script;
 import org.apache.nifi.components.AllowableValue;
 import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.script.ScriptingComponentHelper;
+import org.apache.nifi.util.MockPropertyConfiguration;
+import org.apache.nifi.util.PropertyMigrationResult;
 import org.junit.jupiter.api.Test;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-public class TestScriptingComponentHelper {
+class TestScriptingComponentHelper {
+
+    private static final String SCRIPT_LANGUAGE = "Script Language";
+    private static final String SCRIPT_ENGINE = "Script Engine";
+    private static final String CONFIGURED_SCRIPT_ENGINE = "AWK";
 
     @Test
-    public void testScriptEngineAllowableValuesWithDescriptions() {
+    void testScriptEngineAllowableValuesWithDescriptions() {
         final ScriptingComponentHelper helper = new ScriptingComponentHelper();
         helper.createResources();
 
         final List<PropertyDescriptor> descriptors = helper.getDescriptors();
         final Optional<PropertyDescriptor> optionalScriptEngine = 
descriptors.stream().filter(
-                descriptor -> 
descriptor.getName().equals(ScriptingComponentHelper.SCRIPT_ENGINE_PROPERTY)
+                descriptor -> descriptor.getName().equals(
+                        
ScriptingComponentHelper.getScriptEnginePropertyBuilder().build().getName()
+                )
         ).findFirst();
 
         assertTrue(optionalScriptEngine.isPresent());
@@ -50,4 +60,20 @@ public class TestScriptingComponentHelper {
             assertNotNull(allowableValue.getDescription());
         }
     }
+
+    @Test
+    void testMigrateProperties() {
+        final Map<String, String> propertyValues = Map.of(
+                SCRIPT_LANGUAGE, CONFIGURED_SCRIPT_ENGINE
+        );
+        final MockPropertyConfiguration configuration = new 
MockPropertyConfiguration(propertyValues);
+
+        ScriptingComponentHelper.migrateProperties(configuration);
+
+        final PropertyMigrationResult result = 
configuration.toPropertyMigrationResult();
+        final Map<String, String> propertiesRenamed = 
result.getPropertiesRenamed();
+
+        final String scriptLanguageRenamed = 
propertiesRenamed.get(SCRIPT_LANGUAGE);
+        assertEquals(SCRIPT_ENGINE, scriptLanguageRenamed);
+    }
 }
diff --git 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/record/script/ScriptedReaderTest.java
 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/record/script/ScriptedReaderTest.java
index af2a044ed4..1e683cba15 100644
--- 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/record/script/ScriptedReaderTest.java
+++ 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/record/script/ScriptedReaderTest.java
@@ -22,7 +22,9 @@ import org.apache.nifi.script.ScriptingComponentUtils;
 import org.apache.nifi.serialization.RecordReader;
 import org.apache.nifi.serialization.record.Record;
 import org.apache.nifi.util.MockComponentLog;
+import org.apache.nifi.util.MockPropertyConfiguration;
 import org.apache.nifi.util.NoOpProcessor;
+import org.apache.nifi.util.PropertyMigrationResult;
 import org.apache.nifi.util.TestRunner;
 import org.apache.nifi.util.TestRunners;
 import org.junit.jupiter.api.AfterAll;
@@ -80,6 +82,24 @@ class ScriptedReaderTest {
         runner.setProperty(recordReaderFactory, 
ScriptingComponentUtils.MODULES, (String) null);
     }
 
+    @Test
+    void testMigrateProperties() {
+        final String scriptLanguage = "Script Language";
+        final Map<String, String> propertyValues = Map.of(
+                scriptLanguage, "Groovy"
+        );
+        final MockPropertyConfiguration configuration = new 
MockPropertyConfiguration(propertyValues);
+
+        final ScriptedReader scriptedReader = new ScriptedReader();
+        scriptedReader.migrateProperties(configuration);
+
+        final PropertyMigrationResult result = 
configuration.toPropertyMigrationResult();
+
+        final Map<String, String> propertiesRenamed = 
result.getPropertiesRenamed();
+        final String scriptLanguageRenamed = 
propertiesRenamed.get(scriptLanguage);
+        
assertEquals(ScriptingComponentHelper.getScriptEnginePropertyBuilder().build().getName(),
 scriptLanguageRenamed);
+    }
+
     @Test
     void testRecordReaderGroovyScript() throws Exception {
         Files.copy(Paths.get(SOURCE_DIR, GROOVY_DIR, 
"test_record_reader_inline.groovy"), targetScriptFile, 
StandardCopyOption.REPLACE_EXISTING);
diff --git 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/reporting/script/ScriptedReportingTaskTest.java
 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/reporting/script/ScriptedReportingTaskTest.java
index 51d8033a40..6efab579d7 100644
--- 
a/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/reporting/script/ScriptedReportingTaskTest.java
+++ 
b/nifi-extension-bundles/nifi-scripting-bundle/nifi-scripting-processors/src/test/java/org/apache/nifi/reporting/script/ScriptedReportingTaskTest.java
@@ -27,7 +27,9 @@ import org.apache.nifi.script.ScriptingComponentHelper;
 import org.apache.nifi.script.ScriptingComponentUtils;
 import org.apache.nifi.util.MockConfigurationContext;
 import org.apache.nifi.util.MockEventAccess;
+import org.apache.nifi.util.MockPropertyConfiguration;
 import org.apache.nifi.util.MockReportingContext;
+import org.apache.nifi.util.PropertyMigrationResult;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -69,17 +71,35 @@ class ScriptedReportingTaskTest {
     private MockReportingContext reportingContext;
 
     @BeforeEach
-    public void setUp(@Mock ComponentLog logger) {
+    public void setUp() {
         task = new MockScriptedReportingTask();
         properties = new HashMap<>();
         configurationContext = new MockConfigurationContext(properties, null, 
null);
         reportingContext = new MockReportingContext(new LinkedHashMap<>(), 
null);
-        
when(initContext.getIdentifier()).thenReturn(UUID.randomUUID().toString());
-        when(initContext.getLogger()).thenReturn(logger);
+    }
+
+    @Test
+    void testMigrateProperties() {
+        final String scriptLanguage = "Script Language";
+        final Map<String, String> propertyValues = Map.of(
+                scriptLanguage, "Groovy"
+        );
+        final MockPropertyConfiguration configuration = new 
MockPropertyConfiguration(propertyValues);
+
+        final ScriptedReportingTask scriptedReportingTask = new 
ScriptedReportingTask();
+        scriptedReportingTask.migrateProperties(configuration);
+
+        final PropertyMigrationResult result = 
configuration.toPropertyMigrationResult();
+
+        final Map<String, String> propertiesRenamed = 
result.getPropertiesRenamed();
+        final String scriptLanguageRenamed = 
propertiesRenamed.get(scriptLanguage);
+        
assertEquals(ScriptingComponentHelper.getScriptEnginePropertyBuilder().build().getName(),
 scriptLanguageRenamed);
     }
 
     @Test
     void testProvenanceGroovyScript() throws Exception {
+        setInitializationContext();
+
         properties.put(SCRIPT_ENGINE_PROPERTY_DESCRIPTOR, GROOVY);
         
Files.copy(Paths.get("src/test/resources/groovy/test_log_provenance_events.groovy"),
 targetPath, StandardCopyOption.REPLACE_EXISTING);
         properties.put(ScriptingComponentUtils.SCRIPT_FILE, 
targetPath.toString());
@@ -111,6 +131,8 @@ class ScriptedReportingTaskTest {
 
     @Test
     void testVMEventsGroovyScript() throws Exception {
+        setInitializationContext();
+
         properties.put(SCRIPT_ENGINE_PROPERTY_DESCRIPTOR, GROOVY);
         
Files.copy(Paths.get("src/test/resources/groovy/test_log_vm_stats.groovy"), 
targetPath, StandardCopyOption.REPLACE_EXISTING);
         properties.put(ScriptingComponentUtils.SCRIPT_FILE, 
targetPath.toString());
@@ -126,6 +148,11 @@ class ScriptedReportingTaskTest {
         assertTrue(x.get("uptime") >= 0);
     }
 
+    private void setInitializationContext() {
+        
when(initContext.getIdentifier()).thenReturn(UUID.randomUUID().toString());
+        when(initContext.getLogger()).thenReturn(mock(ComponentLog.class));
+    }
+
     private void run() throws Exception {
         task.initialize(initContext);
         task.getSupportedPropertyDescriptors();

Reply via email to