use of org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry in project controller by opendaylight.
the class ModuleMXBeanEntryTemplatesTest method mockMbe.
public static ModuleMXBeanEntry mockMbe(final String packageName) {
final ModuleMXBeanEntry mbe = mock(ModuleMXBeanEntry.class);
final Map<String, AttributeIfc> a = Maps.newHashMap();
final JavaAttribute attr = mockJavaAttr();
a.put("attr1", attr);
doReturn(a).when(mbe).getAttributes();
doReturn(packageName).when(mbe).getPackageName();
doReturn(Collections.emptyMap()).when(mbe).getProvidedServices();
doReturn("yang-module").when(mbe).getYangModuleName();
doReturn("local").when(mbe).getYangModuleLocalname();
doReturn("AbstractType").when(mbe).getAbstractFactoryName();
doReturn("Module").when(mbe).getStubModuleName();
doReturn("fullA").when(mbe).getFullyQualifiedName(anyString());
doReturn("uniq").when(mbe).getGloballyUniqueName();
return mbe;
}
use of org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry in project controller by opendaylight.
the class ConcreteModuleGeneratedObjectFactoryTest method test.
@Test
public void test() throws Exception {
FullyQualifiedName fqn = new FullyQualifiedName("foo.bar", "Baz");
FullyQualifiedName abstractFQN = new FullyQualifiedName("foo.bar", "AbstractBaz");
String nullableDescription = null;
ModuleMXBeanEntry moduleMXBeanEntry = mockModuleMXBeanEntry(fqn, abstractFQN, nullableDescription);
Optional<String> copyright = Optional.absent();
Optional<String> header = Optional.absent();
GeneratedObject go = new ConcreteModuleGeneratedObjectFactory().toGeneratedObject(moduleMXBeanEntry, copyright, header);
Entry<FullyQualifiedName, File> entry = go.persist(generatorOutputPath).get();
File dstFile = entry.getValue();
Node c = parse(dstFile);
assertEquals(fqn.getPackageName(), ((ASTCompilationUnit) c).getPackageDeclaration().getPackageNameImage());
assertEquals(fqn.getTypeName(), c.getFirstDescendantOfType(ASTClassOrInterfaceDeclaration.class).getImage());
assertHasMethodNamed(c, "customValidation");
assertHasMethodNamed(c, "createInstance");
}
use of org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry in project controller by opendaylight.
the class ConcreteModuleGeneratedObjectFactoryTest method mockModuleMXBeanEntry.
static ModuleMXBeanEntry mockModuleMXBeanEntry(FullyQualifiedName fqn, FullyQualifiedName abstractFQN, String nullableDescription) {
ModuleMXBeanEntry mock = mock(ModuleMXBeanEntry.class);
assertEquals(fqn.getPackageName(), abstractFQN.getPackageName());
doReturn(fqn.getPackageName()).when(mock).getPackageName();
doReturn(fqn.getTypeName()).when(mock).getStubModuleName();
doReturn(nullableDescription).when(mock).getNullableDescription();
doReturn(abstractFQN.getTypeName()).when(mock).getAbstractModuleName();
return mock;
}
use of org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry in project controller by opendaylight.
the class ConfigSubsystemFacade method transformMbeToModuleConfigs.
public Map<String, /* Namespace from yang file */
Map<String, /* Name of module entry from yang file */
ModuleConfig>> transformMbeToModuleConfigs(final BeanReader reader, final Map<String, /* Namespace from yang file */
Map<String, /* Name of module entry from yang file */
ModuleMXBeanEntry>> mbeanentries) {
Map<String, Map<String, ModuleConfig>> namespaceToModuleNameToModuleConfig = new HashMap<>();
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(reader, moduleMXBeanEntry.getAttributes(), moduleMXBeanEntry.getNullableDummyContainerName()));
Map<String, ModuleConfig> moduleNameToModuleConfig = namespaceToModuleNameToModuleConfig.computeIfAbsent(namespaceToModuleToMbe.getKey(), k -> new HashMap<>());
moduleNameToModuleConfig.put(moduleName, moduleConfig);
}
}
return namespaceToModuleNameToModuleConfig;
}
use of org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry in project controller by opendaylight.
the class ConfigSubsystemFacade method createModuleRuntimes.
private Map<String, Map<String, ModuleRuntime>> createModuleRuntimes(final ConfigRegistryClient client, final Map<String, Map<String, ModuleMXBeanEntry>> mbeanentries) {
Map<String, Map<String, ModuleRuntime>> retVal = new HashMap<>();
for (Map.Entry<String, Map<String, ModuleMXBeanEntry>> namespaceToModuleEntry : mbeanentries.entrySet()) {
Map<String, ModuleRuntime> innerMap = new HashMap<>();
Map<String, ModuleMXBeanEntry> entriesFromNamespace = namespaceToModuleEntry.getValue();
for (Map.Entry<String, ModuleMXBeanEntry> moduleToMXEntry : entriesFromNamespace.entrySet()) {
ModuleMXBeanEntry mbe = moduleToMXEntry.getValue();
Map<RuntimeBeanEntry, InstanceConfig> cache = new HashMap<>();
RuntimeBeanEntry root = null;
for (RuntimeBeanEntry rbe : mbe.getRuntimeBeans()) {
cache.put(rbe, new InstanceConfig(client, rbe.getYangPropertiesToTypesMap(), mbe.getNullableDummyContainerName()));
if (rbe.isRoot()) {
root = rbe;
}
}
if (root == null) {
continue;
}
InstanceRuntime rootInstanceRuntime = createInstanceRuntime(root, cache);
ModuleRuntime moduleRuntime = new ModuleRuntime(rootInstanceRuntime);
innerMap.put(moduleToMXEntry.getKey(), moduleRuntime);
}
retVal.put(namespaceToModuleEntry.getKey(), innerMap);
}
return retVal;
}
Aggregations