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;
}
}