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

pvillard 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 6355812a77 NIFI-13733 Migrated FTP and SFTP processors' Proxy 
properties to ProxyConfigurationService
6355812a77 is described below

commit 6355812a779ab88a60779b2fa4faafb44cecd6be
Author: Peter Turcsanyi <[email protected]>
AuthorDate: Tue Sep 10 15:11:52 2024 +0200

    NIFI-13733 Migrated FTP and SFTP processors' Proxy properties to 
ProxyConfigurationService
    
    Signed-off-by: Pierre Villard <[email protected]>
    
    This closes #9252.
---
 .../nifi/migration/ProxyServiceMigration.java      | 45 ++++++++++++++-
 .../nifi/migration/ProxyServiceMigrationTest.java  | 43 +++++++++++++-
 .../nifi-standard-processors/pom.xml               |  5 ++
 .../nifi/processors/standard/DeleteSFTP.java       | 12 ++--
 .../apache/nifi/processors/standard/FetchFTP.java  | 12 ++--
 .../apache/nifi/processors/standard/FetchSFTP.java | 12 ++--
 .../apache/nifi/processors/standard/GetFTP.java    | 12 ++--
 .../apache/nifi/processors/standard/GetSFTP.java   | 12 ++--
 .../apache/nifi/processors/standard/ListFTP.java   | 12 ++--
 .../apache/nifi/processors/standard/ListSFTP.java  | 12 ++--
 .../apache/nifi/processors/standard/PutFTP.java    | 12 ++--
 .../apache/nifi/processors/standard/PutSFTP.java   | 12 ++--
 .../standard/ftp/StandardFTPClientProvider.java    |  3 +-
 .../standard/ssh/StandardSSHClientProvider.java    |  3 +-
 .../nifi/processors/standard/util/FTPTransfer.java | 66 +++++-----------------
 15 files changed, 170 insertions(+), 103 deletions(-)

diff --git 
a/nifi-extension-bundles/nifi-extension-utils/nifi-migration-utils/src/main/java/org/apache/nifi/migration/ProxyServiceMigration.java
 
b/nifi-extension-bundles/nifi-extension-utils/nifi-migration-utils/src/main/java/org/apache/nifi/migration/ProxyServiceMigration.java
index b9ede07db6..019318f099 100644
--- 
a/nifi-extension-bundles/nifi-extension-utils/nifi-migration-utils/src/main/java/org/apache/nifi/migration/ProxyServiceMigration.java
+++ 
b/nifi-extension-bundles/nifi-extension-utils/nifi-migration-utils/src/main/java/org/apache/nifi/migration/ProxyServiceMigration.java
@@ -35,7 +35,7 @@ public final class ProxyServiceMigration {
     private ProxyServiceMigration() { }
 
     /**
-     * Migrates component level proxy properties to ProxyConfigurationService.
+     * Migrates component level proxy properties to ProxyConfigurationService 
with HTTP proxy type.
      *
      * @param config the component's property config to be migrated
      * @param proxyServiceProperty the component's property descriptor 
referencing ProxyConfigurationService
@@ -47,9 +47,50 @@ public final class ProxyServiceMigration {
     public static void migrateProxyProperties(final PropertyConfiguration 
config, final PropertyDescriptor proxyServiceProperty,
                                               final String proxyHostProperty, 
final String proxyPortProperty,
                                               final String 
proxyUsernameProperty, final String proxyPasswordProperty) {
+        migrateProxyProperties(config,
+                proxyServiceProperty,
+                Proxy.Type.HTTP,
+                proxyHostProperty,
+                proxyPortProperty,
+                proxyUsernameProperty,
+                proxyPasswordProperty);
+    }
+
+    /**
+     * Migrates component level proxy properties to ProxyConfigurationService 
with the specified proxy type.
+     *
+     * @param config the component's property config to be migrated
+     * @param proxyServiceProperty the component's property descriptor 
referencing ProxyConfigurationService
+     * @param proxyTypeProperty the name of the component level Proxy Type 
property
+     * @param proxyHostProperty the name of the component level Proxy Host 
property
+     * @param proxyPortProperty the name of the component level Proxy Port 
property
+     * @param proxyUsernameProperty the name of the component level Proxy 
Username property
+     * @param proxyPasswordProperty the name of the component level Proxy 
Password property
+     */
+    public static void migrateProxyProperties(final PropertyConfiguration 
config, final PropertyDescriptor proxyServiceProperty,
+                                              final String proxyTypeProperty,
+                                              final String proxyHostProperty, 
final String proxyPortProperty,
+                                              final String 
proxyUsernameProperty, final String proxyPasswordProperty) {
+        final Proxy.Type proxyType = 
Proxy.Type.valueOf(config.getRawPropertyValue(proxyTypeProperty).orElse(Proxy.Type.DIRECT.name()));
+
+        migrateProxyProperties(config,
+                proxyServiceProperty,
+                proxyType,
+                proxyHostProperty,
+                proxyPortProperty,
+                proxyUsernameProperty,
+                proxyPasswordProperty);
+
+        config.removeProperty(proxyTypeProperty);
+    }
+
+    private static void migrateProxyProperties(final PropertyConfiguration 
config, final PropertyDescriptor proxyServiceProperty,
+                                              final Proxy.Type proxyType,
+                                              final String proxyHostProperty, 
final String proxyPortProperty,
+                                              final String 
proxyUsernameProperty, final String proxyPasswordProperty) {
         if (config.isPropertySet(proxyHostProperty)) {
             final Map<String, String> proxyProperties = new HashMap<>();
-            proxyProperties.put(PROXY_SERVICE_TYPE, Proxy.Type.HTTP.name());
+            proxyProperties.put(PROXY_SERVICE_TYPE, proxyType.name());
             proxyProperties.put(PROXY_SERVICE_HOST, 
config.getRawPropertyValue(proxyHostProperty).get());
 
             // Map any optional proxy configs
diff --git 
a/nifi-extension-bundles/nifi-extension-utils/nifi-migration-utils/src/test/java/org/apache/nifi/migration/ProxyServiceMigrationTest.java
 
b/nifi-extension-bundles/nifi-extension-utils/nifi-migration-utils/src/test/java/org/apache/nifi/migration/ProxyServiceMigrationTest.java
index 05d3dee837..a9d7102469 100644
--- 
a/nifi-extension-bundles/nifi-extension-utils/nifi-migration-utils/src/test/java/org/apache/nifi/migration/ProxyServiceMigrationTest.java
+++ 
b/nifi-extension-bundles/nifi-extension-utils/nifi-migration-utils/src/test/java/org/apache/nifi/migration/ProxyServiceMigrationTest.java
@@ -35,18 +35,20 @@ class ProxyServiceMigrationTest {
             .name("proxy-service")
             .build();
 
+    private static final String OBSOLETE_PROXY_TYPE = "proxy-type";
     private static final String OBSOLETE_PROXY_HOST = "proxy-host";
     private static final String OBSOLETE_PROXY_PORT = "proxy-port";
     private static final String OBSOLETE_PROXY_USERNAME = "proxy-username";
     private static final String OBSOLETE_PROXY_PASSWORD = "proxy-password";
 
+    private static final String PROXY_TYPE_VALUE = "SOCKS";
     private static final String PROXY_HOST_VALUE = "localhost";
     private static final String PROXY_PORT_VALUE = "8888";
     private static final String PROXY_USERNAME_VALUE = "user";
     private static final String PROXY_PASSWORD_VALUE = "pass";
 
     @Test
-    void testMigrateProxyProperties() {
+    void testMigrateProxyPropertiesWithDefaultProxyType() {
         final Map<String, String> properties = Map.of(
                 OBSOLETE_PROXY_HOST, PROXY_HOST_VALUE,
                 OBSOLETE_PROXY_PORT, PROXY_PORT_VALUE,
@@ -81,4 +83,43 @@ class ProxyServiceMigrationTest {
                 ),
                 createdService.serviceProperties());
     }
+
+    @Test
+    void testMigrateProxyPropertiesWithCustomProxyType() {
+        final Map<String, String> properties = Map.of(
+                OBSOLETE_PROXY_TYPE, PROXY_TYPE_VALUE,
+                OBSOLETE_PROXY_HOST, PROXY_HOST_VALUE,
+                OBSOLETE_PROXY_PORT, PROXY_PORT_VALUE,
+                OBSOLETE_PROXY_USERNAME, PROXY_USERNAME_VALUE,
+                OBSOLETE_PROXY_PASSWORD, PROXY_PASSWORD_VALUE
+        );
+        final MockPropertyConfiguration config = new 
MockPropertyConfiguration(properties);
+
+        ProxyServiceMigration.migrateProxyProperties(config, PROXY_SERVICE, 
OBSOLETE_PROXY_TYPE, OBSOLETE_PROXY_HOST, OBSOLETE_PROXY_PORT, 
OBSOLETE_PROXY_USERNAME, OBSOLETE_PROXY_PASSWORD);
+
+        assertFalse(config.hasProperty(OBSOLETE_PROXY_TYPE));
+        assertFalse(config.hasProperty(OBSOLETE_PROXY_HOST));
+        assertFalse(config.hasProperty(OBSOLETE_PROXY_PORT));
+        assertFalse(config.hasProperty(OBSOLETE_PROXY_USERNAME));
+        assertFalse(config.hasProperty(OBSOLETE_PROXY_PASSWORD));
+
+        assertTrue(config.isPropertySet(PROXY_SERVICE));
+
+        PropertyMigrationResult result = config.toPropertyMigrationResult();
+        assertEquals(1, result.getCreatedControllerServices().size());
+
+        final CreatedControllerService createdService = 
result.getCreatedControllerServices().iterator().next();
+
+        assertEquals(config.getRawPropertyValue(PROXY_SERVICE).get(), 
createdService.id());
+        assertEquals(ProxyServiceMigration.PROXY_SERVICE_CLASSNAME, 
createdService.implementationClassName());
+
+        assertEquals(Map.of(
+                        ProxyServiceMigration.PROXY_SERVICE_TYPE, 
Proxy.Type.SOCKS.name(),
+                        ProxyServiceMigration.PROXY_SERVICE_HOST, 
PROXY_HOST_VALUE,
+                        ProxyServiceMigration.PROXY_SERVICE_PORT, 
PROXY_PORT_VALUE,
+                        ProxyServiceMigration.PROXY_SERVICE_USERNAME, 
PROXY_USERNAME_VALUE,
+                        ProxyServiceMigration.PROXY_SERVICE_PASSWORD, 
PROXY_PASSWORD_VALUE
+                ),
+                createdService.serviceProperties());
+    }
 }
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml
index c8e382e198..be454f9400 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml
@@ -557,6 +557,11 @@
             <artifactId>nifi-json-schema-shared</artifactId>
             <version>2.0.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.nifi</groupId>
+            <artifactId>nifi-migration-utils</artifactId>
+            <version>2.0.0-SNAPSHOT</version>
+        </dependency>
 
         <!-- Test Dependencies for database processors -->
         <dependency>
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/DeleteSFTP.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/DeleteSFTP.java
index fa54f4f27e..05e358b56c 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/DeleteSFTP.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/DeleteSFTP.java
@@ -29,6 +29,7 @@ import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.flowfile.FlowFile;
 import org.apache.nifi.flowfile.attributes.CoreAttributes;
 import org.apache.nifi.logging.ComponentLog;
+import org.apache.nifi.migration.PropertyConfiguration;
 import org.apache.nifi.processor.AbstractProcessor;
 import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.ProcessSession;
@@ -116,11 +117,6 @@ public class DeleteSFTP extends AbstractProcessor {
             SFTPTransfer.USE_KEEPALIVE_ON_TIMEOUT,
             SFTPTransfer.USE_COMPRESSION,
             SFTPTransfer.PROXY_CONFIGURATION_SERVICE,
-            FTPTransfer.PROXY_TYPE,
-            FTPTransfer.PROXY_HOST,
-            FTPTransfer.PROXY_PORT,
-            FTPTransfer.HTTP_PROXY_USERNAME,
-            FTPTransfer.HTTP_PROXY_PASSWORD,
             SFTPTransfer.CIPHERS_ALLOWED,
             SFTPTransfer.KEY_ALGORITHMS_ALLOWED,
             SFTPTransfer.KEY_EXCHANGE_ALGORITHMS_ALLOWED,
@@ -137,6 +133,12 @@ public class DeleteSFTP extends AbstractProcessor {
         return properties;
     }
 
+    @Override
+    public void migrateProperties(PropertyConfiguration config) {
+        super.migrateProperties(config);
+        FTPTransfer.migrateProxyProperties(config);
+    }
+
     @Override
     public void onTrigger(ProcessContext context, ProcessSession session) 
throws ProcessException {
         FlowFile flowFile = session.get();
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FetchFTP.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FetchFTP.java
index 12d4fb230f..b2e7b4019e 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FetchFTP.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FetchFTP.java
@@ -29,6 +29,7 @@ import org.apache.nifi.annotation.documentation.Tags;
 import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.components.ValidationContext;
 import org.apache.nifi.components.ValidationResult;
+import org.apache.nifi.migration.PropertyConfiguration;
 import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.util.file.transfer.FetchFileTransfer;
 import org.apache.nifi.processor.util.file.transfer.FileTransfer;
@@ -102,11 +103,6 @@ public class FetchFTP extends FetchFileTransfer {
             FTPTransfer.CONNECTION_MODE,
             FTPTransfer.TRANSFER_MODE,
             FTPTransfer.PROXY_CONFIGURATION_SERVICE,
-            FTPTransfer.PROXY_TYPE,
-            FTPTransfer.PROXY_HOST,
-            FTPTransfer.PROXY_PORT,
-            FTPTransfer.HTTP_PROXY_USERNAME,
-            FTPTransfer.HTTP_PROXY_PASSWORD,
             FTPTransfer.BUFFER_SIZE,
             FILE_NOT_FOUND_LOG_LEVEL,
             FTPTransfer.UTF8_ENCODING
@@ -117,6 +113,12 @@ public class FetchFTP extends FetchFileTransfer {
         return PROPERTIES;
     }
 
+    @Override
+    public void migrateProperties(PropertyConfiguration config) {
+        super.migrateProperties(config);
+        FTPTransfer.migrateProxyProperties(config);
+    }
+
     @Override
     protected FileTransfer createFileTransfer(final ProcessContext context) {
         return new FTPTransfer(context, getLogger());
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FetchSFTP.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FetchSFTP.java
index 2ccca3a8be..5e45ed3e95 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FetchSFTP.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FetchSFTP.java
@@ -29,6 +29,7 @@ import org.apache.nifi.annotation.documentation.Tags;
 import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.components.ValidationContext;
 import org.apache.nifi.components.ValidationResult;
+import org.apache.nifi.migration.PropertyConfiguration;
 import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.util.file.transfer.FetchFileTransfer;
 import org.apache.nifi.processor.util.file.transfer.FileTransfer;
@@ -115,11 +116,6 @@ public class FetchSFTP extends FetchFileTransfer {
             SFTPTransfer.STRICT_HOST_KEY_CHECKING,
             SFTPTransfer.USE_COMPRESSION,
             SFTPTransfer.PROXY_CONFIGURATION_SERVICE,
-            FTPTransfer.PROXY_TYPE,
-            FTPTransfer.PROXY_HOST,
-            FTPTransfer.PROXY_PORT,
-            FTPTransfer.HTTP_PROXY_USERNAME,
-            FTPTransfer.HTTP_PROXY_PASSWORD,
             FILE_NOT_FOUND_LOG_LEVEL,
             SFTPTransfer.CIPHERS_ALLOWED,
             SFTPTransfer.KEY_ALGORITHMS_ALLOWED,
@@ -132,6 +128,12 @@ public class FetchSFTP extends FetchFileTransfer {
         return PROPERTIES;
     }
 
+    @Override
+    public void migrateProperties(PropertyConfiguration config) {
+        super.migrateProperties(config);
+        FTPTransfer.migrateProxyProperties(config);
+    }
+
     @Override
     protected FileTransfer createFileTransfer(final ProcessContext context) {
         return new SFTPTransfer(context, getLogger());
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GetFTP.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GetFTP.java
index 522ce64f6e..b5143e7ad9 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GetFTP.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GetFTP.java
@@ -26,6 +26,7 @@ import org.apache.nifi.annotation.documentation.Tags;
 import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.components.ValidationContext;
 import org.apache.nifi.components.ValidationResult;
+import org.apache.nifi.migration.PropertyConfiguration;
 import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.util.file.transfer.FileTransfer;
 import org.apache.nifi.processor.util.file.transfer.GetFileTransfer;
@@ -76,11 +77,6 @@ public class GetFTP extends GetFileTransfer {
             FTPTransfer.REMOTE_POLL_BATCH_SIZE,
             FTPTransfer.USE_NATURAL_ORDERING,
             FTPTransfer.PROXY_CONFIGURATION_SERVICE,
-            FTPTransfer.PROXY_TYPE,
-            FTPTransfer.PROXY_HOST,
-            FTPTransfer.PROXY_PORT,
-            FTPTransfer.HTTP_PROXY_USERNAME,
-            FTPTransfer.HTTP_PROXY_PASSWORD,
             FTPTransfer.BUFFER_SIZE,
             FTPTransfer.UTF8_ENCODING
     );
@@ -90,6 +86,12 @@ public class GetFTP extends GetFileTransfer {
         return PROPERTIES;
     }
 
+    @Override
+    public void migrateProperties(PropertyConfiguration config) {
+        super.migrateProperties(config);
+        FTPTransfer.migrateProxyProperties(config);
+    }
+
     @Override
     protected FileTransfer getFileTransfer(final ProcessContext context) {
         return new FTPTransfer(context, getLogger());
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GetSFTP.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GetSFTP.java
index f9073870cf..faa9caee88 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GetSFTP.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GetSFTP.java
@@ -26,6 +26,7 @@ import org.apache.nifi.annotation.documentation.Tags;
 import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.components.ValidationContext;
 import org.apache.nifi.components.ValidationResult;
+import org.apache.nifi.migration.PropertyConfiguration;
 import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.util.file.transfer.FileTransfer;
 import org.apache.nifi.processor.util.file.transfer.GetFileTransfer;
@@ -79,11 +80,6 @@ public class GetSFTP extends GetFileTransfer {
             SFTPTransfer.USE_COMPRESSION,
             SFTPTransfer.USE_NATURAL_ORDERING,
             SFTPTransfer.PROXY_CONFIGURATION_SERVICE,
-            FTPTransfer.PROXY_TYPE,
-            FTPTransfer.PROXY_HOST,
-            FTPTransfer.PROXY_PORT,
-            FTPTransfer.HTTP_PROXY_USERNAME,
-            FTPTransfer.HTTP_PROXY_PASSWORD,
             SFTPTransfer.CIPHERS_ALLOWED,
             SFTPTransfer.KEY_ALGORITHMS_ALLOWED,
             SFTPTransfer.KEY_EXCHANGE_ALGORITHMS_ALLOWED,
@@ -95,6 +91,12 @@ public class GetSFTP extends GetFileTransfer {
         return PROPERTIES;
     }
 
+    @Override
+    public void migrateProperties(PropertyConfiguration config) {
+        super.migrateProperties(config);
+        FTPTransfer.migrateProxyProperties(config);
+    }
+
     @Override
     protected Collection<ValidationResult> customValidate(final 
ValidationContext context) {
         final List<ValidationResult> results = new 
ArrayList<>(super.customValidate(context));
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListFTP.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListFTP.java
index 829392c429..e102ae390b 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListFTP.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListFTP.java
@@ -33,6 +33,7 @@ import org.apache.nifi.components.ValidationContext;
 import org.apache.nifi.components.ValidationResult;
 import org.apache.nifi.components.state.Scope;
 import org.apache.nifi.context.PropertyContext;
+import org.apache.nifi.migration.PropertyConfiguration;
 import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.util.file.transfer.FileTransfer;
 import org.apache.nifi.processor.util.file.transfer.ListFileTransfer;
@@ -92,11 +93,6 @@ public class ListFTP extends ListFileTransfer {
             FTPTransfer.CONNECTION_MODE,
             FTPTransfer.TRANSFER_MODE,
             FTPTransfer.PROXY_CONFIGURATION_SERVICE,
-            FTPTransfer.PROXY_TYPE,
-            FTPTransfer.PROXY_HOST,
-            FTPTransfer.PROXY_PORT,
-            FTPTransfer.HTTP_PROXY_USERNAME,
-            FTPTransfer.HTTP_PROXY_PASSWORD,
             FTPTransfer.BUFFER_SIZE,
             TARGET_SYSTEM_TIMESTAMP_PRECISION,
             ListedEntityTracker.TRACKING_STATE_CACHE,
@@ -110,6 +106,12 @@ public class ListFTP extends ListFileTransfer {
         return PROPERTIES;
     }
 
+    @Override
+    public void migrateProperties(PropertyConfiguration config) {
+        super.migrateProperties(config);
+        FTPTransfer.migrateProxyProperties(config);
+    }
+
     @Override
     protected FileTransfer getFileTransfer(final ProcessContext context) {
         return new FTPTransfer(context, getLogger());
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListSFTP.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListSFTP.java
index db2adb2591..b56192fd24 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListSFTP.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListSFTP.java
@@ -34,6 +34,7 @@ import org.apache.nifi.components.ValidationContext;
 import org.apache.nifi.components.ValidationResult;
 import org.apache.nifi.components.state.Scope;
 import org.apache.nifi.context.PropertyContext;
+import org.apache.nifi.migration.PropertyConfiguration;
 import org.apache.nifi.processor.DataUnit;
 import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.util.file.transfer.FileInfo;
@@ -103,11 +104,6 @@ public class ListSFTP extends ListFileTransfer {
             TARGET_SYSTEM_TIMESTAMP_PRECISION,
             SFTPTransfer.USE_COMPRESSION,
             SFTPTransfer.PROXY_CONFIGURATION_SERVICE,
-            FTPTransfer.PROXY_TYPE,
-            FTPTransfer.PROXY_HOST,
-            FTPTransfer.PROXY_PORT,
-            FTPTransfer.HTTP_PROXY_USERNAME,
-            FTPTransfer.HTTP_PROXY_PASSWORD,
             ListedEntityTracker.TRACKING_STATE_CACHE,
             ListedEntityTracker.TRACKING_TIME_WINDOW,
             ListedEntityTracker.INITIAL_LISTING_TARGET,
@@ -128,6 +124,12 @@ public class ListSFTP extends ListFileTransfer {
         return PROPERTIES;
     }
 
+    @Override
+    public void migrateProperties(PropertyConfiguration config) {
+        super.migrateProperties(config);
+        FTPTransfer.migrateProxyProperties(config);
+    }
+
     @Override
     protected FileTransfer getFileTransfer(final ProcessContext context) {
         return new SFTPTransfer(context, getLogger());
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutFTP.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutFTP.java
index bc92eec97c..3c3c21cb48 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutFTP.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutFTP.java
@@ -30,6 +30,7 @@ import org.apache.nifi.components.ValidationContext;
 import org.apache.nifi.components.ValidationResult;
 import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.flowfile.FlowFile;
+import org.apache.nifi.migration.PropertyConfiguration;
 import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.util.StandardValidators;
 import org.apache.nifi.processor.util.file.transfer.PutFileTransfer;
@@ -94,11 +95,6 @@ public class PutFTP extends PutFileTransfer<FTPTransfer> {
             FTPTransfer.PERMISSIONS,
             FTPTransfer.USE_COMPRESSION,
             FTPTransfer.PROXY_CONFIGURATION_SERVICE,
-            FTPTransfer.PROXY_TYPE,
-            FTPTransfer.PROXY_HOST,
-            FTPTransfer.PROXY_PORT,
-            FTPTransfer.HTTP_PROXY_USERNAME,
-            FTPTransfer.HTTP_PROXY_PASSWORD,
             FTPTransfer.BUFFER_SIZE,
             FTPTransfer.UTF8_ENCODING
     );
@@ -108,6 +104,12 @@ public class PutFTP extends PutFileTransfer<FTPTransfer> {
         return PROPERTIES;
     }
 
+    @Override
+    public void migrateProperties(PropertyConfiguration config) {
+        super.migrateProperties(config);
+        FTPTransfer.migrateProxyProperties(config);
+    }
+
     @Override
     protected void beforePut(final FlowFile flowFile, final ProcessContext 
context, final FTPTransfer transfer) throws IOException {
         transfer.sendCommands(getCommands(preSendDescriptorRef.get(), context, 
flowFile), flowFile);
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutSFTP.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutSFTP.java
index 769c89cdc4..66506c9fde 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutSFTP.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutSFTP.java
@@ -25,6 +25,7 @@ import org.apache.nifi.annotation.documentation.Tags;
 import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.components.ValidationContext;
 import org.apache.nifi.components.ValidationResult;
+import org.apache.nifi.migration.PropertyConfiguration;
 import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.util.file.transfer.FileTransfer;
 import org.apache.nifi.processor.util.file.transfer.PutFileTransfer;
@@ -68,11 +69,6 @@ public class PutSFTP extends PutFileTransfer<SFTPTransfer> {
             SFTPTransfer.USE_KEEPALIVE_ON_TIMEOUT,
             FileTransfer.USE_COMPRESSION,
             SFTPTransfer.PROXY_CONFIGURATION_SERVICE,
-            FTPTransfer.PROXY_TYPE,
-            FTPTransfer.PROXY_HOST,
-            FTPTransfer.PROXY_PORT,
-            FTPTransfer.HTTP_PROXY_USERNAME,
-            FTPTransfer.HTTP_PROXY_PASSWORD,
             SFTPTransfer.CIPHERS_ALLOWED,
             SFTPTransfer.KEY_ALGORITHMS_ALLOWED,
             SFTPTransfer.KEY_EXCHANGE_ALGORITHMS_ALLOWED,
@@ -84,6 +80,12 @@ public class PutSFTP extends PutFileTransfer<SFTPTransfer> {
         return PROPERTIES;
     }
 
+    @Override
+    public void migrateProperties(PropertyConfiguration config) {
+        super.migrateProperties(config);
+        FTPTransfer.migrateProxyProperties(config);
+    }
+
     @Override
     protected SFTPTransfer getFileTransfer(final ProcessContext context) {
         return new SFTPTransfer(context, getLogger());
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ftp/StandardFTPClientProvider.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ftp/StandardFTPClientProvider.java
index d3fa48224f..abe0d81951 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ftp/StandardFTPClientProvider.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ftp/StandardFTPClientProvider.java
@@ -50,7 +50,6 @@ import static 
org.apache.nifi.processors.standard.util.FTPTransfer.TRANSFER_MODE
 import static 
org.apache.nifi.processors.standard.util.FTPTransfer.TRANSFER_MODE_ASCII;
 import static org.apache.nifi.processors.standard.util.FTPTransfer.USERNAME;
 import static 
org.apache.nifi.processors.standard.util.FTPTransfer.UTF8_ENCODING;
-import static 
org.apache.nifi.processors.standard.util.FTPTransfer.createComponentProxyConfigSupplier;
 
 /**
  * Standard implementation of FTP Client Provider
@@ -168,7 +167,7 @@ public class StandardFTPClientProvider implements 
FTPClientProvider {
     }
 
     private FTPClient createClient(final PropertyContext context) {
-        final ProxyConfiguration proxyConfiguration = 
ProxyConfiguration.getConfiguration(context, 
createComponentProxyConfigSupplier(context));
+        final ProxyConfiguration proxyConfiguration = 
ProxyConfiguration.getConfiguration(context);
 
         final Proxy.Type proxyType = proxyConfiguration.getProxyType();
 
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ssh/StandardSSHClientProvider.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ssh/StandardSSHClientProvider.java
index d4fac98180..fae64eace3 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ssh/StandardSSHClientProvider.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ssh/StandardSSHClientProvider.java
@@ -53,7 +53,6 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 
-import static 
org.apache.nifi.processors.standard.util.FTPTransfer.createComponentProxyConfigSupplier;
 import static 
org.apache.nifi.processors.standard.util.SFTPTransfer.CONNECTION_TIMEOUT;
 import static 
org.apache.nifi.processors.standard.util.SFTPTransfer.DATA_TIMEOUT;
 import static org.apache.nifi.processors.standard.util.SFTPTransfer.HOSTNAME;
@@ -179,7 +178,7 @@ public class StandardSSHClientProvider implements 
SSHClientProvider {
             }
         }
 
-        final ProxyConfiguration proxyConfiguration = 
ProxyConfiguration.getConfiguration(context, 
createComponentProxyConfigSupplier(context));
+        final ProxyConfiguration proxyConfiguration = 
ProxyConfiguration.getConfiguration(context);
         final Proxy.Type proxyType = proxyConfiguration.getProxyType();
         if (SUPPORTED_PROXY_TYPES.contains(proxyType)) {
             final SocketFactory socketFactory = 
SOCKET_FACTORY_PROVIDER.getSocketFactory(proxyConfiguration);
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/FTPTransfer.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/FTPTransfer.java
index 0b2c5f3650..d2bbc94efa 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/FTPTransfer.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/FTPTransfer.java
@@ -20,7 +20,6 @@ import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.Proxy;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.time.OffsetDateTime;
@@ -32,7 +31,6 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
-import java.util.function.Supplier;
 import java.util.regex.Pattern;
 
 import org.apache.commons.net.ftp.FTPClient;
@@ -45,6 +43,8 @@ import org.apache.nifi.context.PropertyContext;
 import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.flowfile.FlowFile;
 import org.apache.nifi.logging.ComponentLog;
+import org.apache.nifi.migration.PropertyConfiguration;
+import org.apache.nifi.migration.ProxyServiceMigration;
 import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.ProcessSession;
 import org.apache.nifi.processor.exception.ProcessException;
@@ -65,9 +65,13 @@ public class FTPTransfer implements FileTransfer {
     public static final String TRANSFER_MODE_ASCII = "ASCII";
     public static final String TRANSFER_MODE_BINARY = "Binary";
     public static final String FTP_TIMEVAL_FORMAT = "yyyyMMddHHmmss";
-    public static final String PROXY_TYPE_DIRECT = Proxy.Type.DIRECT.name();
-    public static final String PROXY_TYPE_HTTP = Proxy.Type.HTTP.name();
-    public static final String PROXY_TYPE_SOCKS = Proxy.Type.SOCKS.name();
+
+    // Obsolete property names
+    private static final String OBSOLETE_PROXY_TYPE = "Proxy Type";
+    private static final String OBSOLETE_PROXY_HOST = "Proxy Host";
+    private static final String OBSOLETE_PROXY_PORT = "Proxy Port";
+    private static final String OBSOLETE_PROXY_USERNAME = "Http Proxy 
Username";
+    private static final String OBSOLETE_PROXY_PASSWORD = "Http Proxy 
Password";
 
     public static final PropertyDescriptor CONNECTION_MODE = new 
PropertyDescriptor.Builder()
         .name("Connection Mode")
@@ -89,39 +93,6 @@ public class FTPTransfer implements FileTransfer {
         .defaultValue("21")
         
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
         .build();
-    public static final PropertyDescriptor PROXY_TYPE = new 
PropertyDescriptor.Builder()
-        .name("Proxy Type")
-        .description("Proxy type used for file transfers")
-        .allowableValues(PROXY_TYPE_DIRECT, PROXY_TYPE_HTTP, PROXY_TYPE_SOCKS)
-        .defaultValue(PROXY_TYPE_DIRECT)
-        .build();
-    public static final PropertyDescriptor PROXY_HOST = new 
PropertyDescriptor.Builder()
-        .name("Proxy Host")
-        .description("The fully qualified hostname or IP address of the proxy 
server")
-        .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
-        .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
-        .build();
-    public static final PropertyDescriptor PROXY_PORT = new 
PropertyDescriptor.Builder()
-        .name("Proxy Port")
-        .description("The port of the proxy server")
-        .addValidator(StandardValidators.PORT_VALIDATOR)
-        .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
-        .build();
-    public static final PropertyDescriptor HTTP_PROXY_USERNAME = new 
PropertyDescriptor.Builder()
-        .name("Http Proxy Username")
-        .description("Http Proxy Username")
-        .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
-        .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
-        .required(false)
-        .build();
-    public static final PropertyDescriptor HTTP_PROXY_PASSWORD = new 
PropertyDescriptor.Builder()
-        .name("Http Proxy Password")
-        .description("Http Proxy Password")
-        .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
-        .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
-        .required(false)
-        .sensitive(true)
-        .build();
     public static final PropertyDescriptor BUFFER_SIZE = new 
PropertyDescriptor.Builder()
         .name("Internal Buffer Size")
         .description("Set the internal buffer size for buffered data streams")
@@ -146,7 +117,7 @@ public class FTPTransfer implements FileTransfer {
 
     private static final ProxySpec[] PROXY_SPECS = {ProxySpec.HTTP_AUTH, 
ProxySpec.SOCKS_AUTH};
     public static final PropertyDescriptor PROXY_CONFIGURATION_SERVICE
-            = ProxyConfiguration.createProxyConfigPropertyDescriptor(true, 
PROXY_SPECS);
+            = ProxyConfiguration.createProxyConfigPropertyDescriptor(false, 
PROXY_SPECS);
 
     private final ComponentLog logger;
 
@@ -168,6 +139,11 @@ public class FTPTransfer implements FileTransfer {
         ProxyConfiguration.validateProxySpec(context, results, PROXY_SPECS);
     }
 
+    public static void migrateProxyProperties(final PropertyConfiguration 
config) {
+        ProxyServiceMigration.migrateProxyProperties(config, 
PROXY_CONFIGURATION_SERVICE,
+                OBSOLETE_PROXY_TYPE, OBSOLETE_PROXY_HOST, OBSOLETE_PROXY_PORT, 
OBSOLETE_PROXY_USERNAME, OBSOLETE_PROXY_PASSWORD);
+    }
+
     @Override
     public String getProtocolName() {
         return "ftp";
@@ -631,16 +607,4 @@ public class FTPTransfer implements FileTransfer {
         }
         return number;
     }
-
-    public static Supplier<ProxyConfiguration> 
createComponentProxyConfigSupplier(final PropertyContext ctx) {
-        return () -> {
-            final ProxyConfiguration componentProxyConfig = new 
ProxyConfiguration();
-            
componentProxyConfig.setProxyType(Proxy.Type.valueOf(ctx.getProperty(PROXY_TYPE).getValue()));
-            
componentProxyConfig.setProxyServerHost(ctx.getProperty(PROXY_HOST).evaluateAttributeExpressions().getValue());
-            
componentProxyConfig.setProxyServerPort(ctx.getProperty(PROXY_PORT).evaluateAttributeExpressions().asInteger());
-            
componentProxyConfig.setProxyUserName(ctx.getProperty(HTTP_PROXY_USERNAME).evaluateAttributeExpressions().getValue());
-            
componentProxyConfig.setProxyUserPassword(ctx.getProperty(HTTP_PROXY_PASSWORD).evaluateAttributeExpressions().getValue());
-            return componentProxyConfig;
-        };
-    }
 }


Reply via email to