Repository: nifi
Updated Branches:
  refs/heads/master 463dcd881 -> 9217e2fc6


NIFI-4619: Enable expression language on 
AWSCredentialsProviderControllerService properties

Signed-off-by: James Wing <[email protected]>

This closes #2344.


Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/9217e2fc
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/9217e2fc
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/9217e2fc

Branch: refs/heads/master
Commit: 9217e2fc6386e3d9ce665a183b6c0127ead67baf
Parents: 463dcd8
Author: Marco Gaido <[email protected]>
Authored: Fri Dec 15 11:06:13 2017 +0100
Committer: James Wing <[email protected]>
Committed: Sun Dec 17 12:51:34 2017 -0800

----------------------------------------------------------------------
 ...AWSCredentialsProviderControllerService.java |  8 +++-
 ...redentialsProviderControllerServiceTest.java | 43 +++++++++++++++-----
 2 files changed, 39 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/9217e2fc/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/credentials/provider/service/AWSCredentialsProviderControllerService.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/credentials/provider/service/AWSCredentialsProviderControllerService.java
 
b/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/credentials/provider/service/AWSCredentialsProviderControllerService.java
index 189dac5..a5f4e04 100644
--- 
a/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/credentials/provider/service/AWSCredentialsProviderControllerService.java
+++ 
b/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/credentials/provider/service/AWSCredentialsProviderControllerService.java
@@ -105,7 +105,13 @@ public class AWSCredentialsProviderControllerService 
extends AbstractControllerS
     @OnEnabled
     public void onConfigured(final ConfigurationContext context) throws 
InitializationException {
         final Map<PropertyDescriptor, String> properties = 
context.getProperties();
-        credentialsProvider = 
credentialsProviderFactory.getCredentialsProvider(context.getProperties());
+        properties.keySet().forEach(propertyDescriptor -> {
+            if (propertyDescriptor.isExpressionLanguageSupported()) {
+                properties.put(propertyDescriptor,
+                        
context.getProperty(propertyDescriptor).evaluateAttributeExpressions().getValue());
+            }
+        });
+        credentialsProvider = 
credentialsProviderFactory.getCredentialsProvider(properties);
         getLogger().debug("Using credentials provider: " + 
credentialsProvider.getClass());
     }
 

http://git-wip-us.apache.org/repos/asf/nifi/blob/9217e2fc/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/credentials/provider/service/AWSCredentialsProviderControllerServiceTest.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/credentials/provider/service/AWSCredentialsProviderControllerServiceTest.java
 
b/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/credentials/provider/service/AWSCredentialsProviderControllerServiceTest.java
index 63c3ce9..86c4154 100644
--- 
a/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/credentials/provider/service/AWSCredentialsProviderControllerServiceTest.java
+++ 
b/nifi-nar-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/credentials/provider/service/AWSCredentialsProviderControllerServiceTest.java
@@ -19,6 +19,7 @@ package 
org.apache.nifi.processors.aws.credentials.provider.service;
 import static org.junit.Assert.assertEquals;
 
 import org.apache.nifi.processors.aws.AbstractAWSProcessor;
+import 
org.apache.nifi.processors.aws.credentials.provider.factory.CredentialPropertyDescriptors;
 import org.apache.nifi.processors.aws.s3.FetchS3Object;
 import org.apache.nifi.util.TestRunner;
 import org.apache.nifi.util.TestRunners;
@@ -222,7 +223,7 @@ public class AWSCredentialsProviderControllerServiceTest {
         final TestRunner runner = 
TestRunners.newTestRunner(FetchS3Object.class);
         final AWSCredentialsProviderControllerService serviceImpl = new 
AWSCredentialsProviderControllerService();
         runner.addControllerService("awsCredentialsProvider", serviceImpl);
-        runner.setProperty(serviceImpl, AbstractAWSProcessor.CREDENTIALS_FILE,
+        runner.setProperty(serviceImpl, 
CredentialPropertyDescriptors.CREDENTIALS_FILE,
                 "src/test/resources/mock-aws-credentials.properties");
         runner.enableControllerService(serviceImpl);
 
@@ -241,7 +242,7 @@ public class AWSCredentialsProviderControllerServiceTest {
         final TestRunner runner = 
TestRunners.newTestRunner(FetchS3Object.class);
         final AWSCredentialsProviderControllerService serviceImpl = new 
AWSCredentialsProviderControllerService();
         runner.addControllerService("awsCredentialsProvider", serviceImpl);
-        runner.setProperty(serviceImpl, AbstractAWSProcessor.CREDENTIALS_FILE,
+        runner.setProperty(serviceImpl, 
CredentialPropertyDescriptors.CREDENTIALS_FILE,
                 "src/test/resources/bad-mock-aws-credentials.properties");
         runner.enableControllerService(serviceImpl);
 
@@ -253,10 +254,10 @@ public class AWSCredentialsProviderControllerServiceTest {
         final TestRunner runner = 
TestRunners.newTestRunner(FetchS3Object.class);
         final AWSCredentialsProviderControllerService serviceImpl = new 
AWSCredentialsProviderControllerService();
         runner.addControllerService("awsCredentialsProvider", serviceImpl);
-        runner.setProperty(serviceImpl, AbstractAWSProcessor.CREDENTIALS_FILE,
+        runner.setProperty(serviceImpl, 
CredentialPropertyDescriptors.CREDENTIALS_FILE,
                 "src/test/resources/mock-aws-credentials.properties");
-        runner.setProperty(serviceImpl, AbstractAWSProcessor.ACCESS_KEY, 
"awsAccessKey");
-        runner.setProperty(serviceImpl, AbstractAWSProcessor.SECRET_KEY, 
"awsSecretKey");
+        runner.setProperty(serviceImpl, 
CredentialPropertyDescriptors.ACCESS_KEY, "awsAccessKey");
+        runner.setProperty(serviceImpl, 
CredentialPropertyDescriptors.SECRET_KEY, "awsSecretKey");
         runner.enableControllerService(serviceImpl);
 
         runner.assertNotValid(serviceImpl);
@@ -267,9 +268,9 @@ public class AWSCredentialsProviderControllerServiceTest {
         final TestRunner runner = 
TestRunners.newTestRunner(FetchS3Object.class);
         final AWSCredentialsProviderControllerService serviceImpl = new 
AWSCredentialsProviderControllerService();
         runner.addControllerService("awsCredentialsProvider", serviceImpl);
-        runner.setProperty(serviceImpl, AbstractAWSProcessor.CREDENTIALS_FILE,
+        runner.setProperty(serviceImpl, 
CredentialPropertyDescriptors.CREDENTIALS_FILE,
                 "src/test/resources/mock-aws-credentials.properties");
-        runner.setProperty(serviceImpl, AbstractAWSProcessor.ACCESS_KEY, 
"awsAccessKey");
+        runner.setProperty(serviceImpl, 
CredentialPropertyDescriptors.ACCESS_KEY, "awsAccessKey");
         runner.enableControllerService(serviceImpl);
 
         runner.assertNotValid(serviceImpl);
@@ -280,9 +281,9 @@ public class AWSCredentialsProviderControllerServiceTest {
         final TestRunner runner = 
TestRunners.newTestRunner(FetchS3Object.class);
         final AWSCredentialsProviderControllerService serviceImpl = new 
AWSCredentialsProviderControllerService();
         runner.addControllerService("awsCredentialsProvider", serviceImpl);
-        runner.setProperty(serviceImpl, AbstractAWSProcessor.CREDENTIALS_FILE,
+        runner.setProperty(serviceImpl, 
CredentialPropertyDescriptors.CREDENTIALS_FILE,
                 "src/test/resources/mock-aws-credentials.properties");
-        runner.setProperty(serviceImpl, AbstractAWSProcessor.SECRET_KEY, 
"awsSecretKey");
+        runner.setProperty(serviceImpl, 
CredentialPropertyDescriptors.SECRET_KEY, "awsSecretKey");
         runner.enableControllerService(serviceImpl);
 
         runner.assertNotValid(serviceImpl);
@@ -293,7 +294,7 @@ public class AWSCredentialsProviderControllerServiceTest {
         final TestRunner runner = 
TestRunners.newTestRunner(FetchS3Object.class);
         final AWSCredentialsProviderControllerService serviceImpl = new 
AWSCredentialsProviderControllerService();
         runner.addControllerService("awsCredentialsProvider", serviceImpl);
-        runner.setProperty(serviceImpl, AbstractAWSProcessor.ACCESS_KEY, 
"awsAccessKey");
+        runner.setProperty(serviceImpl, 
CredentialPropertyDescriptors.ACCESS_KEY, "awsAccessKey");
         runner.enableControllerService(serviceImpl);
 
         runner.assertNotValid(serviceImpl);
@@ -304,9 +305,29 @@ public class AWSCredentialsProviderControllerServiceTest {
         final TestRunner runner = 
TestRunners.newTestRunner(FetchS3Object.class);
         final AWSCredentialsProviderControllerService serviceImpl = new 
AWSCredentialsProviderControllerService();
         runner.addControllerService("awsCredentialsProvider", serviceImpl);
-        runner.setProperty(serviceImpl, AbstractAWSProcessor.SECRET_KEY, 
"awsSecretKey");
+        runner.setProperty(serviceImpl, 
CredentialPropertyDescriptors.SECRET_KEY, "awsSecretKey");
         runner.enableControllerService(serviceImpl);
 
         runner.assertNotValid(serviceImpl);
     }
+
+    @Test
+    public void testExpressionLanguageSupport() throws Throwable {
+        final TestRunner runner = 
TestRunners.newTestRunner(FetchS3Object.class);
+        final AWSCredentialsProviderControllerService serviceImpl = new 
AWSCredentialsProviderControllerService();
+        runner.addControllerService("awsCredentialsProvider", serviceImpl);
+        runner.setProperty(serviceImpl, 
CredentialPropertyDescriptors.ACCESS_KEY, "${literal(\"awsAccessKey\")}");
+        runner.setProperty(serviceImpl, 
CredentialPropertyDescriptors.SECRET_KEY, "${literal(\"awsSecretKey\")}");
+        runner.enableControllerService(serviceImpl);
+
+        runner.assertValid(serviceImpl);
+
+        final AWSCredentialsProviderService service = 
(AWSCredentialsProviderService) runner.getProcessContext()
+                
.getControllerServiceLookup().getControllerService("awsCredentialsProvider");
+
+        assertEquals("Expression language should be supported for " + 
CredentialPropertyDescriptors.ACCESS_KEY.getName(),
+                "awsAccessKey", 
service.getCredentialsProvider().getCredentials().getAWSAccessKeyId());
+        assertEquals("Expression language should be supported for " + 
CredentialPropertyDescriptors.SECRET_KEY.getName(),
+                "awsSecretKey", 
service.getCredentialsProvider().getCredentials().getAWSSecretKey());
+    }
 }

Reply via email to