From a223f1e71f809893cdb702380e929e5206512e0b Mon Sep 17 00:00:00 2001 From: exceptionfactory Date: Tue, 18 May 2021 08:58:23 -0500 Subject: [PATCH] NIFI-8614 Updated FileBasedClusterNodeFirewallFactoryBean to return default implementation - FileBasedClusterNodeFirewallFactoryBean returns PermitAllClusterNodeFirewall instead of null to avoid having the Spring Framework return a NullBean in Spring Framework 5 Signed-off-by: Matthew Burgess This closes #5082 --- ...leBasedClusterNodeFirewallFactoryBean.java | 23 ++++-- ...sedClusterNodeFirewallFactoryBeanTest.java | 73 +++++++++++++++++++ 2 files changed, 90 insertions(+), 6 deletions(-) create mode 100644 nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/test/java/org/apache/nifi/cluster/firewall/impl/FileBasedClusterNodeFirewallFactoryBeanTest.java diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/spring/FileBasedClusterNodeFirewallFactoryBean.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/spring/FileBasedClusterNodeFirewallFactoryBean.java index 3e76de6aca..f16b88d168 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/spring/FileBasedClusterNodeFirewallFactoryBean.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/spring/FileBasedClusterNodeFirewallFactoryBean.java @@ -18,6 +18,7 @@ package org.apache.nifi.cluster.spring; import java.io.File; +import org.apache.nifi.cluster.firewall.ClusterNodeFirewall; import org.apache.nifi.cluster.firewall.impl.FileBasedClusterNodeFirewall; import org.apache.nifi.util.NiFiProperties; import org.springframework.beans.factory.FactoryBean; @@ -25,18 +26,20 @@ import org.springframework.beans.factory.FactoryBean; /** * Factory bean for creating a singleton FileBasedClusterNodeFirewall instance. */ -public class FileBasedClusterNodeFirewallFactoryBean implements FactoryBean { +public class FileBasedClusterNodeFirewallFactoryBean implements FactoryBean { - private FileBasedClusterNodeFirewall firewall; + private ClusterNodeFirewall firewall; private NiFiProperties properties; @Override - public FileBasedClusterNodeFirewall getObject() throws Exception { + public ClusterNodeFirewall getObject() throws Exception { if (firewall == null) { final File config = properties.getClusterNodeFirewallFile(); final File restoreDirectory = properties.getRestoreDirectory(); - if (config != null) { + if (config == null) { + firewall = new PermitAllClusterNodeFirewall(); + } else { firewall = new FileBasedClusterNodeFirewall(config, restoreDirectory); } } @@ -44,8 +47,8 @@ public class FileBasedClusterNodeFirewallFactoryBean implements FactoryBean getObjectType() { - return FileBasedClusterNodeFirewall.class; + public Class getObjectType() { + return ClusterNodeFirewall.class; } @Override @@ -56,4 +59,12 @@ public class FileBasedClusterNodeFirewallFactoryBean implements FactoryBean objectType = factoryBean.getObjectType(); + assertEquals(ClusterNodeFirewall.class, objectType); + } + + @Test + public void testGetObjectClusterNodeFirewallFileNotConfigured() throws Exception { + final ClusterNodeFirewall clusterNodeFirewall = factoryBean.getObject(); + assertNotNull(clusterNodeFirewall); + } + + @Test + public void testGetObjectClusterNodeFirewallFileConfigured() throws Exception { + final File firewallProperties = File.createTempFile(FileBasedClusterNodeFirewallFactoryBeanTest.class.getName(), PROPERTIES_SUFFIX); + firewallProperties.deleteOnExit(); + + final Map beanProperties = new HashMap<>(); + beanProperties.put(NiFiProperties.CLUSTER_FIREWALL_FILE, firewallProperties.getAbsolutePath()); + properties = NiFiProperties.createBasicNiFiProperties(StringUtils.EMPTY, beanProperties); + factoryBean.setProperties(properties); + + final ClusterNodeFirewall clusterNodeFirewall = factoryBean.getObject(); + assertNotNull(clusterNodeFirewall); + assertEquals(FileBasedClusterNodeFirewall.class, clusterNodeFirewall.getClass()); + } +}