X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fconfig%2FModuleConfig.java;h=ccd7dd66065ef32b8b824a764e6cbb061c5b5db6;hb=99f80f27bee37bb23e345420bf14bb7bb4793c28;hp=b54946774d2a4bc7cd266bf93370a91f5ccf0d77;hpb=60dbe8adeda3af724255231af9400341b17953b9;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ModuleConfig.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ModuleConfig.java index b54946774d..ccd7dd6606 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ModuleConfig.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ModuleConfig.java @@ -7,11 +7,15 @@ */ package org.opendaylight.controller.cluster.datastore.config; -import com.google.common.collect.ImmutableSet; +import static java.util.Objects.requireNonNull; + +import com.google.common.collect.ImmutableMap; import java.util.Collection; import java.util.HashMap; import java.util.Map; -import java.util.Set; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; +import org.opendaylight.controller.cluster.access.concepts.MemberName; import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy; /** @@ -19,63 +23,93 @@ import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy * * @author Thomas Pantelis */ -public class ModuleConfig { +public final class ModuleConfig { private final String name; - private String nameSpace; - private ShardStrategy shardStrategy; - private final Map shardConfigs = new HashMap<>(); - - public ModuleConfig(final String name) { - this.name = name; - } + private final String namespace; + private final ShardStrategy shardStrategy; + private final Map shardConfigs; - public ModuleConfig(ModuleConfig moduleConfig) { - this.name = moduleConfig.getName(); - this.nameSpace = moduleConfig.getNameSpace(); - this.shardStrategy = moduleConfig.getShardStrategy(); - for (ShardConfig shardConfig : moduleConfig.getShardConfigs()) { - shardConfigs.put(shardConfig.getName(), new ShardConfig(shardConfig.getName(), - ImmutableSet.copyOf(shardConfig.getReplicas()))); - } + ModuleConfig(final String name, final String namespace, final ShardStrategy shardStrategy, + final Map shardConfigs) { + this.name = requireNonNull(name); + this.namespace = namespace; + this.shardStrategy = shardStrategy; + this.shardConfigs = shardConfigs; } - public String getName() { + public @NonNull String getName() { return name; } - public String getNameSpace() { - return nameSpace; + public @Nullable String getNamespace() { + return namespace; } - public ShardStrategy getShardStrategy() { + public @Nullable ShardStrategy getShardStrategy() { return shardStrategy; } - public ShardConfig getShardConfig(String name) { - return shardConfigs.get(name); + public @Nullable ShardConfig getShardConfig(final String forName) { + return shardConfigs.get(forName); } - public Collection getShardConfigs() { + public @NonNull Collection getShardConfigs() { return shardConfigs.values(); } - public Collection getShardNames() { + public @NonNull Collection getShardNames() { return shardConfigs.keySet(); } - public void addShardConfig(String name, Set replicas) { - shardConfigs.put(name, new ShardConfig(name, replicas)); + public static Builder builder(final String name) { + return new Builder(name); } - public void setNameSpace(String nameSpace) { - this.nameSpace = nameSpace; + public static Builder builder(final ModuleConfig moduleConfig) { + return new Builder(moduleConfig); } - public void setShardStrategy(ShardStrategy shardStrategy) { - this.shardStrategy = shardStrategy; - } + public static final class Builder { + private String name; + private String nameSpace; + private ShardStrategy shardStrategy; + private final Map shardConfigs = new HashMap<>(); + + Builder(final String name) { + this.name = name; + } + + private Builder(final ModuleConfig moduleConfig) { + this.name = moduleConfig.getName(); + this.nameSpace = moduleConfig.getNamespace(); + this.shardStrategy = moduleConfig.getShardStrategy(); + for (ShardConfig shardConfig : moduleConfig.getShardConfigs()) { + shardConfigs.put(shardConfig.getName(), shardConfig); + } + } + + public Builder name(final String newName) { + this.name = newName; + return this; + } + + public Builder nameSpace(final String newNameSpace) { + this.nameSpace = newNameSpace; + return this; + } - public ShardConfig removeShardConfig(String name) { - return shardConfigs.remove(name); + public Builder shardStrategy(final ShardStrategy newShardStrategy) { + this.shardStrategy = newShardStrategy; + return this; + } + + public Builder shardConfig(final String shardName, final Collection replicas) { + shardConfigs.put(shardName, new ShardConfig(shardName, replicas)); + return this; + } + + public ModuleConfig build() { + return new ModuleConfig(name, nameSpace, shardStrategy, ImmutableMap.copyOf(shardConfigs)); + } } }