This map is based on constant data and can be easily pre-computed. Do
precisely that.
Change-Id: Ic3851034ca3ccd752c3f4afc0d1d3c77a9df9e65
Signed-off-by: Robert Varga <rovarga@cisco.com>
private final Map<String, List<String>> shardReplicaNames = new HashMap<>();
private final Map<String, String> namespaceToModuleName;
private final Map<String, List<String>> shardReplicaNames = new HashMap<>();
private final Map<String, String> namespaceToModuleName;
+ private final Map<String, ShardStrategy> moduleNameToStrategy;
public ConfigurationImpl(final String moduleShardsConfigPath,
public ConfigurationImpl(final String moduleShardsConfigPath,
this.moduleShards = readModuleShards(moduleShardsConfig);
this.modules = readModules(modulesConfig);
this.moduleShards = readModuleShards(moduleShardsConfig);
this.modules = readModules(modulesConfig);
- namespaceToModuleName = createNamespaceToModuleName(modules);
+ this.moduleNameToStrategy = createModuleNameToStrategy(modules);
+ this.namespaceToModuleName = createNamespaceToModuleName(modules);
+ }
+
+ private static Map<String, ShardStrategy> createModuleNameToStrategy(Iterable<Module> modules) {
+ final com.google.common.collect.ImmutableMap.Builder<String, ShardStrategy> b = ImmutableMap.builder();
+ for (Module m : modules) {
+ b.put(m.getName(), m.getShardStrategy());
+ }
+ return b.build();
}
private static Map<String, String> createNamespaceToModuleName(Iterable<Module> modules) {
}
private static Map<String, String> createNamespaceToModuleName(Iterable<Module> modules) {
return Optional.fromNullable(namespaceToModuleName.get(nameSpace));
}
return Optional.fromNullable(namespaceToModuleName.get(nameSpace));
}
- @Override public Map<String, ShardStrategy> getModuleNameToShardStrategyMap() {
- // FIXME: can be constant view of modules
- Map<String, ShardStrategy> map = new HashMap<>();
- for(Module m : modules){
- map.put(m.getName(), m.getShardStrategy());
- }
- return map;
+ @Override
+ public Map<String, ShardStrategy> getModuleNameToShardStrategyMap() {
+ return moduleNameToStrategy;
}
@Override public List<String> getShardNamesFromModuleName(final String moduleName) {
}
@Override public List<String> getShardNamesFromModuleName(final String moduleName) {