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

brusdev pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/main by this push:
     new 6ebd390330 ARTEMIS-4587 Config security setting plugins by using 
broker properties
6ebd390330 is described below

commit 6ebd390330a806b0d5eb09e657dd670eff17d142
Author: Domenico Francesco Bruscino <brus...@apache.org>
AuthorDate: Tue Jan 30 11:07:09 2024 +0100

    ARTEMIS-4587 Config security setting plugins by using broker properties
---
 .../artemis/core/server/SecuritySettingPlugin.java |  4 +++
 .../core/config/impl/ConfigurationImplTest.java    | 29 ++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/SecuritySettingPlugin.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/SecuritySettingPlugin.java
index 5d62c31662..5a287d3176 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/SecuritySettingPlugin.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/SecuritySettingPlugin.java
@@ -25,6 +25,10 @@ import 
org.apache.activemq.artemis.core.settings.HierarchicalRepository;
 
 public interface SecuritySettingPlugin extends Serializable {
 
+   default void setInit(Map<String, String> props) {
+      init(props);
+   }
+
    /**
     * Initialize the plugin with the given configuration options. This method 
is called by the broker when the file-based
     * configuration is read (see {@code 
org.apache.activemq.artemis.core.deployers.impl.FileConfigurationParser#parseSecurity(org.w3c.dom.Element,
 org.apache.activemq.artemis.core.config.Configuration)}.
diff --git 
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImplTest.java
 
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImplTest.java
index 7f919af353..2e17ecc1e6 100644
--- 
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImplTest.java
+++ 
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImplTest.java
@@ -66,6 +66,7 @@ import org.apache.activemq.artemis.core.security.Role;
 import 
org.apache.activemq.artemis.core.server.ComponentConfigurationRoutingType;
 import org.apache.activemq.artemis.core.server.JournalType;
 import 
org.apache.activemq.artemis.core.server.cluster.impl.MessageLoadBalancingType;
+import 
org.apache.activemq.artemis.core.server.impl.LegacyLDAPSecuritySettingPlugin;
 import 
org.apache.activemq.artemis.core.server.plugin.impl.LoggingActiveMQServerPlugin;
 import org.apache.activemq.artemis.core.server.routing.KeyType;
 import 
org.apache.activemq.artemis.core.server.routing.policies.ConsistentHashModuloPolicy;
@@ -2184,6 +2185,34 @@ public class ConfigurationImplTest extends 
ServerTestBase {
       Assert.assertTrue(configuration.getStatus().contains("LOG_ALL_EVENTS"));
    }
 
+   @Test
+   public void testSecuritySettingPluginFromBrokerProperties() throws 
Exception {
+
+      final ConfigurationImpl configuration = new ConfigurationImpl();
+
+      Properties insertionOrderedProperties = new 
ConfigurationImpl.InsertionOrderedProperties();
+      
insertionOrderedProperties.put("securitySettingPlugins.\"org.apache.activemq.artemis.core.server.impl.LegacyLDAPSecuritySettingPlugin.class\".init",
 
"initialContextFactory=com.sun.jndi.ldap.LdapCtxFactory,connectionURL=ldap://localhost:1024";);
+
+      configuration.parsePrefixedProperties(insertionOrderedProperties, null);
+
+      Assert.assertEquals(1, configuration.getSecuritySettingPlugins().size());
+      Assert.assertEquals("com.sun.jndi.ldap.LdapCtxFactory", 
((LegacyLDAPSecuritySettingPlugin)(configuration.getSecuritySettingPlugins().get(0))).getInitialContextFactory());
+      Assert.assertEquals("ldap://localhost:1024";, 
((LegacyLDAPSecuritySettingPlugin)(configuration.getSecuritySettingPlugins().get(0))).getConnectionURL());
+
+      Assert.assertTrue(configuration.getStatus().contains("\"errors\":[]"));
+
+      // verify invalid map errors out
+      insertionOrderedProperties = new 
ConfigurationImpl.InsertionOrderedProperties();
+
+      // possible to change any attribute, but plugins only registered on start
+      
insertionOrderedProperties.put("securitySettingPlugins.\"org.apache.activemq.artemis.core.server.impl.LegacyLDAPSecuritySettingPlugin.class\".init",
 "initialContextFactory");
+
+      configuration.parsePrefixedProperties(insertionOrderedProperties, null);
+
+      Assert.assertFalse(configuration.getStatus().contains("\"errors\":[]"));
+      
Assert.assertTrue(configuration.getStatus().contains("initialContextFactory"));
+   }
+
    /**
     * To test ARTEMIS-926
     * @throws Throwable

Reply via email to