- InstanceConfigElementResolved ice = moduleElementResolved.getInstanceConfigElementResolved();
- EditConfigStrategy strategy = ice.getEditStrategy();
- strategy.executeConfiguration(moduleName, instanceName, ice.getConfiguration(), ta, execution.getServiceRegistryWrapper(ta));
- }
- }
- }
-
- private void handleMisssingInstancesOnTransaction(ConfigTransactionClient ta,
- EditConfigExecution execution) throws NetconfDocumentedException {
-
- for (Multimap<String,ModuleElementDefinition> modulesToResolved : execution.getModulesDefinition(ta).values()) {
- for (Map.Entry<String, ModuleElementDefinition> moduleToResolved : modulesToResolved.entries()) {
- String moduleName = moduleToResolved.getKey();
-
- ModuleElementDefinition moduleElementDefinition = moduleToResolved.getValue();
-
- EditConfigStrategy strategy = moduleElementDefinition.getEditStrategy();
- strategy.executeConfiguration(moduleName, moduleElementDefinition.getInstanceName(), null, ta, execution.getServiceRegistryWrapper(ta));
- }
- }
- }
-
- public static Config getConfigMapping(ConfigRegistryClient configRegistryClient, YangStoreContext yangStoreSnapshot) {
- Map<String, Map<String, ModuleConfig>> factories = transformMbeToModuleConfigs(configRegistryClient,
- yangStoreSnapshot.getModuleMXBeanEntryMap());
- Map<String, Map<Date, IdentityMapping>> identitiesMap = transformIdentities(yangStoreSnapshot.getModules());
- return new Config(factories, identitiesMap);
- }
-
-
- public static class IdentityMapping {
- private final Map<String, IdentitySchemaNode> identityNameToSchemaNode;
-
- IdentityMapping() {
- this.identityNameToSchemaNode = Maps.newHashMap();
- }
-
- void addIdSchemaNode(IdentitySchemaNode node) {
- String name = node.getQName().getLocalName();
- Preconditions.checkState(!identityNameToSchemaNode.containsKey(name));
- identityNameToSchemaNode.put(name, node);
- }
-
- public boolean containsIdName(String idName) {
- return identityNameToSchemaNode.containsKey(idName);
- }
-
- }
-
- private static Map<String, Map<Date, IdentityMapping>> transformIdentities(Set<Module> modules) {
- Map<String, Map<Date, IdentityMapping>> mappedIds = Maps.newHashMap();
- for (Module module : modules) {
- String namespace = module.getNamespace().toString();
- Map<Date, IdentityMapping> revisionsByNamespace= mappedIds.get(namespace);
- if(revisionsByNamespace == null) {
- revisionsByNamespace = Maps.newHashMap();
- mappedIds.put(namespace, revisionsByNamespace);
- }
-
- Date revision = module.getRevision();
-
- IdentityMapping identityMapping = revisionsByNamespace.get(revision);
- if(identityMapping == null) {
- identityMapping = new IdentityMapping();
- revisionsByNamespace.put(revision, identityMapping);
- }
-
- for (IdentitySchemaNode identitySchemaNode : module.getIdentities()) {
- identityMapping.addIdSchemaNode(identitySchemaNode);
- }
-
- }
-
- return mappedIds;
- }
-
- public static Map<String/* Namespace from yang file */,
- Map<String /* Name of module entry from yang file */, ModuleConfig>> transformMbeToModuleConfigs
- (final BeanReader configRegistryClient, Map<String/* Namespace from yang file */,
- Map<String /* Name of module entry from yang file */, ModuleMXBeanEntry>> mBeanEntries) {
-
- Map<String, Map<String, ModuleConfig>> namespaceToModuleNameToModuleConfig = Maps.newHashMap();
-
- for (Map.Entry<String, Map<String, ModuleMXBeanEntry>> namespaceToModuleToMbe : mBeanEntries.entrySet()) {
- for (Map.Entry<String, ModuleMXBeanEntry> moduleNameToMbe : namespaceToModuleToMbe.getValue().entrySet()) {
- String moduleName = moduleNameToMbe.getKey();
- ModuleMXBeanEntry moduleMXBeanEntry = moduleNameToMbe.getValue();
-
- ModuleConfig moduleConfig = new ModuleConfig(moduleName,
- new InstanceConfig(configRegistryClient,moduleMXBeanEntry.getAttributes(), moduleMXBeanEntry.getNullableDummyContainerName()));
-
- Map<String, ModuleConfig> moduleNameToModuleConfig = namespaceToModuleNameToModuleConfig.get(namespaceToModuleToMbe.getKey());
- if(moduleNameToModuleConfig == null) {
- moduleNameToModuleConfig = Maps.newHashMap();
- namespaceToModuleNameToModuleConfig.put(namespaceToModuleToMbe.getKey(), moduleNameToModuleConfig);
- }
-
- moduleNameToModuleConfig.put(moduleName, moduleConfig);
- }
- }