gt:     String HORNETQ_SERVER = "hornetq-server";
context: /*
   * JBoss, Home of Professional Open Source.
   * Copyright 2010, Red Hat, Inc., and individual contributors
   * as indicated by the @author tags. See the copyright.txt file in the
   * distribution for a full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  
  package org.jboss.as.messaging;
  
  import static org.jboss.as.controller.SimpleAttributeDefinitionBuilder.create;
  import static org.jboss.as.controller.client.helpers.MeasurementUnit.BYTES;
  import static org.jboss.as.controller.client.helpers.MeasurementUnit.DAYS;
  import static org.jboss.as.controller.client.helpers.MeasurementUnit.MILLISECONDS;
  import static org.jboss.as.controller.client.helpers.MeasurementUnit.PERCENTAGE;
  import static org.jboss.as.controller.registry.AttributeAccess.Flag.RESTART_ALL_SERVICES;
  import static org.jboss.as.messaging.AttributeMarshallers.NOOP_MARSHALLER;
  import static org.jboss.as.messaging.MessagingExtension.VERSION_1_2_0;
  import static org.jboss.as.messaging.jms.Validators.noDuplicateElements;
  import static org.jboss.dmr.ModelType.BOOLEAN;
  import static org.jboss.dmr.ModelType.DOUBLE;
  import static org.jboss.dmr.ModelType.INT;
  import static org.jboss.dmr.ModelType.LONG;
  
  import org.jboss.as.controller.AttributeDefinition;
  import org.jboss.as.controller.ModelVersion;
  import org.jboss.as.controller.PrimitiveListAttributeDefinition;
  import org.jboss.as.controller.SimpleAttributeDefinition;
  import org.jboss.as.controller.access.constraint.SensitivityClassification;
  import org.jboss.as.controller.access.management.SensitiveTargetAccessConstraintDefinition;
  import org.jboss.as.controller.descriptions.ModelDescriptionConstants;
  import org.jboss.as.controller.operations.validation.EnumValidator;
  import org.jboss.as.controller.operations.validation.IntRangeValidator;
  import org.jboss.as.controller.operations.validation.StringLengthValidator;
  import org.jboss.dmr.ModelNode;
  import org.jboss.dmr.ModelType;
  
  /**
   * @author Emanuel Muckenhuber
   * @author <a href="mailto:andy.taylor@jboss.com">Andy Taylor</a>
   * @author Brian Stansberry (c) 2011 Red Hat Inc.
   */
  @SuppressWarnings("deprecation")
  public interface CommonAttributes {
  
      String DISCOVERY_GROUP_NAME = "discovery-group-name";
      String ENTRIES = "entries";
  
      SensitivityClassification MESSAGING_MANAGEMENT =
              new SensitivityClassification(MessagingExtension.SUBSYSTEM_NAME, "messaging-management", false, false, true);
  
      SensitiveTargetAccessConstraintDefinition MESSAGING_MANAGEMENT_DEF = new SensitiveTargetAccessConstraintDefinition(MESSAGING_MANAGEMENT);
  
      SensitivityClassification MESSAGING_SECURITY =
              new SensitivityClassification(MessagingExtension.SUBSYSTEM_NAME, "messaging-security", false, false, true);
  
      SensitiveTargetAccessConstraintDefinition MESSAGING_SECURITY_DEF = new SensitiveTargetAccessConstraintDefinition(MESSAGING_SECURITY);
  
      SimpleAttributeDefinition ALLOW_FAILBACK = create("allow-failback", BOOLEAN)
              .setDefaultValue(ModelNode.TRUE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition ASYNC_CONNECTION_EXECUTION_ENABLED = create( "async-connection-execution-enabled", BOOLEAN)
              .setDefaultValue(ModelNode.TRUE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition BACKUP = create("backup", BOOLEAN)
              .setDefaultValue(ModelNode.FALSE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      AttributeDefinition CALL_TIMEOUT = create("call-timeout", LONG)
              .setDefaultValue(new ModelNode(30000L))
              .setMeasurementUnit(MILLISECONDS)
              .setRequired(false)
              .setAllowExpression(true)
              .build();
  
      SimpleAttributeDefinition CALL_FAILOVER_TIMEOUT = create("call-failover-timeout",LONG)
              .setDefaultValue(new ModelNode(-1L))
              .setRequired(false)
              .setAllowExpression(true)
              .setMeasurementUnit(MILLISECONDS)
              .build();
  
      SimpleAttributeDefinition CHECK_PERIOD = create("check-period", LONG)
              .setDefaultValue(new ModelNode(30000L))
              .setRequired(false)
              .setAllowExpression(true)
              .setMeasurementUnit(MILLISECONDS)
              .setFlags(RESTART_ALL_SERVICES)
              .build();
  
      SimpleAttributeDefinition CLIENT_ID = create("client-id", ModelType.STRING)
              .setRequired(false)
              .setAllowExpression(true)
              .build();
  
      SimpleAttributeDefinition CHECK_FOR_LIVE_SERVER = create("check-for-live-server", BOOLEAN)
              .setDefaultValue(ModelNode.FALSE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition CLUSTERED = create("clustered", BOOLEAN)
              .setRequired(false)
              .setDefaultValue(ModelNode.FALSE)
              .setDeprecated(VERSION_1_2_0)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition CLUSTER_PASSWORD = create("cluster-password", ModelType.STRING)
              .setDefaultValue(new ModelNode("CHANGE ME!!"))
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .addAccessConstraint(SensitiveTargetAccessConstraintDefinition.CREDENTIAL)
              .addAccessConstraint(MESSAGING_SECURITY_DEF)
              .build();
  
          SimpleAttributeDefinition CLUSTER_USER = create("cluster-user", ModelType.STRING)
              .setDefaultValue(new ModelNode("HORNETQ.CLUSTER.ADMIN.USER"))
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .addAccessConstraint(SensitiveTargetAccessConstraintDefinition.CREDENTIAL)
              .addAccessConstraint(MESSAGING_SECURITY_DEF)
              .build();
  
      SimpleAttributeDefinition BRIDGE_CONFIRMATION_WINDOW_SIZE = create("confirmation-window-size", INT)
              .setDefaultValue(new ModelNode(1024 * 1024))
              .setMeasurementUnit(BYTES)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition CONNECTION_TTL = create("connection-ttl", LONG)
              .setDefaultValue(new ModelNode().set(60000L))
              .setRequired(false)
              .setAllowExpression(true)
              .setMeasurementUnit(MILLISECONDS)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition CONNECTION_TTL_OVERRIDE = create("connection-ttl-override", LONG)
              .setDefaultValue(new ModelNode(-1L))
              .setMeasurementUnit(MILLISECONDS)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition CREATE_BINDINGS_DIR = create("create-bindings-dir", BOOLEAN)
              .setDefaultValue(ModelNode.TRUE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition CREATE_JOURNAL_DIR = create("create-journal-dir", BOOLEAN)
              .setDefaultValue(ModelNode.TRUE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition DEAD_LETTER_ADDRESS = create("dead-letter-address", ModelType.STRING)
              .setRequired(false)
              .setAllowExpression(true)
              .build();
  
      PrimitiveListAttributeDefinition DESTINATION_ENTRIES = PrimitiveListAttributeDefinition.Builder.of(ENTRIES, ModelType.STRING)
              .setRequired(true)
              .setListValidator(noDuplicateElements(new StringLengthValidator(1, false, true)))
              .setAllowExpression(true)
              .setAttributeMarshaller(new AttributeMarshallers.JndiEntriesAttributeMarshaller(true))
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition DURABLE = create("durable", BOOLEAN)
              .setDefaultValue(ModelNode.TRUE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition FACTORY_CLASS = create("factory-class", ModelType.STRING)
              .setAllowExpression(false)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition EXPIRY_ADDRESS = create("expiry-address", ModelType.STRING)
              .setRequired(false)
              .setAllowExpression(true)
              .build();
  
      SimpleAttributeDefinition FAILBACK_DELAY = create("failback-delay", LONG)
              .setDefaultValue(new ModelNode(5000L))
              .setMeasurementUnit(MILLISECONDS)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition FAILOVER_ON_SERVER_SHUTDOWN = create("failover-on-server-shutdown", ModelType.BOOLEAN)
              .setRequired(false)
              .setDeprecated(VERSION_1_2_0)
              .build();
  
      SimpleAttributeDefinition FAILOVER_ON_SHUTDOWN = create("failover-on-shutdown", BOOLEAN)
              // TODO should be ConfigurationImpl.DEFAULT_FAILOVER_ON_SERVER_SHUTDOWN but field is private
              .setDefaultValue(ModelNode.FALSE)
              .setRequired(false)
              .setAllowExpression(true)
              .build();
  
      SimpleAttributeDefinition FILTER = create("filter", ModelType.STRING)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      // do not allow expressions on deprecated attribute
      @Deprecated
      SimpleAttributeDefinition GROUP_ADDRESS = create("group-address", ModelType.STRING)
              .setRequired(false)
              .setAlternatives("socket-binding", "jgroups-stack", "jgroups-channel")
              .setDeprecated(VERSION_1_2_0)
              .setFlags(RESTART_ALL_SERVICES)
              .addAccessConstraint(SensitiveTargetAccessConstraintDefinition.SOCKET_CONFIG)
              .build();
  
      // do not allow expressions on deprecated attribute
      @Deprecated
      SimpleAttributeDefinition GROUP_PORT = create("group-port", INT)
              .setRequired(false)
              .setAlternatives("socket-binding", "jgroups-stack", "jgroups-channel")
              .setDeprecated(VERSION_1_2_0)
              .setFlags(RESTART_ALL_SERVICES)
              .addAccessConstraint(SensitiveTargetAccessConstraintDefinition.SOCKET_CONFIG)
              .build();
  
      SimpleAttributeDefinition HA = create("ha", BOOLEAN)
              .setDefaultValue(ModelNode.FALSE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition ID_CACHE_SIZE = create("id-cache-size", INT)
              .setDefaultValue(new ModelNode(20000))
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition JMX_DOMAIN = create("jmx-domain", ModelType.STRING)
              .setDefaultValue(new ModelNode("org.hornetq"))
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .addAccessConstraint(MESSAGING_MANAGEMENT_DEF)
              .build();
  
      SimpleAttributeDefinition JMX_MANAGEMENT_ENABLED = create("jmx-management-enabled", BOOLEAN)
              .setDefaultValue(ModelNode.FALSE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .addAccessConstraint(MESSAGING_MANAGEMENT_DEF)
              .build();
  
      // no default values, depends on whether NIO or AIO is used.
      SimpleAttributeDefinition JOURNAL_BUFFER_SIZE = create("journal-buffer-size", LONG)
              .setMeasurementUnit(BYTES)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      // no default values, depends on whether NIO or AIO is used.
      SimpleAttributeDefinition JOURNAL_BUFFER_TIMEOUT = create("journal-buffer-timeout", LONG)
              .setMeasurementUnit(MILLISECONDS)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition JOURNAL_COMPACT_MIN_FILES = create("journal-compact-min-files", INT)
              .setDefaultValue(new ModelNode(10))
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition JOURNAL_COMPACT_PERCENTAGE = create("journal-compact-percentage", INT)
              .setDefaultValue(new ModelNode(30))
              .setMeasurementUnit(PERCENTAGE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition JOURNAL_FILE_SIZE = create("journal-file-size", LONG)
              .setDefaultValue(new ModelNode(10485760))
              .setMeasurementUnit(BYTES)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      // no default values, depends on whether NIO or AIO is used.
      SimpleAttributeDefinition JOURNAL_MAX_IO = create("journal-max-io", INT)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition JOURNAL_MIN_FILES = create("journal-min-files", INT)
              .setDefaultValue(new ModelNode(2))
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition JOURNAL_SYNC_NON_TRANSACTIONAL = create("journal-sync-non-transactional", BOOLEAN)
              .setDefaultValue(ModelNode.TRUE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition JOURNAL_SYNC_TRANSACTIONAL = create("journal-sync-transactional", BOOLEAN)
              .setDefaultValue(ModelNode.TRUE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition JOURNAL_TYPE = create("journal-type", ModelType.STRING)
              .setDefaultValue(new ModelNode(JournalType.ASYNCIO.toString()))
              .setRequired(false)
              .setAllowExpression(true)
              .setValidator(EnumValidator.create(JournalType.class))
              .setRestartAllServices()
              .build();
  
      AttributeDefinition LIVE_CONNECTOR_REF = create("live-connector-ref", ModelType.STRING)
              .setRequired(false)
              .setDeprecated(VERSION_1_2_0)
              .setRestartAllServices()
              .setAttributeMarshaller(NOOP_MARSHALLER)
              .build();
  
      // do not allow expressions on deprecated attribute
      @Deprecated
      SimpleAttributeDefinition LOCAL_BIND_ADDRESS = create("local-bind-address", ModelType.STRING)
              .setRequired(false)
              .setAlternatives("socket-binding", "jgroups-stack", "jgroups-channel")
              .setDeprecated(VERSION_1_2_0)
              .setFlags(RESTART_ALL_SERVICES)
              .addAccessConstraint(SensitiveTargetAccessConstraintDefinition.SOCKET_CONFIG)
              .build();
  
      // do not allow expressions on deprecated attribute
      @Deprecated
      SimpleAttributeDefinition LOCAL_BIND_PORT = create("local-bind-port", INT)
              .setDefaultValue(new ModelNode().set(-1))
              .setRequired(false)
              .setAlternatives("socket-binding", "jgroups-stack", "jgroups-channel")
              .setDeprecated(VERSION_1_2_0)
              .setFlags(RESTART_ALL_SERVICES)
              .addAccessConstraint(SensitiveTargetAccessConstraintDefinition.SOCKET_CONFIG)
              .build();
  
      SimpleAttributeDefinition JGROUPS_STACK = create("jgroups-stack", ModelType.STRING)
              .setRequired(false)
              .setAllowExpression(true)
              .setAlternatives("socket-binding",
                      "group-address", "group-port",
                      "local-bind-address", "local-bind-port")
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition JGROUPS_CHANNEL = create("jgroups-channel", ModelType.STRING)
              .setRequired(false)
              .setAllowExpression(true)
              .setAlternatives("socket-binding",
                      "group-address", "group-port",
                      "local-bind-address", "local-bind-port")
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition LOG_JOURNAL_WRITE_RATE = create("log-journal-write-rate", BOOLEAN)
              .setDefaultValue(ModelNode.FALSE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition MANAGEMENT_ADDRESS = create("management-address", ModelType.STRING)
              .setDefaultValue(new ModelNode("jms.queue.hornetq.management"))
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .addAccessConstraint(MESSAGING_MANAGEMENT_DEF)
              .build();
  
      SimpleAttributeDefinition MANAGEMENT_NOTIFICATION_ADDRESS = create("management-notification-address", ModelType.STRING)
              .setDefaultValue(new ModelNode("hornetq.notifications"))
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .addAccessConstraint(MESSAGING_MANAGEMENT_DEF)
              .build();
  
      AttributeDefinition MAX_RETRY_INTERVAL = create("max-retry-interval", LONG)
              .setDefaultValue(new ModelNode(2000L))
              .setMeasurementUnit(MILLISECONDS)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      AttributeDefinition MAX_SAVED_REPLICATED_JOURNAL_SIZE = create("max-saved-replicated-journal-size", INT)
              .setDefaultValue(new ModelNode(2))
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition MEMORY_MEASURE_INTERVAL = create("memory-measure-interval", LONG)
              .setDefaultValue(new ModelNode(-1L))
              .setMeasurementUnit(MILLISECONDS)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition MEMORY_WARNING_THRESHOLD = create("memory-warning-threshold", INT)
              .setDefaultValue(new ModelNode(25))
              .setMeasurementUnit(PERCENTAGE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition STATISTICS_ENABLED = create(ModelDescriptionConstants.STATISTICS_ENABLED, BOOLEAN)
              .setDefaultValue(ModelNode.FALSE)
              .setRequired(false)
              .setAllowExpression(true)
              .build();
  
      SimpleAttributeDefinition MESSAGE_COUNTER_ENABLED = create("message-counter-enabled", BOOLEAN)
              .setDefaultValue(ModelNode.FALSE)
              .setRequired(false)
              .setAllowExpression(true)
              .setDeprecated(ModelVersion.create(2))
              .build();
  
      SimpleAttributeDefinition MESSAGE_COUNTER_MAX_DAY_HISTORY = create("message-counter-max-day-history", INT)
              .setDefaultValue(new ModelNode(10))
              .setMeasurementUnit(DAYS)
              .setRequired(false)
              .setAllowExpression(true)
              .build();
  
      SimpleAttributeDefinition MESSAGE_COUNTER_SAMPLE_PERIOD = create("message-counter-sample-period", LONG)
              .setDefaultValue(new ModelNode(10000L))
              .setMeasurementUnit(MILLISECONDS)
              .setRequired(false)
              .setAllowExpression(true)
              .build();
  
      SimpleAttributeDefinition MESSAGE_EXPIRY_SCAN_PERIOD = create("message-expiry-scan-period", LONG)
              .setDefaultValue(new ModelNode(30000L))
              .setMeasurementUnit(MILLISECONDS)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition MESSAGE_EXPIRY_THREAD_PRIORITY = create("message-expiry-thread-priority", INT)
              .setDefaultValue(new ModelNode(3))
              .setRequired(false)
              .setAllowExpression(true)
              .setValidator(new IntRangeValidator(Thread.MIN_PRIORITY, Thread.MAX_PRIORITY, true, true))
              .setRestartAllServices()
              .build();
  
      AttributeDefinition MIN_LARGE_MESSAGE_SIZE = create("min-large-message-size", INT)
              .setDefaultValue(new ModelNode(102400))
              .setMeasurementUnit(BYTES)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      AttributeDefinition BACKUP_GROUP_NAME = create("backup-group-name", ModelType.STRING)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition OVERRIDE_IN_VM_SECURITY = create("override-in-vm-security", BOOLEAN)
              .setDefaultValue(ModelNode.TRUE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition PAGE_MAX_CONCURRENT_IO = create("page-max-concurrent-io", INT)
              .setDefaultValue(new ModelNode(5))
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition PERF_BLAST_PAGES = create("perf-blast-pages", INT)
              .setDefaultValue(new ModelNode(-1))
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition PERSIST_DELIVERY_COUNT_BEFORE_DELIVERY = create("persist-delivery-count-before-delivery", BOOLEAN)
              .setDefaultValue(ModelNode.FALSE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition PERSISTENCE_ENABLED = create("persistence-enabled", BOOLEAN)
              .setDefaultValue(ModelNode.TRUE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition PERSIST_ID_CACHE = create("persist-id-cache", BOOLEAN)
              .setDefaultValue(ModelNode.TRUE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      @Deprecated
      PrimitiveListAttributeDefinition REMOTING_INTERCEPTORS = new PrimitiveListAttributeDefinition.Builder("remoting-interceptors", ModelType.STRING)
              .setDeprecated(VERSION_1_2_0)
              .setRequired(false)
              .setAllowExpression(false)
              .setMinSize(1)
              .setMaxSize(Integer.MAX_VALUE)
              .setRestartAllServices()
              .setElementValidator(new StringLengthValidator(1, false, true))
              .setAttributeMarshaller(AttributeMarshallers.INTERCEPTOR_MARSHALLER)
              .build();
  
      PrimitiveListAttributeDefinition REMOTING_INCOMING_INTERCEPTORS = new PrimitiveListAttributeDefinition.Builder("remoting-incoming-interceptors", ModelType.STRING)
              .setRequired(false)
              .setAllowExpression(false)
              .setMinSize(1)
              .setMaxSize(Integer.MAX_VALUE)
              .setRestartAllServices()
              .setElementValidator(new StringLengthValidator(1, false, true))
              .setAttributeMarshaller(AttributeMarshallers.INTERCEPTOR_MARSHALLER)
              .build();
  
      PrimitiveListAttributeDefinition REMOTING_OUTGOING_INTERCEPTORS = new PrimitiveListAttributeDefinition.Builder("remoting-outgoing-interceptors", ModelType.STRING)
              .setRequired(false)
              .setAllowExpression(false)
              .setMinSize(1)
              .setMaxSize(Integer.MAX_VALUE)
              .setRestartAllServices()
              .setElementValidator(new StringLengthValidator(1, false, true))
              .setAttributeMarshaller(AttributeMarshallers.INTERCEPTOR_MARSHALLER)
              .build();
  
      SimpleAttributeDefinition REPLICATION_CLUSTERNAME = create("replication-clustername", ModelType.STRING)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      AttributeDefinition RETRY_INTERVAL = create("retry-interval", LONG)
              .setDefaultValue(new ModelNode(2000L))
              .setMeasurementUnit(MILLISECONDS)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      AttributeDefinition RETRY_INTERVAL_MULTIPLIER = create("retry-interval-multiplier", DOUBLE)
              .setDefaultValue(new ModelNode(1.0))
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition RUN_SYNC_SPEED_TEST = create("run-sync-speed-test", BOOLEAN)
              .setDefaultValue(ModelNode.FALSE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      AttributeDefinition SCHEDULED_THREAD_POOL_MAX_SIZE = create("scheduled-thread-pool-max-size", INT)
              .setDefaultValue(new ModelNode().set(5))
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition SECURITY_DOMAIN = create("security-domain", ModelType.STRING)
              .setDefaultValue(new ModelNode("other"))
              .setRequired(false)
              .setAllowExpression(false) // references the security domain service name
              .setRestartAllServices()
              .addAccessConstraint(SensitiveTargetAccessConstraintDefinition.SECURITY_DOMAIN_REF)
              .addAccessConstraint(MESSAGING_SECURITY_DEF)
              .build();
  
      SimpleAttributeDefinition SECURITY_ENABLED = create("security-enabled", BOOLEAN)
              .setDefaultValue(ModelNode.TRUE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .addAccessConstraint(MESSAGING_SECURITY_DEF)
              .build();
  
      SimpleAttributeDefinition SECURITY_INVALIDATION_INTERVAL = create("security-invalidation-interval", LONG)
              .setDefaultValue(new ModelNode(10000L))
              .setMeasurementUnit(MILLISECONDS)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .addAccessConstraint(MESSAGING_SECURITY_DEF)
              .build();
  
      SimpleAttributeDefinition SELECTOR = create("selector", ModelType.STRING)
              .setRequired(false)
              .setAllowExpression(true)
              .setAttributeMarshaller(AttributeMarshallers.SELECTOR_MARSHALLER)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition SERVER_DUMP_INTERVAL = create("server-dump-interval", LONG)
              .setDefaultValue(new ModelNode(-1L))
              .setMeasurementUnit(MILLISECONDS)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition SHARED_STORE = create("shared-store", BOOLEAN)
              .setDefaultValue(ModelNode.TRUE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition SOCKET_BINDING = create("socket-binding", ModelType.STRING)
              .setRequired(false)
              .setAlternatives(GROUP_ADDRESS.getName(),
                      GROUP_PORT.getName(),
                      LOCAL_BIND_ADDRESS.getName(),
                      LOCAL_BIND_PORT.getName(),
                      JGROUPS_STACK.getName(),
                      JGROUPS_CHANNEL.getName())
              .setRestartAllServices()
              .addAccessConstraint(SensitiveTargetAccessConstraintDefinition.SOCKET_BINDING_REF)
              .build();
  
      AttributeDefinition THREAD_POOL_MAX_SIZE = create("thread-pool-max-size", INT)
              .setDefaultValue(new ModelNode().set(30))
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition TRANSACTION_TIMEOUT = create("transaction-timeout", LONG)
              .setDefaultValue(new ModelNode(300000L))
              .setMeasurementUnit(MILLISECONDS)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition TRANSACTION_TIMEOUT_SCAN_PERIOD = create("transaction-timeout-scan-period", LONG)
              .setDefaultValue(new ModelNode(1000L))
              .setMeasurementUnit(MILLISECONDS)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition TRANSFORMER_CLASS_NAME = create("transformer-class-name", ModelType.STRING)
              .setRequired(false)
              .setAllowExpression(false)
              .setRestartAllServices()
              .build();
  
      SimpleAttributeDefinition WILD_CARD_ROUTING_ENABLED = create("wild-card-routing-enabled", BOOLEAN)
              .setDefaultValue(ModelNode.TRUE)
              .setRequired(false)
              .setAllowExpression(true)
              .setRestartAllServices()
              .build();
  
      String ACCEPTOR = "acceptor";
      String ACCEPTORS = "acceptors";
      String ADDRESS = "address";
      String ADDRESS_SETTING = "address-setting";
      String ADDRESS_SETTINGS = "address-settings";
      String BINDINGS_DIRECTORY = "bindings-directory";
      String BRIDGE = "bridge";
      String BRIDGES = "bridges";
      String BROADCAST_GROUP = "broadcast-group";
      String BROADCAST_GROUPS = "broadcast-groups";
      String CLASS_NAME = "class-name";
      String CLUSTER_CONNECTION = "cluster-connection";
      String CLUSTER_CONNECTIONS = "cluster-connections";
      String CONNECTION_FACTORY = "connection-factory";
      String CONNECTOR = "connector";
      String CONNECTORS = "connectors";
      String CONNECTOR_NAME = "connector-name";
      String CONNECTOR_REF_STRING = "connector-ref";
      String CONNECTOR_SERVICE = "connector-service";
      String CONNECTOR_SERVICES = "connector-services";
      String CORE_QUEUE = "core-queue";
      String CORE_QUEUES = "core-queues";
      String DEFAULT = "default";
      String DESTINATION = "destination";
      String DISCOVERY_GROUP = "discovery-group";
      String DISCOVERY_GROUPS = "discovery-groups";
      String DISCOVERY_GROUP_REF = "discovery-group-ref";
      String DIVERT = "divert";
      String DIVERTS = "diverts";
      String ENTRY = "entry";
      String FILE_DEPLOYMENT_ENABLED = "file-deployment-enabled";
      String GROUPING_HANDLER = "grouping-handler";
      String HTTP_ACCEPTOR = "http-acceptor";
      String HTTP_CONNECTOR = "http-connector";
      String HTTP_LISTENER = "http-listener";
      String IN_VM_ACCEPTOR = "in-vm-acceptor";
      String IN_VM_CONNECTOR = "in-vm-connector";
      String JMS_BRIDGE = "jms-bridge";
      String JMS_CONNECTION_FACTORIES = "jms-connection-factories";
      String JMS_DESTINATIONS = "jms-destinations";
      String JMS_QUEUE = "jms-queue";
      String JMS_TOPIC = "jms-topic";
      String JOURNAL_DIRECTORY = "journal-directory";
      String KEY = "key";
      String INBOUND_CONFIG = "inbound-config";
      String LARGE_MESSAGES_DIRECTORY = "large-messages-directory";
      String LOCAL = "local";
      String MATCH = "match";
      String MODE = "mode";
      String NAME = "name";
      String NETTY_ACCEPTOR = "netty-acceptor";
      String NETTY_CONNECTOR = "netty-connector";
      String PAGING_DIRECTORY = "paging-directory";
      String PARAM = "param";
      String PERMISSION_ELEMENT_NAME = "permission";
      String POOLED_CONNECTION_FACTORY = "pooled-connection-factory";
      String QUEUE = "queue";
      String QUEUE_NAME = "queue-name";
      String REMOTE_ACCEPTOR = "remote-acceptor";
      String REMOTE_CONNECTOR = "remote-connector";
      String ROLE = "role";
      String ROLES_ATTR_NAME = "roles";
      String SECURITY_ROLE = "security-role";
      String SECURITY_SETTING = "security-setting";
      String SECURITY_SETTINGS = "security-settings";
  