package ragefist.core.distribution;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.naming.directory.InvalidAttributesException;
/*
* Created by Andrey Cherkashin (acherkashin)
* http://acherkashin.me
*
* License
* Copyright (c) 2015 Andrey Cherkashin
* The project released under the MIT license: http://opensource.org/licenses/MIT
*/
/**
*
* @author acherkashin
*/
public class DistributedServerGroup
{
private final ArrayList<DistributedServer> _servers;
private final String _code;
private final SelectionPolicy _selectionPolicy;
public static class DistributedServerGroupBuilder
{
public ArrayList<DistributedServer> servers = new ArrayList<>();
public String code;
public SelectionPolicy selectionPolicy;
public DistributedServerGroup build() throws InvalidAttributesException {
if (code == null || code.isEmpty()) {
throw new InvalidAttributesException("DistributedServerGroup.code is empty or null");
}
if (servers == null || servers.isEmpty()) {
throw new InvalidAttributesException("DistributedServerGroup.servers is empty or null");
}
if (selectionPolicy == null) {
throw new InvalidAttributesException("DistributedServerGroup.selectionPolicy is empty or null");
}
return new DistributedServerGroup(this);
}
}
private DistributedServerGroup(DistributedServerGroupBuilder builder) {
_servers = builder.servers;
_code = builder.code;
_selectionPolicy = builder.selectionPolicy;
}
// ---------------------------------------------------------------------- //
// PUBLIC
// ---------------------------------------------------------------------- //
public final String getCode() { return _code; }
public final List<DistributedServer> getServers() { return Collections.unmodifiableList(_servers); }
}