/* * JBoss, Home of Professional Open Source Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors by * the @authors tag. See the copyright.txt 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.messaging.core.config.impl; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.jboss.messaging.core.config.Configuration; import org.jboss.messaging.core.config.TransportConfiguration; import org.jboss.messaging.core.server.JournalType; /** * @author <a href="mailto:ataylor@redhat.com>Andy Taylor</a> * @author <a href="mailto:tim.fox@jboss.com">Tim Fox</a> */ public class ConfigurationImpl implements Configuration { // Constants ------------------------------------------------------------------------------ private static final long serialVersionUID = 4077088945050267843L; public static final boolean DEFAULT_CLUSTERED = false; public static final boolean DEFAULT_BACKUP = false; public static final int DEFAULT_SCHEDULED_THREAD_POOL_MAX_SIZE = 30; public static final long DEFAULT_SECURITY_INVALIDATION_INTERVAL = 10000; public static final boolean DEFAULT_REQUIRE_DESTINATIONS = false; public static final boolean DEFAULT_SECURITY_ENABLED = true; public static final boolean DEFAULT_JMX_MANAGEMENT_ENABLED = true; public static final int DEFAULT_CALL_TIMEOUT = 30000; public static final int DEFAULT_PACKET_CONFIRMATION_BATCH_SIZE = 1000; public static final long DEFAULT_CONNECTION_SCAN_PERIOD = 1000; public static final String DEFAULT_BINDINGS_DIRECTORY = "data/bindings"; public static final boolean DEFAULT_CREATE_BINDINGS_DIR = true; public static final String DEFAULT_JOURNAL_DIR = "data/journal"; public static final String DEFAULT_PAGING_DIR = "data/paging"; public static final boolean DEFAULT_CREATE_JOURNAL_DIR = true; public static final JournalType DEFAULT_JOURNAL_TYPE = JournalType.ASYNCIO; public static final boolean DEFAULT_JOURNAL_SYNC_TRANSACTIONAL = true; public static final boolean DEFAULT_JOURNAL_SYNC_NON_TRANSACTIONAL = false; public static final int DEFAULT_JOURNAL_FILE_SIZE = 10485760; public static final int DEFAULT_JOURNAL_MIN_FILES = 10; public static final int DEFAULT_JOURNAL_MAX_AIO = 5000; public static final int DEFAULT_JOURNAL_REUSE_BUFFER_SIZE = -1; public static final boolean DEFAULT_WILDCARD_ROUTING_ENABLED = false; // Attributes ----------------------------------------------------------------------------- protected boolean clustered = DEFAULT_CLUSTERED; protected boolean backup = DEFAULT_BACKUP; protected int scheduledThreadPoolMaxSize = DEFAULT_SCHEDULED_THREAD_POOL_MAX_SIZE; protected long securityInvalidationInterval = DEFAULT_SECURITY_INVALIDATION_INTERVAL; protected boolean requireDestinations = DEFAULT_REQUIRE_DESTINATIONS; protected boolean securityEnabled = DEFAULT_SECURITY_ENABLED; protected boolean jmxManagementEnabled = DEFAULT_JMX_MANAGEMENT_ENABLED; protected long callTimeout = DEFAULT_CALL_TIMEOUT; protected int packetConfirmationBatchSize = DEFAULT_PACKET_CONFIRMATION_BATCH_SIZE; protected long connectionScanPeriod = DEFAULT_CONNECTION_SCAN_PERIOD; protected List<String> interceptorClassNames = new ArrayList<String>(); protected Set<TransportConfiguration> acceptorConfigs = new HashSet<TransportConfiguration>(); protected TransportConfiguration backupConnectorConfig; // Paging related attributes protected long pagingMaxGlobalSize = -1; protected String pagingDirectory = DEFAULT_PAGING_DIR; // Journal related attributes protected String bindingsDirectory = DEFAULT_BINDINGS_DIRECTORY; protected boolean createBindingsDir = DEFAULT_CREATE_BINDINGS_DIR; protected String journalDirectory = DEFAULT_JOURNAL_DIR; protected boolean createJournalDir = DEFAULT_CREATE_JOURNAL_DIR; public JournalType journalType = DEFAULT_JOURNAL_TYPE; protected boolean journalSyncTransactional = DEFAULT_JOURNAL_SYNC_TRANSACTIONAL; protected boolean journalSyncNonTransactional = DEFAULT_JOURNAL_SYNC_NON_TRANSACTIONAL; protected int journalFileSize = DEFAULT_JOURNAL_FILE_SIZE; protected int journalMinFiles = DEFAULT_JOURNAL_MIN_FILES; protected int journalMaxAIO = DEFAULT_JOURNAL_MAX_AIO; protected int journalBufferReuseSize = DEFAULT_JOURNAL_REUSE_BUFFER_SIZE; protected boolean wildcardRoutingEnabled = DEFAULT_WILDCARD_ROUTING_ENABLED; public boolean isClustered() { return clustered; } public void setClustered(final boolean clustered) { this.clustered = clustered; } public boolean isBackup() { return backup; } public void setBackup(final boolean backup) { this.backup = backup; } public int getScheduledThreadPoolMaxSize() { return scheduledThreadPoolMaxSize; } public void setScheduledThreadPoolMaxSize(final int maxSize) { scheduledThreadPoolMaxSize = maxSize; } public long getSecurityInvalidationInterval() { return securityInvalidationInterval; } public void setSecurityInvalidationInterval(final long interval) { securityInvalidationInterval = interval; } public boolean isRequireDestinations() { return requireDestinations; } public void setRequireDestinations(final boolean require) { requireDestinations = require; } public long getCallTimeout() { return callTimeout; } public void setCallTimeout(final long timeout) { callTimeout = timeout; } public int getPacketConfirmationBatchSize() { return packetConfirmationBatchSize; } public void setPacketConfirmationBatchSize(final int size) { packetConfirmationBatchSize = size; } public long getConnectionScanPeriod() { return connectionScanPeriod; } public void setConnectionScanPeriod(final long scanPeriod) { connectionScanPeriod = scanPeriod; } public List<String> getInterceptorClassNames() { return interceptorClassNames; } public void setInterceptorClassNames(final List<String> interceptors) { interceptorClassNames = interceptors; } public Set<TransportConfiguration> getAcceptorConfigurations() { return acceptorConfigs; } public void setAcceptorConfigurations(final Set<TransportConfiguration> infos) { acceptorConfigs = infos; } public TransportConfiguration getBackupConnectorConfiguration() { return backupConnectorConfig; } public void setBackupConnectorConfiguration(final TransportConfiguration config) { backupConnectorConfig = config; } public String getBindingsDirectory() { return bindingsDirectory; } public void setBindingsDirectory(final String dir) { bindingsDirectory = dir; } public String getJournalDirectory() { return journalDirectory; } public void setJournalDirectory(final String dir) { journalDirectory = dir; } public JournalType getJournalType() { return journalType; } public void setPagingDirectory(final String dir) { pagingDirectory = dir; } public String getPagingDirectory() { return pagingDirectory; } public void setJournalType(final JournalType type) { journalType = type; } public boolean isJournalSyncTransactional() { return journalSyncTransactional; } public void setJournalSyncTransactional(final boolean sync) { journalSyncTransactional = sync; } public boolean isJournalSyncNonTransactional() { return journalSyncNonTransactional; } public void setJournalSyncNonTransactional(final boolean sync) { journalSyncNonTransactional = sync; } public int getJournalFileSize() { return journalFileSize; } public void setJournalFileSize(final int size) { journalFileSize = size; } public int getJournalMaxAIO() { return journalMaxAIO; } public void setJournalMaxAIO(final int maxAIO) { journalMaxAIO = maxAIO; } public int getJournalMinFiles() { return journalMinFiles; } public void setJournalMinFiles(final int files) { journalMinFiles = files; } public boolean isCreateBindingsDir() { return createBindingsDir; } public void setCreateBindingsDir(final boolean create) { createBindingsDir = create; } public boolean isCreateJournalDir() { return createJournalDir; } public void setCreateJournalDir(final boolean create) { createJournalDir = create; } public boolean isWildcardRoutingEnabled() { return wildcardRoutingEnabled; } public boolean isSecurityEnabled() { return securityEnabled; } public void setSecurityEnabled(final boolean enabled) { securityEnabled = enabled; } public boolean isJMXManagementEnabled() { return jmxManagementEnabled; } public void setJMXManagementEnabled(final boolean enabled) { jmxManagementEnabled = enabled; } public void setJournalBufferReuseSize(final int reuseSize) { journalBufferReuseSize = reuseSize; } public int getJournalBufferReuseSize() { return journalBufferReuseSize; } public long getPagingMaxGlobalSizeBytes() { return pagingMaxGlobalSize; } public void setPagingMaxGlobalSizeBytes(final long maxGlobalSize) { pagingMaxGlobalSize = maxGlobalSize; } @Override public boolean equals(final Object other) { if (this == other) { return true; } if (other instanceof Configuration == false) { return false; } Configuration cother = (Configuration)other; return cother.isClustered() == isClustered() && cother.isCreateBindingsDir() == isCreateBindingsDir() && cother.isCreateJournalDir() == isCreateJournalDir() && cother.isJournalSyncNonTransactional() == isJournalSyncNonTransactional() && cother.isJournalSyncTransactional() == isJournalSyncTransactional() && cother.isRequireDestinations() == isRequireDestinations() && cother.isSecurityEnabled() == isSecurityEnabled() && cother.isWildcardRoutingEnabled() == isWildcardRoutingEnabled() && cother.getBindingsDirectory().equals(getBindingsDirectory()) && cother.getJournalDirectory().equals(getJournalDirectory()) && cother.getJournalFileSize() == getJournalFileSize() && cother.getJournalMaxAIO() == getJournalMaxAIO() && cother.getJournalMinFiles() == getJournalMinFiles() && cother.getJournalType() == getJournalType() && cother.getScheduledThreadPoolMaxSize() == getScheduledThreadPoolMaxSize() && cother.getSecurityInvalidationInterval() == getSecurityInvalidationInterval(); } }