You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ex...@apache.org on 2026/02/13 20:36:15 UTC
(nifi) branch main updated: NIFI-15584 Fixed NPE in DBCPConnectionPool for Dynamic Properties with Null Value (#10888)
This is an automated email from the ASF dual-hosted git repository.
exceptionfactory 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 a1c2855c0a NIFI-15584 Fixed NPE in DBCPConnectionPool for Dynamic Properties with Null Value (#10888)
a1c2855c0a is described below
commit a1c2855c0a4a7548cafac5c6d8b76107ddbf424d
Author: apanczyk <56...@users.noreply.github.com>
AuthorDate: Fri Feb 13 21:36:09 2026 +0100
NIFI-15584 Fixed NPE in DBCPConnectionPool for Dynamic Properties with Null Value (#10888)
Signed-off-by: David Handermann <ex...@apache.org>
---
.../org/apache/nifi/dbcp/DBCPConnectionPool.java | 1 +
.../java/org/apache/nifi/dbcp/DBCPServiceTest.java | 31 ++++++++++++++++++++++
2 files changed, 32 insertions(+)
diff --git a/nifi-extension-bundles/nifi-standard-services/nifi-dbcp-service-bundle/nifi-dbcp-service/src/main/java/org/apache/nifi/dbcp/DBCPConnectionPool.java b/nifi-extension-bundles/nifi-standard-services/nifi-dbcp-service-bundle/nifi-dbcp-service/src/main/java/org/apache/nifi/dbcp/DBCPConnectionPool.java
index 990f6c1c19..f6c8176e18 100644
--- a/nifi-extension-bundles/nifi-standard-services/nifi-dbcp-service-bundle/nifi-dbcp-service/src/main/java/org/apache/nifi/dbcp/DBCPConnectionPool.java
+++ b/nifi-extension-bundles/nifi-standard-services/nifi-dbcp-service-bundle/nifi-dbcp-service/src/main/java/org/apache/nifi/dbcp/DBCPConnectionPool.java
@@ -223,6 +223,7 @@ public class DBCPConnectionPool extends AbstractDBCPConnectionPool implements DB
return new AbstractMap.SimpleEntry<>(descriptor.getName(), propertyValue.evaluateAttributeExpressions().getValue());
}
})
+ .filter(entry -> entry.getValue() != null)
.collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue));
}
diff --git a/nifi-extension-bundles/nifi-standard-services/nifi-dbcp-service-bundle/nifi-dbcp-service/src/test/java/org/apache/nifi/dbcp/DBCPServiceTest.java b/nifi-extension-bundles/nifi-standard-services/nifi-dbcp-service-bundle/nifi-dbcp-service/src/test/java/org/apache/nifi/dbcp/DBCPServiceTest.java
index a1a108cfea..565ff50dc4 100644
--- a/nifi-extension-bundles/nifi-standard-services/nifi-dbcp-service-bundle/nifi-dbcp-service/src/test/java/org/apache/nifi/dbcp/DBCPServiceTest.java
+++ b/nifi-extension-bundles/nifi-standard-services/nifi-dbcp-service-bundle/nifi-dbcp-service/src/test/java/org/apache/nifi/dbcp/DBCPServiceTest.java
@@ -17,10 +17,14 @@
package org.apache.nifi.dbcp;
import org.apache.nifi.components.ConfigVerificationResult;
+import org.apache.nifi.components.PropertyDescriptor;
import org.apache.nifi.components.ValidationResult;
import org.apache.nifi.dbcp.utils.DBCPProperties;
+import org.apache.nifi.expression.ExpressionLanguageScope;
import org.apache.nifi.processor.exception.ProcessException;
+import org.apache.nifi.processor.util.StandardValidators;
import org.apache.nifi.reporting.InitializationException;
+import org.apache.nifi.util.MockConfigurationContext;
import org.apache.nifi.util.MockPropertyConfiguration;
import org.apache.nifi.util.NoOpProcessor;
import org.apache.nifi.util.PropertyMigrationResult;
@@ -42,6 +46,7 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.Collection;
import java.util.Collections;
+import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
@@ -122,6 +127,32 @@ public class DBCPServiceTest {
assertTrue(e.getMessage().contains("Duplicate"));
}
+ @Test
+ public void testGetConnectionPropertiesWithNullDynamicPropertyValue() {
+ final PropertyDescriptor dynamicProperty = new PropertyDescriptor.Builder()
+ .name("nullProperty")
+ .dynamic(true)
+ .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+ .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
+ .build();
+ final PropertyDescriptor sensitiveDynamicProperty = new PropertyDescriptor.Builder()
+ .name("SENSITIVE.nullProperty")
+ .dynamic(true)
+ .sensitive(true)
+ .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+ .expressionLanguageSupported(ExpressionLanguageScope.NONE)
+ .build();
+
+ final Map<PropertyDescriptor, String> properties = new LinkedHashMap<>();
+ properties.put(dynamicProperty, null);
+ properties.put(sensitiveDynamicProperty, null);
+
+ final MockConfigurationContext configurationContext = new MockConfigurationContext(service, properties, null, Map.of());
+ final Map<String, String> connectionProperties = service.getConnectionProperties(configurationContext);
+
+ assertTrue(connectionProperties.isEmpty());
+ }
+
@Test
public void testGetConnectionExecuteStatements() throws SQLException {
runner.enableControllerService(service);