You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by tu...@apache.org on 2023/03/03 17:59:28 UTC

[nifi] 02/06: NIFI-11146 Proxy usage in BoxFile processors

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

turcsanyi pushed a commit to branch support/nifi-1.x
in repository https://gitbox.apache.org/repos/asf/nifi.git

commit 20914c1af913919d89a07fe03a11816b38c70f41
Author: krisztina-zsihovszki <zs...@gmail.com>
AuthorDate: Mon Feb 6 18:17:33 2023 +0100

    NIFI-11146 Proxy usage in BoxFile processors
    
    This closes #6932.
    
    Signed-off-by: Peter Turcsanyi <tu...@apache.org>
---
 .../nifi-box-bundle/nifi-box-services-api/pom.xml  |  2 +-
 .../nifi-box-bundle/nifi-box-services/pom.xml      |  4 ++
 .../JsonConfigBasedBoxClientService.java           | 44 ++++++++++++++--------
 3 files changed, 34 insertions(+), 16 deletions(-)

diff --git a/nifi-nar-bundles/nifi-box-bundle/nifi-box-services-api/pom.xml b/nifi-nar-bundles/nifi-box-bundle/nifi-box-services-api/pom.xml
index ec329c64b2..67f332e44f 100644
--- a/nifi-nar-bundles/nifi-box-bundle/nifi-box-services-api/pom.xml
+++ b/nifi-nar-bundles/nifi-box-bundle/nifi-box-services-api/pom.xml
@@ -29,7 +29,7 @@
         <dependency>
             <groupId>com.box</groupId>
             <artifactId>box-java-sdk</artifactId>
-            <version>3.8.2</version>
+            <version>4.0.0</version>
             <exclusions>
                 <exclusion>
                     <groupId>org.bouncycastle</groupId>
diff --git a/nifi-nar-bundles/nifi-box-bundle/nifi-box-services/pom.xml b/nifi-nar-bundles/nifi-box-bundle/nifi-box-services/pom.xml
index 90cadf875a..0953480005 100644
--- a/nifi-nar-bundles/nifi-box-bundle/nifi-box-services/pom.xml
+++ b/nifi-nar-bundles/nifi-box-bundle/nifi-box-services/pom.xml
@@ -42,6 +42,10 @@
             <artifactId>nifi-json-utils</artifactId>
             <version>1.21.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.nifi</groupId>
+            <artifactId>nifi-proxy-configuration-api</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.nifi</groupId>
             <artifactId>nifi-mock</artifactId>
diff --git a/nifi-nar-bundles/nifi-box-bundle/nifi-box-services/src/main/java/org/apache/nifi/box/controllerservices/JsonConfigBasedBoxClientService.java b/nifi-nar-bundles/nifi-box-bundle/nifi-box-services/src/main/java/org/apache/nifi/box/controllerservices/JsonConfigBasedBoxClientService.java
index f384b015c3..26662bf28c 100644
--- a/nifi-nar-bundles/nifi-box-bundle/nifi-box-services/src/main/java/org/apache/nifi/box/controllerservices/JsonConfigBasedBoxClientService.java
+++ b/nifi-nar-bundles/nifi-box-bundle/nifi-box-services/src/main/java/org/apache/nifi/box/controllerservices/JsonConfigBasedBoxClientService.java
@@ -19,6 +19,16 @@ package org.apache.nifi.box.controllerservices;
 import com.box.sdk.BoxAPIConnection;
 import com.box.sdk.BoxConfig;
 import com.box.sdk.BoxDeveloperEditionAPIConnection;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.net.Proxy;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
 import org.apache.nifi.annotation.documentation.Tags;
 import org.apache.nifi.annotation.lifecycle.OnEnabled;
@@ -33,16 +43,9 @@ import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.processor.exception.ProcessException;
 import org.apache.nifi.processor.util.JsonValidator;
 import org.apache.nifi.processor.util.StandardValidators;
+import org.apache.nifi.proxy.ProxyConfiguration;
+import org.apache.nifi.proxy.ProxySpec;
 
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.Reader;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
 
 @CapabilityDescription("Provides Box client objects through which Box API calls can be used.")
 @Tags({"box", "client", "provider"})
@@ -75,10 +78,13 @@ public class JsonConfigBasedBoxClientService extends AbstractControllerService i
         .expressionLanguageSupported(ExpressionLanguageScope.VARIABLE_REGISTRY)
         .build();
 
+    private static final ProxySpec[] PROXY_SPECS = {ProxySpec.HTTP, ProxySpec.HTTP_AUTH};
+
     private static final List<PropertyDescriptor> PROPERTIES = Collections.unmodifiableList(Arrays.asList(
         ACCOUNT_ID,
         APP_CONFIG_FILE,
-        APP_CONFIG_JSON
+        APP_CONFIG_JSON,
+        ProxyConfiguration.createProxyConfigPropertyDescriptor(false, PROXY_SPECS)
     ));
 
     private volatile BoxAPIConnection boxAPIConnection;
@@ -128,15 +134,16 @@ public class JsonConfigBasedBoxClientService extends AbstractControllerService i
     }
 
     private BoxAPIConnection createBoxApiConnection(ConfigurationContext context) {
-        BoxAPIConnection api;
+        final BoxAPIConnection api;
 
-        String accountId = context.getProperty(ACCOUNT_ID).evaluateAttributeExpressions().getValue();
+        final String accountId = context.getProperty(ACCOUNT_ID).evaluateAttributeExpressions().getValue();
+        final ProxyConfiguration proxyConfiguration = ProxyConfiguration.getConfiguration(context);
 
-        BoxConfig boxConfig;
+        final BoxConfig boxConfig;
         if (context.getProperty(APP_CONFIG_FILE).isSet()) {
             String appConfigFile = context.getProperty(APP_CONFIG_FILE).evaluateAttributeExpressions().getValue();
             try (
-                Reader reader = new FileReader(appConfigFile);
+                Reader reader = new FileReader(appConfigFile)
             ) {
                 boxConfig = BoxConfig.readFrom(reader);
             } catch (FileNotFoundException e) {
@@ -145,7 +152,7 @@ public class JsonConfigBasedBoxClientService extends AbstractControllerService i
                 throw new ProcessException("Couldn't read Box config file", e);
             }
         } else {
-            String appConfig = context.getProperty(APP_CONFIG_JSON).evaluateAttributeExpressions().getValue();
+            final String appConfig = context.getProperty(APP_CONFIG_JSON).evaluateAttributeExpressions().getValue();
             boxConfig = BoxConfig.readFrom(appConfig);
         }
 
@@ -153,6 +160,13 @@ public class JsonConfigBasedBoxClientService extends AbstractControllerService i
 
         api.asUser(accountId);
 
+        if (!Proxy.Type.DIRECT.equals(proxyConfiguration.getProxyType())) {
+            api.setProxy(proxyConfiguration.createProxy());
+
+            if (proxyConfiguration.hasCredential()) {
+                api.setProxyBasicAuthentication(proxyConfiguration.getProxyUserName(), proxyConfiguration.getProxyUserPassword());
+            }
+        }
         return api;
     }
 }