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

clebertsuconic 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 52a4157bbb [ARTEMIS-3756]: Enabling extra parameters to be passed by 
the URI.
     new db9d31d4ff This closes #4009
52a4157bbb is described below

commit 52a4157bbb898ee8fd8d7f13fffca71a9c368630
Author: Emmanuel Hugonnet <[email protected]>
AuthorDate: Thu Apr 7 17:10:31 2022 +0200

    [ARTEMIS-3756]: Enabling extra parameters to be passed by the URI.
    
     * passing the full list of parameters when creating the URI.
     * moving the WARN message to DEBUG when unknown parameters are
       received.
    
    Jira: https://issues.apache.org/jira/browse/ARTEMIS-3756
---
 .../artemis/core/client/ActiveMQClientLogger.java    |  5 -----
 .../core/client/impl/ClientSessionFactoryImpl.java   |  4 ++--
 .../core/impl/BackwardsCompatibilityUtils.java       |  2 +-
 .../schema/serverLocator/TCPServerLocatorSchema.java |  4 ++--
 .../org/apache/activemq/artemis/uri/TCPSchema.java   |  6 ++++--
 .../core/protocol/core/impl/CoreProtocolManager.java | 10 ++++++++--
 .../server/impl/BackupActivationNoReconnectTest.java |  2 +-
 tests/config/logging.properties                      |  3 ++-
 .../tests/integration/jms/SimpleJNDIClientTest.java  | 20 ++++++++++++++++----
 9 files changed, 36 insertions(+), 20 deletions(-)

diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/ActiveMQClientLogger.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/ActiveMQClientLogger.java
index b172942f4b..e476dcb20a 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/ActiveMQClientLogger.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/ActiveMQClientLogger.java
@@ -425,11 +425,6 @@ public interface ActiveMQClientLogger extends BasicLogger {
            format = Message.Format.MESSAGE_FORMAT)
    void broadcastTimeout(int retry, int maxretry);
 
-   @LogMessage(level = Logger.Level.WARN)
-   @Message(id = 212078, value = "Connection factory parameter ignored {0}",
-      format = Message.Format.MESSAGE_FORMAT)
-   void connectionFactoryParameterIgnored(String parameterName);
-
    @LogMessage(level = Logger.Level.WARN)
    @Message(id = 212079, value = "The upstream connector from the downstream 
federation will ignore url parameter {0}", format = 
Message.Format.MESSAGE_FORMAT)
    void ignoredParameterForDownstreamFederation(String name);
diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionFactoryImpl.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionFactoryImpl.java
index be4a9cfb93..a8c81e5258 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionFactoryImpl.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionFactoryImpl.java
@@ -279,7 +279,7 @@ public class ClientSessionFactoryImpl implements 
ClientSessionFactoryInternal, C
       // to create a connector just to validate if the parameters are ok.
       // so this will create the instance to be used on the isEquivalent check
       if (localConnector == null) {
-         localConnector = 
connectorFactory.createConnector(currentConnectorConfig.getParams(), new 
DelegatingBufferHandler(), this, closeExecutor, threadPool, 
scheduledThreadPool, clientProtocolManager);
+         localConnector = 
connectorFactory.createConnector(currentConnectorConfig.getCombinedParams(), 
new DelegatingBufferHandler(), this, closeExecutor, threadPool, 
scheduledThreadPool, clientProtocolManager);
       }
 
       if (localConnector.isEquivalent(live.getParams()) && backUp != null && 
!localConnector.isEquivalent(backUp.getParams())
@@ -1127,7 +1127,7 @@ public class ClientSessionFactoryImpl implements 
ClientSessionFactoryInternal, C
    }
 
    protected Connector createConnector(ConnectorFactory connectorFactory, 
TransportConfiguration configuration) {
-      Connector connector = 
connectorFactory.createConnector(configuration.getParams(), new 
DelegatingBufferHandler(), this, closeExecutor, threadPool, 
scheduledThreadPool, clientProtocolManager);
+      Connector connector = 
connectorFactory.createConnector(configuration.getCombinedParams(), new 
DelegatingBufferHandler(), this, closeExecutor, threadPool, 
scheduledThreadPool, clientProtocolManager);
       if (connector instanceof NettyConnector) {
          NettyConnector nettyConnector = (NettyConnector) connector;
          if (nettyConnector.getConnectTimeoutMillis() < 0) {
diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/BackwardsCompatibilityUtils.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/BackwardsCompatibilityUtils.java
index 1dec42c254..35a0bb3cfd 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/BackwardsCompatibilityUtils.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/BackwardsCompatibilityUtils.java
@@ -174,7 +174,7 @@ public class BackwardsCompatibilityUtils {
    private static TransportConfiguration 
convertTransport(TransportConfiguration tc) {
       if (tc != null) {
          String className = 
tc.getFactoryClassName().replace("org.apache.activemq.artemis", 
"org.hornetq").replace("ActiveMQ", "HornetQ");
-         return new TransportConfiguration(className, 
convertParameters(tc.getParams()), tc.getName());
+         return new TransportConfiguration(className, 
convertParameters(tc.getParams()), tc.getName(), 
convertParameters(tc.getExtraParams()));
       }
       return tc;
    }
diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/TCPServerLocatorSchema.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/TCPServerLocatorSchema.java
index b7b6c41c01..48a141f676 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/TCPServerLocatorSchema.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/uri/schema/serverLocator/TCPServerLocatorSchema.java
@@ -66,7 +66,7 @@ public class TCPServerLocatorSchema extends 
AbstractServerLocatorSchema {
       StringBuilder fragment = new StringBuilder();
       for (int i = 1; i < staticConnectors.length; i++) {
          TransportConfiguration connector = staticConnectors[i];
-         Map<String, Object> params = escapeIPv6Host(connector.getParams());
+         Map<String, Object> params = 
escapeIPv6Host(connector.getCombinedParams());
          URI extraUri = new URI(SchemaConstants.TCP, null, getHost(params), 
getPort(params), null, createQuery(params, null), null);
          if (i > 1) {
             fragment.append(",");
@@ -74,7 +74,7 @@ public class TCPServerLocatorSchema extends 
AbstractServerLocatorSchema {
          fragment.append(extraUri.toASCIIString());
 
       }
-      Map<String, Object> params = 
escapeIPv6Host(staticConnectors[0].getParams());
+      Map<String, Object> params = 
escapeIPv6Host(staticConnectors[0].getCombinedParams());
       return new URI(SchemaConstants.TCP, null, getHost(params), 
getPort(params), null, createQuery(params, query), fragment.toString());
    }
 
diff --git 
a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/TCPSchema.java
 
b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/TCPSchema.java
index f97da986bd..e8cb8ea792 100644
--- 
a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/TCPSchema.java
+++ 
b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/TCPSchema.java
@@ -23,7 +23,6 @@ import java.util.Properties;
 
 import org.apache.activemq.artemis.api.core.TransportConfiguration;
 import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
-import org.apache.activemq.artemis.core.client.ActiveMQClientLogger;
 import 
org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory;
 import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants;
 import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
@@ -31,9 +30,12 @@ import 
org.apache.activemq.artemis.uri.schema.connector.TCPTransportConfiguratio
 import 
org.apache.activemq.artemis.uri.schema.serverLocator.TCPServerLocatorSchema;
 import org.apache.activemq.artemis.utils.uri.BeanSupport;
 import org.apache.activemq.artemis.utils.uri.SchemaConstants;
+import org.jboss.logging.Logger;
 
 public class TCPSchema extends AbstractCFSchema {
 
+   private static final Logger logger = Logger.getLogger(TCPSchema.class);
+
    @Override
    public String getSchemaName() {
       return SchemaConstants.TCP;
@@ -83,7 +85,7 @@ public class TCPSchema extends AbstractCFSchema {
          if (!key.equals("ha") && !key.equals("type") &&
             !TransportConstants.ALLOWABLE_CONNECTOR_KEYS.contains(key) &&
             !factoryProperties.containsKey(key)) {
-            ActiveMQClientLogger.LOGGER.connectionFactoryParameterIgnored(key);
+            logger.debugf("Connection factory parameter %s is not standard", 
key);
          }
       }
    }
diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreProtocolManager.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreProtocolManager.java
index 054faccb4f..d6ae6b8440 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreProtocolManager.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreProtocolManager.java
@@ -445,12 +445,18 @@ public class CoreProtocolManager implements 
ProtocolManager<Interceptor, ActiveM
             //Initialize the upstream transport with the config from the 
acceptor as this will apply
             //relevant settings such as SSL, then override with settings from 
the downstream config
             final Map<String, Object> params = new 
HashMap<>(acceptorUsed.getConfiguration());
-            params.putAll(upstreamConfig.getParams());
+            if (upstreamConfig.getParams() != null) {
+               params.putAll(upstreamConfig.getParams());
+            }
+            final Map<String, Object> extraParams = new HashMap<>();
+            if (upstreamConfig.getExtraParams() != null) {
+               extraParams.putAll(upstreamConfig.getExtraParams());
+            }
 
             //Add the new upstream configuration that was created so we can 
connect back to the downstream server
             final TransportConfiguration upstreamConf = new 
TransportConfiguration(
                upstreamConfig.getFactoryClassName(), params, 
upstreamConfig.getName() + FederationDownstreamConnectMessage.UPSTREAM_SUFFIX,
-               new HashMap<>());
+               extraParams);
             server.getConfiguration()
                .addConnectorConfiguration(upstreamConf.getName() + 
FederationDownstreamConnectMessage.UPSTREAM_SUFFIX, upstreamConf);
 
diff --git 
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/impl/BackupActivationNoReconnectTest.java
 
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/impl/BackupActivationNoReconnectTest.java
index d19f38e5fa..5a6a21117e 100644
--- 
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/impl/BackupActivationNoReconnectTest.java
+++ 
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/impl/BackupActivationNoReconnectTest.java
@@ -168,7 +168,7 @@ public class BackupActivationNoReconnectTest {
          
when(connectorConfig.getFactoryClassName()).thenReturn(NettyConnectorFactory.class.getName());
          Map<String, Object> urlParams = new HashMap<>();
          urlParams.put("port", serverSocket.getLocalPort());
-         when(connectorConfig.getParams()).thenReturn(urlParams);
+         when(connectorConfig.getCombinedParams()).thenReturn(urlParams);
          ClientSessionFactoryImpl sessionFactory = new 
ClientSessionFactoryImpl(serverLocator, connectorConfig, locatorConfig, 
reconnectAttempts, threadPool, scheduledThreadPool, null, null);
          when(clusterControl.getSessionFactory()).thenReturn(sessionFactory);
          when(clientProtocolManager.isAlive()).thenReturn(true);
diff --git a/tests/config/logging.properties b/tests/config/logging.properties
index 2742facd8d..6793dc1343 100644
--- a/tests/config/logging.properties
+++ b/tests/config/logging.properties
@@ -17,13 +17,14 @@
 
 # Additional logger names to configure (root logger is always configured)
 # Root logger option
-loggers=org.jboss.logging,org.apache.activemq.artemis.core.server,org.apache.activemq.artemis.utils,org.apache.activemq.artemis.core.journal,org.apache.activemq.artemis.jms,org.apache.activemq.artemis.ra,org.apache.activemq.artemis.tests.smoke,org.apache.activemq.artemis.tests.unit,org.apache.activemq.artemis.tests.integration,org.apache.activemq.artemis.jms.tests,org.apache.activemq.cli.test,org.apache.activemq.audit,org.apache.activemq.audit.message
+loggers=org.jboss.logging,org.apache.activemq.artemis.core.server,org.apache.activemq.artemis.utils,org.apache.activemq.artemis.core.journal,org.apache.activemq.artemis.core.client,org.apache.activemq.artemis.jms,org.apache.activemq.artemis.ra,org.apache.activemq.artemis.tests.smoke,org.apache.activemq.artemis.tests.unit,org.apache.activemq.artemis.tests.integration,org.apache.activemq.artemis.jms.tests,org.apache.activemq.cli.test,org.apache.activemq.audit,org.apache.activemq.audit.message
 
 # Root logger level
 logger.level=INFO
 # ActiveMQ Artemis logger levels
 logger.org.apache.activemq.artemis.core.server.level=INFO
 logger.org.apache.activemq.artemis.core.journal.level=INFO
+logger.org.apache.activemq.artemis.core.client.level=INFO
 logger.org.apache.activemq.artemis.utils.level=INFO
 logger.org.apache.activemq.artemis.jms.level=INFO
 logger.org.apache.activemq.artemis.ra.level=INFO
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/SimpleJNDIClientTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/SimpleJNDIClientTest.java
index 679de803f7..7f0bd43ce3 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/SimpleJNDIClientTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/SimpleJNDIClientTest.java
@@ -36,6 +36,7 @@ import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.logging.Level;
 
 import org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration;
 import org.apache.activemq.artemis.api.core.BroadcastEndpoint;
@@ -59,6 +60,7 @@ import 
org.apache.activemq.artemis.logs.AssertionLoggerHandler;
 import 
org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager;
 import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
 import org.apache.activemq.artemis.utils.Wait;
+import org.jboss.logmanager.LogManager;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -89,6 +91,7 @@ public class SimpleJNDIClientTest extends ActiveMQTestBase {
       ctx.lookup("TCPConnectionFactory");
       ctx.lookup("UDPConnectionFactory");
       ctx.lookup("JGroupsConnectionFactory");
+      ctx.close();
    }
 
    @Test
@@ -101,6 +104,7 @@ public class SimpleJNDIClientTest extends ActiveMQTestBase {
       ConnectionFactory connectionFactory = (ConnectionFactory) 
ctx.lookup("ConnectionFactory");
 
       connectionFactory.createConnection().close();
+      ctx.close();
    }
 
    @Test
@@ -111,22 +115,26 @@ public class SimpleJNDIClientTest extends 
ActiveMQTestBase {
 
       //IIB v10 assumes this property is mandatory and sets it to an empty 
string when not specified
       props.put("java.naming.provider.url", "");
-      new InitialContext(props);//Must not throw an exception
-
+      Context ctx = new InitialContext(props);//Must not throw an exception
+      ctx.close();
    }
 
    @Test
    public void testConnectionFactoryStringWithInvalidParameter() throws 
Exception {
+      Level initialLevel = 
LogManager.getLogManager().getLogger("org.apache.activemq.artemis.core.client").getLevel();
+      
LogManager.getLogManager().getLogger("org.apache.activemq.artemis.core.client").setLevel(Level.ALL);
       Hashtable<String, String> props = new Hashtable<>();
       props.put(Context.INITIAL_CONTEXT_FACTORY, 
"org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory");
       props.put("connectionFactory.ConnectionFactory", 
"tcp://localhost:61616?foo=too");
 
       AssertionLoggerHandler.startCapture();
       try {
-         new InitialContext(props);
-         assertTrue("Expected to find AMQ212078", 
AssertionLoggerHandler.findText("AMQ212078"));
+         Context ctx = new InitialContext(props);
+         ctx.close();
+         assertTrue("Connection factory parameter foo is not standard", 
AssertionLoggerHandler.findText("Connection factory parameter foo is not 
standard"));
       } finally {
          AssertionLoggerHandler.stopCapture();
+         
LogManager.getLogManager().getLogger("org.apache.activemq.artemis.core.client").setLevel(initialLevel);
       }
    }
 
@@ -267,6 +275,7 @@ public class SimpleJNDIClientTest extends ActiveMQTestBase {
       ConnectionFactory connectionFactory = (ConnectionFactory) 
ctx.lookup("myConnectionFactory");
 
       connectionFactory.createConnection().close();
+      ctx.close();
    }
 
    @Test
@@ -292,6 +301,7 @@ public class SimpleJNDIClientTest extends ActiveMQTestBase {
       Assert.assertNotEquals(1198, 
udpBroadcastEndpointFactory.getLocalBindPort());
       Assert.assertEquals(getUDPDiscoveryAddress(), 
udpBroadcastEndpointFactory.getGroupAddress());
       Assert.assertEquals(getUDPDiscoveryPort(), 
udpBroadcastEndpointFactory.getGroupPort());
+      ctx.close();
    }
 
    @Test
@@ -304,6 +314,7 @@ public class SimpleJNDIClientTest extends ActiveMQTestBase {
       ConnectionFactory connectionFactory = (ConnectionFactory) 
ctx.lookup("myConnectionFactory");
 
       connectionFactory.createConnection().close();
+      ctx.close();
    }
 
    @Test
@@ -379,6 +390,7 @@ public class SimpleJNDIClientTest extends ActiveMQTestBase {
       
Assert.assertEquals(parametersFromJNDI.get(ActiveMQDefaultConfiguration.getPropMaskPassword()),
 "myPropMaskPassword");
       
Assert.assertEquals(parametersFromJNDI.get(ActiveMQDefaultConfiguration.getPropPasswordCodec()),
 "myPropPasswordCodec");
       
Assert.assertEquals(parametersFromJNDI.get(TransportConstants.NETTY_CONNECT_TIMEOUT),
 "myNettyConnectTimeout");
+      ctx.close();
    }
 
    @Override

Reply via email to