/* * 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.core.settings.impl; import java.io.Serializable; import org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration; import org.apache.activemq.artemis.api.core.ActiveMQBuffer; import org.apache.activemq.artemis.api.core.SimpleString; import org.apache.activemq.artemis.core.journal.EncodingSupport; import org.apache.activemq.artemis.api.core.RoutingType; import org.apache.activemq.artemis.core.settings.Mergeable; import org.apache.activemq.artemis.utils.BufferHelper; import org.apache.activemq.artemis.utils.DataConstants; /** * Configuration settings that are applied on the address level */ public class AddressSettings implements Mergeable<AddressSettings>, Serializable, EncodingSupport { private static final long serialVersionUID = 1607502280582336366L; /** * defaults used if null, this allows merging */ public static final long DEFAULT_MAX_SIZE_BYTES = -1; public static final AddressFullMessagePolicy DEFAULT_ADDRESS_FULL_MESSAGE_POLICY = AddressFullMessagePolicy.PAGE; public static final long DEFAULT_PAGE_SIZE = 10 * 1024 * 1024; public static final int DEFAULT_MAX_DELIVERY_ATTEMPTS = 10; public static final int DEFAULT_PAGE_MAX_CACHE = 5; public static final int DEFAULT_MESSAGE_COUNTER_HISTORY_DAY_LIMIT = 0; public static final long DEFAULT_REDELIVER_DELAY = 0L; public static final double DEFAULT_REDELIVER_MULTIPLIER = 1.0; public static final boolean DEFAULT_LAST_VALUE_QUEUE = false; @Deprecated public static final boolean DEFAULT_AUTO_CREATE_JMS_QUEUES = true; @Deprecated public static final boolean DEFAULT_AUTO_DELETE_JMS_QUEUES = true; @Deprecated public static final boolean DEFAULT_AUTO_CREATE_TOPICS = true; @Deprecated public static final boolean DEFAULT_AUTO_DELETE_TOPICS = true; public static final boolean DEFAULT_AUTO_CREATE_QUEUES = true; public static final boolean DEFAULT_AUTO_DELETE_QUEUES = true; public static final boolean DEFAULT_AUTO_CREATE_ADDRESSES = true; public static final boolean DEFAULT_AUTO_DELETE_ADDRESSES = true; public static final long DEFAULT_REDISTRIBUTION_DELAY = -1; public static final long DEFAULT_EXPIRY_DELAY = -1; public static final boolean DEFAULT_SEND_TO_DLA_ON_NO_ROUTE = false; public static final long DEFAULT_SLOW_CONSUMER_THRESHOLD = -1; public static final long DEFAULT_SLOW_CONSUMER_CHECK_PERIOD = 5; public static final int MANAGEMENT_BROWSE_PAGE_SIZE = 200; public static final SlowConsumerPolicy DEFAULT_SLOW_CONSUMER_POLICY = SlowConsumerPolicy.NOTIFY; public static final int DEFAULT_QUEUE_PREFETCH = 1000; // Default address drop threshold, applied to address settings with BLOCK policy. -1 means no threshold enabled. public static final long DEFAULT_ADDRESS_REJECT_THRESHOLD = -1; private AddressFullMessagePolicy addressFullMessagePolicy = null; private Long maxSizeBytes = null; private Long pageSizeBytes = null; private Integer pageMaxCache = null; private Boolean dropMessagesWhenFull = null; private Integer maxDeliveryAttempts = null; private Integer messageCounterHistoryDayLimit = null; private Long redeliveryDelay = null; private Double redeliveryMultiplier = null; private Long maxRedeliveryDelay = null; private SimpleString deadLetterAddress = null; private SimpleString expiryAddress = null; private Long expiryDelay = AddressSettings.DEFAULT_EXPIRY_DELAY; private Boolean lastValueQueue = null; private Long redistributionDelay = null; private Boolean sendToDLAOnNoRoute = null; private Long slowConsumerThreshold = null; private Long slowConsumerCheckPeriod = null; private SlowConsumerPolicy slowConsumerPolicy = null; @Deprecated private Boolean autoCreateJmsQueues = null; @Deprecated private Boolean autoDeleteJmsQueues = null; @Deprecated private Boolean autoCreateJmsTopics = null; @Deprecated private Boolean autoDeleteJmsTopics = null; private Boolean autoCreateQueues = null; private Boolean autoDeleteQueues = null; private Boolean autoCreateAddresses = null; private Boolean autoDeleteAddresses = null; private Integer managementBrowsePageSize = AddressSettings.MANAGEMENT_BROWSE_PAGE_SIZE; private Long maxSizeBytesRejectThreshold = null; private Integer defaultMaxConsumers = null; private Boolean defaultPurgeOnNoConsumers = null; private RoutingType defaultQueueRoutingType = null; private RoutingType defaultAddressRoutingType = null; //from amq5 //make it transient private transient Integer queuePrefetch = null; public AddressSettings(AddressSettings other) { this.addressFullMessagePolicy = other.addressFullMessagePolicy; this.maxSizeBytes = other.maxSizeBytes; this.pageSizeBytes = other.pageSizeBytes; this.pageMaxCache = other.pageMaxCache; this.dropMessagesWhenFull = other.dropMessagesWhenFull; this.maxDeliveryAttempts = other.maxDeliveryAttempts; this.messageCounterHistoryDayLimit = other.messageCounterHistoryDayLimit; this.redeliveryDelay = other.redeliveryDelay; this.redeliveryMultiplier = other.redeliveryMultiplier; this.maxRedeliveryDelay = other.maxRedeliveryDelay; this.deadLetterAddress = other.deadLetterAddress; this.expiryAddress = other.expiryAddress; this.expiryDelay = other.expiryDelay; this.lastValueQueue = other.lastValueQueue; this.redistributionDelay = other.redistributionDelay; this.sendToDLAOnNoRoute = other.sendToDLAOnNoRoute; this.slowConsumerThreshold = other.slowConsumerThreshold; this.slowConsumerCheckPeriod = other.slowConsumerCheckPeriod; this.slowConsumerPolicy = other.slowConsumerPolicy; this.autoCreateJmsQueues = other.autoCreateJmsQueues; this.autoDeleteJmsQueues = other.autoDeleteJmsQueues; this.autoCreateJmsTopics = other.autoCreateJmsTopics; this.autoDeleteJmsTopics = other.autoDeleteJmsTopics; this.autoCreateQueues = other.autoCreateQueues; this.autoDeleteQueues = other.autoDeleteQueues; this.autoCreateAddresses = other.autoCreateAddresses; this.autoDeleteAddresses = other.autoDeleteAddresses; this.managementBrowsePageSize = other.managementBrowsePageSize; this.queuePrefetch = other.queuePrefetch; this.maxSizeBytesRejectThreshold = other.maxSizeBytesRejectThreshold; this.defaultMaxConsumers = other.defaultMaxConsumers; this.defaultPurgeOnNoConsumers = other.defaultPurgeOnNoConsumers; this.defaultQueueRoutingType = other.defaultQueueRoutingType; this.defaultAddressRoutingType = other.defaultAddressRoutingType; } public AddressSettings() { } @Deprecated public boolean isAutoCreateJmsQueues() { return autoCreateJmsQueues != null ? autoCreateJmsQueues : AddressSettings.DEFAULT_AUTO_CREATE_JMS_QUEUES; } @Deprecated public AddressSettings setAutoCreateJmsQueues(final boolean autoCreateJmsQueues) { this.autoCreateJmsQueues = autoCreateJmsQueues; return this; } @Deprecated public boolean isAutoDeleteJmsQueues() { return autoDeleteJmsQueues != null ? autoDeleteJmsQueues : AddressSettings.DEFAULT_AUTO_DELETE_JMS_QUEUES; } @Deprecated public AddressSettings setAutoDeleteJmsQueues(final boolean autoDeleteJmsQueues) { this.autoDeleteJmsQueues = autoDeleteJmsQueues; return this; } @Deprecated public boolean isAutoCreateJmsTopics() { return autoCreateJmsTopics != null ? autoCreateJmsTopics : AddressSettings.DEFAULT_AUTO_CREATE_TOPICS; } @Deprecated public AddressSettings setAutoCreateJmsTopics(final boolean autoCreateJmsTopics) { this.autoCreateJmsTopics = autoCreateJmsTopics; return this; } @Deprecated public boolean isAutoDeleteJmsTopics() { return autoDeleteJmsTopics != null ? autoDeleteJmsTopics : AddressSettings.DEFAULT_AUTO_DELETE_TOPICS; } @Deprecated public AddressSettings setAutoDeleteJmsTopics(final boolean autoDeleteJmsTopics) { this.autoDeleteJmsTopics = autoDeleteJmsTopics; return this; } public boolean isAutoCreateQueues() { return autoCreateQueues != null ? autoCreateQueues : AddressSettings.DEFAULT_AUTO_CREATE_QUEUES; } public AddressSettings setAutoCreateQueues(Boolean autoCreateQueues) { this.autoCreateQueues = autoCreateQueues; return this; } public boolean isAutoDeleteQueues() { return autoDeleteQueues != null ? autoDeleteQueues : AddressSettings.DEFAULT_AUTO_DELETE_QUEUES; } public AddressSettings setAutoDeleteQueues(Boolean autoDeleteQueues) { this.autoDeleteQueues = autoDeleteQueues; return this; } public boolean isAutoCreateAddresses() { return autoCreateAddresses != null ? autoCreateAddresses : AddressSettings.DEFAULT_AUTO_CREATE_ADDRESSES; } public AddressSettings setAutoCreateAddresses(Boolean autoCreateAddresses) { this.autoCreateAddresses = autoCreateAddresses; return this; } public boolean isAutoDeleteAddresses() { return autoDeleteAddresses != null ? autoDeleteAddresses : AddressSettings.DEFAULT_AUTO_DELETE_ADDRESSES; } public AddressSettings setAutoDeleteAddresses(Boolean autoDeleteAddresses) { this.autoDeleteAddresses = autoDeleteAddresses; return this; } public int getDefaultMaxConsumers() { return defaultMaxConsumers != null ? defaultMaxConsumers : ActiveMQDefaultConfiguration.getDefaultMaxQueueConsumers(); } public AddressSettings setDefaultMaxConsumers(Integer defaultMaxConsumers) { this.defaultMaxConsumers = defaultMaxConsumers; return this; } public boolean isDefaultPurgeOnNoConsumers() { return defaultPurgeOnNoConsumers != null ? defaultPurgeOnNoConsumers : ActiveMQDefaultConfiguration.getDefaultPurgeOnNoConsumers(); } public AddressSettings setDefaultPurgeOnNoConsumers(Boolean defaultPurgeOnNoConsumers) { this.defaultPurgeOnNoConsumers = defaultPurgeOnNoConsumers; return this; } public RoutingType getDefaultQueueRoutingType() { return defaultQueueRoutingType != null ? defaultQueueRoutingType : ActiveMQDefaultConfiguration.getDefaultRoutingType(); } public AddressSettings setDefaultQueueRoutingType(RoutingType defaultQueueRoutingType) { this.defaultQueueRoutingType = defaultQueueRoutingType; return this; } public RoutingType getDefaultAddressRoutingType() { return defaultAddressRoutingType != null ? defaultAddressRoutingType : ActiveMQDefaultConfiguration.getDefaultRoutingType(); } public AddressSettings setDefaultAddressRoutingType(RoutingType defaultAddressRoutingType) { this.defaultAddressRoutingType = defaultAddressRoutingType; return this; } public boolean isLastValueQueue() { return lastValueQueue != null ? lastValueQueue : AddressSettings.DEFAULT_LAST_VALUE_QUEUE; } public AddressSettings setLastValueQueue(final boolean lastValueQueue) { this.lastValueQueue = lastValueQueue; return this; } public AddressFullMessagePolicy getAddressFullMessagePolicy() { return addressFullMessagePolicy != null ? addressFullMessagePolicy : AddressSettings.DEFAULT_ADDRESS_FULL_MESSAGE_POLICY; } public AddressSettings setAddressFullMessagePolicy(final AddressFullMessagePolicy addressFullMessagePolicy) { this.addressFullMessagePolicy = addressFullMessagePolicy; return this; } public long getPageSizeBytes() { return pageSizeBytes != null ? pageSizeBytes : AddressSettings.DEFAULT_PAGE_SIZE; } public AddressSettings setPageSizeBytes(final long pageSize) { pageSizeBytes = pageSize; return this; } public int getPageCacheMaxSize() { return pageMaxCache != null ? pageMaxCache : AddressSettings.DEFAULT_PAGE_MAX_CACHE; } public AddressSettings setPageCacheMaxSize(final int pageMaxCache) { this.pageMaxCache = pageMaxCache; return this; } public long getMaxSizeBytes() { return maxSizeBytes != null ? maxSizeBytes : AddressSettings.DEFAULT_MAX_SIZE_BYTES; } public AddressSettings setMaxSizeBytes(final long maxSizeBytes) { this.maxSizeBytes = maxSizeBytes; return this; } public int getMaxDeliveryAttempts() { return maxDeliveryAttempts != null ? maxDeliveryAttempts : AddressSettings.DEFAULT_MAX_DELIVERY_ATTEMPTS; } public AddressSettings setMaxDeliveryAttempts(final int maxDeliveryAttempts) { this.maxDeliveryAttempts = maxDeliveryAttempts; return this; } public int getMessageCounterHistoryDayLimit() { return messageCounterHistoryDayLimit != null ? messageCounterHistoryDayLimit : AddressSettings.DEFAULT_MESSAGE_COUNTER_HISTORY_DAY_LIMIT; } public AddressSettings setMessageCounterHistoryDayLimit(final int messageCounterHistoryDayLimit) { this.messageCounterHistoryDayLimit = messageCounterHistoryDayLimit; return this; } public long getRedeliveryDelay() { return redeliveryDelay != null ? redeliveryDelay : AddressSettings.DEFAULT_REDELIVER_DELAY; } public AddressSettings setRedeliveryDelay(final long redeliveryDelay) { this.redeliveryDelay = redeliveryDelay; return this; } public double getRedeliveryMultiplier() { return redeliveryMultiplier != null ? redeliveryMultiplier : AddressSettings.DEFAULT_REDELIVER_MULTIPLIER; } public AddressSettings setRedeliveryMultiplier(final double redeliveryMultiplier) { this.redeliveryMultiplier = redeliveryMultiplier; return this; } public long getMaxRedeliveryDelay() { // default is redelivery-delay * 10 as specified on the docs and at this JIRA: // https://issues.jboss.org/browse/HORNETQ-1263 return maxRedeliveryDelay != null ? maxRedeliveryDelay : (getRedeliveryDelay() * 10); } public AddressSettings setMaxRedeliveryDelay(final long maxRedeliveryDelay) { this.maxRedeliveryDelay = maxRedeliveryDelay; return this; } public SimpleString getDeadLetterAddress() { return deadLetterAddress; } public AddressSettings setDeadLetterAddress(final SimpleString deadLetterAddress) { this.deadLetterAddress = deadLetterAddress; return this; } public SimpleString getExpiryAddress() { return expiryAddress; } public AddressSettings setExpiryAddress(final SimpleString expiryAddress) { this.expiryAddress = expiryAddress; return this; } public Long getExpiryDelay() { return expiryDelay; } public AddressSettings setExpiryDelay(final Long expiryDelay) { this.expiryDelay = expiryDelay; return this; } public boolean isSendToDLAOnNoRoute() { return sendToDLAOnNoRoute != null ? sendToDLAOnNoRoute : AddressSettings.DEFAULT_SEND_TO_DLA_ON_NO_ROUTE; } public AddressSettings setSendToDLAOnNoRoute(final boolean value) { sendToDLAOnNoRoute = value; return this; } public long getRedistributionDelay() { return redistributionDelay != null ? redistributionDelay : AddressSettings.DEFAULT_REDISTRIBUTION_DELAY; } public AddressSettings setRedistributionDelay(final long redistributionDelay) { this.redistributionDelay = redistributionDelay; return this; } public long getSlowConsumerThreshold() { return slowConsumerThreshold != null ? slowConsumerThreshold : AddressSettings.DEFAULT_SLOW_CONSUMER_THRESHOLD; } public AddressSettings setSlowConsumerThreshold(final long slowConsumerThreshold) { this.slowConsumerThreshold = slowConsumerThreshold; return this; } public long getSlowConsumerCheckPeriod() { return slowConsumerCheckPeriod != null ? slowConsumerCheckPeriod : AddressSettings.DEFAULT_SLOW_CONSUMER_CHECK_PERIOD; } public AddressSettings setSlowConsumerCheckPeriod(final long slowConsumerCheckPeriod) { this.slowConsumerCheckPeriod = slowConsumerCheckPeriod; return this; } public SlowConsumerPolicy getSlowConsumerPolicy() { return slowConsumerPolicy != null ? slowConsumerPolicy : AddressSettings.DEFAULT_SLOW_CONSUMER_POLICY; } public AddressSettings setSlowConsumerPolicy(final SlowConsumerPolicy slowConsumerPolicy) { this.slowConsumerPolicy = slowConsumerPolicy; return this; } public int getManagementBrowsePageSize() { return managementBrowsePageSize != null ? managementBrowsePageSize : AddressSettings.MANAGEMENT_BROWSE_PAGE_SIZE; } public AddressSettings setManagementBrowsePageSize(int managementBrowsePageSize) { this.managementBrowsePageSize = managementBrowsePageSize; return this; } public int getQueuePrefetch() { return queuePrefetch != null ? queuePrefetch : AddressSettings.DEFAULT_QUEUE_PREFETCH; } public AddressSettings setQueuePrefetch(int queuePrefetch) { this.queuePrefetch = queuePrefetch; return this; } public long getMaxSizeBytesRejectThreshold() { return (maxSizeBytesRejectThreshold == null) ? AddressSettings.DEFAULT_ADDRESS_REJECT_THRESHOLD : maxSizeBytesRejectThreshold; } public AddressSettings setMaxSizeBytesRejectThreshold(long maxSizeBytesRejectThreshold) { this.maxSizeBytesRejectThreshold = maxSizeBytesRejectThreshold; return this; } /** * merge 2 objects in to 1 * * @param merged */ @Override public void merge(final AddressSettings merged) { if (maxDeliveryAttempts == null) { maxDeliveryAttempts = merged.maxDeliveryAttempts; } if (dropMessagesWhenFull == null) { dropMessagesWhenFull = merged.dropMessagesWhenFull; } if (maxSizeBytes == null) { maxSizeBytes = merged.maxSizeBytes; } if (pageMaxCache == null) { pageMaxCache = merged.pageMaxCache; } if (pageSizeBytes == null) { pageSizeBytes = merged.getPageSizeBytes(); } if (messageCounterHistoryDayLimit == null) { messageCounterHistoryDayLimit = merged.messageCounterHistoryDayLimit; } if (redeliveryDelay == null) { redeliveryDelay = merged.redeliveryDelay; } if (redeliveryMultiplier == null) { redeliveryMultiplier = merged.redeliveryMultiplier; } if (maxRedeliveryDelay == null) { maxRedeliveryDelay = merged.maxRedeliveryDelay; } if (deadLetterAddress == null) { deadLetterAddress = merged.deadLetterAddress; } if (expiryAddress == null) { expiryAddress = merged.expiryAddress; } if (expiryDelay == null) { expiryDelay = merged.expiryDelay; } if (redistributionDelay == null) { redistributionDelay = merged.redistributionDelay; } if (sendToDLAOnNoRoute == null) { sendToDLAOnNoRoute = merged.sendToDLAOnNoRoute; } if (addressFullMessagePolicy == null) { addressFullMessagePolicy = merged.addressFullMessagePolicy; } if (slowConsumerThreshold == null) { slowConsumerThreshold = merged.slowConsumerThreshold; } if (slowConsumerCheckPeriod == null) { slowConsumerCheckPeriod = merged.slowConsumerCheckPeriod; } if (slowConsumerPolicy == null) { slowConsumerPolicy = merged.slowConsumerPolicy; } if (autoCreateJmsQueues == null) { autoCreateJmsQueues = merged.autoCreateJmsQueues; } if (autoDeleteJmsQueues == null) { autoDeleteJmsQueues = merged.autoDeleteJmsQueues; } if (autoCreateJmsTopics == null) { autoCreateJmsTopics = merged.autoCreateJmsTopics; } if (autoDeleteJmsTopics == null) { autoDeleteJmsTopics = merged.autoDeleteJmsTopics; } if (autoCreateQueues == null) { autoCreateQueues = merged.autoCreateQueues; } if (autoDeleteQueues == null) { autoDeleteQueues = merged.autoDeleteQueues; } if (autoCreateAddresses == null) { autoCreateAddresses = merged.autoCreateAddresses; } if (autoDeleteAddresses == null) { autoDeleteAddresses = merged.autoDeleteAddresses; } if (managementBrowsePageSize == null) { managementBrowsePageSize = merged.managementBrowsePageSize; } if (queuePrefetch == null) { queuePrefetch = merged.queuePrefetch; } if (maxSizeBytesRejectThreshold == null) { maxSizeBytesRejectThreshold = merged.maxSizeBytesRejectThreshold; } if (defaultMaxConsumers == null) { defaultMaxConsumers = merged.defaultMaxConsumers; } if (defaultPurgeOnNoConsumers == null) { defaultPurgeOnNoConsumers = merged.defaultPurgeOnNoConsumers; } if (defaultQueueRoutingType == null) { defaultQueueRoutingType = merged.defaultQueueRoutingType; } if (defaultAddressRoutingType == null) { defaultAddressRoutingType = merged.defaultAddressRoutingType; } } @Override public void decode(ActiveMQBuffer buffer) { SimpleString policyStr = buffer.readNullableSimpleString(); if (policyStr != null) { addressFullMessagePolicy = AddressFullMessagePolicy.valueOf(policyStr.toString()); } else { addressFullMessagePolicy = null; } maxSizeBytes = BufferHelper.readNullableLong(buffer); pageSizeBytes = BufferHelper.readNullableLong(buffer); pageMaxCache = BufferHelper.readNullableInteger(buffer); dropMessagesWhenFull = BufferHelper.readNullableBoolean(buffer); maxDeliveryAttempts = BufferHelper.readNullableInteger(buffer); messageCounterHistoryDayLimit = BufferHelper.readNullableInteger(buffer); redeliveryDelay = BufferHelper.readNullableLong(buffer); redeliveryMultiplier = BufferHelper.readNullableDouble(buffer); maxRedeliveryDelay = BufferHelper.readNullableLong(buffer); deadLetterAddress = buffer.readNullableSimpleString(); expiryAddress = buffer.readNullableSimpleString(); expiryDelay = BufferHelper.readNullableLong(buffer); lastValueQueue = BufferHelper.readNullableBoolean(buffer); redistributionDelay = BufferHelper.readNullableLong(buffer); sendToDLAOnNoRoute = BufferHelper.readNullableBoolean(buffer); slowConsumerThreshold = BufferHelper.readNullableLong(buffer); slowConsumerCheckPeriod = BufferHelper.readNullableLong(buffer); policyStr = buffer.readNullableSimpleString(); if (policyStr != null) { slowConsumerPolicy = SlowConsumerPolicy.valueOf(policyStr.toString()); } else { slowConsumerPolicy = null; } autoCreateJmsQueues = BufferHelper.readNullableBoolean(buffer); autoDeleteJmsQueues = BufferHelper.readNullableBoolean(buffer); autoCreateJmsTopics = BufferHelper.readNullableBoolean(buffer); autoDeleteJmsTopics = BufferHelper.readNullableBoolean(buffer); autoCreateQueues = BufferHelper.readNullableBoolean(buffer); autoDeleteQueues = BufferHelper.readNullableBoolean(buffer); autoCreateAddresses = BufferHelper.readNullableBoolean(buffer); autoDeleteAddresses = BufferHelper.readNullableBoolean(buffer); managementBrowsePageSize = BufferHelper.readNullableInteger(buffer); maxSizeBytesRejectThreshold = BufferHelper.readNullableLong(buffer); defaultMaxConsumers = BufferHelper.readNullableInteger(buffer); defaultPurgeOnNoConsumers = BufferHelper.readNullableBoolean(buffer); defaultQueueRoutingType = RoutingType.getType(buffer.readByte()); defaultAddressRoutingType = RoutingType.getType(buffer.readByte()); } @Override public int getEncodeSize() { return BufferHelper.sizeOfNullableSimpleString(addressFullMessagePolicy != null ? addressFullMessagePolicy.toString() : null) + BufferHelper.sizeOfNullableLong(maxSizeBytes) + BufferHelper.sizeOfNullableLong(pageSizeBytes) + BufferHelper.sizeOfNullableInteger(pageMaxCache) + BufferHelper.sizeOfNullableBoolean(dropMessagesWhenFull) + BufferHelper.sizeOfNullableInteger(maxDeliveryAttempts) + BufferHelper.sizeOfNullableInteger(messageCounterHistoryDayLimit) + BufferHelper.sizeOfNullableLong(redeliveryDelay) + BufferHelper.sizeOfNullableDouble(redeliveryMultiplier) + BufferHelper.sizeOfNullableLong(maxRedeliveryDelay) + SimpleString.sizeofNullableString(deadLetterAddress) + SimpleString.sizeofNullableString(expiryAddress) + BufferHelper.sizeOfNullableLong(expiryDelay) + BufferHelper.sizeOfNullableBoolean(lastValueQueue) + BufferHelper.sizeOfNullableLong(redistributionDelay) + BufferHelper.sizeOfNullableBoolean(sendToDLAOnNoRoute) + BufferHelper.sizeOfNullableLong(slowConsumerCheckPeriod) + BufferHelper.sizeOfNullableLong(slowConsumerThreshold) + BufferHelper.sizeOfNullableSimpleString(slowConsumerPolicy != null ? slowConsumerPolicy.toString() : null) + BufferHelper.sizeOfNullableBoolean(autoCreateJmsQueues) + BufferHelper.sizeOfNullableBoolean(autoDeleteJmsQueues) + BufferHelper.sizeOfNullableBoolean(autoCreateJmsTopics) + BufferHelper.sizeOfNullableBoolean(autoDeleteJmsTopics) + BufferHelper.sizeOfNullableBoolean(autoCreateQueues) + BufferHelper.sizeOfNullableBoolean(autoDeleteQueues) + BufferHelper.sizeOfNullableBoolean(autoCreateAddresses) + BufferHelper.sizeOfNullableBoolean(autoDeleteAddresses) + BufferHelper.sizeOfNullableInteger(managementBrowsePageSize) + BufferHelper.sizeOfNullableLong(maxSizeBytesRejectThreshold) + BufferHelper.sizeOfNullableInteger(defaultMaxConsumers) + BufferHelper.sizeOfNullableBoolean(defaultPurgeOnNoConsumers) + DataConstants.SIZE_BYTE + DataConstants.SIZE_BYTE; } @Override public void encode(ActiveMQBuffer buffer) { buffer.writeNullableSimpleString(addressFullMessagePolicy != null ? new SimpleString(addressFullMessagePolicy.toString()) : null); BufferHelper.writeNullableLong(buffer, maxSizeBytes); BufferHelper.writeNullableLong(buffer, pageSizeBytes); BufferHelper.writeNullableInteger(buffer, pageMaxCache); BufferHelper.writeNullableBoolean(buffer, dropMessagesWhenFull); BufferHelper.writeNullableInteger(buffer, maxDeliveryAttempts); BufferHelper.writeNullableInteger(buffer, messageCounterHistoryDayLimit); BufferHelper.writeNullableLong(buffer, redeliveryDelay); BufferHelper.writeNullableDouble(buffer, redeliveryMultiplier); BufferHelper.writeNullableLong(buffer, maxRedeliveryDelay); buffer.writeNullableSimpleString(deadLetterAddress); buffer.writeNullableSimpleString(expiryAddress); BufferHelper.writeNullableLong(buffer, expiryDelay); BufferHelper.writeNullableBoolean(buffer, lastValueQueue); BufferHelper.writeNullableLong(buffer, redistributionDelay); BufferHelper.writeNullableBoolean(buffer, sendToDLAOnNoRoute); BufferHelper.writeNullableLong(buffer, slowConsumerThreshold); BufferHelper.writeNullableLong(buffer, slowConsumerCheckPeriod); buffer.writeNullableSimpleString(slowConsumerPolicy != null ? new SimpleString(slowConsumerPolicy.toString()) : null); BufferHelper.writeNullableBoolean(buffer, autoCreateJmsQueues); BufferHelper.writeNullableBoolean(buffer, autoDeleteJmsQueues); BufferHelper.writeNullableBoolean(buffer, autoCreateJmsTopics); BufferHelper.writeNullableBoolean(buffer, autoDeleteJmsTopics); BufferHelper.writeNullableBoolean(buffer, autoCreateQueues); BufferHelper.writeNullableBoolean(buffer, autoDeleteQueues); BufferHelper.writeNullableBoolean(buffer, autoCreateAddresses); BufferHelper.writeNullableBoolean(buffer, autoDeleteAddresses); BufferHelper.writeNullableInteger(buffer, managementBrowsePageSize); BufferHelper.writeNullableLong(buffer, maxSizeBytesRejectThreshold); BufferHelper.writeNullableInteger(buffer, defaultMaxConsumers); BufferHelper.writeNullableBoolean(buffer, defaultPurgeOnNoConsumers); buffer.writeByte(defaultQueueRoutingType == null ? -1 : defaultQueueRoutingType.getType()); buffer.writeByte(defaultAddressRoutingType == null ? -1 : defaultAddressRoutingType.getType()); } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((addressFullMessagePolicy == null) ? 0 : addressFullMessagePolicy.hashCode()); result = prime * result + ((deadLetterAddress == null) ? 0 : deadLetterAddress.hashCode()); result = prime * result + ((dropMessagesWhenFull == null) ? 0 : dropMessagesWhenFull.hashCode()); result = prime * result + ((expiryAddress == null) ? 0 : expiryAddress.hashCode()); result = prime * result + ((expiryDelay == null) ? 0 : expiryDelay.hashCode()); result = prime * result + ((lastValueQueue == null) ? 0 : lastValueQueue.hashCode()); result = prime * result + ((maxDeliveryAttempts == null) ? 0 : maxDeliveryAttempts.hashCode()); result = prime * result + ((maxSizeBytes == null) ? 0 : maxSizeBytes.hashCode()); result = prime * result + ((messageCounterHistoryDayLimit == null) ? 0 : messageCounterHistoryDayLimit.hashCode()); result = prime * result + ((pageSizeBytes == null) ? 0 : pageSizeBytes.hashCode()); result = prime * result + ((pageMaxCache == null) ? 0 : pageMaxCache.hashCode()); result = prime * result + ((redeliveryDelay == null) ? 0 : redeliveryDelay.hashCode()); result = prime * result + ((redeliveryMultiplier == null) ? 0 : redeliveryMultiplier.hashCode()); result = prime * result + ((maxRedeliveryDelay == null) ? 0 : maxRedeliveryDelay.hashCode()); result = prime * result + ((redistributionDelay == null) ? 0 : redistributionDelay.hashCode()); result = prime * result + ((sendToDLAOnNoRoute == null) ? 0 : sendToDLAOnNoRoute.hashCode()); result = prime * result + ((slowConsumerThreshold == null) ? 0 : slowConsumerThreshold.hashCode()); result = prime * result + ((slowConsumerCheckPeriod == null) ? 0 : slowConsumerCheckPeriod.hashCode()); result = prime * result + ((slowConsumerPolicy == null) ? 0 : slowConsumerPolicy.hashCode()); result = prime * result + ((autoCreateJmsQueues == null) ? 0 : autoCreateJmsQueues.hashCode()); result = prime * result + ((autoDeleteJmsQueues == null) ? 0 : autoDeleteJmsQueues.hashCode()); result = prime * result + ((autoCreateJmsTopics == null) ? 0 : autoCreateJmsTopics.hashCode()); result = prime * result + ((autoDeleteJmsTopics == null) ? 0 : autoDeleteJmsTopics.hashCode()); result = prime * result + ((autoCreateQueues == null) ? 0 : autoCreateQueues.hashCode()); result = prime * result + ((autoDeleteQueues == null) ? 0 : autoDeleteQueues.hashCode()); result = prime * result + ((autoCreateAddresses == null) ? 0 : autoCreateAddresses.hashCode()); result = prime * result + ((autoDeleteAddresses == null) ? 0 : autoDeleteAddresses.hashCode()); result = prime * result + ((managementBrowsePageSize == null) ? 0 : managementBrowsePageSize.hashCode()); result = prime * result + ((queuePrefetch == null) ? 0 : queuePrefetch.hashCode()); result = prime * result + ((maxSizeBytesRejectThreshold == null) ? 0 : maxSizeBytesRejectThreshold.hashCode()); result = prime * result + ((defaultMaxConsumers == null) ? 0 : defaultMaxConsumers.hashCode()); result = prime * result + ((defaultPurgeOnNoConsumers == null) ? 0 : defaultPurgeOnNoConsumers.hashCode()); result = prime * result + ((defaultQueueRoutingType == null) ? 0 : defaultQueueRoutingType.hashCode()); result = prime * result + ((defaultAddressRoutingType == null) ? 0 : defaultAddressRoutingType.hashCode()); return result; } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; AddressSettings other = (AddressSettings) obj; if (addressFullMessagePolicy == null) { if (other.addressFullMessagePolicy != null) return false; } else if (!addressFullMessagePolicy.equals(other.addressFullMessagePolicy)) return false; if (deadLetterAddress == null) { if (other.deadLetterAddress != null) return false; } else if (!deadLetterAddress.equals(other.deadLetterAddress)) return false; if (dropMessagesWhenFull == null) { if (other.dropMessagesWhenFull != null) return false; } else if (!dropMessagesWhenFull.equals(other.dropMessagesWhenFull)) return false; if (expiryAddress == null) { if (other.expiryAddress != null) return false; } else if (!expiryAddress.equals(other.expiryAddress)) return false; if (expiryDelay == null) { if (other.expiryDelay != null) return false; } else if (!expiryDelay.equals(other.expiryDelay)) return false; if (lastValueQueue == null) { if (other.lastValueQueue != null) return false; } else if (!lastValueQueue.equals(other.lastValueQueue)) return false; if (maxDeliveryAttempts == null) { if (other.maxDeliveryAttempts != null) return false; } else if (!maxDeliveryAttempts.equals(other.maxDeliveryAttempts)) return false; if (maxSizeBytes == null) { if (other.maxSizeBytes != null) return false; } else if (!maxSizeBytes.equals(other.maxSizeBytes)) return false; if (messageCounterHistoryDayLimit == null) { if (other.messageCounterHistoryDayLimit != null) return false; } else if (!messageCounterHistoryDayLimit.equals(other.messageCounterHistoryDayLimit)) return false; if (pageSizeBytes == null) { if (other.pageSizeBytes != null) return false; } else if (!pageSizeBytes.equals(other.pageSizeBytes)) return false; if (pageMaxCache == null) { if (other.pageMaxCache != null) return false; } else if (!pageMaxCache.equals(other.pageMaxCache)) return false; if (redeliveryDelay == null) { if (other.redeliveryDelay != null) return false; } else if (!redeliveryDelay.equals(other.redeliveryDelay)) return false; if (redeliveryMultiplier == null) { if (other.redeliveryMultiplier != null) return false; } else if (!redeliveryMultiplier.equals(other.redeliveryMultiplier)) return false; if (maxRedeliveryDelay == null) { if (other.maxRedeliveryDelay != null) return false; } else if (!maxRedeliveryDelay.equals(other.maxRedeliveryDelay)) return false; if (redistributionDelay == null) { if (other.redistributionDelay != null) return false; } else if (!redistributionDelay.equals(other.redistributionDelay)) return false; if (sendToDLAOnNoRoute == null) { if (other.sendToDLAOnNoRoute != null) return false; } else if (!sendToDLAOnNoRoute.equals(other.sendToDLAOnNoRoute)) return false; if (slowConsumerThreshold == null) { if (other.slowConsumerThreshold != null) return false; } else if (!slowConsumerThreshold.equals(other.slowConsumerThreshold)) return false; if (slowConsumerCheckPeriod == null) { if (other.slowConsumerCheckPeriod != null) return false; } else if (!slowConsumerCheckPeriod.equals(other.slowConsumerCheckPeriod)) return false; if (slowConsumerPolicy == null) { if (other.slowConsumerPolicy != null) return false; } else if (!slowConsumerPolicy.equals(other.slowConsumerPolicy)) return false; if (autoCreateJmsQueues == null) { if (other.autoCreateJmsQueues != null) return false; } else if (!autoCreateJmsQueues.equals(other.autoCreateJmsQueues)) return false; if (autoDeleteJmsQueues == null) { if (other.autoDeleteJmsQueues != null) return false; } else if (!autoDeleteJmsQueues.equals(other.autoDeleteJmsQueues)) return false; if (autoCreateJmsTopics == null) { if (other.autoCreateJmsTopics != null) return false; } else if (!autoCreateJmsTopics.equals(other.autoCreateJmsTopics)) return false; if (autoDeleteJmsTopics == null) { if (other.autoDeleteJmsTopics != null) return false; } else if (!autoDeleteJmsTopics.equals(other.autoDeleteJmsTopics)) return false; if (autoCreateQueues == null) { if (other.autoCreateQueues != null) return false; } else if (!autoCreateQueues.equals(other.autoCreateQueues)) return false; if (autoDeleteQueues == null) { if (other.autoDeleteQueues != null) return false; } else if (!autoDeleteQueues.equals(other.autoDeleteQueues)) return false; if (autoCreateAddresses == null) { if (other.autoCreateAddresses != null) return false; } else if (!autoCreateAddresses.equals(other.autoCreateAddresses)) return false; if (autoDeleteAddresses == null) { if (other.autoDeleteAddresses != null) return false; } else if (!autoDeleteAddresses.equals(other.autoDeleteAddresses)) return false; if (managementBrowsePageSize == null) { if (other.managementBrowsePageSize != null) return false; } else if (!managementBrowsePageSize.equals(other.managementBrowsePageSize)) return false; if (queuePrefetch == null) { if (other.queuePrefetch != null) return false; } else if (!queuePrefetch.equals(other.queuePrefetch)) return false; if (maxSizeBytesRejectThreshold == null) { if (other.maxSizeBytesRejectThreshold != null) return false; } else if (!maxSizeBytesRejectThreshold.equals(other.maxSizeBytesRejectThreshold)) return false; if (defaultMaxConsumers == null) { if (other.defaultMaxConsumers != null) return false; } else if (!defaultMaxConsumers.equals(other.defaultMaxConsumers)) return false; if (defaultPurgeOnNoConsumers == null) { if (other.defaultPurgeOnNoConsumers != null) return false; } else if (!defaultPurgeOnNoConsumers.equals(other.defaultPurgeOnNoConsumers)) return false; if (defaultQueueRoutingType == null) { if (other.defaultQueueRoutingType != null) return false; } else if (!defaultQueueRoutingType.equals(other.defaultQueueRoutingType)) return false; if (defaultAddressRoutingType == null) { if (other.defaultAddressRoutingType != null) return false; } else if (!defaultAddressRoutingType.equals(other.defaultAddressRoutingType)) return false; return true; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "AddressSettings [addressFullMessagePolicy=" + addressFullMessagePolicy + ", deadLetterAddress=" + deadLetterAddress + ", dropMessagesWhenFull=" + dropMessagesWhenFull + ", expiryAddress=" + expiryAddress + ", expiryDelay=" + expiryDelay + ", lastValueQueue=" + lastValueQueue + ", maxDeliveryAttempts=" + maxDeliveryAttempts + ", maxSizeBytes=" + maxSizeBytes + ", maxSizeBytesRejectThreshold=" + maxSizeBytesRejectThreshold + ", messageCounterHistoryDayLimit=" + messageCounterHistoryDayLimit + ", pageSizeBytes=" + pageSizeBytes + ", pageMaxCache=" + pageMaxCache + ", redeliveryDelay=" + redeliveryDelay + ", redeliveryMultiplier=" + redeliveryMultiplier + ", maxRedeliveryDelay=" + maxRedeliveryDelay + ", redistributionDelay=" + redistributionDelay + ", sendToDLAOnNoRoute=" + sendToDLAOnNoRoute + ", slowConsumerThreshold=" + slowConsumerThreshold + ", slowConsumerCheckPeriod=" + slowConsumerCheckPeriod + ", slowConsumerPolicy=" + slowConsumerPolicy + ", autoCreateJmsQueues=" + autoCreateJmsQueues + ", autoDeleteJmsQueues=" + autoDeleteJmsQueues + ", autoCreateJmsTopics=" + autoCreateJmsTopics + ", autoDeleteJmsTopics=" + autoDeleteJmsTopics + ", autoCreateQueues=" + autoCreateQueues + ", autoDeleteQueues=" + autoDeleteQueues + ", autoCreateAddresses=" + autoCreateAddresses + ", autoDeleteAddresses=" + autoDeleteAddresses + ", managementBrowsePageSize=" + managementBrowsePageSize + ", defaultMaxConsumers=" + defaultMaxConsumers + ", defaultPurgeOnNoConsumers=" + defaultPurgeOnNoConsumers + ", defaultQueueRoutingType=" + defaultQueueRoutingType + ", defaultAddressRoutingType=" + defaultAddressRoutingType + "]"; } }