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); } }