activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From clebertsuco...@apache.org
Subject [activemq-artemis] branch master updated: [ARTEMIS-3004] RA connection properties are not propagated to XARecoveryConfig
Date Tue, 01 Dec 2020 14:52:55 GMT
This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/master by this push:
     new f546298  [ARTEMIS-3004] RA connection properties are not propagated to XARecoveryConfig
     new fd5c512  This closes #3353
f546298 is described below

commit f546298273812c1febafd1cb075f8f232ff418c3
Author: Bartosz Spyrko-Smietanko <bspyrkos@redhat.com>
AuthorDate: Thu Apr 9 16:39:35 2020 +0100

    [ARTEMIS-3004] RA connection properties are not propagated to XARecoveryConfig
---
 .../xa/recovery/ActiveMQXAResourceWrapper.java     |  1 +
 .../extensions/xa/recovery/XARecoveryConfig.java   | 15 +++++
 .../unit/ra/ActiveMQXAResourceWrapperTest.java     | 78 ++++++++++++++++++++++
 3 files changed, 94 insertions(+)

diff --git a/artemis-service-extensions/src/main/java/org/apache/activemq/artemis/service/extensions/xa/recovery/ActiveMQXAResourceWrapper.java
b/artemis-service-extensions/src/main/java/org/apache/activemq/artemis/service/extensions/xa/recovery/ActiveMQXAResourceWrapper.java
index 5ebb5c1..e11b388 100644
--- a/artemis-service-extensions/src/main/java/org/apache/activemq/artemis/service/extensions/xa/recovery/ActiveMQXAResourceWrapper.java
+++ b/artemis-service-extensions/src/main/java/org/apache/activemq/artemis/service/extensions/xa/recovery/ActiveMQXAResourceWrapper.java
@@ -306,6 +306,7 @@ public class ActiveMQXAResourceWrapper implements XAResource, SessionFailureList
             } else {
                serverLocator = ActiveMQClient.createServerLocator(false, xaRecoveryConfig.getTransportConfig());
             }
+            serverLocator.setLocatorConfig(xaRecoveryConfig.getLocatorConfig());
             serverLocator.disableFinalizeCheck();
             serverLocator.setProtocolManagerFactory(xaRecoveryConfig.getClientProtocolManager());
             csf = serverLocator.createSessionFactory();
diff --git a/artemis-service-extensions/src/main/java/org/apache/activemq/artemis/service/extensions/xa/recovery/XARecoveryConfig.java
b/artemis-service-extensions/src/main/java/org/apache/activemq/artemis/service/extensions/xa/recovery/XARecoveryConfig.java
index 3da77de..f10dfc3 100644
--- a/artemis-service-extensions/src/main/java/org/apache/activemq/artemis/service/extensions/xa/recovery/XARecoveryConfig.java
+++ b/artemis-service-extensions/src/main/java/org/apache/activemq/artemis/service/extensions/xa/recovery/XARecoveryConfig.java
@@ -60,6 +60,16 @@ public class XARecoveryConfig {
                            final String password,
                            final Map<String, String> properties,
                            final ClientProtocolManagerFactory clientProtocolManager) {
+      this(ha, transportConfiguration, username, password, properties, clientProtocolManager,
null);
+   }
+
+   public XARecoveryConfig(final boolean ha,
+                           final TransportConfiguration[] transportConfiguration,
+                           final String username,
+                           final String password,
+                           final Map<String, String> properties,
+                           final ClientProtocolManagerFactory clientProtocolManager,
+                           ServerLocatorConfig locatorConfig) {
       TransportConfiguration[] newTransportConfiguration = new TransportConfiguration[transportConfiguration.length];
       for (int i = 0; i < transportConfiguration.length; i++) {
          if (clientProtocolManager != null) {
@@ -76,6 +86,7 @@ public class XARecoveryConfig {
       this.ha = ha;
       this.properties = properties == null ? new HashMap<>() : properties;
       this.clientProtocolManager = clientProtocolManager;
+      this.locatorConfig = locatorConfig;
    }
 
    public XARecoveryConfig(final boolean ha,
@@ -187,6 +198,10 @@ public class XARecoveryConfig {
       return serverLocator;
    }
 
+   public ServerLocatorConfig getLocatorConfig() {
+      return locatorConfig;
+   }
+
    @Override
    public int hashCode() {
       final int prime = 31;
diff --git a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/ra/ActiveMQXAResourceWrapperTest.java
b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/ra/ActiveMQXAResourceWrapperTest.java
new file mode 100644
index 0000000..f344c2c
--- /dev/null
+++ b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/ra/ActiveMQXAResourceWrapperTest.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.activemq.artemis.tests.unit.ra;
+
+import org.apache.activemq.artemis.api.core.client.ClientSession;
+import org.apache.activemq.artemis.core.server.ActiveMQServer;
+import org.apache.activemq.artemis.ra.ActiveMQResourceAdapter;
+import org.apache.activemq.artemis.service.extensions.xa.recovery.ActiveMQXAResourceWrapper;
+import org.apache.activemq.artemis.service.extensions.xa.recovery.XARecoveryConfig;
+import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
+import org.junit.Test;
+
+import javax.transaction.xa.XAResource;
+
+public class ActiveMQXAResourceWrapperTest extends ActiveMQTestBase {
+
+   @Test
+   public void testMe() throws Exception {
+      ActiveMQServer server = createServer(false, true);
+      ActiveMQResourceAdapter ra = null;
+      ClientSession cs = null;
+
+      try {
+         server.getConfiguration().setSecurityEnabled(false);
+         server.start();
+
+         ra = new ActiveMQResourceAdapter();
+
+         ra.setConnectorClassName(NETTY_CONNECTOR_FACTORY);
+         ra.setConnectionTTL(4000L);
+         ra.start(new BootstrapContext());
+
+
+         TestActiveMQXAResourceWrapper wrapper = new TestActiveMQXAResourceWrapper(ra.getRecoveryManager().getResources().toArray(new
XARecoveryConfig[]{}));
+
+         XAResource res = wrapper.connect();
+         if (!(res instanceof ClientSession)) {
+            fail("Unexpected XAResource type");
+         }
+         cs = (ClientSession) res;
+         assertEquals(4000L, cs.getSessionFactory().getServerLocator().getConnectionTTL());
+
+      } finally {
+         if (cs != null)
+            cs.close();
+         if (ra != null)
+            ra.stop();
+         server.stop();
+      }
+   }
+
+   class TestActiveMQXAResourceWrapper extends ActiveMQXAResourceWrapper {
+
+      TestActiveMQXAResourceWrapper(XARecoveryConfig[] configs) {
+         super(configs);
+      }
+
+      @Override
+      protected XAResource connect() throws Exception {
+         return super.connect();
+      }
+   }
+}


Mime
View raw message