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 bb1e7e16de ARTEMIS-5561 - console upgrade bb1e7e16de is described below commit bb1e7e16de2071cba65f4d6e41fc48137fc75fec Author: Andy Taylor <andy.tayl...@gmail.com> AuthorDate: Wed Jul 2 12:29:19 2025 +0100 ARTEMIS-5561 - console upgrade --- pom.xml | 2 +- .../artemis/tests/smoke/console/PageConstants.java | 6 +-- .../artemis/tests/smoke/console/QueuesTest.java | 5 ++- .../tests/smoke/console/pages/ArtemisPage.java | 52 +++++++++++++++------- .../tests/smoke/console/pages/ConsolePage.java | 5 ++- .../tests/smoke/console/pages/LoginPage.java | 7 ++- .../tests/smoke/console/pages/QueuePage.java | 6 ++- .../tests/smoke/console/pages/QueuesPage.java | 10 +++-- .../tests/smoke/console/pages/SendMessagePage.java | 18 +++++--- .../smoke/console/pages/jmx/ArtemisTreePage.java | 14 ++++-- .../smoke/console/pages/jmx/AttributesPage.java | 4 +- 11 files changed, 88 insertions(+), 41 deletions(-) diff --git a/pom.xml b/pom.xml index d3bcd45fa8..8c5234ca61 100644 --- a/pom.xml +++ b/pom.xml @@ -87,7 +87,7 @@ <modular.jdk.surefire.arg>--add-modules java.sql,jdk.unsupported </modular.jdk.surefire.arg> <activemq-artemis-native-version>2.0.0</activemq-artemis-native-version> - <artemis-console-version>1.1.0</artemis-console-version> + <artemis-console-version>1.2.1</artemis-console-version> <karaf.version>4.4.7</karaf.version> <pax.exam.version>4.14.0</pax.exam.version> <commons.config.version>2.11.0</commons.config.version> diff --git a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/PageConstants.java b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/PageConstants.java index da59352fba..9535ebabde 100644 --- a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/PageConstants.java +++ b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/PageConstants.java @@ -26,8 +26,6 @@ public class PageConstants { public static final String A_CONTAINS_TEXT_LOG_OUT = "//span[contains(text(),'Log out')]"; - public static final String H1 = "h1"; - public static final String H2 = "h2"; public static final String TD = "td"; @@ -56,7 +54,7 @@ public class PageConstants { public static final String QUEUE_NODE_SUFFIX = "queues-folder-anycast-folder-DLQ"; // Tag Locators - public static final By H1_TAG_LOCATOR = By.tagName(H1); + public static final By STATUS_TAB_LOCATOR = By.xpath("//span[contains(text(),'Status')]"); public static final By H2_TAG_LOCATOR = By.tagName(H2); @@ -92,7 +90,7 @@ public class PageConstants { public static final By LOGIN_BUTTON_LOCATOR = By.xpath("//button[@type='submit']"); - public static final By MESSAGE_TEXT_EDITOR_LOCATOR = By.cssSelector("div[class='view-zones']"); + public static final By MESSAGE_TEXT_EDITOR_LOCATOR = By.cssSelector("div[class='pf-v5-c-code-editor__code']"); public static final By USE_LOGIN_LOCATOR = By.id("uselogon"); diff --git a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/QueuesTest.java b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/QueuesTest.java index 9bbdcca678..05efef48b7 100644 --- a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/QueuesTest.java +++ b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/QueuesTest.java @@ -181,7 +181,8 @@ public class QueuesTest extends ArtemisTest { sendMessagePage.appendMessageText("xxx"); sendMessagePage.sendMessage(); - QueuePage queuePage = sendMessagePage.getQueuesPage(DEFAULT_TIMEOUT).getQueuePage(queueName, DEFAULT_TIMEOUT); + beforeQueuesPage.refresh(DEFAULT_TIMEOUT); + QueuePage queuePage = statusPage.getQueuesPage(DEFAULT_TIMEOUT).getQueuePage(queueName, DEFAULT_TIMEOUT); assertTrue(queuePage.postJolokiaExecRequest(testQueueObjectName.getCanonicalName(), "expireMessage(long)", String.valueOf(queuePage.getMessageId(0))).toString().contains("\"status\":200")); assertTrue(queuePage.postJolokiaExecRequest(testQueueObjectName.getCanonicalName(), "expireMessage(long)", @@ -234,7 +235,7 @@ public class QueuesTest extends ArtemisTest { sendMessagePage.appendMessageText(messageText); sendMessagePage.sendMessage(); } - + sendMessagePage.refresh(DEFAULT_TIMEOUT); QueuesPage afterSendingQueuesPage = sendMessagePage.getQueuesPage(DEFAULT_TIMEOUT); Wait.assertEquals(1, () -> afterSendingQueuesPage.countQueue("DLQ")); Wait.assertEquals(messages, () -> afterSendingQueuesPage.getMessagesCount(queueName)); diff --git a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/ArtemisPage.java b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/ArtemisPage.java index 2f2bf54ae5..d3b7a82cef 100644 --- a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/ArtemisPage.java +++ b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/ArtemisPage.java @@ -25,6 +25,7 @@ import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; import static org.apache.activemq.artemis.tests.smoke.console.PageConstants.ADDRESSES_TAB; import static org.apache.activemq.artemis.tests.smoke.console.PageConstants.BUTTON_LOCATOR; @@ -55,14 +56,17 @@ public abstract class ArtemisPage extends ConsolePage { WebElement userDropdownMenuWebElement = driver.findElement(USER_DROPDOWN_MENU_LOCATOR); if (!logoutWebElement.isDisplayed()) { - userDropdownMenuWebElement.click(); + Actions actions = new Actions(driver); + actions.moveToElement(userDropdownMenuWebElement).click().perform(); } String logoutText = logoutWebElement.getText(); Pattern pattern = Pattern.compile("Logout \\(([^\\)]+)\\)"); Matcher matcher = pattern.matcher(logoutText); - userDropdownMenuWebElement.click(); + Actions actions = new Actions(driver); + + actions.moveToElement(userDropdownMenuWebElement).click().perform(); if (matcher.find()) { return matcher.group(1); @@ -73,8 +77,9 @@ public abstract class ArtemisPage extends ConsolePage { public SendMessagePage getAddressSendMessagePage(String address, int timeout) { refresh(timeout); - driver.findElement(ADDRESSES_TAB).click(); - + WebElement element = driver.findElement(ADDRESSES_TAB); + Actions actions = new Actions(driver); + actions.moveToElement(element).click().perform(); List<WebElement> tdElements = driver.findElement(DATA_TABLE).findElement(By.xpath("//tr/td[contains(text(), '" + address + "')]")).findElement(By.xpath("./..")).findElements(TD_TAG_LOCATOR); tdElements.get(tdElements.size() - 1).findElement(BUTTON_LOCATOR).click(); @@ -89,9 +94,10 @@ public abstract class ArtemisPage extends ConsolePage { public SendMessagePage getQueueSendMessagePage(String queue, int timeout) { refresh(timeout); - driver.findElement(QUEUES_TAB).click(); - - List<WebElement> tdElements = driver.findElement(DATA_TABLE).findElement(By.xpath("//tr/td[contains(text(), '" + queue + "')]")).findElement(By.xpath("./..")).findElements(By.tagName("td")); + WebElement element = driver.findElement(QUEUES_TAB); + Actions actions = new Actions(driver); + actions.moveToElement(element).click().perform(); + List<WebElement> tdElements = driver.findElement(DATA_TABLE).findElement(By.xpath("//tr/td/a[contains(text(), '" + queue + "')]")).findElement(By.xpath("./../..")).findElements(By.tagName("td")); tdElements.get(tdElements.size() - 1).findElement(BUTTON_LOCATOR).click(); @@ -105,7 +111,9 @@ public abstract class ArtemisPage extends ConsolePage { public QueuesPage getQueuesPage(int timeout) { WebElement queuesMenuItem = driver.findElement(QUEUES_TAB); - queuesMenuItem.click(); + Actions actions = new Actions(driver); + + actions.moveToElement(queuesMenuItem).click().perform(); waitForElementToBeVisible(QUEUES_TAB_SELECTED, timeout); @@ -129,7 +137,9 @@ public abstract class ArtemisPage extends ConsolePage { public QueuesPage getQueuesPageFromMessageView(int timeout) { WebElement queuesMenuItem = driver.findElement(MESSAGE_VIEW_QUEUES_BUTTON); - queuesMenuItem.click(); + Actions actions = new Actions(driver); + + actions.moveToElement(queuesMenuItem).click().perform(); waitForElementToBeVisible(QUEUES_TAB_SELECTED, timeout); @@ -139,7 +149,9 @@ public abstract class ArtemisPage extends ConsolePage { public QueuesPage getQueuesPageFromMessagesView(int timeout) { WebElement queuesMenuItem = driver.findElement(MESSAGE_TABLE_QUEUES_BUTTON); - queuesMenuItem.click(); + Actions actions = new Actions(driver); + + actions.moveToElement(queuesMenuItem).click().perform(); waitForElementToBeVisible(QUEUES_TAB_SELECTED, timeout); @@ -148,20 +160,30 @@ public abstract class ArtemisPage extends ConsolePage { public LoginPage logout(int timeout) { WebElement logoutWebElement = driver.findElement(LOGOUT_DROPDOWN_LOCATOR); - logoutWebElement.click(); + Actions actions = new Actions(driver); + + actions.moveToElement(logoutWebElement).click().perform(); WebElement userDropdownMenuWebElement = logoutWebElement.findElement(LOGOUT_MENU_ITEM_LOCATOR); - userDropdownMenuWebElement.click(); + actions = new Actions(driver); + + actions.moveToElement(userDropdownMenuWebElement).click().perform(); return new LoginPage(driver); } public void enableColumn(String columnId) { - driver.findElement(MANAGE_COLUMNS_BUTTON).click(); - driver.findElement(By.id("check-" + columnId)).click(); - driver.findElement(SAVE_BUTTON).click(); + WebElement element = driver.findElement(MANAGE_COLUMNS_BUTTON); + Actions actions = new Actions(driver); + actions.moveToElement(element).click().perform(); + element = driver.findElement(By.id("check-" + columnId)); + actions = new Actions(driver); + actions.moveToElement(element).click().perform(); + element = driver.findElement(SAVE_BUTTON); + actions = new Actions(driver); + actions.moveToElement(element).click().perform(); } public Object postJolokiaExecRequest(String mbean, String operation, String arguments) { diff --git a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/ConsolePage.java b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/ConsolePage.java index 1ad46dc661..e14a3d6979 100644 --- a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/ConsolePage.java +++ b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/ConsolePage.java @@ -23,7 +23,8 @@ import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; -import static org.apache.activemq.artemis.tests.smoke.console.PageConstants.H1_TAG_LOCATOR; +import static org.apache.activemq.artemis.tests.smoke.console.PageConstants.STATUS_TAB_LOCATOR; + public abstract class ConsolePage { protected WebDriver driver; @@ -39,7 +40,7 @@ public abstract class ConsolePage { } public void waitForLoading(int timeout) { - waitForElementToBeVisible(H1_TAG_LOCATOR, timeout); + waitForElementToBeVisible(STATUS_TAB_LOCATOR, timeout); } public void waitForElementToBeVisible(final By elementLocator, int timeout) { diff --git a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/LoginPage.java b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/LoginPage.java index 9428cf6420..575d9c2c93 100644 --- a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/LoginPage.java +++ b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/LoginPage.java @@ -18,6 +18,8 @@ package org.apache.activemq.artemis.tests.smoke.console.pages; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; import static org.apache.activemq.artemis.tests.smoke.console.PageConstants.BRAND_LOCATOR; import static org.apache.activemq.artemis.tests.smoke.console.PageConstants.LOGIN_BUTTON_LOCATOR; @@ -43,8 +45,9 @@ public class LoginPage extends ConsolePage { driver.findElement(USERNAME_LOCATOR).sendKeys(username); driver.findElement(PASSWORD_LOCATOR).sendKeys(password); - driver.findElement(LOGIN_BUTTON_LOCATOR).click(); - + WebElement element = driver.findElement(LOGIN_BUTTON_LOCATOR); + Actions actions = new Actions(driver); + actions.moveToElement(element).click().perform(); waitForElementToBeVisible(LOGOUT_DROPDOWN_LOCATOR, timeout); waitForElementToBeVisible(By.xpath("//button/span[contains(text(),'Status')]"), timeout); diff --git a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/QueuePage.java b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/QueuePage.java index ac55d470f9..fca2c56182 100644 --- a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/QueuePage.java +++ b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/QueuePage.java @@ -19,6 +19,7 @@ package org.apache.activemq.artemis.tests.smoke.console.pages; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; import static org.apache.activemq.artemis.tests.smoke.console.PageConstants.A_TAG_LOCATOR; import static org.apache.activemq.artemis.tests.smoke.console.PageConstants.COLUMN_MESSAGE_ID; @@ -37,8 +38,9 @@ public class QueuePage extends ArtemisPage { public MessagePage getMessagePage(int index, int timeout) { int col = getIndexOfColumn(COLUMN_MESSAGE_ID); - driver.findElement(TABLE_TAG_LOCATOR).findElements(TD_TAG_LOCATOR).get(col).findElement(A_TAG_LOCATOR).click(); - + WebElement element = driver.findElement(TABLE_TAG_LOCATOR).findElements(TD_TAG_LOCATOR).get(col).findElement(A_TAG_LOCATOR); + Actions actions = new Actions(driver); + actions.moveToElement(element).click().perform(); waitForElementToBeVisible(VIEW_MESSAGE_TITLE_LOCATOR, timeout); return new MessagePage(driver); diff --git a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/QueuesPage.java b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/QueuesPage.java index 83999a92da..4aa912325e 100644 --- a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/QueuesPage.java +++ b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/QueuesPage.java @@ -19,6 +19,7 @@ package org.apache.activemq.artemis.tests.smoke.console.pages; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; public class QueuesPage extends ArtemisPage { private static final String MESSAGE_COUNT_COLUMN_NAME = "Message Count"; @@ -35,8 +36,8 @@ public class QueuesPage extends ArtemisPage { WebElement messagesCountWebElement = queueRowWebElement.findElements(By.tagName("td")) .get(getIndexOfColumn(MESSAGE_COUNT_COLUMN_NAME)).findElement(By.tagName("a")); - messagesCountWebElement.click(); - + Actions actions = new Actions(driver); + actions.moveToElement(messagesCountWebElement).click().perform(); waitForElementToBeVisible(QUEUES_PAGE_TITLE, timeout); return new QueuePage(driver); @@ -61,7 +62,8 @@ public class QueuesPage extends ArtemisPage { public boolean searchQueues(String queueNameInResults) { - driver.findElement(SEARCH_BUTTON_LOCATOR).click(); - return countQueue(queueNameInResults) == 1; + WebElement element = driver.findElement(SEARCH_BUTTON_LOCATOR); + Actions actions = new Actions(driver); + actions.moveToElement(element).click().perform(); return countQueue(queueNameInResults) == 1; } } diff --git a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/SendMessagePage.java b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/SendMessagePage.java index adc6d6dbce..e081fb0bad 100644 --- a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/SendMessagePage.java +++ b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/SendMessagePage.java @@ -19,6 +19,7 @@ package org.apache.activemq.artemis.tests.smoke.console.pages; import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; import static org.apache.activemq.artemis.tests.smoke.console.PageConstants.MESSAGE_TEXT_EDITOR_LOCATOR; @@ -47,13 +48,17 @@ public class SendMessagePage extends ArtemisPage { public void selectUseCurrentLogonUser() { if (!isUseCurrentLogonUserSelected()) { - driver.findElement(USE_LOGIN_LOCATOR).click(); + WebElement element = driver.findElement(USE_LOGIN_LOCATOR); + Actions actions = new Actions(driver); + actions.moveToElement(element).click().perform(); } } public void unselectUseCurrentLogonUser() { if (isUseCurrentLogonUserSelected()) { - driver.findElement(USE_LOGIN_LOCATOR).click(); + WebElement element = driver.findElement(USE_LOGIN_LOCATOR); + Actions actions = new Actions(driver); + actions.moveToElement(element).click().perform(); } } @@ -69,8 +74,11 @@ public class SendMessagePage extends ArtemisPage { } public void sendMessage() { - driver.findElement(By.xpath("//button[contains(text(),'Send')]")).click(); - - driver.findElement(By.xpath("//button[contains(text(),'Cancel')]")).click(); + WebElement element = driver.findElement(By.xpath("//button[contains(text(),'Send')]")); + Actions actions = new Actions(driver); + actions.moveToElement(element).click().perform(); + element = driver.findElement(By.xpath("//button[contains(text(),'Cancel')]")); + actions = new Actions(driver); + actions.moveToElement(element).click().perform(); } } diff --git a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/jmx/ArtemisTreePage.java b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/jmx/ArtemisTreePage.java index 19441a1402..8f9092a032 100644 --- a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/jmx/ArtemisTreePage.java +++ b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/jmx/ArtemisTreePage.java @@ -18,6 +18,8 @@ package org.apache.activemq.artemis.tests.smoke.console.pages.jmx; import org.apache.activemq.artemis.tests.smoke.console.pages.ConsolePage; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; import static org.apache.activemq.artemis.tests.smoke.console.PageConstants.BROKER_NODE_LOCATOR; import static org.apache.activemq.artemis.tests.smoke.console.PageConstants.BUTTON_LOCATOR; @@ -34,14 +36,18 @@ public class ArtemisTreePage extends ConsolePage { public void expandTree(int timeout) { waitForElementToBeVisible(EXPAND_BUTTON, timeout); - driver.findElement(EXPAND_BUTTON).click(); + WebElement element = driver.findElement(EXPAND_BUTTON); + Actions actions = new Actions(driver); + actions.moveToElement(element).click().perform(); waitForElementToBeVisible(COLLAPSE_BUTTON, timeout); } public void collapseTree(int timeout) { waitForElementToBeVisible(COLLAPSE_BUTTON, timeout); - driver.findElement(COLLAPSE_BUTTON).click(); + WebElement element = driver.findElement(COLLAPSE_BUTTON); + Actions actions = new Actions(driver); + actions.moveToElement(element).click().perform(); waitForElementToBeVisible(EXPAND_BUTTON, timeout); } @@ -50,7 +56,9 @@ public class ArtemisTreePage extends ConsolePage { } public AttributesPage selectBrokerNode() { - driver.findElement(BROKER_NODE_LOCATOR).findElement(BUTTON_LOCATOR).click(); + WebElement element = driver.findElement(BROKER_NODE_LOCATOR).findElement(BUTTON_LOCATOR); + Actions actions = new Actions(driver); + actions.moveToElement(element).click().perform(); return new AttributesPage(driver); } } diff --git a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/jmx/AttributesPage.java b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/jmx/AttributesPage.java index b1c7db5d88..05e0bfec83 100644 --- a/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/jmx/AttributesPage.java +++ b/tests/smoke-tests/src/test/java/org/apache/activemq/artemis/tests/smoke/console/pages/jmx/AttributesPage.java @@ -18,6 +18,7 @@ package org.apache.activemq.artemis.tests.smoke.console.pages.jmx; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; import java.util.Iterator; import java.util.List; @@ -39,7 +40,8 @@ public class AttributesPage extends ArtemisTreePage { WebElement row = iterator.next(); List<WebElement> cols = row.findElements(TD_TAG_LOCATOR); if (cols.size() == 2 && name.equals(cols.get(0).getText())) { - cols.get(0).click(); + Actions actions = new Actions(driver); + actions.moveToElement(cols.get(0)).click().perform(); break; } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@activemq.apache.org For additional commands, e-mail: commits-h...@activemq.apache.org For further information, visit: https://activemq.apache.org/contact