You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2021/04/07 14:55:03 UTC

[activemq-artemis] branch master updated: ARTEMIS-3224 Removing Artemis-tools migration tool from 1.x address model

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 158a94a  ARTEMIS-3224 Removing Artemis-tools migration tool from 1.x address model
158a94a is described below

commit 158a94a8368a822f03a7d5c215acdd1c057e316e
Author: Clebert Suconic <cl...@apache.org>
AuthorDate: Wed Apr 7 09:46:58 2021 -0400

    ARTEMIS-3224 Removing Artemis-tools migration tool from 1.x address model
---
 artemis-cli/pom.xml                                |    5 -
 .../org/apache/activemq/artemis/cli/Artemis.java   |    2 -
 .../cli/commands/migration1x/Migrate1X.java        |   47 -
 artemis-distribution/pom.xml                       |    5 -
 artemis-distribution/src/main/assembly/dep.xml     |    1 -
 artemis-tools/pom.xml                              |   60 -
 .../artemis/tools/migrate/config/Main.java         |   84 -
 .../migrate/config/XMLConfigurationMigration.java  |  307 --
 .../tools/migrate/config/addressing/Address.java   |   63 -
 .../tools/migrate/config/addressing/Queue.java     |   60 -
 .../src/main/resources/META-INF/MANIFEST.MF        |    2 -
 .../config/XMLConfigurationMigrationTest.java      |   48 -
 .../src/test/resources/artemis-configuration.xsd   | 4096 --------------------
 .../src/test/resources/artemis-server.xsd          |   46 -
 artemis-tools/src/test/resources/broker.xml        |   76 -
 .../src/test/resources/replace/broker.xml          |   64 -
 .../src/test/resources/replace/broker2.xml         |   64 -
 pom.xml                                            |    3 -
 18 files changed, 5033 deletions(-)

diff --git a/artemis-cli/pom.xml b/artemis-cli/pom.xml
index 0f26f41..e79b32b 100644
--- a/artemis-cli/pom.xml
+++ b/artemis-cli/pom.xml
@@ -70,11 +70,6 @@
       </dependency>
       <dependency>
          <groupId>org.apache.activemq</groupId>
-         <artifactId>artemis-tools</artifactId>
-         <version>${project.version}</version>
-      </dependency>
-      <dependency>
-         <groupId>org.apache.activemq</groupId>
          <artifactId>artemis-dto</artifactId>
          <version>${project.version}</version>
       </dependency>
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/Artemis.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/Artemis.java
index e5b908c..c00e2e6 100644
--- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/Artemis.java
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/Artemis.java
@@ -46,7 +46,6 @@ import org.apache.activemq.artemis.cli.commands.address.UpdateAddress;
 import org.apache.activemq.artemis.cli.commands.messages.Browse;
 import org.apache.activemq.artemis.cli.commands.messages.Consumer;
 import org.apache.activemq.artemis.cli.commands.messages.Producer;
-import org.apache.activemq.artemis.cli.commands.migration1x.Migrate1X;
 import org.apache.activemq.artemis.cli.commands.queue.CreateQueue;
 import org.apache.activemq.artemis.cli.commands.queue.DeleteQueue;
 import org.apache.activemq.artemis.cli.commands.queue.HelpQueue;
@@ -177,7 +176,6 @@ public class Artemis {
          builder.withGroup("data").withDescription("data tools group (print) (example ./artemis data print)").
             withDefaultCommand(HelpData.class).withCommands(PrintData.class);
          builder = builder.withCommand(Create.class);
-         builder = builder.withCommand(Migrate1X.class);
       }
 
       return builder;
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/migration1x/Migrate1X.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/migration1x/Migrate1X.java
deleted file mode 100644
index 7d04538..0000000
--- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/migration1x/Migrate1X.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.cli.commands.migration1x;
-
-import java.io.File;
-
-import io.airlift.airline.Arguments;
-import io.airlift.airline.Command;
-import org.apache.activemq.artemis.cli.commands.ActionAbstract;
-import org.apache.activemq.artemis.cli.commands.ActionContext;
-import org.apache.activemq.artemis.tools.migrate.config.Main;
-
-@Command(name = "migrate1x", description = "Migrates the configuration of a 1.x Artemis Broker")
-public class Migrate1X extends ActionAbstract {
-
-   @Arguments(description = "The instance directory to hold the broker's configuration and data.  Path must be writable.", required = true)
-   File directory;
-
-   @Override
-   public Object execute(ActionContext context) throws Exception {
-      if (!directory.exists()) {
-         throw new RuntimeException(String.format("The path '%s' does not exist.", directory));
-      }
-      super.execute(context);
-      return run(context);
-   }
-
-   public Object run(ActionContext context) throws Exception {
-      Main.scanAndTransform(directory);
-      return null;
-   }
-
-}
diff --git a/artemis-distribution/pom.xml b/artemis-distribution/pom.xml
index 35292eb..274cb8b 100644
--- a/artemis-distribution/pom.xml
+++ b/artemis-distribution/pom.xml
@@ -134,11 +134,6 @@
       </dependency>
       <dependency>
          <groupId>org.apache.activemq</groupId>
-         <artifactId>artemis-tools</artifactId>
-         <version>${project.version}</version>
-      </dependency>
-      <dependency>
-         <groupId>org.apache.activemq</groupId>
          <artifactId>artemis-website</artifactId>
          <version>${project.version}</version>
       </dependency>
diff --git a/artemis-distribution/src/main/assembly/dep.xml b/artemis-distribution/src/main/assembly/dep.xml
index b9b2496..8298c20 100644
--- a/artemis-distribution/src/main/assembly/dep.xml
+++ b/artemis-distribution/src/main/assembly/dep.xml
@@ -65,7 +65,6 @@
             <include>org.apache.activemq:artemis-ra</include>
             <include>org.apache.activemq:artemis-selector</include>
             <include>org.apache.activemq:artemis-server</include>
-            <include>org.apache.activemq:artemis-tools</include>
             <include>org.apache.activemq:artemis-service-extensions</include>
             <include>org.apache.activemq:artemis-web</include>
             <include>org.apache.activemq.rest:artemis-rest</include>
diff --git a/artemis-tools/pom.xml b/artemis-tools/pom.xml
deleted file mode 100644
index be1f0f5..0000000
--- a/artemis-tools/pom.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<!--
-  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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-   <modelVersion>4.0.0</modelVersion>
-
-   <parent>
-      <groupId>org.apache.activemq</groupId>
-      <artifactId>artemis-pom</artifactId>
-      <version>2.18.0-SNAPSHOT</version>
-   </parent>
-
-   <artifactId>artemis-tools</artifactId>
-   <packaging>jar</packaging>
-   <name>ActiveMQ Artemis Tools</name>
-
-   <properties>
-      <activemq.basedir>${project.basedir}/..</activemq.basedir>
-   </properties>
-
-   <dependencies>
-      <dependency>
-          <groupId>com.google.errorprone</groupId>
-          <artifactId>error_prone_core</artifactId>
-      </dependency>
-      <dependency>
-         <groupId>junit</groupId>
-         <artifactId>junit</artifactId>
-         <scope>test</scope>
-      </dependency>
-   </dependencies>
-
-   <build>
-      <plugins>
-         <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-jar-plugin</artifactId>
-            <configuration>
-               <archive>
-                  <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
-               </archive>
-            </configuration>
-         </plugin>
-      </plugins>
-   </build>
-
-</project>
diff --git a/artemis-tools/src/main/java/org/apache/activemq/artemis/tools/migrate/config/Main.java b/artemis-tools/src/main/java/org/apache/activemq/artemis/tools/migrate/config/Main.java
deleted file mode 100644
index 692ab9e..0000000
--- a/artemis-tools/src/main/java/org/apache/activemq/artemis/tools/migrate/config/Main.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * 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.tools.migrate.config;
-
-import java.io.File;
-
-public class Main {
-
-   public static void main(String[] args) throws Exception {
-
-      if (args.length == 0) {
-         System.err.println("Invalid args");
-         printUsage();
-      } else {
-         File input = new File(args[0]);
-         if (input.isDirectory()) {
-            System.out.println("Scanning directory: " + input.getAbsolutePath());
-            scanAndTransform(input);
-         } else {
-            if (args.length != 2) {
-               System.err.println("Invalid args");
-               printUsage();
-            } else {
-               try {
-                  XMLConfigurationMigration migration = new XMLConfigurationMigration(input, new File(args[1]));
-                  migration.transform();
-               } catch (Exception e) {
-                  // Unable to process file, move on.
-               }
-            }
-         }
-      }
-   }
-
-   private static void recursiveTransform(File root) throws Exception {
-      for (File file : root.listFiles()) {
-         scanAndTransform(file);
-      }
-   }
-
-   public static void scanAndTransform(File f) throws Exception {
-      try {
-         if (f.isDirectory()) {
-            recursiveTransform(f);
-         } else {
-            try {
-               if (f.getName().endsWith("xml")) {
-                  File file = new File(f.getAbsolutePath() + ".new");
-                  XMLConfigurationMigration migration = new XMLConfigurationMigration(f, file);
-                  if (migration.transform()) {
-                     File r = new File(f.getAbsolutePath());
-                     f.renameTo(new File(f.getAbsolutePath() + ".bk"));
-                     file.renameTo(r);
-                     System.out.println(f + " converted, old file renamed as " + f.getAbsolutePath() + ".bk");
-                  }
-               }
-            } catch (Exception e) {
-               //Unable to process file, continue
-            }
-         }
-      } catch (NullPointerException e) {
-         System.out.println(f.getAbsoluteFile());
-      }
-   }
-
-   public static void printUsage() {
-      System.out.println("Please specify a directory to scan, or input and output file");
-   }
-
-}
diff --git a/artemis-tools/src/main/java/org/apache/activemq/artemis/tools/migrate/config/XMLConfigurationMigration.java b/artemis-tools/src/main/java/org/apache/activemq/artemis/tools/migrate/config/XMLConfigurationMigration.java
deleted file mode 100644
index 3728fd6..0000000
--- a/artemis-tools/src/main/java/org/apache/activemq/artemis/tools/migrate/config/XMLConfigurationMigration.java
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * 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.tools.migrate.config;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpressionException;
-import javax.xml.xpath.XPathFactory;
-import java.io.File;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.activemq.artemis.tools.migrate.config.addressing.Address;
-import org.apache.activemq.artemis.tools.migrate.config.addressing.Queue;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-public class XMLConfigurationMigration {
-
-   // Attributes
-   private static final String xPathAttrName = "@name";
-
-   // JMS XPaths
-   private static final String xPathJMS = "/configuration/jms";
-
-   private static final String xPathJMSQueues = "/configuration/jms/queue";
-
-   private static final String xPathJMSTopics = "/configuration/jms/topic";
-
-   // Core Queue XPaths
-   private static final String xPathQueues = "/configuration/core/queues";
-
-   private static final String xPathQueue = "/configuration/core/queues/queue";
-
-   private static final String xPathAddress = "address";
-
-   private static final String xPathFilter = "filter/@string";
-
-   private static final String xPathSelector = "selector/@string";
-
-   private static final String xPathDurable = "durable";
-
-   private final Map<String, Address> coreAddresses = new HashMap<>();
-
-   private final Document document;
-
-   private final File input;
-
-   private final File output;
-
-   private final Node coreElement;
-
-   private final XPath xPath;
-
-   public XMLConfigurationMigration(File input, File output) throws Exception {
-
-      this.input = input;
-      this.output = output;
-
-      try {
-         if (!input.exists()) {
-            throw new Exception("Input file not found: " + input);
-         }
-
-         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-         factory.setIgnoringElementContentWhitespace(true);
-
-         DocumentBuilder db = factory.newDocumentBuilder();
-         this.document = db.parse(this.input);
-
-         xPath = XPathFactory.newInstance().newXPath();
-         coreElement = (Node) xPath.evaluate("/configuration/core", document, XPathConstants.NODE);
-
-         if (coreElement == null) {
-            throw new Exception("Not a artemis config");
-         }
-      } catch (Exception e) {
-         throw new Exception(e);
-      }
-   }
-
-   public boolean transform() throws Exception {
-      try {
-
-         boolean queuesChanged = convertQueuesToAddresses();
-         boolean jmsChanged = convertJMSToAddresses();
-
-         writeAddressesToDocument();
-         document.normalize();
-
-         if (queuesChanged || jmsChanged) {
-            Properties properties = new Properties();
-            properties.put(OutputKeys.INDENT, "yes");
-            properties.put("{http://xml.apache.org/xslt}indent-amount", "3");
-            properties.put(OutputKeys.ENCODING, "UTF-8");
-            write(output, properties);
-            return true;
-         }
-
-      } catch (Exception e) {
-         System.err.println("Error tranforming document");
-         e.printStackTrace();
-      }
-      return false;
-   }
-
-   public boolean convertQueuesToAddresses() throws Exception {
-
-      Node coreQueuesElement = getNode(xPathQueues);
-      if (coreQueuesElement == null) {
-         return false;
-      }
-
-      NodeList coreQueueElements = getNodeList(xPathQueue);
-      for (int i = 0; i < coreQueueElements.getLength(); i++) {
-         Node queueNode = coreQueueElements.item(i);
-
-         Queue queue = new Queue();
-         queue.setName(getString(queueNode, xPathAttrName));
-         queue.setDurable(getString(queueNode, xPathDurable));
-         queue.setFilter(getString(queueNode, xPathFilter));
-         queue.setRoutingType("multicast");
-
-         String addressName = getString(queueNode, xPathAddress);
-
-         Address address;
-         if (coreAddresses.containsKey(addressName)) {
-            address = coreAddresses.get(addressName);
-         } else {
-            address = new Address();
-            address.setName(addressName);
-            coreAddresses.put(addressName, address);
-         }
-         address.getQueues().add(queue);
-         address.getRoutingTypes().add("multicast");
-      }
-
-      // Remove Core Queues Element from Core
-      Node queues = getNode(xPathQueues);
-      if (queues != null) {
-         coreElement.removeChild(queues);
-      }
-
-      return true;
-   }
-
-   public boolean convertJMSToAddresses() throws Exception {
-      Node jmsElement = getNode(xPathJMS);
-      if (jmsElement == null) {
-         return false;
-      }
-
-      NodeList jmsQueueElements = getNodeList(xPathJMSQueues);
-      for (int i = 0; i < jmsQueueElements.getLength(); i++) {
-         Node jmsQueueElement = jmsQueueElements.item(i);
-         String name = getString(jmsQueueElement, xPathAttrName);
-
-         Address address;
-         if (coreAddresses.containsKey(name)) {
-            address = coreAddresses.get(name);
-         } else {
-            address = new Address();
-            address.setName(name);
-            address.getRoutingTypes().add("anycast");
-            coreAddresses.put(name, address);
-         }
-
-         Queue queue = new Queue();
-         queue.setName(name);
-         queue.setDurable(getString(jmsQueueElement, xPathDurable));
-         queue.setFilter(getString(jmsQueueElement, xPathSelector));
-         queue.setRoutingType("anycast");
-         address.getQueues().add(queue);
-         address.getRoutingTypes().add("anycast");
-      }
-
-      NodeList jmsTopicElements = getNodeList(xPathJMSTopics);
-      for (int i = 0; i < jmsTopicElements.getLength(); i++) {
-         Node jmsTopicElement = jmsTopicElements.item(i);
-         String name = getString(jmsTopicElement, xPathAttrName);
-
-         Address address;
-         if (coreAddresses.containsKey(name)) {
-            address = coreAddresses.get(name);
-         } else {
-            address = new Address();
-            address.setName(name);
-            address.getRoutingTypes().add("multicast");
-            coreAddresses.put(name, address);
-         }
-         address.getRoutingTypes().add("multicast");
-      }
-
-      jmsElement.getParentNode().removeChild(jmsElement);
-      return true;
-   }
-
-   public void writeAddressesToDocument() throws XPathExpressionException {
-
-      Element addressElement = document.createElement("addresses");
-      writeAddressListToDoc(coreAddresses.values(), addressElement);
-      coreElement.appendChild(addressElement);
-   }
-
-   private void writeAddressListToDoc(Collection<Address> addresses,
-                                      Node addressElement) throws XPathExpressionException {
-      if (addresses.isEmpty())
-         return;
-
-      for (Address addr : addresses) {
-         Element eAddr = document.createElement("address");
-         eAddr.setAttribute("name", addr.getName());
-
-         Element eMulticast = null;
-         if (addr.getRoutingTypes().contains("multicast")) {
-            eMulticast = (Element) eAddr.getElementsByTagName("multicast").item(0);
-            if (eMulticast == null) {
-               eMulticast = document.createElement("multicast");
-               eAddr.appendChild(eMulticast);
-            }
-         }
-
-         Element eAnycast = null;
-         if (addr.getRoutingTypes().contains("anycast")) {
-            eAnycast = (Element) eAddr.getElementsByTagName("anycast").item(0);
-            if (eAnycast == null) {
-               eAnycast = document.createElement("anycast");
-               eAddr.appendChild(eAnycast);
-            }
-         }
-
-         if (addr.getQueues().size() > 0) {
-            for (Queue queue : addr.getQueues()) {
-               Element eQueue = document.createElement("queue");
-               eQueue.setAttribute("name", queue.getName());
-
-               if (queue.getDurable() != null && !queue.getDurable().isEmpty()) {
-                  Element eDurable = document.createElement("durable");
-                  eDurable.setTextContent(queue.getDurable());
-                  eQueue.appendChild(eDurable);
-               }
-
-               if (queue.getFilter() != null && !queue.getFilter().isEmpty()) {
-                  Element eFilter = document.createElement("filter");
-                  eFilter.setAttribute("string", queue.getFilter());
-                  eQueue.appendChild(eFilter);
-               }
-
-               if (queue.getRoutingType().equals("anycast")) {
-                  eAnycast.appendChild(eQueue);
-               } else if (queue.getRoutingType().equals("multicast")) {
-                  eMulticast.appendChild(eQueue);
-               } else {
-                  System.err.print("Unknown Routing Type Found for Queue: " + queue.getName());
-               }
-            }
-         }
-         addressElement.appendChild(eAddr);
-      }
-   }
-
-   public void write(File output, Properties outputProperties) throws TransformerException {
-      Transformer transformer = TransformerFactory.newInstance().newTransformer();
-      transformer.setOutputProperties(outputProperties);
-      StreamResult streamResult = new StreamResult(output);
-      transformer.transform(new DOMSource(document), streamResult);
-   }
-
-   private String getString(Node node, String xPathQuery) throws XPathExpressionException {
-      return xPath.evaluate(xPathQuery, node, XPathConstants.STRING).toString();
-   }
-
-   private NodeList getNodeList(String xPathQuery) throws XPathExpressionException {
-      return (NodeList) xPath.evaluate(xPathQuery, document, XPathConstants.NODESET);
-   }
-
-   private Node getNode(String xPathQuery) throws XPathExpressionException {
-      return (Node) xPath.evaluate(xPathQuery, document, XPathConstants.NODE);
-   }
-
-}
diff --git a/artemis-tools/src/main/java/org/apache/activemq/artemis/tools/migrate/config/addressing/Address.java b/artemis-tools/src/main/java/org/apache/activemq/artemis/tools/migrate/config/addressing/Address.java
deleted file mode 100644
index 65307d5..0000000
--- a/artemis-tools/src/main/java/org/apache/activemq/artemis/tools/migrate/config/addressing/Address.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.tools.migrate.config.addressing;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-public class Address {
-
-   private String name;
-
-   private Set<String> routingTypes = new HashSet<>();
-
-   private String defaultMaxConsumers = "-1";
-
-   private String defaultPurgeOnNoConsumers = "false";
-
-   private List<Queue> queues = new ArrayList<>();
-
-   public String getName() {
-      return name;
-   }
-
-   public void setName(String name) {
-      this.name = name;
-   }
-
-   public Set<String> getRoutingTypes() {
-      return routingTypes;
-   }
-
-   public void setRoutingTypes(Set<String> routingTypes) {
-      this.routingTypes = routingTypes;
-   }
-
-   public String getDefaultMaxConsumers() {
-      return defaultMaxConsumers;
-   }
-
-   public List<Queue> getQueues() {
-      return queues;
-   }
-
-   public void setQueues(List<Queue> queues) {
-      this.queues = queues;
-   }
-}
diff --git a/artemis-tools/src/main/java/org/apache/activemq/artemis/tools/migrate/config/addressing/Queue.java b/artemis-tools/src/main/java/org/apache/activemq/artemis/tools/migrate/config/addressing/Queue.java
deleted file mode 100644
index faa066d..0000000
--- a/artemis-tools/src/main/java/org/apache/activemq/artemis/tools/migrate/config/addressing/Queue.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.tools.migrate.config.addressing;
-
-public class Queue {
-
-   String name;
-
-   String filter;
-
-   String durable;
-
-   String routingType;
-
-   public String getName() {
-      return name;
-   }
-
-   public void setName(String name) {
-      this.name = name;
-   }
-
-   public String getFilter() {
-      return filter;
-   }
-
-   public void setFilter(String filter) {
-      this.filter = filter;
-   }
-
-   public String getDurable() {
-      return durable;
-   }
-
-   public void setDurable(String durable) {
-      this.durable = durable;
-   }
-
-   public String getRoutingType() {
-      return routingType;
-   }
-
-   public void setRoutingType(String routingType) {
-      this.routingType = routingType;
-   }
-}
diff --git a/artemis-tools/src/main/resources/META-INF/MANIFEST.MF b/artemis-tools/src/main/resources/META-INF/MANIFEST.MF
deleted file mode 100644
index fc08aed..0000000
--- a/artemis-tools/src/main/resources/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,2 +0,0 @@
-Manifest-Version: 1.0
-Main-Class: org.apache.activemq.artemis.tools.migrate.config.Main
diff --git a/artemis-tools/src/test/java/org/apache/activemq/artemis/tools/migrate/config/XMLConfigurationMigrationTest.java b/artemis-tools/src/test/java/org/apache/activemq/artemis/tools/migrate/config/XMLConfigurationMigrationTest.java
deleted file mode 100644
index e653920..0000000
--- a/artemis-tools/src/test/java/org/apache/activemq/artemis/tools/migrate/config/XMLConfigurationMigrationTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.tools.migrate.config;
-
-import javax.xml.transform.OutputKeys;
-import java.io.File;
-import java.util.Properties;
-
-import org.junit.Test;
-
-public class XMLConfigurationMigrationTest {
-
-   @Test
-   public void testQueuesReplacedWithAddresses() throws Exception {
-      File brokerXml = new File(this.getClass().getClassLoader().getResource("broker.xml").toURI());
-      File output = new File("target/out.xml");
-
-      XMLConfigurationMigration tool = new XMLConfigurationMigration(brokerXml, output);
-
-      tool.transform();
-
-      Properties properties = new Properties();
-      properties.put(OutputKeys.INDENT, "yes");
-      properties.put("{http://xml.apache.org/xslt}indent-amount", "3");
-      properties.put(OutputKeys.ENCODING, "UTF-8");
-      tool.write(output, properties);
-   }
-
-   @Test
-   public void scanAndReplaceTest() throws Exception {
-      File dir = new File(this.getClass().getClassLoader().getResource("replace").getPath());
-      Main.scanAndTransform(dir);
-   }
-}
diff --git a/artemis-tools/src/test/resources/artemis-configuration.xsd b/artemis-tools/src/test/resources/artemis-configuration.xsd
deleted file mode 100644
index 0fec540..0000000
--- a/artemis-tools/src/test/resources/artemis-configuration.xsd
+++ /dev/null
@@ -1,4096 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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.
--->
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-            xmlns="urn:activemq:core"
-            targetNamespace="urn:activemq:core"
-            attributeFormDefault="unqualified"
-            elementFormDefault="qualified"
-            version="1.0">
-
-   <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
-
-   <xsd:element name="core" type="configurationType"/>
-
-   <xsd:complexType name="configurationType">
-      <xsd:all>
-         <xsd:element name="name" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Node name. If set, it will be used in topology notifications.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="system-property-prefix" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  This defines the prefix which we will use to parse System properties for the configuration. Default=
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="internal-naming-prefix" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Artemis uses internal queues and addresses for implementing certain behaviours.  These queues and addresses
-                  will be prefixed by default with "$.activemq.internal" to avoid naming clashes with user namespacing.
-                  This can be overridden by setting this value to a valid Artemis address.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="amqp-use-core-subscription-naming" type="xsd:boolean" maxOccurs="1" minOccurs="0" default="false">
-            <xsd:annotation>
-               <xsd:documentation>
-                  This enables making AMQP subscription queue names, match core queue names, for better interoperability between protocols.
-                  Note: Enabling this to an existing broker if pre-existing amqp durable subscriptions already existed will require
-                  clients to re-subscribe and to clean up old subscription names.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="resolve-protocols" type="xsd:boolean" default="true" maxOccurs="1"
-                      minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  If true then the ActiveMQ Artemis Server will make use of any Protocol Managers that are in available
-                  on the classpath. If false then only the core protocol will be available, unless in Embedded mode
-                  where users can inject their own Protocol Managers.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="journal-datasync" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  that means the server will use fdatasync to confirm writes on the disk.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="persistence-enabled" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  true means that the server will use the file based journal for persistence.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="scheduled-thread-pool-max-size" type="xsd:int" default="5" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Maximum number of threads to use for the scheduled thread pool
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="thread-pool-max-size" type="xsd:int" default="30" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Maximum number of threads to use for the thread pool. -1 means 'no limits'.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="graceful-shutdown-enabled" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  true means that graceful shutdown is enabled
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="graceful-shutdown-timeout" type="xsd:long" default="-1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how long (in ms) to wait for clients to disconnect before shutting down the server
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="security-enabled" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  true means that security is enabled
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="security-invalidation-interval" type="xsd:long" default="10000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how long (in ms) to wait before invalidating an entry in the authentication or authorization cache
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="authentication-cache-size" type="xsd:long" default="1000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how large to make the authentication cache
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="authorization-cache-size" type="xsd:long" default="1000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how large to make the authorization cache
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="journal-lock-acquisition-timeout" type="xsd:long" default="-1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how long (in ms) to wait to acquire a file lock on the journal
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="wild-card-routing-enabled" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  true means that the server supports wild card routing
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="management-address" type="xsd:string" default="jms.queue.activemq.management" maxOccurs="1"
-                      minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the name of the management address to send management messages to. It is prefixed with "jms.queue" so
-                  that JMS clients can send messages to it.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="management-notification-address" type="xsd:string" default="activemq.notifications"
-                      maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the name of the address that consumers bind to receive management notifications
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="cluster-user" type="xsd:string" default="ACTIVEMQ.CLUSTER.ADMIN.USER" maxOccurs="1"
-                      minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Cluster username. It applies to all cluster configurations.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="cluster-password" maxOccurs="1" minOccurs="0" type="xsd:string" default="CHANGE ME!!">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Cluster password. It applies to all cluster configurations.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="password-codec" type="xsd:string"
-                      default="org.apache.activemq.artemis.utils.DefaultSensitiveStringCodec" maxOccurs="1"
-                      minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Class name and its parameters for the Decoder used to decode the masked password. Ignored if
-                  mask-password is false. The format of this property is a full qualified class name optionally followed
-                  by key/value pairs.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="mask-password" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  This option controls whether passwords in server configuration need be masked. If set to "true" the
-                  passwords are masked.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="log-delegate-factory-class-name" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  DEPRECATED: the name of the factory class to use for log delegation
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="jmx-management-enabled" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  true means that the management API is available via JMX
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="jmx-domain" type="xsd:string" default="org.apache.activemq" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the JMX domain used to registered ActiveMQ Artemis MBeans in the MBeanServer
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="jmx-use-broker-name" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Whether or not to use the broker name in the JMX properties
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="message-counter-enabled" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  true means that message counters are enabled
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="message-counter-sample-period" type="xsd:long" default="10000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the sample period (in ms) to use for message counters
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="message-counter-max-day-history" type="xsd:int" default="10" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how many days to keep message counter history
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="connection-ttl-override" type="xsd:long" default="-1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  if set, this will override how long (in ms) to keep a connection alive without receiving a ping. -1
-                  disables this setting.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="connection-ttl-check-interval" type="xsd:long" default="2000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how often (in ms) to check connections for ttl violation
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="configuration-file-refresh-period" type="xsd:long" default="5000" maxOccurs="1"
-                      minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how often (in ms) to check the configuration file for modifications
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="temporary-queue-namespace" type="xsd:string" default="" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the namespace to use for looking up address settings for temporary queues
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="async-connection-execution-enabled" type="xsd:boolean" default="true" maxOccurs="1"
-                      minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  should certain incoming packets on the server be handed off to a thread from the thread pool for
-                  processing or should they be handled on the remoting thread?
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="transaction-timeout" type="xsd:long" default="300000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how long (in ms) before a transaction can be removed from the resource manager after create time
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="transaction-timeout-scan-period" type="xsd:long" default="1000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how often (in ms) to scan for timeout transactions
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="message-expiry-scan-period" type="xsd:long" default="30000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how often (in ms) to scan for expired messages
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="message-expiry-thread-priority" type="xsd:int" default="3" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  DEPRECATED: the priority of the thread expiring messages
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="address-queue-scan-period" type="xsd:long" default="30000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how often (in ms) to scan for addresses and queues that need to be deleted
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="id-cache-size" type="xsd:int" default="20000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the size of the cache for pre-creating message ID's
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="persist-id-cache" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  true means that ID's are persisted to the journal
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="remoting-incoming-interceptors" type="class-name-sequenceType" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of &lt;class-name/&gt; elements with the names of classes to use for intercepting incoming
-                  remoting packets
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="remoting-outgoing-interceptors" type="class-name-sequenceType" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of &lt;class-name/&gt; elements with the names of classes to use for intercepting outgoing
-                  remoting packets
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="persist-delivery-count-before-delivery" type="xsd:boolean" default="false" maxOccurs="1"
-                      minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  True means that the delivery count is persisted before delivery. False means that this only happens
-                  after a message has been cancelled.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="populate-validated-user" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  true means that the server will add the name of the validated user to messages it sends
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="reject-empty-validated-user" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  true means that the server will not allow any message that doesn't have a validated user, in JMS this is JMSXUserID
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="connectors" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of remoting connectors configurations to create
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:element name="connector" type="transportType" maxOccurs="unbounded"/>
-               </xsd:sequence>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-
-         <xsd:element maxOccurs="1" minOccurs="0" name="acceptors">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of remoting acceptors to create
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:element name="acceptor" type="transportType" maxOccurs="unbounded"/>
-               </xsd:sequence>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-
-         <xsd:element maxOccurs="1" minOccurs="0" name="broadcast-groups">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of broadcast groups to create
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:element ref="broadcast-group" maxOccurs="unbounded" minOccurs="0"/>
-               </xsd:sequence>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-
-         <xsd:element maxOccurs="1" minOccurs="0" name="discovery-groups">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of discovery groups to create
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:element maxOccurs="unbounded" minOccurs="0" ref="discovery-group">
-                     <xsd:annotation>
-                        <xsd:documentation>
-                           a discovery group specification element
-                        </xsd:documentation>
-                     </xsd:annotation>
-                  </xsd:element>
-               </xsd:sequence>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-
-         <xsd:element name="diverts" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of diverts to use
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:element name="divert" type="divertType" maxOccurs="unbounded" minOccurs="0"/>
-               </xsd:sequence>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-
-         <!-- QUEUES -->
-         <xsd:element name="queues" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of pre configured queues to create
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:element name="queue" maxOccurs="unbounded" minOccurs="0">
-                     <xsd:complexType>
-                        <xsd:all>
-                           <xsd:element name="address" type="xsd:string" maxOccurs="1" minOccurs="0">
-                              <xsd:annotation>
-                                 <xsd:documentation>
-                                    address for the queue
-                                 </xsd:documentation>
-                              </xsd:annotation>
-                           </xsd:element>
-                           <xsd:element name="user" type="xsd:string" maxOccurs="1" minOccurs="0">
-                              <xsd:annotation>
-                                 <xsd:documentation>
-                                    user to associate for creating the queue
-                                 </xsd:documentation>
-                              </xsd:annotation>
-                           </xsd:element>
-                           <xsd:element ref="filter" maxOccurs="1" minOccurs="0"/>
-                           <xsd:element name="durable" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-                              <xsd:annotation>
-                                 <xsd:documentation>
-                                    whether the queue is durable (persistent)
-                                 </xsd:documentation>
-                              </xsd:annotation>
-                           </xsd:element>
-                        </xsd:all>
-                        <xsd:attribute name="name" type="xsd:string" use="required">
-                           <xsd:annotation>
-                              <xsd:documentation>
-                                 unique name of this queue
-                              </xsd:documentation>
-                           </xsd:annotation>
-                        </xsd:attribute>
-                        <xsd:attribute name="max-consumers" type="xsd:integer" use="optional"/>
-                        <xsd:attribute name="purge-on-no-consumers" type="xsd:boolean" use="optional"/>
-                        <xsd:attribute name="exclusive" type="xsd:boolean" use="optional"/>
-                        <xsd:attribute name="group-rebalance" type="xsd:boolean" use="optional"/>
-                        <xsd:attribute name="group-rebalance-pause-dispatch" type="xsd:boolean" use="optional"/>
-                        <xsd:attribute name="group-buckets" type="xsd:int" use="optional"/>
-                        <xsd:attribute name="group-first-key" type="xsd:string" use="optional"/>
-                        <xsd:attribute name="last-value" type="xsd:boolean" use="optional"/>
-                        <xsd:attribute name="last-value-key" type="xsd:string" use="optional"/>
-                        <xsd:attribute name="non-destructive" type="xsd:boolean" use="optional"/>
-                        <xsd:attribute name="consumers-before-dispatch" type="xsd:int" use="optional"/>
-                        <xsd:attribute name="delay-before-dispatch" type="xsd:long" use="optional"/>
-                        <xsd:attributeGroup ref="xml:specialAttrs"/>
-                     </xsd:complexType>
-                  </xsd:element>
-               </xsd:sequence>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-
-         <xsd:element name="bridges" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of bridges to create
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:element name="bridge" type="bridgeType" maxOccurs="unbounded" minOccurs="0"/>
-               </xsd:sequence>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-
-         <xsd:element name="federations" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of federations to create
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:element name="federation" type="federationType" maxOccurs="unbounded" minOccurs="0"/>
-               </xsd:sequence>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-
-         <xsd:element name="ha-policy" type="haPolicyType" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The HA policy of this server
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="cluster-connections" type="clusterConnectionChoiceType" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of cluster connections
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="broker-connections" type="brokerConnectType" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  A list of connections the broker will make towards other servers.
-                  Currently the only connection type supported is amqpConnection
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="grouping-handler" type="groupingHandlerType" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Message Group configuration
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="paging-directory" type="xsd:string" default="data/paging" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the directory to store paged messages in
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="bindings-directory" type="xsd:string" default="data/bindings" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the directory to store the persisted bindings to
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="create-bindings-dir" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  true means that the server will create the bindings directory on start up
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="page-max-concurrent-io" type="xsd:int" default="5" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The max number of concurrent reads allowed on paging
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="read-whole-page" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Whether the whole page is read while getting message after page cache is evicted.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="journal-directory" type="xsd:string" default="data/journal" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the directory to store the journal files in
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="node-manager-lock-directory" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the directory to store the node manager lock file
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="create-journal-dir" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  true means that the journal directory will be created
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="journal-type" default="ASYNCIO" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the type of journal to use
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:simpleType>
-               <xsd:restriction base="xsd:string">
-                  <xsd:enumeration value="ASYNCIO"/>
-                  <xsd:enumeration value="NIO"/>
-                  <xsd:enumeration value="MAPPED"/>
-               </xsd:restriction>
-            </xsd:simpleType>
-         </xsd:element>
-
-         <xsd:element name="journal-buffer-timeout" type="xsd:long" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The timeout (in nanoseconds) used to flush internal buffers on the journal. The exact default value
-                  depend on whether the journal is ASYNCIO or NIO.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-
-         <xsd:element name="journal-device-block-size" type="xsd:long" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The size in bytes used by the device. This is usually translated as fstat/st_blksize
-                  And this is a way to bypass the value returned as st_blksize.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="journal-buffer-size" type="xsd:string" default="501760" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The size (in bytes) of the internal buffer on the journal. Supports byte notation like "K", "Mb",
-                  "GB", etc.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="journal-sync-transactional" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  if true wait for transaction data to be synchronized to the journal before returning response to
-                  client
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="journal-sync-non-transactional" type="xsd:boolean" default="true" maxOccurs="1"
-                      minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  if true wait for non transaction data to be synced to the journal before returning response to client.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="log-journal-write-rate" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Whether to log messages about the journal write rate
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="journal-file-size" default="10485760" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The size (in bytes) of each journal file. Supports byte notation like "K", "Mb", "GB", etc.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="journal-min-files" type="xsd:int" default="2" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how many journal files to pre-create
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="journal-pool-files" type="xsd:int" default="-1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how many journal files to pre-create
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="journal-compact-percentage" type="xsd:int" default="30" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The percentage of live data on which we consider compacting the journal
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="journal-compact-min-files" type="xsd:int" default="10" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The minimal number of data files before we can start compacting
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="journal-max-io" type="xsd:int" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the maximum number of write requests that can be in the AIO queue at any one time. Default is 500 for
-                  AIO and 1 for NIO.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="journal-file-open-timeout" type="xsd:int" default="5" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the length of time in seconds to wait when opening a new Journal file before timing out and failing
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="server-dump-interval" type="xsd:long" default="-1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Interval to log server specific information (e.g. memory usage etc)
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="global-max-size" type="xsd:string" default="-1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Size (in bytes) before all addresses will enter into their Full Policy configured upon messages being
-                  produced. Supports byte notation like "K", "Mb", "GB", etc.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="max-disk-usage" type="xsd:int" default="90" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Max percentage of disk usage before the system blocks or fails clients.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="disk-scan-period" type="xsd:long" default="5000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how often (in ms) to scan the disks for full disks.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="memory-warning-threshold" type="xsd:int" default="25" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Percentage of available memory which will trigger a warning log
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="memory-measure-interval" type="xsd:long" default="-1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  frequency to sample JVM memory in ms (or -1 to disable memory sampling)
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="large-messages-directory" type="xsd:string" default="data/largemessages"
-                      maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the directory to store large messages
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="store" type="storeType" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The Store Type used by the server
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="critical-analyzer" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  should analyze response time on critical paths and decide for broker log, shutdown or halt.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="critical-analyzer-timeout" type="xsd:long" default="120000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The default timeout used on analyzing timeouts on the critical path.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="critical-analyzer-check-period" type="xsd:long" default="0" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The timeout here will be defaulted to half critical-analyzer-timeout, calculation happening at runtime
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="critical-analyzer-policy" default="LOG" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Should the server log, be shutdown or halted upon critical analysis failure.
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:simpleType>
-               <xsd:restriction base="xsd:string">
-                  <xsd:enumeration value="LOG"/>
-                  <xsd:enumeration value="HALT"/>
-                  <xsd:enumeration value="SHUTDOWN"/>
-               </xsd:restriction>
-            </xsd:simpleType>
-         </xsd:element>
-
-         <xsd:element name="page-sync-timeout" type="xsd:int" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The timeout (in nanoseconds) used to sync pages. The exact default value
-                  depend on whether the journal is ASYNCIO or NIO.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="security-settings" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of security settings
-               </xsd:documentation>
-            </xsd:annotation>
-
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:choice>
-                     <xsd:element name="security-setting" maxOccurs="unbounded" minOccurs="0">
-                        <xsd:complexType>
-                           <xsd:annotation>
-                              <xsd:documentation>
-                                 a permission to add to the matched addresses
-                              </xsd:documentation>
-                           </xsd:annotation>
-                           <xsd:sequence>
-                              <xsd:element name="permission" maxOccurs="unbounded" minOccurs="0">
-                                 <xsd:complexType>
-                                    <xsd:attribute name="type" type="xsd:string" use="required">
-                                       <xsd:annotation>
-                                          <xsd:documentation>
-                                             the type of permission
-                                          </xsd:documentation>
-                                       </xsd:annotation>
-                                    </xsd:attribute>
-                                    <xsd:attribute name="roles" type="xsd:string" use="required">
-                                       <xsd:annotation>
-                                          <xsd:documentation>
-                                             a comma-separated list of roles to apply the permission to
-                                          </xsd:documentation>
-                                       </xsd:annotation>
-                                    </xsd:attribute>
-                                    <xsd:attributeGroup ref="xml:specialAttrs"/>
-                                 </xsd:complexType>
-                              </xsd:element>
-                           </xsd:sequence>
-                           <xsd:attribute name="match" type="xsd:string" use="required">
-                              <xsd:annotation>
-                                 <xsd:documentation>
-                                    pattern for matching security roles against addresses; can use wildcards
-                                 </xsd:documentation>
-                              </xsd:annotation>
-                           </xsd:attribute>
-                           <xsd:attributeGroup ref="xml:specialAttrs"/>
-                        </xsd:complexType>
-                     </xsd:element>
-                     <xsd:element name="security-setting-plugin" maxOccurs="1" minOccurs="0">
-                        <xsd:complexType>
-                           <xsd:annotation>
-                              <xsd:documentation>
-                                 a plugin
-                              </xsd:documentation>
-                           </xsd:annotation>
-                           <xsd:sequence>
-                              <xsd:element name="setting" maxOccurs="unbounded" minOccurs="0">
-                                 <xsd:complexType>
-                                    <xsd:attribute name="name" type="xsd:string" use="required">
-                                       <xsd:annotation>
-                                          <xsd:documentation>
-                                             the name of the setting
-                                          </xsd:documentation>
-                                       </xsd:annotation>
-                                    </xsd:attribute>
-                                    <xsd:attribute name="value" type="xsd:string" use="required">
-                                       <xsd:annotation>
-                                          <xsd:documentation>
-                                             the value for the setting
-                                          </xsd:documentation>
-                                       </xsd:annotation>
-                                    </xsd:attribute>
-                                    <xsd:attributeGroup ref="xml:specialAttrs"/>
-                                 </xsd:complexType>
-                              </xsd:element>
-                           </xsd:sequence>
-                           <xsd:attribute name="class-name" type="xsd:string" use="required">
-                              <xsd:annotation>
-                                 <xsd:documentation>
-                                    the name of the plugin class to instantiate
-                                 </xsd:documentation>
-                              </xsd:annotation>
-                           </xsd:attribute>
-                           <xsd:attributeGroup ref="xml:specialAttrs"/>
-                        </xsd:complexType>
-                     </xsd:element>
-                  </xsd:choice>
-                  <xsd:element name="role-mapping" minOccurs="0" maxOccurs="unbounded">
-                     <xsd:complexType>
-                        <xsd:attribute name="from" type="xsd:string" use="required">
-                           <xsd:annotation>
-                              <xsd:documentation>
-                                 the name of the external role
-                              </xsd:documentation>
-                           </xsd:annotation>
-                        </xsd:attribute>
-                        <xsd:attribute name="to" type="xsd:string" use="required">
-                           <xsd:annotation>
-                              <xsd:documentation>
-                                 the comma delimited name of the internal role(s)
-                              </xsd:documentation>
-                           </xsd:annotation>
-                        </xsd:attribute>
-                        <xsd:attributeGroup ref="xml:specialAttrs"/>
-                     </xsd:complexType>
-                  </xsd:element>
-               </xsd:sequence>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-
-         <xsd:element name="broker-plugins" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of broker-plugins
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:element name="broker-plugin" maxOccurs="unbounded" minOccurs="0">
-                     <xsd:complexType>
-                        <xsd:annotation>
-                           <xsd:documentation>
-                              a broker plugin
-                           </xsd:documentation>
-                        </xsd:annotation>
-                        <xsd:sequence>
-                           <xsd:element ref="property" maxOccurs="unbounded" minOccurs="0">
-                              <xsd:annotation>
-                                 <xsd:documentation>
-                                    properties to configure a plugin
-                                 </xsd:documentation>
-                              </xsd:annotation>
-                           </xsd:element>
-                        </xsd:sequence>
-                        <xsd:attribute name="class-name" type="xsd:string" use="required">
-                           <xsd:annotation>
-                              <xsd:documentation>
-                                 the name of the broker plugin class to instantiate
-                              </xsd:documentation>
-                           </xsd:annotation>
-                        </xsd:attribute>
-                        <xsd:attributeGroup ref="xml:specialAttrs"/>
-                     </xsd:complexType>
-                  </xsd:element>
-               </xsd:sequence>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-
-         <xsd:element name="metrics-plugin" maxOccurs="1" minOccurs="0">
-            <xsd:complexType>
-               <xsd:annotation>
-                  <xsd:documentation>
-                     DEPRECATED: use metrics instead. A metrics plugin
-                  </xsd:documentation>
-               </xsd:annotation>
-               <xsd:sequence>
-                  <xsd:element ref="property" maxOccurs="unbounded" minOccurs="0">
-                     <xsd:annotation>
-                        <xsd:documentation>
-                           properties to configure a plugin
-                        </xsd:documentation>
-                     </xsd:annotation>
-                  </xsd:element>
-               </xsd:sequence>
-               <xsd:attribute name="class-name" type="xsd:string" use="required">
-                  <xsd:annotation>
-                     <xsd:documentation>
-                        the name of the metrics plugin class to instantiate
-                     </xsd:documentation>
-                  </xsd:annotation>
-               </xsd:attribute>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-
-         <xsd:element name="metrics" maxOccurs="1" minOccurs="0">
-            <xsd:complexType>
-               <xsd:annotation>
-                  <xsd:documentation>
-                     metrics configuration
-                  </xsd:documentation>
-               </xsd:annotation>
-               <xsd:all>
-                  <xsd:element name="jvm-memory" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-                     <xsd:annotation>
-                        <xsd:documentation>
-                           whether or not to report JVM memory metrics
-                        </xsd:documentation>
-                     </xsd:annotation>
-                  </xsd:element>
-
-                  <xsd:element name="jvm-threads" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-                     <xsd:annotation>
-                        <xsd:documentation>
-                           whether or not to report JVM thread metrics
-                        </xsd:documentation>
-                     </xsd:annotation>
-                  </xsd:element>
-
-                  <xsd:element name="jvm-gc" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-                     <xsd:annotation>
-                        <xsd:documentation>
-                           whether or not to report JVM GC metrics
-                        </xsd:documentation>
-                     </xsd:annotation>
-                  </xsd:element>
-
-                  <xsd:element name="plugin" maxOccurs="1" minOccurs="0">
-                     <xsd:complexType>
-                        <xsd:annotation>
-                           <xsd:documentation>
-                              a metrics plugin
-                           </xsd:documentation>
-                        </xsd:annotation>
-                        <xsd:sequence>
-                           <xsd:element ref="property" maxOccurs="unbounded" minOccurs="0">
-                              <xsd:annotation>
-                                 <xsd:documentation>
-                                    properties to configure a plugin
-                                 </xsd:documentation>
-                              </xsd:annotation>
-                           </xsd:element>
-                        </xsd:sequence>
-                        <xsd:attribute name="class-name" type="xsd:string" use="required">
-                           <xsd:annotation>
-                              <xsd:documentation>
-                                 the name of the metrics plugin class to instantiate
-                              </xsd:documentation>
-                           </xsd:annotation>
-                        </xsd:attribute>
-                        <xsd:attributeGroup ref="xml:specialAttrs"/>
-                     </xsd:complexType>
-                  </xsd:element>
-               </xsd:all>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-
-         <xsd:element name="address-settings" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of address settings
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:element ref="address-setting" maxOccurs="unbounded" minOccurs="0"/>
-               </xsd:sequence>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-
-         <xsd:element name="resource-limit-settings" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of resource limit settings
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:element ref="resource-limit-setting" maxOccurs="unbounded" minOccurs="0"/>
-               </xsd:sequence>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-
-         <xsd:element name="connector-services" maxOccurs="1" minOccurs="0">
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:element name="connector-service" type="connector-serviceType" maxOccurs="unbounded"
-                               minOccurs="0"/>
-               </xsd:sequence>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-
-         <xsd:element name="addresses" type="addressesType" maxOccurs="1" minOccurs="0"/>
-
-         <xsd:element name="network-check-list" type="xsd:string" default="" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  A comma separated list of IPs to be used to validate if the broker should be kept up
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="network-check-URL-list" type="xsd:string" default="" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  A comma separated list of URLs to be used to validate if the broker should be kept up
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="network-check-period" type="xsd:long" default="10000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  A frequency in milliseconds to how often we should check if the network is still up
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="network-check-timeout" type="xsd:long" default="1000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  A timeout used in milliseconds to be used on the ping.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="network-check-NIC" type="xsd:string" default="" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The network interface card name to be used to validate the address.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="network-check-ping-command" type="xsd:string" default="" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The ping command used to ping IPV4 addresses.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="network-check-ping6-command" type="xsd:string" default="" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The ping command used to ping IPV6 addresses.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="wildcard-addresses" type="wildcardType" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  parameters to configure wildcard address matching format
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:all>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:element name="local-bind-address" type="xsd:string">
-      <xsd:annotation>
-         <xsd:documentation>
-            local bind address that the datagram socket is bound to
-         </xsd:documentation>
-      </xsd:annotation>
-   </xsd:element>
-
-   <xsd:element name="local-bind-port" type="xsd:int" default="-1">
-      <xsd:annotation>
-         <xsd:documentation>
-            local port to which the datagram socket is bound to
-         </xsd:documentation>
-      </xsd:annotation>
-   </xsd:element>
-
-   <!-- BROADCAST GROUP CONFIGURATION -->
-   <xsd:element name="broadcast-group">
-      <xsd:complexType>
-         <xsd:sequence>
-            <xsd:element ref="local-bind-address" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     a local address to which the datagram socket is bound
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-            <xsd:element ref="local-bind-port" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     a local port to which the datagram socket is bound
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-            <xsd:element name="group-address" type="xsd:string" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     multicast address to which the data will be broadcast
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="group-port" type="xsd:int" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     UDP port number used for broadcasting
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="broadcast-period" type="xsd:long" default="2000" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     period in milliseconds between consecutive broadcasts
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="jgroups-file" type="xsd:string" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     Name of JGroups configuration file. If specified, the server uses JGroups for broadcasting.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="jgroups-channel" type="xsd:string" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     Name of JGroups Channel. If specified, the server uses the named channel for broadcasting.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="connector-ref" type="xsd:string" maxOccurs="unbounded" minOccurs="0"/>
-         </xsd:sequence>
-
-         <xsd:attribute name="name" type="xsd:ID" use="required">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a unique name for the broadcast group
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attributeGroup ref="xml:specialAttrs"/>
-      </xsd:complexType>
-   </xsd:element>
-
-   <xsd:element name="discovery-group">
-      <xsd:complexType>
-         <xsd:all>
-            <xsd:element name="group-address" type="xsd:string" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     Multicast IP address of the group to listen on
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-            <xsd:element name="group-port" type="xsd:int" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     UDP port number of the multi cast group
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="jgroups-file" type="xsd:string" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     Name of a JGroups configuration file. If specified, the server uses JGroups for discovery.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="jgroups-channel" type="xsd:string" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     Name of a JGroups Channel. If specified, the server uses the named channel for discovery.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="refresh-timeout" type="xsd:int" default="10000" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     Period the discovery group waits after receiving the last broadcast from a particular server before
-                     removing that servers connector pair entry from its list.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element ref="local-bind-address" maxOccurs="1" minOccurs="0"/>
-            <xsd:element ref="local-bind-port" maxOccurs="1" minOccurs="0"/>
-            <xsd:element name="initial-wait-timeout" type="xsd:int" default="10000" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     time to wait for an initial broadcast to give us at least one node in the cluster
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-         </xsd:all>
-
-         <xsd:attribute name="name" type="xsd:ID" use="required">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a unique name for the discovery group
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attributeGroup ref="xml:specialAttrs"/>
-      </xsd:complexType>
-   </xsd:element>
-
-   <xsd:element name="discovery-group-ref">
-      <xsd:complexType>
-         <xsd:attribute name="discovery-group-name" type="xsd:IDREF"/>
-         <xsd:attributeGroup ref="xml:specialAttrs"/>
-      </xsd:complexType>
-   </xsd:element>
-
-   <xsd:complexType name="class-name-sequenceType">
-      <xsd:annotation>
-         <xsd:documentation>
-            unlimited sequence of &lt;class-name/&gt;
-         </xsd:documentation>
-      </xsd:annotation>
-      <xsd:sequence>
-         <xsd:element maxOccurs="unbounded" minOccurs="1" name="class-name" type="xsd:string">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the fully qualified name of the interceptor class
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:sequence>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="paramType">
-      <xsd:attribute name="key" type="xsd:string" use="required">
-         <xsd:annotation>
-            <xsd:documentation>
-               Key of a configuration parameter
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attribute name="value" type="xsd:string" use="required">
-         <xsd:annotation>
-            <xsd:documentation>
-               Value of a configuration parameter
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <!-- BRIDGE CONFIGURATION -->
-   <xsd:complexType name="bridgeType">
-      <xsd:sequence>
-         <xsd:element name="queue-name" type="xsd:string" maxOccurs="1" minOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  name of queue that this bridge consumes from
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="forwarding-address" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  address to forward to. If omitted original address is used
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="ha" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  whether this bridge supports fail-over
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element ref="filter" maxOccurs="1" minOccurs="0"/>
-
-         <xsd:element name="transformer-class-name" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  optional name of transformer class
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="transformer" type="transformerType" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  optional transformer configuration
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="min-large-message-size" type="xsd:string" default="102400" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Any message larger than this size (in bytes) is considered a large message (to be sent in
-                  chunks). Supports byte notation like "K", "Mb", "GB", etc.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="check-period" type="xsd:long" default="30000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The period (in milliseconds) a bridge's client will check if it failed to receive a ping from the
-                  server. -1 disables this check.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="connection-ttl" type="xsd:long" default="60000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how long to keep a connection alive in the absence of any data arriving from the client. This should
-                  be greater than the ping period.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="retry-interval" type="xsd:long" default="2000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  period (in ms) between successive retries
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="retry-interval-multiplier" type="xsd:double" default="1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  multiplier to apply to successive retry intervals
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="max-retry-interval" type="xsd:long" default="2000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Limit to the retry-interval growth (due to retry-interval-multiplier)
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="initial-connect-attempts" type="xsd:int" default="-1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  maximum number of initial connection attempts, -1 means 'no limits'
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="reconnect-attempts" type="xsd:int" default="-1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  maximum number of retry attempts, -1 means 'no limits'
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="failover-on-server-shutdown" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  should failover be prompted if target server is cleanly shutdown?
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="use-duplicate-detection" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  should duplicate detection headers be inserted in forwarded messages?
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="confirmation-window-size" type="xsd:string" maxOccurs="1" minOccurs="0" default="1048576">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Once the bridge has received this many bytes, it sends a confirmation. Supports byte notation like
-                  "K", "Mb", "GB", etc.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="producer-window-size" type="xsd:string" maxOccurs="1" minOccurs="0" default="-1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Producer flow control. Supports byte notation like "K", "Mb", "GB", etc.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="user" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  username, if unspecified the cluster-user is used
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="password" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  password, if unspecified the cluster-password is used
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="reconnect-attempts-same-node" default="10" type="xsd:int" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Upon reconnection this configures the number of time the same node on the topology will be retried
-                  before resetting the server locator and using the initial connectors
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="routing-type" type="component-routing-type" default="PASS" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how should the routing-type on the bridged messages be set?
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:choice>
-            <xsd:element name="static-connectors" maxOccurs="1" minOccurs="1">
-               <xsd:complexType>
-                  <xsd:sequence>
-                     <xsd:element name="connector-ref" type="xsd:string" maxOccurs="unbounded" minOccurs="1"/>
-                  </xsd:sequence>
-                  <xsd:attributeGroup ref="xml:specialAttrs"/>
-               </xsd:complexType>
-            </xsd:element>
-            <xsd:element name="discovery-group-ref" maxOccurs="1" minOccurs="1">
-               <xsd:complexType>
-                  <xsd:attribute name="discovery-group-name" type="xsd:IDREF" use="required">
-                     <xsd:annotation>
-                        <xsd:documentation>
-                           name of discovery group used by this bridge
-                        </xsd:documentation>
-                     </xsd:annotation>
-                  </xsd:attribute>
-                  <xsd:attributeGroup ref="xml:specialAttrs"/>
-               </xsd:complexType>
-            </xsd:element>
-         </xsd:choice>
-      </xsd:sequence>
-
-      <xsd:attribute name="name" type="xsd:ID" use="required">
-         <xsd:annotation>
-            <xsd:documentation>
-               unique name for this bridge
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <!-- FEDERATION CONFIGURATION -->
-   <xsd:complexType name="federationType">
-      <xsd:sequence>
-         <xsd:element name="upstream" type="upstreamType" minOccurs="0" maxOccurs="unbounded" />
-         <xsd:element name="downstream" type="downstreamType" minOccurs="0" maxOccurs="unbounded" />
-         <xsd:element name="policy-set" type="policySetType" minOccurs="0" maxOccurs="unbounded" />
-         <xsd:element name="queue-policy" type="queuePolicyType" minOccurs="0" maxOccurs="unbounded" />
-         <xsd:element name="address-policy" type="addressPolicyType" minOccurs="0" maxOccurs="unbounded" />
-         <xsd:element name="transformer" type="federationTransformerType" minOccurs="0" maxOccurs="unbounded" />
-      </xsd:sequence>
-      <xsd:attribute name="name" type="xsd:ID" use="required" />
-      <xsd:attribute name="user" type="xsd:string" use="optional" />
-      <xsd:attribute name="password" type="xsd:string" use="optional" />
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="downstreamType">
-      <xsd:complexContent>
-         <xsd:extension base="streamType">
-            <xsd:sequence>
-               <xsd:element name="upstream-connector-ref" type="xsd:string" maxOccurs="1" minOccurs="1">
-                  <xsd:annotation>
-                     <xsd:documentation>
-                        Name of the transport connector reference to use for the new upstream connection
-                        back to this broker.
-                     </xsd:documentation>
-                  </xsd:annotation>
-               </xsd:element>
-            </xsd:sequence>
-         </xsd:extension>
-      </xsd:complexContent>
-   </xsd:complexType>
-
-   <xsd:complexType name="upstreamType">
-      <xsd:complexContent>
-         <xsd:extension base="streamType"/>
-      </xsd:complexContent>
-   </xsd:complexType>
-
-   <xsd:complexType name="streamType">
-      <xsd:sequence>
-
-         <xsd:element name="ha" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  whether this connection supports fail-over
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="circuit-breaker-timeout" type="xsd:long" default="30000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  whether this connection supports fail-over
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="share-connection" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  if there is a downstream and upstream connection configured for the same broker then
-                  the same connection will be shared as long as both stream configs set this flag to true
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="connection-ttl" type="xsd:long" default="60000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how long to keep a connection alive in the absence of any data arriving from the client
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="call-timeout" type="xsd:long" default="30000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How long to wait for a reply
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="retry-interval" type="xsd:long" default="500" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  period (in ms) between successive retries
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="retry-interval-multiplier" type="xsd:double" default="1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  multiplier to apply to the retry-interval
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="max-retry-interval" type="xsd:long" default="2000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Maximum value for retry-interval
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="initial-connect-attempts" type="xsd:int" default="-1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How many attempts should be made to connect initially
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="reconnect-attempts" type="xsd:int" default="-1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How many attempts should be made to reconnect after failure
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="check-period" type="xsd:long" default="30000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The period (in milliseconds) used to check if the federation connection has failed to receive pings from
-                  another server
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="call-failover-timeout" type="xsd:long" default="-1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How long to wait for a reply if in the middle of a fail-over. -1 means wait forever.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:choice>
-            <xsd:element name="static-connectors" maxOccurs="1" minOccurs="1">
-               <xsd:complexType>
-                  <xsd:sequence>
-                     <xsd:element name="connector-ref" type="xsd:string" maxOccurs="unbounded" minOccurs="1"/>
-                  </xsd:sequence>
-                  <xsd:attributeGroup ref="xml:specialAttrs"/>
-               </xsd:complexType>
-            </xsd:element>
-            <xsd:element name="discovery-group-ref" maxOccurs="1" minOccurs="1">
-               <xsd:complexType>
-                  <xsd:attribute name="discovery-group-name" type="xsd:IDREF" use="required">
-                     <xsd:annotation>
-                        <xsd:documentation>
-                           name of discovery group used by this connection
-                        </xsd:documentation>
-                     </xsd:annotation>
-                  </xsd:attribute>
-                  <xsd:attributeGroup ref="xml:specialAttrs"/>
-               </xsd:complexType>
-            </xsd:element>
-         </xsd:choice>
-         <xsd:element name="policy" type="policyRefType" minOccurs="0" maxOccurs="unbounded"/>
-      </xsd:sequence>
-      <xsd:attribute name="priority-adjustment" type="xsd:int" use="optional" />
-      <xsd:attribute name="user" type="xsd:string" use="optional">
-         <xsd:annotation>
-            <xsd:documentation>
-               username, if unspecified the federated user is used
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attribute name="password" type="xsd:string" use="optional">
-         <xsd:annotation>
-            <xsd:documentation>
-               password, if unspecified the federated password is used
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attribute name="name" type="xsd:ID" use="required">
-         <xsd:annotation>
-            <xsd:documentation>
-               unique name for this upstream
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-
-   <xsd:complexType name="policySetType">
-      <xsd:sequence>
-         <xsd:element name="policy" type="policyRefType" minOccurs="0" maxOccurs="unbounded" />
-      </xsd:sequence>
-      <xsd:attribute name="name" type="xsd:ID" use="required" />
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-
-   <xsd:complexType name="policyRefType">
-      <xsd:attribute name="ref" type="xsd:string" use="required" />
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-
-   <xsd:complexType name="queuePolicyType">
-      <xsd:sequence>
-         <xsd:element name="include" type="queueMatchType" minOccurs="0" maxOccurs="unbounded"/>
-         <xsd:element name="exclude" type="queueMatchType" minOccurs="0" maxOccurs="unbounded"/>
-      </xsd:sequence>
-      <xsd:attribute name="transformer-ref" type="xsd:string" use="optional" />
-      <xsd:attribute name="priority-adjustment" type="xsd:int" use="optional" />
-      <xsd:attribute name="include-federated" type="xsd:boolean" use="optional" />
-      <xsd:attribute name="name" type="xsd:ID" use="required" />
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="queueMatchType">
-      <xsd:attribute name="queue-match" type="xsd:string" use="required" />
-      <xsd:attribute name="address-match" type="xsd:string" use="required" />
-      <xsd:attributeGroup ref="xml:specialAttrs" />
-   </xsd:complexType>
-
-
-   <xsd:complexType name="addressPolicyType">
-      <xsd:sequence>
-         <xsd:element name="include" type="addressMatchType" minOccurs="0" maxOccurs="unbounded"/>
-         <xsd:element name="exclude" type="addressMatchType" minOccurs="0" maxOccurs="unbounded"/>
-      </xsd:sequence>
-      <xsd:attribute name="transformer-ref" type="xsd:string" use="optional" />
-      <xsd:attribute name="auto-delete" type="xsd:boolean" use="optional" />
-      <xsd:attribute name="auto-delete-delay" type="xsd:long" use="optional" />
-      <xsd:attribute name="auto-delete-message-count" type="xsd:long" use="optional" />
-      <xsd:attribute name="max-hops" type="xsd:int" use="optional" />
-      <xsd:attribute name="name" type="xsd:ID" use="required" />
-      <xsd:attribute name="enable-divert-bindings" type="xsd:boolean" use="optional" />
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="addressMatchType">
-      <xsd:attribute name="address-match" type="xsd:string" use="required" />
-      <xsd:attributeGroup ref="xml:specialAttrs" />
-   </xsd:complexType>
-
-   <xsd:complexType name="federationTransformerType">
-      <xsd:sequence>
-         <xsd:element name="class-name" type="xsd:string" maxOccurs="1" minOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  optional name of transformer class
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element ref="property"  maxOccurs="unbounded" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  properties to configure the transformer class
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:sequence>
-      <xsd:attribute name="name" type="xsd:ID" use="required" />
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <!-- TRANSFORMER CONFIGURATION -->
-   <xsd:complexType name="transformerType">
-      <xsd:sequence>
-         <xsd:element name="class-name" type="xsd:string" maxOccurs="1" minOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  optional name of transformer class
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element ref="property"  maxOccurs="unbounded" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  properties to configure the transformer class
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:sequence>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:element name="property">
-      <xsd:complexType>
-         <xsd:attribute name="key" type="xsd:string" use="required">
-            <xsd:annotation>
-               <xsd:documentation>
-                  key for the property
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attribute name="value" type="xsd:string" use="required">
-            <xsd:annotation>
-               <xsd:documentation>
-                  value for the property
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attributeGroup ref="xml:specialAttrs"/>
-      </xsd:complexType>
-   </xsd:element>
-
-
-   <!-- CLUSTER CONNECTION CONFIGURATION -->
-
-   <xsd:complexType name="clusterConnectionChoiceType">
-      <xsd:sequence>
-         <xsd:choice maxOccurs="unbounded">
-            <xsd:element name="cluster-connection-uri" type="cluster-connectionUriType"/>
-            <xsd:element name="cluster-connection" type="cluster-connectionType">
-            </xsd:element>
-         </xsd:choice>
-      </xsd:sequence>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="brokerConnectType">
-      <xsd:sequence maxOccurs="unbounded">
-         <xsd:element name="amqp-connection" type="amqp-connectionUriType"/>
-      </xsd:sequence>
-   </xsd:complexType>
-
-   <xsd:complexType name="amqp-connectionUriType">
-      <xsd:sequence>
-         <xsd:choice maxOccurs="unbounded">
-            <xsd:element name="sender" type="amqp-address-match-type"/>
-            <xsd:element name="receiver" type="amqp-address-match-type"/>
-            <xsd:element name="peer" type="amqp-address-match-type"/>
-            <xsd:element name="mirror" type="amqp-mirror-type"/>
-         </xsd:choice>
-      </xsd:sequence>
-      <xsd:attribute name="uri" type="xsd:string" use="required">
-         <xsd:annotation>
-            <xsd:documentation>
-               uri of the amqp connection
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attribute name="auto-start" type="xsd:boolean" default="true">
-         <xsd:annotation>
-            <xsd:documentation>
-               should the broker connection be started when the server is started.
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attribute name="reconnect-attempts" type="xsd:int" default="-1">
-         <xsd:annotation>
-            <xsd:documentation>
-               How many attempts should be made to reconnect after failure
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attribute name="retry-interval" type="xsd:long" default="5000">
-         <xsd:annotation>
-            <xsd:documentation>
-               period (in ms) between successive retries
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attribute name="user" type="xsd:string" default="">
-         <xsd:annotation>
-            <xsd:documentation>
-               User name used to connect. If not defined it will try an anonymous connection.
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attribute name="password" type="xsd:string" default="">
-         <xsd:annotation>
-            <xsd:documentation>
-               Password used to connect. If not defined it will try an anonymous connection.
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-
-      <xsd:attribute name="name" type="xsd:string" use="required">
-         <xsd:annotation>
-            <xsd:documentation>
-               name of the amqp connection
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="amqp-address-match-type">
-      <xsd:attribute name="address-match" type="xsd:string" use="optional">
-         <xsd:annotation>
-            <xsd:documentation>
-               address expression to match addresses
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attribute name="queue-name" type="xsd:string" use="optional">
-         <xsd:annotation>
-            <xsd:documentation>
-               This is the exact queue name to be used.
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-   </xsd:complexType>
-   <xsd:complexType name="amqp-mirror-type">
-      <xsd:annotation>
-         <xsd:documentation>
-            This will determine that queues are mirrored towards this next broker.
-            All events will be send towards this AMQP connection acting like a replica.
-         </xsd:documentation>
-      </xsd:annotation>
-
-      <xsd:attribute name="message-acknowledgements" type="xsd:boolean" use="optional" default="true">
-         <xsd:annotation>
-            <xsd:documentation>
-               Should mirror acknowledgements towards the other server
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attribute name="queue-creation" type="xsd:boolean" use="optional" default="true">
-         <xsd:annotation>
-            <xsd:documentation>
-               Should mirror queue creation events for addresses and queues.
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attribute name="queue-removal" type="xsd:boolean" use="optional" default="true">
-         <xsd:annotation>
-            <xsd:documentation>
-               Should mirror queue deletion events for addresses and queues.
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attribute name="source-mirror-address" type="xsd:string" use="optional" default="">
-         <xsd:annotation>
-            <xsd:documentation>
-               By default the replica will use a temporary store and forward queue to store events towards the mirror / replica.
-               However if this is set, we will use a defined durable queue.
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-
-   </xsd:complexType>
-
-   <xsd:complexType name="cluster-connectionUriType">
-      <xsd:attribute name="address" type="xsd:string" use="required">
-         <xsd:annotation>
-            <xsd:documentation>
-               uri of the cluster connection
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attribute name="name" type="xsd:string" use="required">
-         <xsd:annotation>
-            <xsd:documentation>
-               name of the cluster connection
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="cluster-connectionType">
-      <xsd:sequence>
-         <xsd:element name="address" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  name of the address this cluster connection applies to
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="connector-ref" type="xsd:string" maxOccurs="1" minOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Name of the connector reference to use.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="check-period" type="xsd:long" default="30000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The period (in milliseconds) used to check if the cluster connection has failed to receive pings from
-                  another server
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="connection-ttl" type="xsd:long" default="60000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how long to keep a connection alive in the absence of any data arriving from the client
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="min-large-message-size" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Messages larger than this are considered large-messages. Supports byte notation like
-                  "K", "Mb", "GB", etc.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="call-timeout" type="xsd:long" default="30000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How long to wait for a reply
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="retry-interval" type="xsd:long" default="500" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  period (in ms) between successive retries
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="retry-interval-multiplier" type="xsd:double" default="1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  multiplier to apply to the retry-interval
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="max-retry-interval" type="xsd:long" default="2000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Maximum value for retry-interval
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="initial-connect-attempts" type="xsd:int" default="-1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How many attempts should be made to connect initially
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="reconnect-attempts" type="xsd:int" default="-1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How many attempts should be made to reconnect after failure
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="use-duplicate-detection" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  should duplicate detection headers be inserted in forwarded messages?
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="forward-when-no-consumers" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  DEPRECATED: use message-load-balancing-type instead. Select STRICT to mimic
-                  forward-when-no-consumers=true and ON_DEMAND to mimic forward-when-no-consumers=false.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="message-load-balancing" default="ON_DEMAND" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how should messages be load balanced between servers in a cluster?
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:simpleType>
-               <xsd:restriction base="xsd:string">
-                  <xsd:enumeration value="OFF"/>
-                  <xsd:enumeration value="STRICT"/>
-                  <xsd:enumeration value="ON_DEMAND"/>
-               </xsd:restriction>
-            </xsd:simpleType>
-         </xsd:element>
-
-         <xsd:element name="max-hops" type="xsd:int" default="1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  maximum number of hops cluster topology is propagated
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="confirmation-window-size" type="xsd:string" default="1048576" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The size (in bytes) of the window used for confirming data from the server connected to. Supports
-                  byte notation like "K", "Mb", "GB", etc.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="producer-window-size" type="xsd:string" maxOccurs="1" minOccurs="0" default="-1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Producer flow control. Supports byte notation like "K", "Mb", "GB", etc.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="call-failover-timeout" type="xsd:long" default="-1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How long to wait for a reply if in the middle of a fail-over. -1 means wait forever.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="notification-interval" type="xsd:long" default="1000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how often the cluster connection will notify the cluster of its existence right after joining the
-                  cluster
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="notification-attempts" type="xsd:int" default="2" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how many times this cluster connection will notify the cluster of its existence right after joining
-                  the cluster
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="scale-down-connector" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The connector to use for scaling down or when as backup in SCALE_DOWN mode
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:choice>
-            <xsd:element name="static-connectors" maxOccurs="1" minOccurs="0">
-               <xsd:complexType>
-                  <xsd:sequence>
-                     <xsd:element name="connector-ref" type="xsd:string" maxOccurs="unbounded" minOccurs="0"/>
-                  </xsd:sequence>
-                  <xsd:attribute name="allow-direct-connections-only" default="false" type="xsd:boolean" use="optional">
-                     <xsd:annotation>
-                        <xsd:documentation>
-                           restricts cluster connections to the listed connector-ref's
-                        </xsd:documentation>
-                     </xsd:annotation>
-                  </xsd:attribute>
-                  <xsd:attributeGroup ref="xml:specialAttrs"/>
-               </xsd:complexType>
-            </xsd:element>
-            <xsd:element name="discovery-group-ref" maxOccurs="1" minOccurs="0">
-               <xsd:complexType>
-                  <xsd:attribute name="discovery-group-name" type="xsd:IDREF" use="required">
-                     <xsd:annotation>
-                        <xsd:documentation>
-                           name of discovery group used by this cluster-connection
-                        </xsd:documentation>
-                     </xsd:annotation>
-                  </xsd:attribute>
-                  <xsd:attributeGroup ref="xml:specialAttrs"/>
-               </xsd:complexType>
-            </xsd:element>
-         </xsd:choice>
-      </xsd:sequence>
-      <xsd:attribute name="name" type="xsd:ID" use="required">
-         <xsd:annotation>
-            <xsd:documentation>
-               unique name for this cluster connection
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attribute name="uri" type="xsd:string" use="optional">
-         <xsd:annotation>
-            <xsd:documentation>
-               The URI for the cluster connection options
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-
-   <xsd:complexType name="cluster-connection-uri-type">
-      <xsd:attribute name="name" type="xsd:ID" use="required">
-         <xsd:annotation>
-            <xsd:documentation>
-               unique name for this cluster connection
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attribute name="uri" type="xsd:string" use="required">
-         <xsd:annotation>
-            <xsd:documentation>
-               The URI for the cluster connection options
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <!-- DIVERT CONFIGURATION TYPE -->
-   <xsd:complexType name="divertType">
-      <xsd:all>
-         <xsd:element name="transformer-class-name" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  an optional class name of a transformer
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="transformer" type="transformerType" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  optional transformer configuration
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="exclusive" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  whether this is an exclusive divert
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="routing-name" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the routing name for the divert
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="address" type="xsd:string" maxOccurs="1" minOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the address this divert will divert from
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="forwarding-address" type="xsd:string" maxOccurs="1" minOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the forwarding address for the divert
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element ref="filter" maxOccurs="1" minOccurs="0"/>
-
-         <xsd:element name="routing-type" type="component-routing-type" default="STRIP" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  how should the routing-type on the diverted messages be set?
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:all>
-
-      <xsd:attribute name="name" type="xsd:ID" use="required">
-         <xsd:annotation>
-            <xsd:documentation>
-               a unique name for the divert
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="storeType">
-      <xsd:choice>
-         <xsd:element name="file-store" type="fileStoreType" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Use a file based store for persisting journal, paging and large messages
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="database-store" type="databaseStoreType" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Use a database for persisting journal, paging and large messages
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:choice>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="fileStoreType">
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="databaseStoreType">
-      <xsd:all>
-         <xsd:element name="jdbc-driver-class-name" type="xsd:string" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The JDBC Driver class name
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="jdbc-connection-url" type="xsd:string" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The JDBC Connection URL e.g. jdbc:mysql://localhost:3306/
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="jdbc-user" type="xsd:string" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The JDBC User to use for connecting to the database, NB this will only work with drivers where support
-                  DriverManager.getConnection(String url, String user, String password). This can be encrypted.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="jdbc-password" type="xsd:string" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The JDBC Password to use for connecting to the database, NB this will only work with drivers where support
-                  DriverManager.getConnection(String url, String user, String password). This can be encrypted.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="data-source-class-name" type="xsd:string" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The DataSource class name
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="data-source-properties" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  A list of options for the DataSource
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:element name="data-source-property" type="dataSourcePropertyType" minOccurs="1" maxOccurs="unbounded">
-                     <xsd:annotation>
-                        <xsd:documentation>
-                           A key-value pair option for the DataSource
-                        </xsd:documentation>
-                     </xsd:annotation>
-                  </xsd:element>
-               </xsd:sequence>
-            </xsd:complexType>
-         </xsd:element>
-         <xsd:element name="message-table-name" type="xsd:string" minOccurs="1" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The table name used to store message journal entries
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="bindings-table-name" type="xsd:string" minOccurs="1" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The table name used to store bindings journal entries
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="large-message-table-name" type="xsd:string" minOccurs="1" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The table name used to large message files
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="page-store-table-name" type="xsd:string" minOccurs="1" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The table name used to large message files
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="node-manager-store-table-name" type="xsd:string" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The table name used to hold shared store data
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="jdbc-network-timeout" type="xsd:int" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The JDBC network connection timeout in milliseconds.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="jdbc-lock-renew-period" type="xsd:int" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The period in milliseconds of the keep alive service of a JDBC lock.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="jdbc-lock-expiration" type="xsd:int" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The time in milliseconds a JDBC lock is considered valid without keeping it alive.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="jdbc-journal-sync-period" type="xsd:string" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The JDBC jouranl sync period in milliseconds.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:all>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="dataSourcePropertyType">
-      <xsd:attribute name="key" type="xsd:string" use="required">
-         <xsd:annotation>
-            <xsd:documentation>
-               Configuration option key
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attribute name="value" type="xsd:string" use="required">
-         <xsd:annotation>
-            <xsd:documentation>
-               Configuration option value
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-   </xsd:complexType>
-
-   <xsd:complexType name="haPolicyType">
-      <xsd:choice>
-         <xsd:element name="live-only" type="haLiveOnlyPolicyType" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  A live only server with no HA capabilities apart from scale down.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="replication" type="haReplicationType" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Configuration for a replicated server, either master, slave or colocated.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="shared-store" type="haSharedStoreType" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Configuration for a shared store server, either master, slave or colocated.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:choice>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="haReplicationType">
-      <xsd:choice>
-         <xsd:element name="master" type="replicatedPolicyType" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  A live server configured to replicate.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="slave" type="replicaPolicyType" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  A backup server configured to replicate.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="colocated" type="haColocationReplicationType" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a replicated lives server that will allow requests to create colocated replicated backup servers.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:choice>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-
-   <xsd:complexType name="haColocationReplicationType">
-      <xsd:all>
-         <xsd:element name="request-backup" type="xsd:boolean" minOccurs="0" maxOccurs="1" default="false">
-            <xsd:annotation>
-               <xsd:documentation>
-                  If true then the server will request a backup on another node
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="backup-request-retries" type="xsd:int" minOccurs="0" maxOccurs="1" default="-1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How many times the live server will try to request a backup, -1 means for ever.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="backup-request-retry-interval" type="xsd:long" minOccurs="0" maxOccurs="1" default="5000">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How long to wait for retries between attempts to request a backup server.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="max-backups" type="xsd:int" minOccurs="0" maxOccurs="1" default="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Whether or not this live server will accept backup requests from other live servers.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="backup-port-offset" type="xsd:int" minOccurs="0" maxOccurs="1" default="100">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The offset to use for the Connectors and Acceptors when creating a new backup server.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="excludes" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the connectors that shouldn't have their ports offset, typically remote connectors or the
-                  connector used in the cluster connection if scaling down
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:element name="connector-ref" type="xsd:string" maxOccurs="unbounded" minOccurs="1"/>
-               </xsd:sequence>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-         <xsd:element name="master" type="replicatedPolicyType" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The configuration for the live replicated server.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="slave" type="replicaPolicyType" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The configuration for any slaves created.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:all>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="haColocationSharedStoreType">
-      <xsd:all>
-         <xsd:element name="request-backup" type="xsd:boolean" minOccurs="0" maxOccurs="1" default="false">
-            <xsd:annotation>
-               <xsd:documentation>
-                  If true then the server will request a backup on another node
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="backup-request-retries" type="xsd:int" minOccurs="0" maxOccurs="1" default="-1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How many times the live server will try to request a backup, -1 means for ever.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="backup-request-retry-interval" type="xsd:long" minOccurs="0" maxOccurs="1" default="5000">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How long to wait for retries between attempts to request a backup server.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="max-backups" type="xsd:int" minOccurs="0" maxOccurs="1" default="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Whether or not this live server will accept backup requests from other live servers.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="backup-port-offset" type="xsd:int" minOccurs="0" maxOccurs="1" default="100">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The offset to use for the Connectors and Acceptors when creating a new backup server.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="master" type="sharedStoreMasterPolicyType" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The configuration for the live shared store server.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="slave" type="sharedStoreSlavePolicyType" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The configuration for any shared store backups created.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:all>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="haSharedStoreType">
-      <xsd:choice>
-         <xsd:element name="master" type="sharedStoreMasterPolicyType" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  A shared store live server configuration.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="slave" type="sharedStoreSlavePolicyType" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  A shared store backup server configuration.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="colocated" type="haColocationSharedStoreType" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  A shared store colocated configuration
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:choice>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="haLiveOnlyPolicyType">
-      <xsd:all>
-         <xsd:element name="scale-down" type="scaleDownType" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The scale down configuration of this live server.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:all>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-   <xsd:complexType name="replicatedPolicyType">
-      <xsd:all>
-         <xsd:element name="group-name" type="xsd:string" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  used for replication, if set, (remote) backup servers will only pair with live servers with matching
-                  group-name
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="cluster-name" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Name of the cluster configuration to use for replication. This setting is only necessary in case you
-                  configure multiple cluster connections. It is used by a replicating backups and by live servers that
-                  may attempt fail-back.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="check-for-live-server" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Whether to check the cluster for a (live) server using our own server ID when starting
-                  up. This option is only necessary for performing 'fail-back' on replicating
-                  servers. Strictly speaking this setting only applies to live servers and not to
-                  backups.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="initial-replication-sync-timeout" type="xsd:long" default="30000" maxOccurs="1"
-                      minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The amount of time to wait for the replica to acknowledge it has received all the necessary data from
-                  the replicating server at the final step of the initial replication synchronization process.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="vote-on-replication-failure" type="xsd:boolean" default="false" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Whether or not this live broker should vote to remain as live if replication is lost.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="quorum-size" type="xsd:integer" default="-1" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The quorum size used for voting after replication loss, -1 means use the current cluster size
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-
-         <xsd:element name="vote-retries" type="xsd:integer" default="12" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  If we start as a replica and lose connection to the master, how many times should we attempt to vote
-                  for quorum before restarting
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="vote-retry-wait" type="xsd:long" default="5000" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How long to wait (in milliseconds) between each vote
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="quorum-vote-wait" type="xsd:integer" default="30" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How long to wait (in seconds) for vote results
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="retry-replication-wait" type="xsd:long" default="2000" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  If we start as a replica how long to wait (in milliseconds) before trying to replicate again after failing to find a replica
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:all>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-   <xsd:complexType name="replicaPolicyType">
-      <xsd:all>
-         <xsd:element name="group-name" type="xsd:string" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  used for replication, if set, (remote) backup servers will only pair with live servers with matching
-                  group-name
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="cluster-name" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Name of the cluster configuration to use for replication. This setting is only necessary in case you
-                  configure multiple cluster connections. It is used by a replicating backups and by live servers that
-                  may attempt fail-back.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="max-saved-replicated-journals-size" type="xsd:int" default="2" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  This specifies how many times a replicated backup server can restart after moving its files on start.
-                  Once there are this number of backup journal files the server will stop permanently after if fails
-                  back.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="scale-down" type="scaleDownType" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  if provided then this backup will scale down rather than becoming live after fail over.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="restart-backup" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Will this server, if a backup, restart once it has been stopped because of failback or scaling down.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="allow-failback" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Whether a server will automatically stop when a another places a request to take over
-                  its place. The use case is when a regular server stops and its backup takes over its
-                  duties, later the main server restarts and requests the server (the former backup) to
-                  stop operating.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="failback-delay" type="xsd:long" default="5000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  DEPRECATED: if we have to start as a replicated server this is the delay to wait before fail-back
-                  occurs
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="initial-replication-sync-timeout" type="xsd:long" default="30000" maxOccurs="1"
-                      minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  If we have to start as a replicated server this is the amount of time to wait for the replica to
-                  acknowledge it has received all the necessary data from the replicating server at the final step
-                  of the initial replication synchronization process.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="vote-on-replication-failure" type="xsd:boolean" default="false" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  If we have to start as a replicated server decide whether or not this live broker should vote to remain
-                  as live if replication is lost.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="quorum-size" type="xsd:integer" default="-1" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  If we have to start as a replicated server or we are a backup and lose connection to live, the quorum size
-                  used for voting after replication loss, -1 means use the current cluster size
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="vote-retries" type="xsd:integer" default="12" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  If we lose connection to the master, how many times should we attempt to vote for quorum before restarting
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="vote-retry-wait" type="xsd:long" default="5000" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How long to wait (in milliseconds) between each vote
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="retry-replication-wait" type="xsd:long" default="2000" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How long to wait (in milliseconds) before trying to replicate again after failing to find a replica
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="quorum-vote-wait" type="xsd:integer" default="30" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How long to wait (in seconds) for vote results
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:all>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-   <xsd:complexType name="colocatedReplicaPolicyType">
-      <xsd:all>
-         <xsd:element name="group-name" type="xsd:string" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  used for replication, if set, (remote) backup servers will only pair with live servers with matching
-                  group-name
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="cluster-name" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Name of the cluster configuration to use for replication. This setting is only necessary in case you
-                  configure multiple cluster connections. It is used by a replicating backups and by live servers that
-                  may attempt fail-back.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="max-saved-replicated-journals-size" type="xsd:int" default="2" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  This specifies how many times a replicated backup server can restart after moving its files on start.
-                  Once there are this number of backup journal files the server will stop permanently after if fails
-                  back.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="scale-down" type="scaleDownType" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  if provided then this backup will scale down rather than becoming live after fail over.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="restart-backup" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Will this server, if a backup, restart once it has been stopped because of failback or scaling down.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:all>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-   <xsd:complexType name="sharedStoreMasterPolicyType">
-      <xsd:all>
-         <xsd:element name="failback-delay" type="xsd:long" default="5000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  DEPRECATED: delay to wait before fail-back occurs on (live's) restart
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="failover-on-shutdown" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Will this backup server come live on a normal server shutdown
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="wait-for-activation" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Will the master startup wait until it is activated
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:all>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-   <xsd:complexType name="sharedStoreSlavePolicyType">
-      <xsd:all>
-         <xsd:element name="allow-failback" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Whether a server will automatically stop when a another places a request to take over
-                  its place. The use case is when a regular server stops and its backup takes over its
-                  duties, later the main server restarts and requests the server (the former backup) to
-                  stop operating.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="failback-delay" type="xsd:long" default="5000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  DEPRECATED: delay to wait before fail-back occurs on (live's) restart
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="failover-on-shutdown" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Will this backup server come live on a normal server shutdown
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="scale-down" type="scaleDownType" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  if provided then this backup will scale down rather than becoming live after fail over.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="restart-backup" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Will this server, if a backup, restart once it has been stopped because of failback or scaling down.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:all>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-   <xsd:complexType name="colocatedPolicyType">
-      <xsd:all>
-         <xsd:element name="request-backup" type="xsd:boolean" minOccurs="0" maxOccurs="1" default="false">
-            <xsd:annotation>
-               <xsd:documentation>
-                  If true then the server will request a backup on another node
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="backup-request-retries" type="xsd:int" minOccurs="0" maxOccurs="1" default="-1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How many times the live server will try to request a backup, -1 means for ever.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="backup-request-retry-interval" type="xsd:long" minOccurs="0" maxOccurs="1" default="5000">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How long to wait for retries between attempts to request a backup server.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="max-backups" type="xsd:int" minOccurs="0" maxOccurs="1" default="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Whether or not this live server will accept backup requests from other live servers.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="backup-port-offset" type="xsd:int" minOccurs="0" maxOccurs="1" default="100">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The offset to use for the Connectors and Acceptors when creating a new backup server.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:all>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-   <xsd:complexType name="scaleDownType">
-      <xsd:sequence>
-         <xsd:element name="enabled" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  its possible that you only want a server to partake in scale down as a receiver, via a group.
-                  In this case set scale-down to false
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="group-name" type="xsd:string" minOccurs="0" maxOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  The scale down group to scale down to, a server will only scale down to a server within the same group
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:choice>
-            <xsd:element name="discovery-group-ref" maxOccurs="1" minOccurs="0">
-               <xsd:complexType>
-                  <xsd:attribute name="discovery-group-name" type="xsd:IDREF" use="required">
-                     <xsd:annotation>
-                        <xsd:documentation>
-                           The discovery group to use for scale down, if not supplied then the scale-down-connectors or
-                           first
-                           invm connector will be used
-                        </xsd:documentation>
-                     </xsd:annotation>
-                  </xsd:attribute>
-                  <xsd:attributeGroup ref="xml:specialAttrs"/>
-               </xsd:complexType>
-            </xsd:element>
-            <xsd:element name="connectors" minOccurs="0" maxOccurs="1">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     A list of connectors to use for scaling down, if not supplied then the scale-down-discovery-group
-                     or
-                     first invm connector will be used
-                  </xsd:documentation>
-               </xsd:annotation>
-               <xsd:complexType>
-                  <xsd:sequence>
-                     <xsd:element name="connector-ref" type="xsd:string" maxOccurs="unbounded" minOccurs="1"/>
-                  </xsd:sequence>
-                  <xsd:attributeGroup ref="xml:specialAttrs"/>
-               </xsd:complexType>
-            </xsd:element>
-         </xsd:choice>
-      </xsd:sequence>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="groupingHandlerType">
-      <xsd:all>
-         <xsd:element name="type" maxOccurs="1" minOccurs="1">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Each cluster should choose 1 node to have a LOCAL grouping handler and all the other nodes should have
-                  REMOTE handlers
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:simpleType>
-               <xsd:restriction base="xsd:string">
-                  <xsd:enumeration value="LOCAL"/>
-                  <xsd:enumeration value="REMOTE"/>
-               </xsd:restriction>
-            </xsd:simpleType>
-         </xsd:element>
-         <xsd:element name="address" type="xsd:string" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  A reference to a cluster connection address
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="timeout" type="xsd:int" default="5000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How long to wait for a decision
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="group-timeout" type="xsd:int" default="-1" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How long a group binding will be used, -1 means for ever. Bindings are removed after this wait
-                  elapses. On the remote node this is used to determine how often you should re-query the main
-                  coordinator in order to update the last time used accordingly.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element name="reaper-period" type="xsd:long" default="30000" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  How often the reaper will be run to check for timed out group bindings. Only valid for LOCAL handlers
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:all>
-      <xsd:attribute name="name" type="xsd:string" use="required">
-         <xsd:annotation>
-            <xsd:documentation>
-               A name identifying this grouping-handler
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:element name="address-setting">
-      <xsd:complexType>
-         <xsd:annotation>
-            <xsd:documentation>
-               Complex type element to configure an address.
-            </xsd:documentation>
-         </xsd:annotation>
-         <xsd:all>
-            <xsd:element name="dead-letter-address" type="xsd:string" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the address to send dead messages to
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="auto-create-dead-letter-resources" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     whether or not to automatically create the dead-letter-address and/or a corresponding queue
-                     on that address when a message found to be undeliverable
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="dead-letter-queue-prefix" type="xsd:string" default="DLQ." maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the prefix to use for auto-created dead letter queues
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="dead-letter-queue-suffix" type="xsd:string" default="" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the suffix to use for auto-created dead letter queues
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="expiry-address" type="xsd:string" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the address to send expired messages to
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="auto-create-expiry-resources" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     whether or not to automatically create the expiry-address and/or a corresponding queue
-                     on that address when a message is sent to a matching queue
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="expiry-queue-prefix" type="xsd:string" default="EXP." maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the prefix to use for auto-created expiry queues
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="expiry-queue-suffix" type="xsd:string" default="" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the suffix to use for auto-created expiry queues
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="expiry-delay" type="xsd:long" default="-1" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     Overrides the expiration time for messages using the default value for expiration time. "-1"
-                     disables this setting.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="min-expiry-delay" type="xsd:long" default="-1" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     Overrides the expiration time for messages using a lower value. "-1" disables this setting.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="max-expiry-delay" type="xsd:long" default="-1" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     Overrides the expiration time for messages using a higher value. "-1" disables this setting.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="redelivery-delay" type="xsd:long" default="0" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the time (in ms) to wait before redelivering a cancelled message.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="redelivery-delay-multiplier" type="xsd:double" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     multiplier to apply to the "redelivery-delay"
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="redelivery-collision-avoidance-factor" type="xsd:double" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     factor by which to modify the redelivery delay slightly to avoid collisions
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="max-redelivery-delay" type="xsd:long" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     Maximum value for the redelivery-delay
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="max-delivery-attempts" type="xsd:int" default="10" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     how many times to attempt to deliver a message before sending to dead letter address
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="max-size-bytes" type="xsd:string" default="-1" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the maximum size (in bytes) for an address (-1 means no limits). This is used in PAGING, BLOCK and
-                     FAIL policies. Supports byte notation like "K", "Mb", "GB", etc.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="max-size-bytes-reject-threshold" type="xsd:long" default="-1" maxOccurs="1"
-                         minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     used with the address full BLOCK policy, the maximum size (in bytes) an address can reach before
-                     messages start getting rejected. Works in combination with max-size-bytes for AMQP protocol only.
-                     Default = -1 (no limit).
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="page-size-bytes" type="xsd:string" default="10485760" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     The page size (in bytes) to use for an address. Supports byte notation like "K", "Mb",
-                     "GB", etc.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="page-max-cache-size" default="5" type="xsd:int" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     Number of paging files to cache in memory to avoid IO during paging navigation
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="address-full-policy" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     what happens when an address where "max-size-bytes" is specified becomes full
-                  </xsd:documentation>
-               </xsd:annotation>
-               <xsd:simpleType>
-                  <xsd:restriction base="xsd:string">
-                     <xsd:enumeration value="DROP"/>
-                     <xsd:enumeration value="FAIL"/>
-                     <xsd:enumeration value="PAGE"/>
-                     <xsd:enumeration value="BLOCK"/>
-                  </xsd:restriction>
-               </xsd:simpleType>
-            </xsd:element>
-
-            <xsd:element name="message-counter-history-day-limit" type="xsd:int" default="0" maxOccurs="1"
-                         minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     how many days to keep message counter history for this address
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="last-value-queue" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     This is deprecated please use default-last-value-queue instead.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="default-last-value-queue" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     whether to treat the queues under the address as a last value queues by default
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="default-last-value-key" type="xsd:string" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the property to use as the key for a last value queue by default
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="default-non-destructive" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     whether the queue should be non-destructive by default
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="default-exclusive-queue" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     whether to treat the queues under the address as exclusive queues by default
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="default-group-rebalance" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     whether to rebalance groups when a consumer is added
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="default-group-rebalance-pause-dispatch" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     whether to pause dispatch when rebalancing groups
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="default-group-buckets" type="xsd:int" default="-1" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     number of buckets to use for grouping, -1 (default) is unlimited and uses the raw group, 0 disables message groups.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="default-group-first-key" type="xsd:string" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     key used to mark a message is first in a group for a consumer
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="default-consumers-before-dispatch" type="xsd:int" default="0" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the default number of consumers needed before dispatch can start for queues under the address.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="default-delay-before-dispatch" type="xsd:long" default="-1" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the default delay (in milliseconds) to wait before dispatching if number of consumers before
-                     dispatch is not met for queues under the address.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="redistribution-delay" type="xsd:long" default="-1" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     how long (in ms) to wait after the last consumer is closed on a queue before redistributing
-                     messages.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="send-to-dla-on-no-route" type="xsd:boolean" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     if there are no queues matching this address, whether to forward message to DLA (if it exists for
-                     this address)
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="slow-consumer-threshold" type="xsd:long" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     The minimum rate of message consumption allowed before a consumer is considered "slow." Measured
-                     in messages-per-second.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="slow-consumer-policy" default="NOTIFY" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     what happens when a slow consumer is identified
-                  </xsd:documentation>
-               </xsd:annotation>
-               <xsd:simpleType>
-                  <xsd:restriction base="xsd:string">
-                     <xsd:enumeration value="KILL"/>
-                     <xsd:enumeration value="NOTIFY"/>
-                  </xsd:restriction>
-               </xsd:simpleType>
-            </xsd:element>
-
-            <xsd:element name="slow-consumer-check-period" type="xsd:long" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     How often to check for slow consumers on a particular queue. Measured in seconds.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="auto-create-jms-queues" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     DEPRECATED: whether or not to automatically create JMS queues when a producer sends or a consumer connects to a
-                     queue
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="auto-delete-jms-queues" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     DEPRECATED: whether or not to delete auto-created JMS queues when the queue has 0 consumers and 0 messages
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="auto-create-jms-topics" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     DEPRECATED: whether or not to automatically create JMS topics when a producer sends or a consumer subscribes to
-                     a topic
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="auto-delete-jms-topics" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     DEPRECATED: whether or not to delete auto-created JMS topics when the last subscription is closed
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="auto-create-queues" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     whether or not to automatically create a queue when a client sends a message to or attempts to consume
-                     a message from a queue
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="auto-delete-queues" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     whether or not to delete auto-created queues when the queue has 0 consumers and 0 messages
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="auto-delete-created-queues" type="xsd:boolean" default="false" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     whether or not to delete created queues when the queue has 0 consumers and 0 messages
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="auto-delete-queues-delay" type="xsd:long" default="0" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     how long to wait (in milliseconds) before deleting auto-created queues after the queue has 0
-                     consumers.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="auto-delete-queues-message-count" type="xsd:long" default="0" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the message count the queue must be at or below before it can be evaluated to be auto deleted, 0 waits until empty queue (default) and -1 disables this check.
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="config-delete-queues" default="OFF" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     What to do when a queue is no longer in broker.xml.
-                     OFF = will do nothing queues will remain,
-                     FORCE = delete queues even if messages remaining.
-                  </xsd:documentation>
-               </xsd:annotation>
-               <xsd:simpleType>
-                  <xsd:restriction base="xsd:string">
-                     <xsd:enumeration value="OFF"/>
-                     <xsd:enumeration value="FORCE"/>
-                  </xsd:restriction>
-               </xsd:simpleType>
-            </xsd:element>
-
-            <xsd:element name="auto-create-addresses" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     whether or not to automatically create addresses when a client sends a message to or attempts to
-                     consume a message from a queue mapped to an address that doesn't exist
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="auto-delete-addresses" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     whether or not to delete auto-created addresses when it no longer has any queues
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="auto-delete-addresses-delay" type="xsd:long" default="0" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     how long to wait (in milliseconds) before deleting auto-created addresses after they no longer
-                     have any queues
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="config-delete-addresses" default="OFF" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     What to do when an address is no longer in broker.xml.
-                     OFF = will do nothing addresses will remain,
-                     FORCE = delete address and its queues even if messages remaining.
-                  </xsd:documentation>
-               </xsd:annotation>
-               <xsd:simpleType>
-                  <xsd:restriction base="xsd:string">
-                     <xsd:enumeration value="OFF"/>
-                     <xsd:enumeration value="FORCE"/>
-                  </xsd:restriction>
-               </xsd:simpleType>
-            </xsd:element>
-
-            <xsd:element name="management-browse-page-size" type="xsd:int" default="200" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     how many message a management resource can browse
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="default-purge-on-no-consumers" type="xsd:boolean" default="false" maxOccurs="1"
-                         minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     purge the contents of the queue once there are no consumers
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="default-max-consumers" type="xsd:int" default="-1" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the maximum number of consumers allowed on this queue at any one time
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="default-queue-routing-type" type="routing-type" default="MULTICAST" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the routing-type used on auto-created queues
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="default-address-routing-type" type="routing-type" default="MULTICAST" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the routing-type used on auto-created addresses
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="default-consumer-window-size" type="xsd:int" default="-1" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the default window size for a consumer
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="default-ring-size" type="xsd:long" default="-1" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the default ring-size value for any matching queue which doesn't have `ring-size` explicitly
-                     defined
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="retroactive-message-count" type="xsd:long" default="0" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     the number of messages to preserve for future queues created on the matching address
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="enable-metrics" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     whether or not to enable metrics for metrics plugins on the matching address
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-         </xsd:all>
-
-         <xsd:attribute name="match" type="xsd:string" use="required">
-            <xsd:annotation>
-               <xsd:documentation>
-                  pattern for matching settings against addresses; can use wildards
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attributeGroup ref="xml:specialAttrs"/>
-      </xsd:complexType>
-   </xsd:element>
-
-   <xsd:element name="resource-limit-setting">
-      <xsd:complexType>
-         <xsd:annotation>
-            <xsd:documentation>
-               Complex type element to configure resource limits for a particular user.
-            </xsd:documentation>
-         </xsd:annotation>
-         <xsd:all>
-            <xsd:element name="max-connections" type="xsd:int" default="-1" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     how many connections are allowed by the matched user (-1 means no limit, default is -1)
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-
-            <xsd:element name="max-queues" type="xsd:int" default="-1" maxOccurs="1" minOccurs="0">
-               <xsd:annotation>
-                  <xsd:documentation>
-                     how many queues can be created by the matched user (-1 means no limit, default is -1)
-                  </xsd:documentation>
-               </xsd:annotation>
-            </xsd:element>
-         </xsd:all>
-
-         <xsd:attribute name="match" type="xsd:string" use="required">
-            <xsd:annotation>
-               <xsd:documentation>
-                  the name of the user to whom the limits should be applied
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attributeGroup ref="xml:specialAttrs"/>
-      </xsd:complexType>
-   </xsd:element>
-
-   <xsd:element name="filter">
-      <xsd:complexType>
-         <xsd:annotation>
-            <xsd:documentation>
-               optional core filter expression (set through attribute)
-            </xsd:documentation>
-         </xsd:annotation>
-         <xsd:attribute name="string" type="xsd:string" use="required">
-            <xsd:annotation>
-               <xsd:documentation>
-                  optional core filter expression
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attributeGroup ref="xml:specialAttrs"/>
-      </xsd:complexType>
-   </xsd:element>
-
-   <xsd:complexType name="connector-serviceType">
-      <xsd:sequence>
-         <xsd:element maxOccurs="1" minOccurs="1" name="factory-class" type="xsd:string">
-            <xsd:annotation>
-               <xsd:documentation>
-                  Name of the factory class of the ConnectorService
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element maxOccurs="unbounded" minOccurs="0" name="param" type="paramType"/>
-      </xsd:sequence>
-      <xsd:attribute name="name" type="xsd:string" use="optional">
-         <xsd:annotation>
-            <xsd:documentation>
-               name of the connector service
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="transportType">
-      <xsd:simpleContent>
-         <xsd:extension base="xsd:string">
-            <xsd:attribute name="name" type="xsd:string">
-            </xsd:attribute>
-         </xsd:extension>
-      </xsd:simpleContent>
-   </xsd:complexType>
-
-   <!-- 2.0 Addressing configuration -->
-
-   <xsd:simpleType name="routing-type">
-      <xsd:restriction base="xsd:string">
-         <xsd:enumeration value="ANYCAST"/>
-         <xsd:enumeration value="MULTICAST"/>
-      </xsd:restriction>
-   </xsd:simpleType>
-
-   <xsd:simpleType name="component-routing-type">
-      <xsd:restriction base="xsd:string">
-         <xsd:enumeration value="ANYCAST"/>
-         <xsd:enumeration value="MULTICAST"/>
-         <xsd:enumeration value="STRIP"/>
-         <xsd:enumeration value="PASS"/>
-      </xsd:restriction>
-   </xsd:simpleType>
-
-   <xsd:complexType name="queueType">
-      <xsd:all>
-         <xsd:element ref="filter" maxOccurs="1" minOccurs="0"/>
-         <xsd:element name="durable" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0" />
-         <xsd:element name="user" type="xsd:string" maxOccurs="1" minOccurs="0" />
-      </xsd:all>
-      <xsd:attribute name="name" type="xsd:string" use="required"/>
-      <xsd:attribute name="max-consumers" type="xsd:integer" use="optional"/>
-      <xsd:attribute name="purge-on-no-consumers" type="xsd:boolean" use="optional"/>
-      <xsd:attribute name="exclusive" type="xsd:boolean" use="optional"/>
-      <xsd:attribute name="group-rebalance" type="xsd:boolean" use="optional"/>
-      <xsd:attribute name="group-buckets" type="xsd:int" use="optional"/>
-      <xsd:attribute name="group-first-key" type="xsd:string" use="optional"/>
-      <xsd:attribute name="last-value" type="xsd:boolean" use="optional"/>
-      <xsd:attribute name="last-value-key" type="xsd:string" use="optional"/>
-      <xsd:attribute name="non-destructive" type="xsd:boolean" use="optional"/>
-      <xsd:attribute name="consumers-before-dispatch" type="xsd:int" use="optional"/>
-      <xsd:attribute name="delay-before-dispatch" type="xsd:long" use="optional"/>
-      <xsd:attribute name="ring-size" type="xsd:long" use="optional"/>
-      <xsd:attribute name="enabled" type="xsd:boolean" use="optional"/>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="addressType">
-      <xsd:all>
-         <xsd:element name="anycast" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of pre configured queues to create
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:element name="queue" type="queueType" maxOccurs="unbounded" minOccurs="0" />
-               </xsd:sequence>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-         <xsd:element name="multicast" maxOccurs="1" minOccurs="0">
-            <xsd:annotation>
-               <xsd:documentation>
-                  a list of pre configured queues to create
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:complexType>
-               <xsd:sequence>
-                  <xsd:element name="queue" type="queueType" maxOccurs="unbounded" minOccurs="0" />
-               </xsd:sequence>
-               <xsd:attributeGroup ref="xml:specialAttrs"/>
-            </xsd:complexType>
-         </xsd:element>
-      </xsd:all>
-      <xsd:attribute name="name" type="xsd:string" use="required">
-         <xsd:annotation>
-            <xsd:documentation>
-               The address name to match incoming message addresses
-            </xsd:documentation>
-         </xsd:annotation>
-      </xsd:attribute>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="addressesType">
-      <xsd:sequence>
-         <xsd:element name="address" type="addressType" maxOccurs="unbounded" minOccurs="0"/>
-      </xsd:sequence>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-   <xsd:complexType name="wildcardType">
-      <xsd:annotation>
-         <xsd:documentation>
-            Complex type element to configure wildcard address format.
-         </xsd:documentation>
-      </xsd:annotation>
-      <xsd:all>
-         <xsd:element maxOccurs="1" minOccurs="0" name="enabled" type="xsd:boolean">
-            <xsd:annotation>
-               <xsd:documentation>
-                  deprecated please use routing-enabled.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element maxOccurs="1" minOccurs="0" name="routing-enabled" type="xsd:boolean">
-            <xsd:annotation>
-               <xsd:documentation>
-                  is wildcard addresses routing enabled.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element maxOccurs="1" minOccurs="0" name="delimiter" type="xsd:string">
-            <xsd:annotation>
-               <xsd:documentation>
-                  wildcard address parts delimiter. Default '.'
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element maxOccurs="1" minOccurs="0" name="any-words" type="xsd:string">
-            <xsd:annotation>
-               <xsd:documentation>
-                  wildcard address any words character. Default '#'
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-         <xsd:element maxOccurs="1" minOccurs="0" name="single-word" type="xsd:string">
-            <xsd:annotation>
-               <xsd:documentation>
-                  wildcard address single word character. Default '*'
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:element>
-      </xsd:all>
-      <xsd:attributeGroup ref="xml:specialAttrs"/>
-   </xsd:complexType>
-
-</xsd:schema>
diff --git a/artemis-tools/src/test/resources/artemis-server.xsd b/artemis-tools/src/test/resources/artemis-server.xsd
deleted file mode 100644
index 1e2e816..0000000
--- a/artemis-tools/src/test/resources/artemis-server.xsd
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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.
--->
-<xsd:schema xmlns="urn:activemq"
-            targetNamespace="urn:activemq"
-            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-            attributeFormDefault="unqualified"
-            elementFormDefault="qualified"
-            version="1.0">
-   <xsd:element name="configuration">
-      <xsd:annotation>
-         <xsd:documentation>
-            Root element for a document specifying the configuration
-            of a single "standalone" server that does not operate
-            as part of a domain.
-         </xsd:documentation>
-      </xsd:annotation>
-      <xsd:complexType>
-         <xsd:sequence>
-            <xsd:choice minOccurs="1" maxOccurs="unbounded">
-               <xsd:any namespace="##other">
-                  <xsd:annotation>
-                     <xsd:documentation>A profile declaration may include configuration
-                        elements from other namespaces for the subsystems that make up the profile.
-                     </xsd:documentation>
-                  </xsd:annotation>
-               </xsd:any>
-            </xsd:choice>
-         </xsd:sequence>
-      </xsd:complexType>
-   </xsd:element>
-</xsd:schema>
diff --git a/artemis-tools/src/test/resources/broker.xml b/artemis-tools/src/test/resources/broker.xml
deleted file mode 100644
index a98954b..0000000
--- a/artemis-tools/src/test/resources/broker.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<!--
-  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.
--->
-<configuration xmlns="urn:activemq"
-               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-               xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd">
-   <jms xmlns="urn:activemq:jms">
-      <queue name="queue1">
-         <durable>true</durable>
-         <selector string="car='red'" />
-      </queue>
-
-      <queue name="queue2"/>
-      <queue name="queue3"/>
-
-      <topic name="topic1"/>
-      <topic name="topic2"/>
-      <topic name="topic3"/>
-
-      <queue name="orders"/>
-      <topic name="orders"/>
-   </jms>
-
-   <core xmlns="urn:activemq:core">
-
-       <persistence-enabled>false</persistence-enabled>
-       <!-- Connectors -->
-
-       <connectors>
-           <connector name="in-vm">vm://0</connector>
-       </connectors>
-
-       <acceptors>
-           <acceptor name="in-vm">vm://0</acceptor>
-       </acceptors>
-
-       <!-- Other config -->
-
-       <security-settings>
-           <!--security for example queue-->
-           <security-setting match="jms.queue.exampleQueue">
-               <permission type="createDurableQueue" roles="guest"/>
-               <permission type="deleteDurableQueue" roles="guest"/>
-               <permission type="createNonDurableQueue" roles="guest"/>
-               <permission type="deleteNonDurableQueue" roles="guest"/>
-               <permission type="consume" roles="guest"/>
-               <permission type="send" roles="guest"/>
-           </security-setting>
-       </security-settings>
-
-       <queues>
-          <queue name="foo">
-             <address>bar</address>
-          </queue>
-          <queue name="bar">
-             <address>afar</address>
-             <durable>true</durable>
-             <filter string="name='car'" />
-          </queue>
-       </queues>
-   </core>
-
-</configuration>
diff --git a/artemis-tools/src/test/resources/replace/broker.xml b/artemis-tools/src/test/resources/replace/broker.xml
deleted file mode 100644
index bd33d59..0000000
--- a/artemis-tools/src/test/resources/replace/broker.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<!--
-  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.
--->
-<configuration xmlns="urn:activemq"
-               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-               xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd">
-   <jms xmlns="urn:activemq:jms">
-      <!--the queue used by the example-->
-      <queue name="exampleQueue"/>
-   </jms>
-
-   <core xmlns="urn:activemq:core">
-
-       <persistence-enabled>false</persistence-enabled>
-       <!-- Connectors -->
-
-       <connectors>
-           <connector name="in-vm">vm://0</connector>
-       </connectors>
-
-       <acceptors>
-           <acceptor name="in-vm">vm://0</acceptor>
-       </acceptors>
-
-       <!-- Other config -->
-
-       <security-settings>
-           <!--security for example queue-->
-           <security-setting match="jms.queue.exampleQueue">
-               <permission type="createDurableQueue" roles="guest"/>
-               <permission type="deleteDurableQueue" roles="guest"/>
-               <permission type="createNonDurableQueue" roles="guest"/>
-               <permission type="deleteNonDurableQueue" roles="guest"/>
-               <permission type="consume" roles="guest"/>
-               <permission type="send" roles="guest"/>
-           </security-setting>
-       </security-settings>
-
-       <queues>
-          <queue name="foo">
-             <address>bar</address>
-          </queue>
-          <queue name="bar">
-             <address>afar</address>
-             <durable>true</durable>
-             <filter string="name='car'" />
-          </queue>
-       </queues>
-   </core>
-
-</configuration>
diff --git a/artemis-tools/src/test/resources/replace/broker2.xml b/artemis-tools/src/test/resources/replace/broker2.xml
deleted file mode 100644
index bd33d59..0000000
--- a/artemis-tools/src/test/resources/replace/broker2.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<!--
-  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.
--->
-<configuration xmlns="urn:activemq"
-               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-               xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd">
-   <jms xmlns="urn:activemq:jms">
-      <!--the queue used by the example-->
-      <queue name="exampleQueue"/>
-   </jms>
-
-   <core xmlns="urn:activemq:core">
-
-       <persistence-enabled>false</persistence-enabled>
-       <!-- Connectors -->
-
-       <connectors>
-           <connector name="in-vm">vm://0</connector>
-       </connectors>
-
-       <acceptors>
-           <acceptor name="in-vm">vm://0</acceptor>
-       </acceptors>
-
-       <!-- Other config -->
-
-       <security-settings>
-           <!--security for example queue-->
-           <security-setting match="jms.queue.exampleQueue">
-               <permission type="createDurableQueue" roles="guest"/>
-               <permission type="deleteDurableQueue" roles="guest"/>
-               <permission type="createNonDurableQueue" roles="guest"/>
-               <permission type="deleteNonDurableQueue" roles="guest"/>
-               <permission type="consume" roles="guest"/>
-               <permission type="send" roles="guest"/>
-           </security-setting>
-       </security-settings>
-
-       <queues>
-          <queue name="foo">
-             <address>bar</address>
-          </queue>
-          <queue name="bar">
-             <address>afar</address>
-             <durable>true</durable>
-             <filter string="name='car'" />
-          </queue>
-       </queues>
-   </core>
-
-</configuration>
diff --git a/pom.xml b/pom.xml
index 92adb72..1266eef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -62,7 +62,6 @@
       <module>artemis-hawtio</module>
       <module>integration/activemq-spring-integration</module>
       <module>artemis-distribution</module>
-      <module>artemis-tools</module>
       <module>tests</module>
       <module>artemis-features</module>
    </modules>
@@ -1375,7 +1374,6 @@
                                        <fileset dir="${activemq.basedir}/artemis-server/target/classes" />
                                        <fileset dir="${activemq.basedir}/artemis-server-osgi/target/classes" />
                                        <fileset dir="${activemq.basedir}/artemis-service-extensions/target" />
-                                       <fileset dir="${activemq.basedir}/artemis-tools/target/classes" />
                                        <fileset dir="${activemq.basedir}/artemis-web/target/classes" />
                                     </classfiles>
                                     <sourcefiles encoding="UTF-8">
@@ -1396,7 +1394,6 @@
                                        <fileset dir="${activemq.basedir}/artemis-server/src/main/java" />
                                        <fileset dir="${activemq.basedir}/artemis-server-osgi/src/main/java" />
                                        <fileset dir="${activemq.basedir}/artemis-service-extensions/src/main/java" />
-                                       <fileset dir="${activemq.basedir}/artemis-tools/src/main/java" />
                                        <fileset dir="${activemq.basedir}/artemis-web/src/main/java" />
                                     </sourcefiles>
                                  </structure>