3043cf246e3572bc2080bb680fd23763d65690cc
[controller.git] / opendaylight / config / config-manager-facade-xml / src / main / java / org / opendaylight / controller / config / facade / xml / ConfigSubsystemFacadeFactory.java
1 package org.opendaylight.controller.config.facade.xml;
2
3 import com.google.common.collect.Sets;
4 import java.util.Set;
5 import org.opendaylight.controller.config.facade.xml.osgi.YangStoreService;
6 import org.opendaylight.controller.config.util.ConfigRegistryClient;
7 import org.opendaylight.controller.config.util.ConfigRegistryJMXClient;
8 import org.opendaylight.controller.config.util.capability.Capability;
9 import org.opendaylight.controller.config.util.capability.YangModuleCapability;
10 import org.opendaylight.yangtools.yang.model.api.Module;
11
12 public class ConfigSubsystemFacadeFactory {
13
14     private ConfigRegistryClient cfgRegClient;
15     private ConfigRegistryJMXClient cfgRegClientNoNotifications;
16     private YangStoreService yangStoreService;
17
18     public ConfigSubsystemFacadeFactory(final ConfigRegistryClient cfgRegClient, final ConfigRegistryJMXClient jmxClientNoNotifications, final YangStoreService yangStoreService) {
19         this.cfgRegClient = cfgRegClient;
20         this.cfgRegClientNoNotifications = jmxClientNoNotifications;
21         this.yangStoreService = yangStoreService;
22     }
23
24     /**
25      * Create new instance of ConfigSubsystemFacade. Each instance works with a dedicated transaction provider, making
26      * the instances suitable for facade-per-client use.
27      */
28     public ConfigSubsystemFacade createFacade(final String id) {
29         return new ConfigSubsystemFacade(cfgRegClient, cfgRegClientNoNotifications, yangStoreService, id);
30     }
31
32     public YangStoreService getYangStoreService() {
33         return yangStoreService;
34     }
35
36     public Set<Capability> getCurrentCapabilities() {
37         Set<Module> modules = yangStoreService.getModules();
38         final Set<Capability> capabilities = Sets.newHashSet();
39         for (Module module : modules) {
40             capabilities.add(new YangModuleCapability(module, yangStoreService.getModuleSource(module)));
41         }
42
43         return capabilities;
44     }
45
46
47 }