ibessonov commented on a change in pull request #56:
URL: https://github.com/apache/ignite-3/pull/56#discussion_r582917148
##########
File path:
modules/configuration/src/main/java/org/apache/ignite/configuration/ConfigurationChanger.java
##########
@@ -74,63 +78,65 @@ private StorageRoots(Map<RootKey<?>, InnerNode> roots, long
version) {
private final Map<Class<? extends ConfigurationStorage>,
ConfigurationStorage> storageInstances = new HashMap<>();
/** Constructor. */
- public ConfigurationChanger(ConfigurationStorage... configurationStorages)
{
- for (ConfigurationStorage storage : configurationStorages)
- storageInstances.put(storage.getClass(), storage);
+ public ConfigurationChanger(RootKey<?>... rootKeys) {
+ this.rootKeys.addAll(Arrays.asList(rootKeys));
+ }
+
+ /** */
+ public void addRootKey(RootKey<?> rootKey) {
+ assert !storageInstances.containsKey(rootKey.getStorageType());
+
+ rootKeys.add(rootKey);
}
/**
* Initialize changer.
*/
// ConfigurationChangeException, really?
- public void init(RootKey<?>... rootKeys) throws
ConfigurationChangeException {
- Map<Class<? extends ConfigurationStorage>, Set<RootKey<?>>>
rootsByStorage = new HashMap<>();
-
- for (RootKey<?> rootKey : rootKeys) {
- Class<? extends ConfigurationStorage> storageType =
rootKey.getStorageType();
+ public void init(ConfigurationStorage configurationStorage) throws
ConfigurationChangeException {
+ storageInstances.put(configurationStorage.getClass(),
configurationStorage);
- rootsByStorage.computeIfAbsent(storageType, c -> new
HashSet<>()).add(rootKey);
- }
+ Set<RootKey<?>> storageRootKeys = rootKeys.stream().filter(
+ rootKey -> configurationStorage.getClass() ==
rootKey.getStorageType()
+ ).collect(Collectors.toSet());
- for (ConfigurationStorage configurationStorage :
storageInstances.values()) {
- Data data;
+ Data data;
- try {
- data = configurationStorage.readAll();
- }
- catch (StorageException e) {
- throw new ConfigurationChangeException("Failed to initialize
configuration: " + e.getMessage(), e);
- }
+ try {
+ data = configurationStorage.readAll();
+ }
+ catch (StorageException e) {
+ throw new ConfigurationChangeException("Failed to initialize
configuration: " + e.getMessage(), e);
+ }
- Map<RootKey<?>, InnerNode> storageRootsMap = new HashMap<>();
+ Map<RootKey<?>, InnerNode> storageRootsMap = new HashMap<>();
- Map<String, ?> dataValuesPrefixMap =
ConfigurationUtil.toPrefixMap(data.values());
+ Map<String, ?> dataValuesPrefixMap =
ConfigurationUtil.toPrefixMap(data.values());
- for (RootKey<?> rootKey :
rootsByStorage.get(configurationStorage.getClass())) {
- Map<String, ?> rootPrefixMap = (Map<String,
?>)dataValuesPrefixMap.get(rootKey.key());
+ for (RootKey<?> rootKey : storageRootKeys) {
+ Map<String, ?> rootPrefixMap = (Map<String,
?>)dataValuesPrefixMap.get(rootKey.key());
- if (rootPrefixMap == null) {
- //TODO IGNITE-14193 Init with defaults.
- storageRootsMap.put(rootKey, rootKey.createRootNode());
- }
- else {
- InnerNode rootNode = rootKey.createRootNode();
+ if (rootPrefixMap == null) {
+ //TODO IGNITE-14193 Init with defaults.
+ storageRootsMap.put(rootKey, rootKey.createRootNode());
+ }
+ else {
+ InnerNode rootNode = rootKey.createRootNode();
- ConfigurationUtil.fillFromPrefixMap(rootNode,
rootPrefixMap);
+ ConfigurationUtil.fillFromPrefixMap(rootNode, rootPrefixMap);
- storageRootsMap.put(rootKey, rootNode);
- }
+ storageRootsMap.put(rootKey, rootNode);
}
+ }
- storagesRootsMap.put(configurationStorage.getClass(), new
StorageRoots(storageRootsMap, data.version()));
+ storagesRootsMap.put(configurationStorage.getClass(), new
StorageRoots(storageRootsMap, data.version()));
- configurationStorage.addListener(changedEntries ->
updateFromListener(
- configurationStorage.getClass(),
- changedEntries
- ));
+ configurationStorage.addListener(changedEntries -> updateFromListener(
+ configurationStorage.getClass(),
+ changedEntries
+ ));
- // TODO: IGNITE-14118 iterate over data and fill Configurators
- }
+ // TODO: IGNITE-14118 iterate over data and fill Configurators
Review comment:
Removed
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]