/* * 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.wildfly.extension.messaging.activemq; 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.MILLISECONDS; import static org.jboss.as.controller.registry.AttributeAccess.Flag.RESTART_ALL_SERVICES; import static org.jboss.dmr.ModelType.BIG_DECIMAL; import static org.jboss.dmr.ModelType.BOOLEAN; import static org.jboss.dmr.ModelType.INT; import static org.jboss.dmr.ModelType.LONG; import static org.wildfly.extension.messaging.activemq.jms.Validators.noDuplicateElements; import org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration; import org.apache.activemq.artemis.api.core.client.ActiveMQClient; import org.apache.activemq.artemis.core.config.impl.FileConfiguration; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.AttributeMarshaller; import org.jboss.as.controller.AttributeParser; import org.jboss.as.controller.ObjectListAttributeDefinition; import org.jboss.as.controller.ObjectTypeAttributeDefinition; import org.jboss.as.controller.PropertiesAttributeDefinition; import org.jboss.as.controller.SimpleAttributeDefinition; import org.jboss.as.controller.StringListAttributeDefinition; import org.jboss.as.controller.access.management.SensitiveTargetAccessConstraintDefinition; 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. */ public interface CommonAttributes { String ENTRIES = "entries"; String MODULE = "module"; String NAME = "name"; AttributeDefinition CALL_TIMEOUT = create("call-timeout", LONG) .setDefaultValue(new ModelNode(ActiveMQClient.DEFAULT_CALL_TIMEOUT)) .setMeasurementUnit(MILLISECONDS) .setRequired(false) .setAllowExpression(true) .build(); SimpleAttributeDefinition CALL_FAILOVER_TIMEOUT = create("call-failover-timeout", LONG) // ActiveMQClient.DEFAULT_CALL_FAILOVER_TIMEOUT was changed from -1 to 30000 in ARTEMIS-255 .setDefaultValue(new ModelNode(-1L)) .setRequired(false) .setAllowExpression(true) .setMeasurementUnit(MILLISECONDS) .build(); SimpleAttributeDefinition CHECK_PERIOD = create("check-period", LONG) .setDefaultValue(new ModelNode(ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD)) .setRequired(false) .setAllowExpression(true) .setMeasurementUnit(MILLISECONDS) .setFlags(RESTART_ALL_SERVICES) .build(); SimpleAttributeDefinition CLIENT_ID = create("client-id", ModelType.STRING) .setRequired(false) .setAllowExpression(true) .build(); AttributeDefinition CONSUMER_COUNT = create("consumer-count", INT) .setStorageRuntime() .setRequired(false) .build(); SimpleAttributeDefinition BRIDGE_CONFIRMATION_WINDOW_SIZE = create("confirmation-window-size", INT) .setDefaultValue(new ModelNode(FileConfiguration.DEFAULT_CONFIRMATION_WINDOW_SIZE)) .setMeasurementUnit(BYTES) .setRequired(false) .setAllowExpression(true) .setRestartAllServices() .build(); SimpleAttributeDefinition CONNECTION_TTL = create("connection-ttl", LONG) .setDefaultValue(new ModelNode().set(ActiveMQClient.DEFAULT_CONNECTION_TTL)) .setRequired(false) .setAllowExpression(true) .setMeasurementUnit(MILLISECONDS) .setRestartAllServices() .build(); SimpleAttributeDefinition DEAD_LETTER_ADDRESS = create("dead-letter-address", ModelType.STRING) .setRequired(false) .setAllowExpression(true) .build(); AttributeDefinition DELIVERING_COUNT = create("delivering-count", INT) .setStorageRuntime() .setUndefinedMetricValue(new ModelNode(0)) .build(); StringListAttributeDefinition DESTINATION_ENTRIES = new StringListAttributeDefinition.Builder(ENTRIES) .setRequired(true) .setListValidator(noDuplicateElements(new StringLengthValidator(1, false, true))) .setAllowExpression(true) .setAttributeParser(AttributeParser.STRING_LIST) .setAttributeMarshaller(AttributeMarshaller.STRING_LIST) .setRestartAllServices() .build(); StringListAttributeDefinition LEGACY_ENTRIES = new StringListAttributeDefinition.Builder("legacy-entries") .setRequired(false) .setListValidator(noDuplicateElements(new StringLengthValidator(1, false, true))) .setAllowExpression(true) .setAttributeParser(AttributeParser.STRING_LIST) .setAttributeMarshaller(AttributeMarshaller.STRING_LIST) .setRestartAllServices() .build(); SimpleAttributeDefinition DURABLE = create("durable", BOOLEAN) .setDefaultValue(new ModelNode().set(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 FILTER = create("filter", ModelType.STRING) .setRequired(false) .setAllowExpression(true) .setRestartAllServices() .build(); SimpleAttributeDefinition HA = create("ha", BOOLEAN) .setDefaultValue(new ModelNode() .set(ActiveMQClient.DEFAULT_HA)) .setRequired(false) .setAllowExpression(true) .setRestartAllServices() .build(); PropertiesAttributeDefinition PARAMS = new PropertiesAttributeDefinition.Builder("params", true) .setWrapXmlElement(false) .setAllowExpression(true) .setXmlName("param") .build(); SimpleAttributeDefinition JGROUPS_STACK = create("jgroups-stack", ModelType.STRING) .setRequired(false) // do not allow expression as this may reference another resource .setAllowExpression(false) .setRequires("jgroups-channel") .setRestartAllServices() .build(); SimpleAttributeDefinition JGROUPS_CHANNEL = create("jgroups-channel", ModelType.STRING) .setRequired(false) // do not allow expression as this may reference another resource .setAllowExpression(false) .setAlternatives("socket-binding") .setRestartAllServices() .build(); AttributeDefinition MAX_RETRY_INTERVAL = create("max-retry-interval", LONG) .setDefaultValue(new ModelNode(ActiveMQClient.DEFAULT_MAX_RETRY_INTERVAL)) .setMeasurementUnit(MILLISECONDS) .setRequired(false) .setAllowExpression(true) .setRestartAllServices() .build(); AttributeDefinition MESSAGE_COUNT = create("message-count", LONG) .setStorageRuntime() .setUndefinedMetricValue(new ModelNode(0)) .build(); AttributeDefinition MESSAGES_ADDED = create("messages-added", LONG) .setStorageRuntime() .setUndefinedMetricValue(new ModelNode(0)) .build(); AttributeDefinition MIN_LARGE_MESSAGE_SIZE = create("min-large-message-size", INT) .setDefaultValue(new ModelNode(ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE)) .setMeasurementUnit(BYTES) .setRequired(false) .setAllowExpression(true) .setRestartAllServices() .build(); AttributeDefinition PAUSED = create("paused", BOOLEAN) .setStorageRuntime() .build(); ObjectTypeAttributeDefinition CLASS = ObjectTypeAttributeDefinition.Builder.of("class", create(NAME, ModelType.STRING, false) .setAllowExpression(false) .build(), create(MODULE, ModelType.STRING, false) .setAllowExpression(false) .build()) .build(); ObjectListAttributeDefinition INCOMING_INTERCEPTORS = ObjectListAttributeDefinition.Builder.of("incoming-interceptors", CommonAttributes.CLASS) .setRequired(false) .setAllowExpression(false) .setMinSize(1) .setMaxSize(Integer.MAX_VALUE) .build(); ObjectListAttributeDefinition OUTGOING_INTERCEPTORS = ObjectListAttributeDefinition.Builder.of("outgoing-interceptors", CommonAttributes.CLASS) .setRequired(false) .setAllowExpression(false) .setMinSize(1) .setMaxSize(Integer.MAX_VALUE) .build(); AttributeDefinition RETRY_INTERVAL = create("retry-interval", LONG) .setDefaultValue(new ModelNode().set(ActiveMQClient.DEFAULT_RETRY_INTERVAL)) .setMeasurementUnit(MILLISECONDS) .setRequired(false) .setAllowExpression(true) .setRestartAllServices() .build(); AttributeDefinition RETRY_INTERVAL_MULTIPLIER = create("retry-interval-multiplier", BIG_DECIMAL) .setDefaultValue(new ModelNode(ActiveMQClient.DEFAULT_RETRY_INTERVAL_MULTIPLIER)) .setRequired(false) .setAllowExpression(true) .setRestartAllServices() .build(); AttributeDefinition SCHEDULED_COUNT = create("scheduled-count", LONG) .setStorageRuntime() .setUndefinedMetricValue(new ModelNode(0)) .build(); SimpleAttributeDefinition SELECTOR = create("selector", ModelType.STRING) .setRequired(false) .setAllowExpression(true) .setRestartAllServices() .build(); SimpleAttributeDefinition SOCKET_BINDING = create("socket-binding", ModelType.STRING) .setRequired(false) .setAlternatives(JGROUPS_CHANNEL.getName()) .setRestartAllServices() .addAccessConstraint(SensitiveTargetAccessConstraintDefinition.SOCKET_BINDING_REF) .build(); AttributeDefinition TEMPORARY = create("temporary", BOOLEAN) .setStorageRuntime() .build(); SimpleAttributeDefinition TRANSFORMER_CLASS_NAME = create("transformer-class-name", ModelType.STRING) .setRequired(false) .setAllowExpression(false) .setRestartAllServices() .build(); SimpleAttributeDefinition USER = create("user", ModelType.STRING, true) .setAllowExpression(true) .setDefaultValue(new ModelNode(ActiveMQDefaultConfiguration.getDefaultClusterUser())) .build(); String ACCEPTOR = "acceptor"; String ACCEPTORS = "acceptors"; String ACTIVEMQ_ADDRESS = "activemq-address"; String ADDRESS = "address"; String ADDRESS_SETTING = "address-setting"; String ADDRESS_SETTINGS = "address-settings"; String BINDING_NAMES = "binding-names"; String BINDINGS_DIRECTORY = "bindings-directory"; String BRIDGE = "bridge"; String BRIDGES = "bridges"; String BROADCAST_GROUP = "broadcast-group"; String BROADCAST_GROUPS = "broadcast-groups"; String CHECK_FOR_LIVE_SERVER2 = "check-for-live-server"; String CLASS_NAME = "class-name"; String CLUSTER_CONNECTION = "cluster-connection"; String CLUSTER_CONNECTIONS = "cluster-connections"; String CLUSTER_NAME = "cluster-name"; String COLOCATED = "colocated"; String CONFIGURATION = "configuration"; 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 = "core"; String CORE_ADDRESS = "core-address"; 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 DURABLE_MESSAGE_COUNT = "durable-message-count"; String DURABLE_SUBSCRIPTION_COUNT = "durable-subscription-count"; String ENABLED = "enabled"; String ENTRY = "entry"; String EXCLUDES = "excludes"; String FILE_DEPLOYMENT_ENABLED = "file-deployment-enabled"; String GROUP_NAME = "group-name"; String GROUPING_HANDLER = "grouping-handler"; String HA_POLICY = "ha-policy"; String HOST = "host"; String HTTP = "http"; String HTTP_ACCEPTOR = "http-acceptor"; String HTTP_CONNECTOR = "http-connector"; String HTTP_LISTENER = "http-listener"; String ID = "id"; String IN_VM_ACCEPTOR = "in-vm-acceptor"; String IN_VM_CONNECTOR = "in-vm-connector"; String LEGACY = "legacy"; String LEGACY_CONNECTION_FACTORY = "legacy-connection-factory"; String JMS_BRIDGE = "jms-bridge"; String JMS_CONNECTION_FACTORIES = "jms-connection-factories"; String JMS_DESTINATION = "jms-destination"; String JMS_DESTINATIONS = "jms-destinations"; String JMS_QUEUE = "jms-queue"; String JMS_TOPIC = "jms-topic"; String JNDI_BINDING = "jndi-binding"; String JOURNAL_DIRECTORY = "journal-directory"; String KEY = "key"; String INBOUND_CONFIG = "inbound-config"; String LARGE_MESSAGES_DIRECTORY = "large-messages-directory"; String LAST_VALUE_QUEUE = "last-value=queue"; String LIVE_ONLY = "live-only"; String LOCAL = "local"; String LOCAL_TX = "LocalTransaction"; String MANAGE_XML_NAME = "manage"; String MASTER = "master"; String MATCH = "match"; String MESSAGE_ID = "message-id"; String MODE = "mode"; String NETTY_ACCEPTOR = "netty-acceptor"; String NETTY_CONNECTOR = "netty-connector"; String NONE = "none"; String NON_DURABLE_MESSAGE_COUNT = "non-durable-message-count"; String NON_DURABLE_SUBSCRIPTION_COUNT = "non-durable-subscription-count"; String NO_TX = "NoTransaction"; String NUMBER_OF_BYTES_PER_PAGE = "number-of-bytes-per-page"; String NUMBER_OF_PAGES = "number-of-pages"; String PAGING_DIRECTORY = "paging-directory"; String PARAM = "param"; String PASSWORD = "password"; String PERMISSION_ELEMENT_NAME = "permission"; String POOLED_CONNECTION_FACTORY = "pooled-connection-factory"; String QUEUE = "queue"; String QUEUE_NAME = "queue-name"; String QUEUE_NAMES = "queue-names"; String REMOTE_ACCEPTOR = "remote-acceptor"; String REMOTE_CONNECTOR = "remote-connector"; String REPLICATION = "replication"; String REPLICATION_COLOCATED = "replication-colocated"; String REPLICATION_MASTER = "replication-master"; String REPLICATION_SLAVE = "replication-slave"; String RESOURCE_ADAPTER = "resource-adapter"; String RESOLVE_ADDRESS_SETTING = "resolve-address-setting"; String ROLE = "role"; String ROLES_ATTR_NAME = "roles"; String RUNTIME_QUEUE = "runtime-queue"; String SCALE_DOWN = "scale-down"; String SECURITY_ROLE = "security-role"; String SECURITY_SETTING = "security-setting"; String SECURITY_SETTINGS = "security-settings"; String SERVER = "server"; String SERVLET_PATH = "servlet-path"; String SHARED_STORE = "shared-store"; String SHARED_STORE_COLOCATED = "shared-store-colocated"; String SHARED_STORE_MASTER = "shared-store-master"; String SHARED_STORE_SLAVE = "shared-store-slave"; String SLAVE = "slave"; String SOURCE = "source"; String STARTED = "started"; String STATIC_CONNECTORS = "static-connectors"; String STRING = "string"; String SUBSCRIPTION_COUNT = "subscription-count"; String SUBSYSTEM = "subsystem"; String TARGET = "target"; String TOPIC_ADDRESS = "topic-address"; String TYPE_ATTR_NAME = "type"; String USE_INVM = "use-invm"; String USE_SERVLET = "use-servlet"; String VERSION = "version"; String XA = "xa"; String XA_TX = "XATransaction"; }