/* * 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.config; import java.io.Serializable; import java.util.List; import org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration; import org.apache.activemq.artemis.api.core.client.ActiveMQClient; public final class BridgeConfiguration implements Serializable { private static final long serialVersionUID = -1057244274380572226L; private String name = null; private String queueName = null; private String forwardingAddress = null; private String filterString = null; private List<String> staticConnectors = null; private String discoveryGroupName = null; private boolean ha = false; private String transformerClassName = null; private long retryInterval = ActiveMQClient.DEFAULT_RETRY_INTERVAL; private double retryIntervalMultiplier = ActiveMQClient.DEFAULT_RETRY_INTERVAL_MULTIPLIER; private int initialConnectAttempts = ActiveMQDefaultConfiguration.getDefaultBridgeInitialConnectAttempts(); private int reconnectAttempts = ActiveMQDefaultConfiguration.getDefaultBridgeReconnectAttempts(); private int reconnectAttemptsOnSameNode = ActiveMQDefaultConfiguration.getDefaultBridgeConnectSameNode(); private boolean useDuplicateDetection = ActiveMQDefaultConfiguration.isDefaultBridgeDuplicateDetection(); private int confirmationWindowSize = ActiveMQClient.DEFAULT_CONFIRMATION_WINDOW_SIZE; // disable flow control private int producerWindowSize = ActiveMQDefaultConfiguration.getDefaultBridgeProducerWindowSize(); private long clientFailureCheckPeriod = ActiveMQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD; private String user = ActiveMQDefaultConfiguration.getDefaultClusterUser(); private String password = ActiveMQDefaultConfiguration.getDefaultClusterPassword(); private long connectionTTL = ActiveMQClient.DEFAULT_CONNECTION_TTL; private long maxRetryInterval = ActiveMQClient.DEFAULT_MAX_RETRY_INTERVAL; private int minLargeMessageSize = ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE; // At this point this is only changed on testcases // The bridge shouldn't be sending blocking anyways private long callTimeout = ActiveMQClient.DEFAULT_CALL_TIMEOUT; public BridgeConfiguration() { } public String getName() { return name; } /** * @param name the name to set */ public BridgeConfiguration setName(final String name) { this.name = name; return this; } public String getQueueName() { return queueName; } /** * @param queueName the queueName to set */ public BridgeConfiguration setQueueName(final String queueName) { this.queueName = queueName; return this; } /** * @return the connectionTTL */ public long getConnectionTTL() { return connectionTTL; } public BridgeConfiguration setConnectionTTL(long connectionTTL) { this.connectionTTL = connectionTTL; return this; } /** * @return the maxRetryInterval */ public long getMaxRetryInterval() { return maxRetryInterval; } public BridgeConfiguration setMaxRetryInterval(long maxRetryInterval) { this.maxRetryInterval = maxRetryInterval; return this; } public String getForwardingAddress() { return forwardingAddress; } /** * @param forwardingAddress the forwardingAddress to set */ public BridgeConfiguration setForwardingAddress(final String forwardingAddress) { this.forwardingAddress = forwardingAddress; return this; } public String getFilterString() { return filterString; } /** * @param filterString the filterString to set */ public BridgeConfiguration setFilterString(final String filterString) { this.filterString = filterString; return this; } public String getTransformerClassName() { return transformerClassName; } /** * @param transformerClassName the transformerClassName to set */ public BridgeConfiguration setTransformerClassName(final String transformerClassName) { this.transformerClassName = transformerClassName; return this; } public List<String> getStaticConnectors() { return staticConnectors; } /** * @param staticConnectors the staticConnectors to set */ public BridgeConfiguration setStaticConnectors(final List<String> staticConnectors) { this.staticConnectors = staticConnectors; return this; } public String getDiscoveryGroupName() { return discoveryGroupName; } /** * @param discoveryGroupName the discoveryGroupName to set */ public BridgeConfiguration setDiscoveryGroupName(final String discoveryGroupName) { this.discoveryGroupName = discoveryGroupName; return this; } public boolean isHA() { return ha; } /** * @param ha is the bridge supporting HA? */ public BridgeConfiguration setHA(final boolean ha) { this.ha = ha; return this; } public long getRetryInterval() { return retryInterval; } /** * @param retryInterval the retryInterval to set */ public BridgeConfiguration setRetryInterval(final long retryInterval) { this.retryInterval = retryInterval; return this; } public double getRetryIntervalMultiplier() { return retryIntervalMultiplier; } /** * @param retryIntervalMultiplier the retryIntervalMultiplier to set */ public BridgeConfiguration setRetryIntervalMultiplier(final double retryIntervalMultiplier) { this.retryIntervalMultiplier = retryIntervalMultiplier; return this; } public int getInitialConnectAttempts() { return initialConnectAttempts; } /** * @param initialConnectAttempts the initialConnectAttempts to set */ public BridgeConfiguration setInitialConnectAttempts(final int initialConnectAttempts) { this.initialConnectAttempts = initialConnectAttempts; return this; } public int getReconnectAttempts() { return reconnectAttempts; } /** * @param reconnectAttempts the reconnectAttempts to set */ public BridgeConfiguration setReconnectAttempts(final int reconnectAttempts) { this.reconnectAttempts = reconnectAttempts; return this; } public boolean isUseDuplicateDetection() { return useDuplicateDetection; } /** * @param useDuplicateDetection the useDuplicateDetection to set */ public BridgeConfiguration setUseDuplicateDetection(final boolean useDuplicateDetection) { this.useDuplicateDetection = useDuplicateDetection; return this; } public int getConfirmationWindowSize() { return confirmationWindowSize; } /** * @param confirmationWindowSize the confirmationWindowSize to set */ public BridgeConfiguration setConfirmationWindowSize(final int confirmationWindowSize) { this.confirmationWindowSize = confirmationWindowSize; return this; } public int getProducerWindowSize() { return producerWindowSize; } /** * @param producerWindowSize the producerWindowSize to set */ public BridgeConfiguration setProducerWindowSize(final int producerWindowSize) { this.producerWindowSize = producerWindowSize; return this; } public long getClientFailureCheckPeriod() { return clientFailureCheckPeriod; } public BridgeConfiguration setClientFailureCheckPeriod(long clientFailureCheckPeriod) { this.clientFailureCheckPeriod = clientFailureCheckPeriod; return this; } /** * @return the minLargeMessageSize */ public int getMinLargeMessageSize() { return minLargeMessageSize; } public BridgeConfiguration setMinLargeMessageSize(int minLargeMessageSize) { this.minLargeMessageSize = minLargeMessageSize; return this; } public String getUser() { return user; } public BridgeConfiguration setUser(String user) { this.user = user; return this; } public String getPassword() { return password; } public BridgeConfiguration setPassword(String password) { this.password = password; return this; } /** * @return the callTimeout */ public long getCallTimeout() { return callTimeout; } public int getReconnectAttemptsOnSameNode() { return reconnectAttemptsOnSameNode; } public BridgeConfiguration setReconnectAttemptsOnSameNode(int reconnectAttemptsOnSameNode) { this.reconnectAttemptsOnSameNode = reconnectAttemptsOnSameNode; return this; } /** * At this point this is only changed on testcases * The bridge shouldn't be sending blocking anyways * * @param callTimeout the callTimeout to set */ public BridgeConfiguration setCallTimeout(long callTimeout) { this.callTimeout = callTimeout; return this; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (int) (callTimeout ^ (callTimeout >>> 32)); result = prime * result + (int) (clientFailureCheckPeriod ^ (clientFailureCheckPeriod >>> 32)); result = prime * result + confirmationWindowSize; result = prime * result + producerWindowSize; result = prime * result + (int) (connectionTTL ^ (connectionTTL >>> 32)); result = prime * result + ((discoveryGroupName == null) ? 0 : discoveryGroupName.hashCode()); result = prime * result + ((filterString == null) ? 0 : filterString.hashCode()); result = prime * result + ((forwardingAddress == null) ? 0 : forwardingAddress.hashCode()); result = prime * result + (ha ? 1231 : 1237); result = prime * result + (int) (maxRetryInterval ^ (maxRetryInterval >>> 32)); result = prime * result + minLargeMessageSize; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((password == null) ? 0 : password.hashCode()); result = prime * result + ((queueName == null) ? 0 : queueName.hashCode()); result = prime * result + initialConnectAttempts; result = prime * result + reconnectAttempts; result = prime * result + (int) (retryInterval ^ (retryInterval >>> 32)); long temp; temp = Double.doubleToLongBits(retryIntervalMultiplier); result = prime * result + (int) (temp ^ (temp >>> 32)); result = prime * result + ((staticConnectors == null) ? 0 : staticConnectors.hashCode()); result = prime * result + ((transformerClassName == null) ? 0 : transformerClassName.hashCode()); result = prime * result + (useDuplicateDetection ? 1231 : 1237); result = prime * result + ((user == null) ? 0 : user.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; BridgeConfiguration other = (BridgeConfiguration) obj; if (callTimeout != other.callTimeout) return false; if (clientFailureCheckPeriod != other.clientFailureCheckPeriod) return false; if (confirmationWindowSize != other.confirmationWindowSize) return false; if (producerWindowSize != other.producerWindowSize) return false; if (connectionTTL != other.connectionTTL) return false; if (discoveryGroupName == null) { if (other.discoveryGroupName != null) return false; } else if (!discoveryGroupName.equals(other.discoveryGroupName)) return false; if (filterString == null) { if (other.filterString != null) return false; } else if (!filterString.equals(other.filterString)) return false; if (forwardingAddress == null) { if (other.forwardingAddress != null) return false; } else if (!forwardingAddress.equals(other.forwardingAddress)) return false; if (ha != other.ha) return false; if (maxRetryInterval != other.maxRetryInterval) return false; if (minLargeMessageSize != other.minLargeMessageSize) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (password == null) { if (other.password != null) return false; } else if (!password.equals(other.password)) return false; if (queueName == null) { if (other.queueName != null) return false; } else if (!queueName.equals(other.queueName)) return false; if (initialConnectAttempts != other.initialConnectAttempts) return false; if (reconnectAttempts != other.reconnectAttempts) return false; if (retryInterval != other.retryInterval) return false; if (Double.doubleToLongBits(retryIntervalMultiplier) != Double.doubleToLongBits(other.retryIntervalMultiplier)) return false; if (staticConnectors == null) { if (other.staticConnectors != null) return false; } else if (!staticConnectors.equals(other.staticConnectors)) return false; if (transformerClassName == null) { if (other.transformerClassName != null) return false; } else if (!transformerClassName.equals(other.transformerClassName)) return false; if (useDuplicateDetection != other.useDuplicateDetection) return false; if (user == null) { if (other.user != null) return false; } else if (!user.equals(other.user)) return false; return true; } }