com.hazelcast.config.QuorumConfig Maven / Gradle / Ivy
/*
* Copyright (c) 2008-2017, Hazelcast, Inc. All Rights Reserved.
*
* Licensed 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 com.hazelcast.config;
import com.hazelcast.quorum.QuorumFunction;
import com.hazelcast.quorum.QuorumType;
import java.util.ArrayList;
import java.util.List;
import static com.hazelcast.quorum.QuorumType.READ_WRITE;
/**
* Contains the configuration for cluster quorum.
*/
public class QuorumConfig {
private String name;
private boolean enabled;
private int size;
private List listenerConfigs = new ArrayList();
private QuorumType type = READ_WRITE;
private String quorumFunctionClassName;
private QuorumFunction quorumFunctionImplementation;
public QuorumConfig() {
}
public QuorumConfig(String name, boolean enabled) {
this.name = name;
this.enabled = enabled;
}
public QuorumConfig(String name, boolean enabled, int size) {
this.name = name;
this.enabled = enabled;
this.size = size;
}
public QuorumConfig(QuorumConfig quorumConfig) {
this.name = quorumConfig.name;
this.enabled = quorumConfig.enabled;
this.size = quorumConfig.size;
this.listenerConfigs = quorumConfig.listenerConfigs;
this.type = quorumConfig.type;
}
public String getName() {
return name;
}
public QuorumConfig setName(String name) {
this.name = name;
return this;
}
public boolean isEnabled() {
return enabled;
}
public QuorumConfig setEnabled(boolean enabled) {
this.enabled = enabled;
return this;
}
public int getSize() {
return size;
}
public QuorumConfig setSize(int size) {
if (size < 2) {
throw new InvalidConfigurationException("Minimum quorum size cannot be less than 2");
}
this.size = size;
return this;
}
public QuorumType getType() {
return type;
}
public QuorumConfig setType(QuorumType type) {
this.type = type;
return this;
}
public List getListenerConfigs() {
return listenerConfigs;
}
public QuorumConfig setListenerConfigs(List listenerConfigs) {
this.listenerConfigs = listenerConfigs;
return this;
}
public QuorumConfig addListenerConfig(QuorumListenerConfig listenerConfig) {
this.listenerConfigs.add(listenerConfig);
return this;
}
public String getQuorumFunctionClassName() {
return quorumFunctionClassName;
}
public QuorumConfig setQuorumFunctionClassName(String quorumFunctionClassName) {
this.quorumFunctionClassName = quorumFunctionClassName;
return this;
}
public QuorumFunction getQuorumFunctionImplementation() {
return quorumFunctionImplementation;
}
public QuorumConfig setQuorumFunctionImplementation(QuorumFunction quorumFunctionImplementation) {
this.quorumFunctionImplementation = quorumFunctionImplementation;
return this;
}
@Override
public String toString() {
return "QuorumConfig{"
+ "name='" + name + '\''
+ ", enabled=" + enabled
+ ", size=" + size
+ ", listenerConfigs=" + listenerConfigs
+ ", quorumFunctionClassName=" + quorumFunctionClassName
+ ", quorumFunctionImplementation=" + quorumFunctionImplementation
+ ", type=" + type + '}';
}
}