http://git-wip-us.apache.org/repos/asf/activemq-6/blob/177e6820/hornetq-server/src/main/java/org/hornetq/core/config/impl/ConfigurationImpl.java
----------------------------------------------------------------------
diff --git 
a/hornetq-server/src/main/java/org/hornetq/core/config/impl/ConfigurationImpl.java
 
b/hornetq-server/src/main/java/org/hornetq/core/config/impl/ConfigurationImpl.java
index 98c0d85..5d7f57c 100644
--- 
a/hornetq-server/src/main/java/org/hornetq/core/config/impl/ConfigurationImpl.java
+++ 
b/hornetq-server/src/main/java/org/hornetq/core/config/impl/ConfigurationImpl.java
@@ -29,16 +29,19 @@ import org.hornetq.api.core.BroadcastGroupConfiguration;
 import org.hornetq.api.core.DiscoveryGroupConfiguration;
 import org.hornetq.api.core.SimpleString;
 import org.hornetq.api.core.TransportConfiguration;
-import org.hornetq.core.config.BackupStrategy;
 import org.hornetq.core.config.BridgeConfiguration;
 import org.hornetq.core.config.ClusterConnectionConfiguration;
 import org.hornetq.core.config.Configuration;
 import org.hornetq.core.config.ConnectorServiceConfiguration;
 import org.hornetq.core.config.CoreQueueConfiguration;
 import org.hornetq.core.config.DivertConfiguration;
+import org.hornetq.core.config.HAPolicyConfiguration;
+import org.hornetq.core.config.ha.ReplicaPolicyConfiguration;
+import org.hornetq.core.config.ha.ReplicatedPolicyConfiguration;
+import org.hornetq.core.config.ha.SharedStoreMasterPolicyConfiguration;
+import org.hornetq.core.config.ha.SharedStoreSlavePolicyConfiguration;
 import org.hornetq.core.security.Role;
 import org.hornetq.core.server.JournalType;
-import org.hornetq.core.server.cluster.ha.HAPolicy;
 import org.hornetq.core.server.group.impl.GroupingHandlerConfiguration;
 import org.hornetq.core.settings.impl.AddressSettings;
 
@@ -200,21 +203,15 @@ public class ConfigurationImpl implements Configuration
 
    protected List<ConnectorServiceConfiguration> 
connectorServiceConfigurations = new ArrayList<ConnectorServiceConfiguration>();
 
-   private boolean checkForLiveServer = 
HornetQDefaultConfiguration.isDefaultCheckForLiveServer();
-
    private boolean maskPassword = 
HornetQDefaultConfiguration.isDefaultMaskPassword();
 
    private transient String passwordCodec;
 
    private boolean resolveProtocols = 
HornetQDefaultConfiguration.isDefaultResolveProtocols();
 
-   private Set<Configuration> backupServerConfigurations = new HashSet<>();
-
-   private BackupStrategy backupStrategy;
-
    private long journalLockAcquisitionTimeout = 
HornetQDefaultConfiguration.getDefaultJournalLockAcquisitionTimeout();
 
-   private HAPolicy haPolicy = new HAPolicy();
+   private HAPolicyConfiguration haPolicyConfiguration;
 
    // Public 
-------------------------------------------------------------------------
 
@@ -223,32 +220,15 @@ public class ConfigurationImpl implements Configuration
       return !getClusterConfigurations().isEmpty();
    }
 
-   @Deprecated
-   public boolean isAllowAutoFailBack()
-   {
-      return haPolicy.isAllowAutoFailBack();
-   }
-
-   @Deprecated
-   public void setAllowAutoFailBack(boolean allowAutoFailBack)
-   {
-      haPolicy.setAllowAutoFailBack(allowAutoFailBack);
-   }
-
-   @Deprecated
-   public boolean isBackup()
-   {
-      return haPolicy.isBackup();
-   }
-
    public boolean isFileDeploymentEnabled()
    {
       return fileDeploymentEnabled;
    }
 
-   public void setFileDeploymentEnabled(final boolean enable)
+   public ConfigurationImpl setFileDeploymentEnabled(final boolean enable)
    {
       fileDeploymentEnabled = enable;
+      return this;
    }
 
    public boolean isPersistenceEnabled()
@@ -256,9 +236,10 @@ public class ConfigurationImpl implements Configuration
       return persistenceEnabled;
    }
 
-   public void setPersistenceEnabled(final boolean enable)
+   public ConfigurationImpl setPersistenceEnabled(final boolean enable)
    {
       persistenceEnabled = enable;
+      return this;
    }
 
    public long getFileDeployerScanPeriod()
@@ -266,9 +247,10 @@ public class ConfigurationImpl implements Configuration
       return fileDeploymentScanPeriod;
    }
 
-   public void setFileDeployerScanPeriod(final long period)
+   public ConfigurationImpl setFileDeployerScanPeriod(final long period)
    {
       fileDeploymentScanPeriod = period;
+      return this;
    }
 
    /**
@@ -279,27 +261,10 @@ public class ConfigurationImpl implements Configuration
       return persistDeliveryCountBeforeDelivery;
    }
 
-   public void setPersistDeliveryCountBeforeDelivery(final boolean 
persistDeliveryCountBeforeDelivery)
+   public ConfigurationImpl setPersistDeliveryCountBeforeDelivery(final 
boolean persistDeliveryCountBeforeDelivery)
    {
       this.persistDeliveryCountBeforeDelivery = 
persistDeliveryCountBeforeDelivery;
-   }
-
-   @Deprecated
-   public void setBackup(final boolean backup)
-   {
-      // this is done via the haPolicy now
-   }
-
-   @Deprecated
-   public boolean isSharedStore()
-   {
-      return haPolicy.isSharedStore();
-   }
-
-   @Deprecated
-   public void setSharedStore(final boolean sharedStore)
-   {
-      // this is done via the haPolicy now
+      return this;
    }
 
    public int getScheduledThreadPoolMaxSize()
@@ -307,9 +272,10 @@ public class ConfigurationImpl implements Configuration
       return scheduledThreadPoolMaxSize;
    }
 
-   public void setScheduledThreadPoolMaxSize(final int maxSize)
+   public ConfigurationImpl setScheduledThreadPoolMaxSize(final int maxSize)
    {
       scheduledThreadPoolMaxSize = maxSize;
+      return this;
    }
 
    public int getThreadPoolMaxSize()
@@ -317,9 +283,10 @@ public class ConfigurationImpl implements Configuration
       return threadPoolMaxSize;
    }
 
-   public void setThreadPoolMaxSize(final int maxSize)
+   public ConfigurationImpl setThreadPoolMaxSize(final int maxSize)
    {
       threadPoolMaxSize = maxSize;
+      return this;
    }
 
    public long getSecurityInvalidationInterval()
@@ -327,9 +294,10 @@ public class ConfigurationImpl implements Configuration
       return securityInvalidationInterval;
    }
 
-   public void setSecurityInvalidationInterval(final long interval)
+   public ConfigurationImpl setSecurityInvalidationInterval(final long 
interval)
    {
       securityInvalidationInterval = interval;
+      return this;
    }
 
    public long getConnectionTTLOverride()
@@ -337,9 +305,10 @@ public class ConfigurationImpl implements Configuration
       return connectionTTLOverride;
    }
 
-   public void setConnectionTTLOverride(final long ttl)
+   public ConfigurationImpl setConnectionTTLOverride(final long ttl)
    {
       connectionTTLOverride = ttl;
+      return this;
    }
 
    public boolean isAsyncConnectionExecutionEnabled()
@@ -347,9 +316,10 @@ public class ConfigurationImpl implements Configuration
       return asyncConnectionExecutionEnabled;
    }
 
-   public void setEnabledAsyncConnectionExecution(final boolean enabled)
+   public ConfigurationImpl setEnabledAsyncConnectionExecution(final boolean 
enabled)
    {
       asyncConnectionExecutionEnabled = enabled;
+      return this;
    }
 
    @Deprecated
@@ -361,9 +331,10 @@ public class ConfigurationImpl implements Configuration
 
    @Deprecated
    @Override
-   public void setInterceptorClassNames(final List<String> interceptors)
+   public ConfigurationImpl setInterceptorClassNames(final List<String> 
interceptors)
    {
       setIncomingInterceptorClassNames(interceptors);
+      return this;
    }
 
    public List<String> getIncomingInterceptorClassNames()
@@ -371,9 +342,10 @@ public class ConfigurationImpl implements Configuration
       return incomingInterceptorClassNames;
    }
 
-   public void setIncomingInterceptorClassNames(final List<String> 
interceptors)
+   public ConfigurationImpl setIncomingInterceptorClassNames(final 
List<String> interceptors)
    {
       incomingInterceptorClassNames = interceptors;
+      return this;
    }
 
    public List<String> getOutgoingInterceptorClassNames()
@@ -381,9 +353,10 @@ public class ConfigurationImpl implements Configuration
       return outgoingInterceptorClassNames;
    }
 
-   public void setOutgoingInterceptorClassNames(final List<String> 
interceptors)
+   public ConfigurationImpl setOutgoingInterceptorClassNames(final 
List<String> interceptors)
    {
       outgoingInterceptorClassNames = interceptors;
+      return this;
    }
 
    public Set<TransportConfiguration> getAcceptorConfigurations()
@@ -391,9 +364,22 @@ public class ConfigurationImpl implements Configuration
       return acceptorConfigs;
    }
 
-   public void setAcceptorConfigurations(final Set<TransportConfiguration> 
infos)
+   public ConfigurationImpl setAcceptorConfigurations(final 
Set<TransportConfiguration> infos)
    {
       acceptorConfigs = infos;
+      return this;
+   }
+
+   public ConfigurationImpl addAcceptorConfiguration(final 
TransportConfiguration infos)
+   {
+      acceptorConfigs.add(infos);
+      return this;
+   }
+
+   public ConfigurationImpl clearAcceptorConfigurations()
+   {
+      acceptorConfigs.clear();
+      return this;
    }
 
    public Map<String, TransportConfiguration> getConnectorConfigurations()
@@ -401,9 +387,16 @@ public class ConfigurationImpl implements Configuration
       return connectorConfigs;
    }
 
-   public void setConnectorConfigurations(final Map<String, 
TransportConfiguration> infos)
+   public ConfigurationImpl setConnectorConfigurations(final Map<String, 
TransportConfiguration> infos)
    {
       connectorConfigs = infos;
+      return this;
+   }
+
+   public ConfigurationImpl addConnectorConfiguration(final String key, final 
TransportConfiguration info)
+   {
+      connectorConfigs.put(key, info);
+      return this;
    }
 
    public GroupingHandlerConfiguration getGroupingHandlerConfiguration()
@@ -411,9 +404,10 @@ public class ConfigurationImpl implements Configuration
       return groupingHandlerConfiguration;
    }
 
-   public void setGroupingHandlerConfiguration(final 
GroupingHandlerConfiguration groupingHandlerConfiguration)
+   public ConfigurationImpl setGroupingHandlerConfiguration(final 
GroupingHandlerConfiguration groupingHandlerConfiguration)
    {
       this.groupingHandlerConfiguration = groupingHandlerConfiguration;
+      return this;
    }
 
    public List<BridgeConfiguration> getBridgeConfigurations()
@@ -421,9 +415,16 @@ public class ConfigurationImpl implements Configuration
       return bridgeConfigurations;
    }
 
-   public void setBridgeConfigurations(final List<BridgeConfiguration> configs)
+   public ConfigurationImpl setBridgeConfigurations(final 
List<BridgeConfiguration> configs)
    {
       bridgeConfigurations = configs;
+      return this;
+   }
+
+   public ConfigurationImpl addBridgeConfiguration(final BridgeConfiguration 
config)
+   {
+      bridgeConfigurations.add(config);
+      return this;
    }
 
    public List<BroadcastGroupConfiguration> getBroadcastGroupConfigurations()
@@ -431,9 +432,16 @@ public class ConfigurationImpl implements Configuration
       return broadcastGroupConfigurations;
    }
 
-   public void setBroadcastGroupConfigurations(final 
List<BroadcastGroupConfiguration> configs)
+   public ConfigurationImpl setBroadcastGroupConfigurations(final 
List<BroadcastGroupConfiguration> configs)
    {
       broadcastGroupConfigurations = configs;
+      return this;
+   }
+
+   public ConfigurationImpl addBroadcastGroupConfiguration(final 
BroadcastGroupConfiguration config)
+   {
+      broadcastGroupConfigurations.add(config);
+      return this;
    }
 
    public List<ClusterConnectionConfiguration> getClusterConfigurations()
@@ -441,9 +449,22 @@ public class ConfigurationImpl implements Configuration
       return clusterConfigurations;
    }
 
-   public void setClusterConfigurations(final 
List<ClusterConnectionConfiguration> configs)
+   public ConfigurationImpl setClusterConfigurations(final 
List<ClusterConnectionConfiguration> configs)
    {
       clusterConfigurations = configs;
+      return this;
+   }
+
+   public ConfigurationImpl addClusterConfiguration(final 
ClusterConnectionConfiguration config)
+   {
+      clusterConfigurations.add(config);
+      return this;
+   }
+
+   public ConfigurationImpl clearClusterConfigurations()
+   {
+      clusterConfigurations.clear();
+      return this;
    }
 
    public List<DivertConfiguration> getDivertConfigurations()
@@ -451,9 +472,16 @@ public class ConfigurationImpl implements Configuration
       return divertConfigurations;
    }
 
-   public void setDivertConfigurations(final List<DivertConfiguration> configs)
+   public ConfigurationImpl setDivertConfigurations(final 
List<DivertConfiguration> configs)
    {
       divertConfigurations = configs;
+      return this;
+   }
+
+   public ConfigurationImpl addDivertConfiguration(final DivertConfiguration 
config)
+   {
+      divertConfigurations.add(config);
+      return this;
    }
 
    public List<CoreQueueConfiguration> getQueueConfigurations()
@@ -461,9 +489,16 @@ public class ConfigurationImpl implements Configuration
       return queueConfigurations;
    }
 
-   public void setQueueConfigurations(final List<CoreQueueConfiguration> 
configs)
+   public ConfigurationImpl setQueueConfigurations(final 
List<CoreQueueConfiguration> configs)
    {
       queueConfigurations = configs;
+      return this;
+   }
+
+   public ConfigurationImpl addQueueConfiguration(final CoreQueueConfiguration 
config)
+   {
+      queueConfigurations.add(config);
+      return this;
    }
 
    public Map<String, DiscoveryGroupConfiguration> 
getDiscoveryGroupConfigurations()
@@ -471,9 +506,16 @@ public class ConfigurationImpl implements Configuration
       return discoveryGroupConfigurations;
    }
 
-   public void setDiscoveryGroupConfigurations(final Map<String, 
DiscoveryGroupConfiguration> discoveryGroupConfigurations)
+   public ConfigurationImpl setDiscoveryGroupConfigurations(final Map<String, 
DiscoveryGroupConfiguration> discoveryGroupConfigurations)
    {
       this.discoveryGroupConfigurations = discoveryGroupConfigurations;
+      return this;
+   }
+
+   public ConfigurationImpl addDiscoveryGroupConfiguration(final String key, 
DiscoveryGroupConfiguration discoveryGroupConfiguration)
+   {
+      this.discoveryGroupConfigurations.put(key, discoveryGroupConfiguration);
+      return this;
    }
 
    public int getIDCacheSize()
@@ -481,9 +523,10 @@ public class ConfigurationImpl implements Configuration
       return idCacheSize;
    }
 
-   public void setIDCacheSize(final int idCacheSize)
+   public ConfigurationImpl setIDCacheSize(final int idCacheSize)
    {
       this.idCacheSize = idCacheSize;
+      return this;
    }
 
    public boolean isPersistIDCache()
@@ -491,9 +534,10 @@ public class ConfigurationImpl implements Configuration
       return persistIDCache;
    }
 
-   public void setPersistIDCache(final boolean persist)
+   public ConfigurationImpl setPersistIDCache(final boolean persist)
    {
       persistIDCache = persist;
+      return this;
    }
 
    public String getBindingsDirectory()
@@ -501,9 +545,10 @@ public class ConfigurationImpl implements Configuration
       return bindingsDirectory;
    }
 
-   public void setBindingsDirectory(final String dir)
+   public ConfigurationImpl setBindingsDirectory(final String dir)
    {
       bindingsDirectory = dir;
+      return this;
    }
 
 
@@ -514,9 +559,10 @@ public class ConfigurationImpl implements Configuration
    }
 
    @Override
-   public void setPageMaxConcurrentIO(int maxIO)
+   public ConfigurationImpl setPageMaxConcurrentIO(int maxIO)
    {
       this.maxConcurrentPageIO = maxIO;
+      return this;
    }
 
 
@@ -525,9 +571,10 @@ public class ConfigurationImpl implements Configuration
       return journalDirectory;
    }
 
-   public void setJournalDirectory(final String dir)
+   public ConfigurationImpl setJournalDirectory(final String dir)
    {
       journalDirectory = dir;
+      return this;
    }
 
    public JournalType getJournalType()
@@ -535,9 +582,10 @@ public class ConfigurationImpl implements Configuration
       return journalType;
    }
 
-   public void setPagingDirectory(final String dir)
+   public ConfigurationImpl setPagingDirectory(final String dir)
    {
       pagingDirectory = dir;
+      return this;
    }
 
    public String getPagingDirectory()
@@ -545,9 +593,10 @@ public class ConfigurationImpl implements Configuration
       return pagingDirectory;
    }
 
-   public void setJournalType(final JournalType type)
+   public ConfigurationImpl setJournalType(final JournalType type)
    {
       journalType = type;
+      return this;
    }
 
    public boolean isJournalSyncTransactional()
@@ -555,9 +604,10 @@ public class ConfigurationImpl implements Configuration
       return journalSyncTransactional;
    }
 
-   public void setJournalSyncTransactional(final boolean sync)
+   public ConfigurationImpl setJournalSyncTransactional(final boolean sync)
    {
       journalSyncTransactional = sync;
+      return this;
    }
 
    public boolean isJournalSyncNonTransactional()
@@ -565,9 +615,10 @@ public class ConfigurationImpl implements Configuration
       return journalSyncNonTransactional;
    }
 
-   public void setJournalSyncNonTransactional(final boolean sync)
+   public ConfigurationImpl setJournalSyncNonTransactional(final boolean sync)
    {
       journalSyncNonTransactional = sync;
+      return this;
    }
 
    public int getJournalFileSize()
@@ -575,9 +626,10 @@ public class ConfigurationImpl implements Configuration
       return journalFileSize;
    }
 
-   public void setJournalFileSize(final int size)
+   public ConfigurationImpl setJournalFileSize(final int size)
    {
       journalFileSize = size;
+      return this;
    }
 
    public int getJournalMinFiles()
@@ -585,9 +637,10 @@ public class ConfigurationImpl implements Configuration
       return journalMinFiles;
    }
 
-   public void setJournalMinFiles(final int files)
+   public ConfigurationImpl setJournalMinFiles(final int files)
    {
       journalMinFiles = files;
+      return this;
    }
 
    public boolean isLogJournalWriteRate()
@@ -595,9 +648,10 @@ public class ConfigurationImpl implements Configuration
       return logJournalWriteRate;
    }
 
-   public void setLogJournalWriteRate(final boolean logJournalWriteRate)
+   public ConfigurationImpl setLogJournalWriteRate(final boolean 
logJournalWriteRate)
    {
       this.logJournalWriteRate = logJournalWriteRate;
+      return this;
    }
 
    public int getJournalPerfBlastPages()
@@ -605,9 +659,10 @@ public class ConfigurationImpl implements Configuration
       return journalPerfBlastPages;
    }
 
-   public void setJournalPerfBlastPages(final int journalPerfBlastPages)
+   public ConfigurationImpl setJournalPerfBlastPages(final int 
journalPerfBlastPages)
    {
       this.journalPerfBlastPages = journalPerfBlastPages;
+      return this;
    }
 
    public boolean isRunSyncSpeedTest()
@@ -615,9 +670,10 @@ public class ConfigurationImpl implements Configuration
       return runSyncSpeedTest;
    }
 
-   public void setRunSyncSpeedTest(final boolean run)
+   public ConfigurationImpl setRunSyncSpeedTest(final boolean run)
    {
       runSyncSpeedTest = run;
+      return this;
    }
 
    public boolean isCreateBindingsDir()
@@ -625,9 +681,10 @@ public class ConfigurationImpl implements Configuration
       return createBindingsDir;
    }
 
-   public void setCreateBindingsDir(final boolean create)
+   public ConfigurationImpl setCreateBindingsDir(final boolean create)
    {
       createBindingsDir = create;
+      return this;
    }
 
    public boolean isCreateJournalDir()
@@ -635,9 +692,10 @@ public class ConfigurationImpl implements Configuration
       return createJournalDir;
    }
 
-   public void setCreateJournalDir(final boolean create)
+   public ConfigurationImpl setCreateJournalDir(final boolean create)
    {
       createJournalDir = create;
+      return this;
    }
 
    public boolean isWildcardRoutingEnabled()
@@ -645,9 +703,10 @@ public class ConfigurationImpl implements Configuration
       return wildcardRoutingEnabled;
    }
 
-   public void setWildcardRoutingEnabled(final boolean enabled)
+   public ConfigurationImpl setWildcardRoutingEnabled(final boolean enabled)
    {
       wildcardRoutingEnabled = enabled;
+      return this;
    }
 
    public long getTransactionTimeout()
@@ -655,9 +714,10 @@ public class ConfigurationImpl implements Configuration
       return transactionTimeout;
    }
 
-   public void setTransactionTimeout(final long timeout)
+   public ConfigurationImpl setTransactionTimeout(final long timeout)
    {
       transactionTimeout = timeout;
+      return this;
    }
 
    public long getTransactionTimeoutScanPeriod()
@@ -665,9 +725,10 @@ public class ConfigurationImpl implements Configuration
       return transactionTimeoutScanPeriod;
    }
 
-   public void setTransactionTimeoutScanPeriod(final long period)
+   public ConfigurationImpl setTransactionTimeoutScanPeriod(final long period)
    {
       transactionTimeoutScanPeriod = period;
+      return this;
    }
 
    public long getMessageExpiryScanPeriod()
@@ -675,9 +736,10 @@ public class ConfigurationImpl implements Configuration
       return messageExpiryScanPeriod;
    }
 
-   public void setMessageExpiryScanPeriod(final long messageExpiryScanPeriod)
+   public ConfigurationImpl setMessageExpiryScanPeriod(final long 
messageExpiryScanPeriod)
    {
       this.messageExpiryScanPeriod = messageExpiryScanPeriod;
+      return this;
    }
 
    public int getMessageExpiryThreadPriority()
@@ -685,9 +747,10 @@ public class ConfigurationImpl implements Configuration
       return messageExpiryThreadPriority;
    }
 
-   public void setMessageExpiryThreadPriority(final int 
messageExpiryThreadPriority)
+   public ConfigurationImpl setMessageExpiryThreadPriority(final int 
messageExpiryThreadPriority)
    {
       this.messageExpiryThreadPriority = messageExpiryThreadPriority;
+      return this;
    }
 
    public boolean isSecurityEnabled()
@@ -695,9 +758,10 @@ public class ConfigurationImpl implements Configuration
       return securityEnabled;
    }
 
-   public void setSecurityEnabled(final boolean enabled)
+   public ConfigurationImpl setSecurityEnabled(final boolean enabled)
    {
       securityEnabled = enabled;
+      return this;
    }
 
    public boolean isJMXManagementEnabled()
@@ -705,9 +769,10 @@ public class ConfigurationImpl implements Configuration
       return jmxManagementEnabled;
    }
 
-   public void setJMXManagementEnabled(final boolean enabled)
+   public ConfigurationImpl setJMXManagementEnabled(final boolean enabled)
    {
       jmxManagementEnabled = enabled;
+      return this;
    }
 
    public String getJMXDomain()
@@ -715,9 +780,10 @@ public class ConfigurationImpl implements Configuration
       return jmxDomain;
    }
 
-   public void setJMXDomain(final String domain)
+   public ConfigurationImpl setJMXDomain(final String domain)
    {
       jmxDomain = domain;
+      return this;
    }
 
    public String getLargeMessagesDirectory()
@@ -725,9 +791,10 @@ public class ConfigurationImpl implements Configuration
       return largeMessagesDirectory;
    }
 
-   public void setLargeMessagesDirectory(final String directory)
+   public ConfigurationImpl setLargeMessagesDirectory(final String directory)
    {
       largeMessagesDirectory = directory;
+      return this;
    }
 
    public boolean isMessageCounterEnabled()
@@ -735,9 +802,10 @@ public class ConfigurationImpl implements Configuration
       return messageCounterEnabled;
    }
 
-   public void setMessageCounterEnabled(final boolean enabled)
+   public ConfigurationImpl setMessageCounterEnabled(final boolean enabled)
    {
       messageCounterEnabled = enabled;
+      return this;
    }
 
    public long getMessageCounterSamplePeriod()
@@ -745,9 +813,10 @@ public class ConfigurationImpl implements Configuration
       return messageCounterSamplePeriod;
    }
 
-   public void setMessageCounterSamplePeriod(final long period)
+   public ConfigurationImpl setMessageCounterSamplePeriod(final long period)
    {
       messageCounterSamplePeriod = period;
+      return this;
    }
 
    public int getMessageCounterMaxDayHistory()
@@ -755,9 +824,10 @@ public class ConfigurationImpl implements Configuration
       return messageCounterMaxDayHistory;
    }
 
-   public void setMessageCounterMaxDayHistory(final int maxDayHistory)
+   public ConfigurationImpl setMessageCounterMaxDayHistory(final int 
maxDayHistory)
    {
       messageCounterMaxDayHistory = maxDayHistory;
+      return this;
    }
 
    public SimpleString getManagementAddress()
@@ -765,9 +835,10 @@ public class ConfigurationImpl implements Configuration
       return managementAddress;
    }
 
-   public void setManagementAddress(final SimpleString address)
+   public ConfigurationImpl setManagementAddress(final SimpleString address)
    {
       managementAddress = address;
+      return this;
    }
 
    public SimpleString getManagementNotificationAddress()
@@ -775,9 +846,10 @@ public class ConfigurationImpl implements Configuration
       return managementNotificationAddress;
    }
 
-   public void setManagementNotificationAddress(final SimpleString address)
+   public ConfigurationImpl setManagementNotificationAddress(final 
SimpleString address)
    {
       managementNotificationAddress = address;
+      return this;
    }
 
    public String getClusterUser()
@@ -785,9 +857,10 @@ public class ConfigurationImpl implements Configuration
       return clusterUser;
    }
 
-   public void setClusterUser(final String user)
+   public ConfigurationImpl setClusterUser(final String user)
    {
       clusterUser = user;
+      return this;
    }
 
    public String getClusterPassword()
@@ -800,14 +873,16 @@ public class ConfigurationImpl implements Configuration
       return failoverOnServerShutdown;
    }
 
-   public void setFailoverOnServerShutdown(boolean failoverOnServerShutdown)
+   public ConfigurationImpl setFailoverOnServerShutdown(boolean 
failoverOnServerShutdown)
    {
       this.failoverOnServerShutdown = failoverOnServerShutdown;
+      return this;
    }
 
-   public void setClusterPassword(final String theclusterPassword)
+   public ConfigurationImpl setClusterPassword(final String theclusterPassword)
    {
       clusterPassword = theclusterPassword;
+      return this;
    }
 
    public int getJournalCompactMinFiles()
@@ -820,14 +895,16 @@ public class ConfigurationImpl implements Configuration
       return journalCompactPercentage;
    }
 
-   public void setJournalCompactMinFiles(final int minFiles)
+   public ConfigurationImpl setJournalCompactMinFiles(final int minFiles)
    {
       journalCompactMinFiles = minFiles;
+      return this;
    }
 
-   public void setJournalCompactPercentage(final int percentage)
+   public ConfigurationImpl setJournalCompactPercentage(final int percentage)
    {
       journalCompactPercentage = percentage;
+      return this;
    }
 
    public long getServerDumpInterval()
@@ -835,9 +912,10 @@ public class ConfigurationImpl implements Configuration
       return serverDumpInterval;
    }
 
-   public void setServerDumpInterval(final long intervalInMilliseconds)
+   public ConfigurationImpl setServerDumpInterval(final long 
intervalInMilliseconds)
    {
       serverDumpInterval = intervalInMilliseconds;
+      return this;
    }
 
    public int getMemoryWarningThreshold()
@@ -845,9 +923,10 @@ public class ConfigurationImpl implements Configuration
       return memoryWarningThreshold;
    }
 
-   public void setMemoryWarningThreshold(final int memoryWarningThreshold)
+   public ConfigurationImpl setMemoryWarningThreshold(final int 
memoryWarningThreshold)
    {
       this.memoryWarningThreshold = memoryWarningThreshold;
+      return this;
    }
 
    public long getMemoryMeasureInterval()
@@ -855,9 +934,10 @@ public class ConfigurationImpl implements Configuration
       return memoryMeasureInterval;
    }
 
-   public void setMemoryMeasureInterval(final long memoryMeasureInterval)
+   public ConfigurationImpl setMemoryMeasureInterval(final long 
memoryMeasureInterval)
    {
       this.memoryMeasureInterval = memoryMeasureInterval;
+      return this;
    }
 
    public int getJournalMaxIO_AIO()
@@ -865,9 +945,10 @@ public class ConfigurationImpl implements Configuration
       return journalMaxIO_AIO;
    }
 
-   public void setJournalMaxIO_AIO(final int journalMaxIO)
+   public ConfigurationImpl setJournalMaxIO_AIO(final int journalMaxIO)
    {
       journalMaxIO_AIO = journalMaxIO;
+      return this;
    }
 
    public int getJournalBufferTimeout_AIO()
@@ -875,9 +956,10 @@ public class ConfigurationImpl implements Configuration
       return journalBufferTimeout_AIO;
    }
 
-   public void setJournalBufferTimeout_AIO(final int journalBufferTimeout)
+   public ConfigurationImpl setJournalBufferTimeout_AIO(final int 
journalBufferTimeout)
    {
       journalBufferTimeout_AIO = journalBufferTimeout;
+      return this;
    }
 
    public int getJournalBufferSize_AIO()
@@ -885,9 +967,10 @@ public class ConfigurationImpl implements Configuration
       return journalBufferSize_AIO;
    }
 
-   public void setJournalBufferSize_AIO(final int journalBufferSize)
+   public ConfigurationImpl setJournalBufferSize_AIO(final int 
journalBufferSize)
    {
       journalBufferSize_AIO = journalBufferSize;
+      return this;
    }
 
    public int getJournalMaxIO_NIO()
@@ -895,9 +978,10 @@ public class ConfigurationImpl implements Configuration
       return journalMaxIO_NIO;
    }
 
-   public void setJournalMaxIO_NIO(final int journalMaxIO)
+   public ConfigurationImpl setJournalMaxIO_NIO(final int journalMaxIO)
    {
       journalMaxIO_NIO = journalMaxIO;
+      return this;
    }
 
    public int getJournalBufferTimeout_NIO()
@@ -905,9 +989,10 @@ public class ConfigurationImpl implements Configuration
       return journalBufferTimeout_NIO;
    }
 
-   public void setJournalBufferTimeout_NIO(final int journalBufferTimeout)
+   public ConfigurationImpl setJournalBufferTimeout_NIO(final int 
journalBufferTimeout)
    {
       journalBufferTimeout_NIO = journalBufferTimeout;
+      return this;
    }
 
    public int getJournalBufferSize_NIO()
@@ -915,9 +1000,10 @@ public class ConfigurationImpl implements Configuration
       return journalBufferSize_NIO;
    }
 
-   public void setJournalBufferSize_NIO(final int journalBufferSize)
+   public ConfigurationImpl setJournalBufferSize_NIO(final int 
journalBufferSize)
    {
       journalBufferSize_NIO = journalBufferSize;
+      return this;
    }
 
    @Override
@@ -927,9 +1013,17 @@ public class ConfigurationImpl implements Configuration
    }
 
    @Override
-   public void setAddressesSettings(final Map<String, AddressSettings> 
addressesSettings)
+   public ConfigurationImpl setAddressesSettings(final Map<String, 
AddressSettings> addressesSettings)
    {
       this.addressesSettings = addressesSettings;
+      return this;
+   }
+
+   @Override
+   public ConfigurationImpl addAddressesSetting(String key, AddressSettings 
addressesSetting)
+   {
+      this.addressesSettings.put(key, addressesSetting);
+      return this;
    }
 
    @Override
@@ -939,9 +1033,10 @@ public class ConfigurationImpl implements Configuration
    }
 
    @Override
-   public void setSecurityRoles(final Map<String, Set<Role>> securitySettings)
+   public ConfigurationImpl setSecurityRoles(final Map<String, Set<Role>> 
securitySettings)
    {
       this.securitySettings = securitySettings;
+      return this;
    }
 
    public List<ConnectorServiceConfiguration> 
getConnectorServiceConfigurations()
@@ -949,31 +1044,73 @@ public class ConfigurationImpl implements Configuration
       return this.connectorServiceConfigurations;
    }
 
-   @Deprecated
-   public long getFailbackDelay()
+   public boolean isCheckForLiveServer()
    {
-      return haPolicy.getFailbackDelay();
+      if (haPolicyConfiguration instanceof ReplicaPolicyConfiguration)
+      {
+         return 
((ReplicatedPolicyConfiguration)haPolicyConfiguration).isCheckForLiveServer();
+      }
+      else
+      {
+         return false;
+      }
    }
 
-   @Deprecated
-   public void setFailbackDelay(long failbackDelay)
+   public ConfigurationImpl setCheckForLiveServer(boolean checkForLiveServer)
    {
-      this.haPolicy.setFailbackDelay(failbackDelay);
+      if (haPolicyConfiguration instanceof ReplicaPolicyConfiguration)
+      {
+         
((ReplicatedPolicyConfiguration)haPolicyConfiguration).setCheckForLiveServer(checkForLiveServer);
+      }
+
+      return this;
    }
 
-   public boolean isCheckForLiveServer()
+   @Override
+   public String toString()
    {
-      return checkForLiveServer;
+      StringBuilder sb = new StringBuilder("HornetQ Configuration (");
+      sb.append("clustered=").append(isClustered()).append(",");
+      sb.append("journalDirectory=").append(journalDirectory).append(",");
+      sb.append("bindingsDirectory=").append(bindingsDirectory).append(",");
+      
sb.append("largeMessagesDirectory=").append(largeMessagesDirectory).append(",");
+      sb.append("pagingDirectory=").append(pagingDirectory);
+      sb.append(")");
+      return sb.toString();
    }
 
-   public void setCheckForLiveServer(boolean checkForLiveServer)
+   public ConfigurationImpl setConnectorServiceConfigurations(final 
List<ConnectorServiceConfiguration> configs)
    {
-      this.checkForLiveServer = checkForLiveServer;
+      this.connectorServiceConfigurations = configs;
+      return this;
    }
 
-   public void setConnectorServiceConfigurations(final 
List<ConnectorServiceConfiguration> configs)
+   public ConfigurationImpl addConnectorServiceConfiguration(final 
ConnectorServiceConfiguration config)
    {
-      this.connectorServiceConfigurations = configs;
+      this.connectorServiceConfigurations.add(config);
+      return this;
+   }
+
+   public boolean isMaskPassword()
+   {
+      return maskPassword;
+   }
+
+   public ConfigurationImpl setMaskPassword(boolean maskPassword)
+   {
+      this.maskPassword = maskPassword;
+      return this;
+   }
+
+   public ConfigurationImpl setPasswordCodec(String codec)
+   {
+      passwordCodec = codec;
+      return this;
+   }
+
+   public String getPasswordCodec()
+   {
+      return passwordCodec;
    }
 
    @Override
@@ -983,103 +1120,210 @@ public class ConfigurationImpl implements Configuration
    }
 
    @Override
-   public void setName(String name)
+   public ConfigurationImpl setName(String name)
    {
       this.name = name;
+      return this;
    }
 
+
+   /*
+   * All these operations are now deprecated and may or my not work, best 
efforts is all we can do, an HA Policy needs to be used
+   * */
    @Deprecated
-   public String getBackupGroupName()
+   public ConfigurationImpl setBackup(final boolean backup)
    {
-      return haPolicy.getBackupGroupName();
+      return this;
    }
 
    @Deprecated
-   public void setBackupGroupName(String nodeGroupName)
+   public boolean isSharedStore()
    {
-      haPolicy.setBackupGroupName(nodeGroupName);
+      return haPolicyConfiguration instanceof 
SharedStoreMasterPolicyConfiguration || haPolicyConfiguration instanceof 
SharedStoreSlavePolicyConfiguration;
    }
 
-   @Override
-   public String toString()
+   @Deprecated
+   public ConfigurationImpl setSharedStore(final boolean sharedStore)
    {
-      StringBuilder sb = new StringBuilder("HornetQ Configuration (");
-      sb.append("clustered=").append(isClustered()).append(",");
-      
sb.append("ha-policy-type=").append(haPolicy.getPolicyType()).append(",");
-      sb.append("journalDirectory=").append(journalDirectory).append(",");
-      sb.append("bindingsDirectory=").append(bindingsDirectory).append(",");
-      
sb.append("largeMessagesDirectory=").append(largeMessagesDirectory).append(",");
-      sb.append("pagingDirectory=").append(pagingDirectory);
-      sb.append(")");
-      return sb.toString();
+      return this;
    }
 
-   public boolean isMaskPassword()
+   @Deprecated
+   public long getFailbackDelay()
    {
-      return maskPassword;
+      if (haPolicyConfiguration instanceof ReplicaPolicyConfiguration)
+      {
+         ReplicaPolicyConfiguration hapc = (ReplicaPolicyConfiguration) 
haPolicyConfiguration;
+         return hapc.getFailbackDelay();
+      }
+      else if (haPolicyConfiguration instanceof 
SharedStoreMasterPolicyConfiguration)
+      {
+         SharedStoreMasterPolicyConfiguration hapc = 
(SharedStoreMasterPolicyConfiguration) haPolicyConfiguration;
+         return hapc.getFailbackDelay();
+      }
+      else if (haPolicyConfiguration instanceof 
SharedStoreSlavePolicyConfiguration)
+      {
+         SharedStoreSlavePolicyConfiguration hapc = 
(SharedStoreSlavePolicyConfiguration) haPolicyConfiguration;
+         return hapc.getFailbackDelay();
+      }
+      return -1;
    }
 
-   public void setMaskPassword(boolean maskPassword)
+   @Deprecated
+   public ConfigurationImpl setFailbackDelay(long failbackDelay)
    {
-      this.maskPassword = maskPassword;
+      if (haPolicyConfiguration instanceof ReplicaPolicyConfiguration)
+      {
+         ReplicaPolicyConfiguration hapc = (ReplicaPolicyConfiguration) 
haPolicyConfiguration;
+         hapc.setFailbackDelay(failbackDelay);
+      }
+      else if (haPolicyConfiguration instanceof 
SharedStoreMasterPolicyConfiguration)
+      {
+         SharedStoreMasterPolicyConfiguration hapc = 
(SharedStoreMasterPolicyConfiguration) haPolicyConfiguration;
+         hapc.setFailbackDelay(failbackDelay);
+      }
+      else if (haPolicyConfiguration instanceof 
SharedStoreSlavePolicyConfiguration)
+      {
+         SharedStoreSlavePolicyConfiguration hapc = 
(SharedStoreSlavePolicyConfiguration) haPolicyConfiguration;
+         hapc.setFailbackDelay(failbackDelay);
+      }
+
+      return this;
    }
 
-   public void setPasswordCodec(String codec)
+   @Deprecated
+   public String getBackupGroupName()
    {
-      passwordCodec = codec;
+      if (haPolicyConfiguration instanceof ReplicaPolicyConfiguration)
+      {
+         ReplicaPolicyConfiguration hapc = (ReplicaPolicyConfiguration) 
haPolicyConfiguration;
+         return hapc.getGroupName();
+      }
+      else if (haPolicyConfiguration instanceof ReplicatedPolicyConfiguration)
+      {
+         ReplicatedPolicyConfiguration hapc = (ReplicatedPolicyConfiguration) 
haPolicyConfiguration;
+         return hapc.getGroupName();
+      }
+      return null;
    }
 
-   public String getPasswordCodec()
+   @Deprecated
+   public ConfigurationImpl setBackupGroupName(String nodeGroupName)
    {
-      return passwordCodec;
+      if (haPolicyConfiguration instanceof ReplicaPolicyConfiguration)
+      {
+         ReplicaPolicyConfiguration hapc = (ReplicaPolicyConfiguration) 
haPolicyConfiguration;
+         hapc.setGroupName(nodeGroupName);
+      }
+      else if (haPolicyConfiguration instanceof ReplicatedPolicyConfiguration)
+      {
+         ReplicatedPolicyConfiguration hapc = (ReplicatedPolicyConfiguration) 
haPolicyConfiguration;
+         hapc.setGroupName(nodeGroupName);
+      }
+      return this;
    }
 
    @Override
    @Deprecated
-   public void setReplicationClustername(String clusterName)
+   public ConfigurationImpl setReplicationClustername(String clusterName)
    {
-      this.haPolicy.setReplicationClustername(clusterName);
+      if (haPolicyConfiguration instanceof ReplicaPolicyConfiguration)
+      {
+         ReplicaPolicyConfiguration hapc = (ReplicaPolicyConfiguration) 
haPolicyConfiguration;
+         hapc.setClusterName(clusterName);
+      }
+      else if (haPolicyConfiguration instanceof ReplicatedPolicyConfiguration)
+      {
+         ReplicatedPolicyConfiguration hapc = (ReplicatedPolicyConfiguration) 
haPolicyConfiguration;
+         hapc.setClusterName(clusterName);
+      }
+      return this;
    }
 
    @Override
    @Deprecated
    public String getReplicationClustername()
    {
-      return haPolicy.getReplicationClustername();
+      if (haPolicyConfiguration instanceof ReplicaPolicyConfiguration)
+      {
+         ReplicaPolicyConfiguration hapc = (ReplicaPolicyConfiguration) 
haPolicyConfiguration;
+         return hapc.getClusterName();
+      }
+      else if (haPolicyConfiguration instanceof ReplicatedPolicyConfiguration)
+      {
+         ReplicatedPolicyConfiguration hapc = (ReplicatedPolicyConfiguration) 
haPolicyConfiguration;
+         return hapc.getClusterName();
+      }
+      return null;
    }
 
    @Override
    @Deprecated
-   public void setScaleDownClustername(String clusterName)
+   public ConfigurationImpl setMaxSavedReplicatedJournalSize(int 
maxSavedReplicatedJournalsSize)
    {
-      this.haPolicy.setScaleDownClustername(clusterName);
+      if (haPolicyConfiguration instanceof ReplicaPolicyConfiguration)
+      {
+         ReplicaPolicyConfiguration hapc = (ReplicaPolicyConfiguration) 
haPolicyConfiguration;
+         
hapc.setMaxSavedReplicatedJournalsSize(maxSavedReplicatedJournalsSize);
+      }
+
+      return this;
    }
 
    @Override
    @Deprecated
-   public String getScaleDownClustername()
+   public int getMaxSavedReplicatedJournalsSize()
    {
-      return haPolicy.getScaleDownClustername();
+      if (haPolicyConfiguration instanceof ReplicaPolicyConfiguration)
+      {
+         ReplicaPolicyConfiguration hapc = (ReplicaPolicyConfiguration) 
haPolicyConfiguration;
+         return hapc.getMaxSavedReplicatedJournalsSize();
+      }
+      return -1;
    }
 
-   @Override
    @Deprecated
-   public void setMaxSavedReplicatedJournalSize(int 
maxSavedReplicatedJournalsSize)
+   public boolean isAllowFailBack()
    {
-      
this.haPolicy.setMaxSavedReplicatedJournalSize(maxSavedReplicatedJournalsSize);
+      if (haPolicyConfiguration instanceof ReplicaPolicyConfiguration)
+      {
+         ReplicaPolicyConfiguration hapc = (ReplicaPolicyConfiguration) 
haPolicyConfiguration;
+         return hapc.isAllowFailBack();
+      }
+      else if (haPolicyConfiguration instanceof 
SharedStoreSlavePolicyConfiguration)
+      {
+         SharedStoreSlavePolicyConfiguration hapc = 
(SharedStoreSlavePolicyConfiguration) haPolicyConfiguration;
+         return hapc.isAllowFailBack();
+      }
+      return false;
    }
 
-   @Override
    @Deprecated
-   public int getMaxSavedReplicatedJournalsSize()
+   public void setAllowFailBack(boolean allowAutoFailBack)
    {
-      return haPolicy.getMaxSavedReplicatedJournalsSize();
+      if (haPolicyConfiguration instanceof ReplicaPolicyConfiguration)
+      {
+         ReplicaPolicyConfiguration hapc = (ReplicaPolicyConfiguration) 
haPolicyConfiguration;
+         hapc.setAllowFailBack(allowAutoFailBack);
+      }
+      else if (haPolicyConfiguration instanceof 
SharedStoreSlavePolicyConfiguration)
+      {
+         SharedStoreSlavePolicyConfiguration hapc = 
(SharedStoreSlavePolicyConfiguration) haPolicyConfiguration;
+         hapc.setAllowFailBack(allowAutoFailBack);
+      }
+   }
+
+   @Deprecated
+   public boolean isBackup()
+   {
+      return haPolicyConfiguration instanceof ReplicaPolicyConfiguration || 
haPolicyConfiguration instanceof SharedStoreSlavePolicyConfiguration;
    }
 
    @Override
-   public void setResolveProtocols(boolean resolveProtocols)
+   public ConfigurationImpl setResolveProtocols(boolean resolveProtocols)
    {
       this.resolveProtocols = resolveProtocols;
+      return this;
    }
 
    @Override
@@ -1095,13 +1339,10 @@ public class ConfigurationImpl implements Configuration
       int result = 1;
       result = prime * result + ((acceptorConfigs == null) ? 0 : 
acceptorConfigs.hashCode());
       result = prime * result + ((addressesSettings == null) ? 0 : 
addressesSettings.hashCode());
-      result = prime * result + (haPolicy.isAllowAutoFailBack() ? 1231 : 1237);
       result = prime * result + (asyncConnectionExecutionEnabled ? 1231 : 
1237);
-      result = prime * result + (haPolicy.isBackup() ? 1231 : 1237);
       result = prime * result + ((bindingsDirectory == null) ? 0 : 
bindingsDirectory.hashCode());
       result = prime * result + ((bridgeConfigurations == null) ? 0 : 
bridgeConfigurations.hashCode());
       result = prime * result + ((broadcastGroupConfigurations == null) ? 0 : 
broadcastGroupConfigurations.hashCode());
-      result = prime * result + (checkForLiveServer ? 1231 : 1237);
       result = prime * result + ((clusterConfigurations == null) ? 0 : 
clusterConfigurations.hashCode());
       result = prime * result + ((clusterPassword == null) ? 0 : 
clusterPassword.hashCode());
       result = prime * result + ((clusterUser == null) ? 0 : 
clusterUser.hashCode());
@@ -1114,7 +1355,6 @@ public class ConfigurationImpl implements Configuration
       result = prime * result + (createJournalDir ? 1231 : 1237);
       result = prime * result + ((discoveryGroupConfigurations == null) ? 0 : 
discoveryGroupConfigurations.hashCode());
       result = prime * result + ((divertConfigurations == null) ? 0 : 
divertConfigurations.hashCode());
-      result = prime * result + (int)(haPolicy.getFailbackDelay() ^ 
(haPolicy.getFailbackDelay() >>> 32));
       result = prime * result + (failoverOnServerShutdown ? 1231 : 1237);
       result = prime * result + (fileDeploymentEnabled ? 1231 : 1237);
       result = prime * result + (int)(fileDeploymentScanPeriod ^ 
(fileDeploymentScanPeriod >>> 32));
@@ -1156,7 +1396,6 @@ public class ConfigurationImpl implements Configuration
       result = prime * result + (int)(messageExpiryScanPeriod ^ 
(messageExpiryScanPeriod >>> 32));
       result = prime * result + messageExpiryThreadPriority;
       result = prime * result + ((name == null) ? 0 : name.hashCode());
-      result = prime * result + ((haPolicy.getBackupGroupName() == null) ? 0 : 
haPolicy.getBackupGroupName().hashCode());
       result =
                prime * result +
                         ((outgoingInterceptorClassNames == null) ? 0 : 
outgoingInterceptorClassNames.hashCode());
@@ -1165,15 +1404,12 @@ public class ConfigurationImpl implements Configuration
       result = prime * result + (persistIDCache ? 1231 : 1237);
       result = prime * result + (persistenceEnabled ? 1231 : 1237);
       result = prime * result + ((queueConfigurations == null) ? 0 : 
queueConfigurations.hashCode());
-      result = prime * result + ((haPolicy.getReplicationClustername() == 
null) ? 0 : haPolicy.getReplicationClustername().hashCode());
-      result = prime * result + ((haPolicy.getScaleDownClustername() == null) 
? 0 : haPolicy.getScaleDownClustername().hashCode());
       result = prime * result + (runSyncSpeedTest ? 1231 : 1237);
       result = prime * result + scheduledThreadPoolMaxSize;
       result = prime * result + (securityEnabled ? 1231 : 1237);
       result = prime * result + (int)(securityInvalidationInterval ^ 
(securityInvalidationInterval >>> 32));
       result = prime * result + ((securitySettings == null) ? 0 : 
securitySettings.hashCode());
       result = prime * result + (int)(serverDumpInterval ^ (serverDumpInterval 
>>> 32));
-      result = prime * result + (haPolicy.isSharedStore() ? 1231 : 1237);
       result = prime * result + threadPoolMaxSize;
       result = prime * result + (int)(transactionTimeout ^ (transactionTimeout 
>>> 32));
       result = prime * result + (int)(transactionTimeoutScanPeriod ^ 
(transactionTimeoutScanPeriod >>> 32));
@@ -1207,12 +1443,9 @@ public class ConfigurationImpl implements Configuration
       }
       else if (!addressesSettings.equals(other.addressesSettings))
          return false;
-      if (haPolicy.isAllowAutoFailBack() != 
other.getHAPolicy().isAllowAutoFailBack())
-         return false;
       if (asyncConnectionExecutionEnabled != 
other.asyncConnectionExecutionEnabled)
          return false;
-      if (haPolicy.isBackup() != other.getHAPolicy().isBackup())
-         return false;
+
       if (bindingsDirectory == null)
       {
          if (other.bindingsDirectory != null)
@@ -1234,8 +1467,6 @@ public class ConfigurationImpl implements Configuration
       }
       else if 
(!broadcastGroupConfigurations.equals(other.broadcastGroupConfigurations))
          return false;
-      if (checkForLiveServer != other.checkForLiveServer)
-         return false;
       if (clusterConfigurations == null)
       {
          if (other.clusterConfigurations != null)
@@ -1291,8 +1522,6 @@ public class ConfigurationImpl implements Configuration
       }
       else if (!divertConfigurations.equals(other.divertConfigurations))
          return false;
-      if (haPolicy.getFailbackDelay() != 
other.getHAPolicy().getFailbackDelay())
-         return false;
       if (failoverOnServerShutdown != other.failoverOnServerShutdown)
          return false;
       if (fileDeploymentEnabled != other.fileDeploymentEnabled)
@@ -1407,13 +1636,7 @@ public class ConfigurationImpl implements Configuration
       }
       else if (!name.equals(other.name))
          return false;
-      if (haPolicy.getBackupGroupName() == null)
-      {
-         if (other.getHAPolicy().getBackupGroupName() != null)
-            return false;
-      }
-      else if 
(!haPolicy.getBackupGroupName().equals(other.getHAPolicy().getBackupGroupName()))
-         return false;
+
       if (outgoingInterceptorClassNames == null)
       {
          if (other.outgoingInterceptorClassNames != null)
@@ -1441,20 +1664,6 @@ public class ConfigurationImpl implements Configuration
       }
       else if (!queueConfigurations.equals(other.queueConfigurations))
          return false;
-      if (haPolicy.getReplicationClustername() == null)
-      {
-         if (other.getHAPolicy().getReplicationClustername() != null)
-            return false;
-      }
-      else if 
(!haPolicy.getReplicationClustername().equals(other.getHAPolicy().getReplicationClustername()))
-         return false;
-      if (haPolicy.getScaleDownClustername() == null)
-      {
-         if (other.getHAPolicy().getScaleDownClustername() != null)
-            return false;
-      }
-      else if 
(!haPolicy.getScaleDownClustername().equals(other.getHAPolicy().getScaleDownClustername()))
-         return false;
       if (runSyncSpeedTest != other.runSyncSpeedTest)
          return false;
       if (scheduledThreadPoolMaxSize != other.scheduledThreadPoolMaxSize)
@@ -1472,8 +1681,6 @@ public class ConfigurationImpl implements Configuration
          return false;
       if (serverDumpInterval != other.serverDumpInterval)
          return false;
-      if (haPolicy.isSharedStore() != other.getHAPolicy().isSharedStore())
-         return false;
       if (threadPoolMaxSize != other.threadPoolMaxSize)
          return false;
       if (transactionTimeout != other.transactionTimeout)
@@ -1489,6 +1696,7 @@ public class ConfigurationImpl implements Configuration
       return true;
    }
 
+   @Override
    public Configuration copy() throws Exception
    {
       ByteArrayOutputStream bos = new ByteArrayOutputStream();
@@ -1499,26 +1707,10 @@ public class ConfigurationImpl implements Configuration
    }
 
    @Override
-   public Set<Configuration> getBackupServerConfigurations()
-   {
-      return backupServerConfigurations;
-   }
-
-   @Override
-   public void setBackupStrategy(BackupStrategy backupStrategy)
-   {
-      this.backupStrategy = backupStrategy;
-   }
-
-   public BackupStrategy getBackupStrategy()
-   {
-      return backupStrategy;
-   }
-
-   @Override
-   public void setJournalLockAcquisitionTimeout(long 
journalLockAcquisitionTimeout)
+   public ConfigurationImpl setJournalLockAcquisitionTimeout(long 
journalLockAcquisitionTimeout)
    {
       this.journalLockAcquisitionTimeout = journalLockAcquisitionTimeout;
+      return this;
    }
 
    @Override
@@ -1528,14 +1720,15 @@ public class ConfigurationImpl implements Configuration
    }
 
    @Override
-   public HAPolicy getHAPolicy()
+   public HAPolicyConfiguration getHAPolicyConfiguration()
    {
-      return haPolicy;
+      return haPolicyConfiguration;
    }
 
    @Override
-   public void setHAPolicy(HAPolicy haPolicy)
+   public ConfigurationImpl setHAPolicyConfiguration(HAPolicyConfiguration 
haPolicyConfiguration)
    {
-      this.haPolicy = haPolicy;
+      this.haPolicyConfiguration = haPolicyConfiguration;
+      return this;
    }
 }

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/177e6820/hornetq-server/src/main/java/org/hornetq/core/config/impl/Validators.java
----------------------------------------------------------------------
diff --git 
a/hornetq-server/src/main/java/org/hornetq/core/config/impl/Validators.java 
b/hornetq-server/src/main/java/org/hornetq/core/config/impl/Validators.java
index 0cf8c2e..c8b2922 100644
--- a/hornetq-server/src/main/java/org/hornetq/core/config/impl/Validators.java
+++ b/hornetq-server/src/main/java/org/hornetq/core/config/impl/Validators.java
@@ -15,6 +15,7 @@ package org.hornetq.core.config.impl;
 import org.hornetq.core.server.HornetQMessageBundle;
 import org.hornetq.core.server.JournalType;
 import org.hornetq.core.settings.impl.AddressFullMessagePolicy;
+import org.hornetq.core.settings.impl.SlowConsumerPolicy;
 
 /**
  * A Validators.
@@ -166,4 +167,17 @@ public final class Validators
          }
       }
    };
+
+   public static final Validator SLOW_CONSUMER_POLICY_TYPE = new Validator()
+   {
+      public void validate(final String name, final Object value)
+      {
+         String val = (String) value;
+         if (val == null || !val.equals(SlowConsumerPolicy.KILL.toString()) &&
+            !val.equals(SlowConsumerPolicy.NOTIFY.toString()))
+         {
+            throw 
HornetQMessageBundle.BUNDLE.invalidSlowConsumerPolicyType(val);
+         }
+      }
+   };
 }

Reply via email to