private InstanceRuntime createInstanceRuntime(RuntimeBeanEntry root, Map<RuntimeBeanEntry, InstanceConfig> cache) { Map<String, InstanceRuntime> children = Maps.newHashMap(); for (RuntimeBeanEntry child : root.getChildren()) { children.put(child.getJavaNamePrefix(), createInstanceRuntime(child, cache)); } return new InstanceRuntime(cache.get(root), children, createJmxToYangMap(root.getChildren())); }
public String getJavaNameOfRuntimeMXBean() { return getJavaNameOfRuntimeMXBean(javaNamePrefix); }
public static String getJavaNameOfRuntimeRegistrator(RuntimeBeanEntry rootRB) { checkArgument(rootRB.isRoot(), "RuntimeBeanEntry must be root"); return rootRB.getJavaNamePrefix() + "RuntimeRegistrator"; } }
private Map<String, String> createJmxToYangMap(List<RuntimeBeanEntry> children) { Map<String, String> jmxToYangNamesForChildRbe = Maps.newHashMap(); for (RuntimeBeanEntry rbe : children) { jmxToYangNamesForChildRbe.put(rbe.getJavaNamePrefix(), rbe.getYangName()); } return jmxToYangNamesForChildRbe; }
if (occupiedKeys.contains(parent.getJavaNamePrefix())) { throw new IllegalArgumentException( "Name conflict in runtime bean hierarchy - java name found more than " + "once. Consider using java-name extension. Conflicting name: " + parent.getJavaNamePrefix()); currentOccupiedKeys.add(parent.getJavaNamePrefix()); for (RuntimeBeanEntry child : parent.getChildren()) { checkArgument(parent.getPackageName() .equals(child.getPackageName()), "Invalid package name"); StringBuilder body = new StringBuilder(); String key, value; key = child.getJavaNamePrefix(); body.append(format( "String key = \"%s\"; //TODO: check for conflicts\n", key)); if (child.getKeyJavaName().isPresent()) { value = "bean.get" + child.getKeyJavaName().get() + "()"; value = "String.valueOf(" + value + ")"; } else { child.getJavaNameOfRuntimeMXBean(), "bean"); MethodDefinition register = new MethodDefinition( Collections.singletonList("synchronized"), String createdName = getJavaNameOfRuntimeRegistration(parent.getJavaNamePrefix());
AttributesRpcsAndRuntimeBeans attributesRpcsAndRuntimeBeans = extractSubtree( packageName, container, typeProviderWrapper, currentModule, schemaContext); rpcs = Collections.emptySet(); RuntimeBeanEntry rootRuntimeBeanEntry = createRoot(packageName, container, moduleYangName, attributes, javaNamePrefix, attributesRpcsAndRuntimeBeans.getRuntimeBeanEntries(), rpcs); if (result.containsKey(first.getJavaNameOfRuntimeMXBean())) { throw new NameConflictException( first.getJavaNameOfRuntimeMXBean(), null, null); result.put(first.getJavaNameOfRuntimeMXBean(), first); stack.addAll(first.getChildren());
String mxBeanTypeName = entry.getJavaNameOfRuntimeMXBean(); List<String> extendedInterfaces = Collections.singletonList(RuntimeBean.class .getCanonicalName()); for (AttributeIfc attributeIfc : entry.getAttributes()) { String returnType; returnType = getReturnType(attributeIfc); for (Rpc rpc : entry.getRpcs()) { null, entry.getPackageName(), mxBeanTypeName, extendedInterfaces, methods);
Map<String, GeneralClassTemplate> retVal = Maps.newHashMap(); TOAttributesProcessor processor = new TOAttributesProcessor(); Map<String, AttributeIfc> yangPropertiesToTypesMap = Maps.newHashMap(rbe.getYangPropertiesToTypesMap()); for (Rpc rpc : rbe.getRpcs()) { AttributeIfc returnType = rpc.getReturnType(); new GeneralClassTemplate(null, rbe.getPackageName(), to .getName(), Collections.<String> emptyList(), Collections.<String> emptyList(), to.getFields(),
final SchemaContext ctx) { Multimap<QName, RpcDefinition> identitiesToRpcs = getIdentitiesToRpcs(ctx); attributes.add(toAttribute); } else if (child instanceof ListSchemaNode) { if (isInnerStateBean(child)) { ListSchemaNode listSchemaNode = (ListSchemaNode) child; RuntimeBeanEntry hierarchicalChild = createHierarchical( packageName, listSchemaNode, typeProviderWrapper, currentModule, ctx); String localIdentityName = unknownSchemaNode.getNodeParameter(); QName identityQName = unknownSchemaNode.isAddedByUses() ? findQNameFromGrouping(subtree, ctx, unknownSchemaNode, localIdentityName) : QName.create(currentModule.getNamespace(), currentModule.getRevision(), localIdentityName); DataSchemaNode returnDSN = rpcDefinition.getOutput() .getChildNodes().iterator().next(); returnType = getReturnTypeAttribute(returnDSN, typeProviderWrapper, packageName); for (DataSchemaNode childNode : sortAttributes(rpcDefinition.getInput() .getChildNodes())) { if (childNode.isAddedByUses() == false) { // skip
private static void checkUniqueRuntimeBeanAttributesName(final ModuleMXBeanEntry mxBeanEntry, final Map<String, QName> uniqueGeneratedClassesNames) { for (RuntimeBeanEntry runtimeBeanEntry : mxBeanEntry.getRuntimeBeans()) { for (String runtimeAttName : runtimeBeanEntry.getYangPropertiesToTypesMap().keySet()) { if (mxBeanEntry.getAttributes().keySet().contains(runtimeAttName)) { QName qName1 = uniqueGeneratedClassesNames.get(runtimeBeanEntry.getJavaNameOfRuntimeMXBean()); QName qName2 = uniqueGeneratedClassesNames.get(mxBeanEntry.getGloballyUniqueName()); throw new NameConflictException(runtimeAttName, qName1, qName2); } } } }
private Map<String, Map<String, ModuleRuntime>> createModuleRuntimes(ConfigRegistryClient configRegistryClient, Map<String, Map<String, ModuleMXBeanEntry>> mBeanEntries) { Map<String, Map<String, ModuleRuntime>> retVal = Maps.newHashMap(); for (Map.Entry<String, Map<String, ModuleMXBeanEntry>> namespaceToModuleEntry : mBeanEntries.entrySet()) { Map<String, ModuleRuntime> innerMap = Maps.newHashMap(); Map<String, ModuleMXBeanEntry> entriesFromNamespace = namespaceToModuleEntry.getValue(); for (Map.Entry<String, ModuleMXBeanEntry> moduleToMXEntry : entriesFromNamespace.entrySet()) { ModuleMXBeanEntry mbe = moduleToMXEntry.getValue(); Map<RuntimeBeanEntry, InstanceConfig> cache = Maps.newHashMap(); RuntimeBeanEntry root = null; for (RuntimeBeanEntry rbe : mbe.getRuntimeBeans()) { cache.put(rbe, new InstanceConfig(configRegistryClient, 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; }
checkArgument(rootRB.isRoot(), "RuntimeBeanEntry must be root"); String registratorName = getJavaNameOfRuntimeRegistrator(rootRB); List<MethodDefinition> methods = new ArrayList<>(); .getFullyQualifiedName(rootRB.getPackageName(), rootRB.getJavaNameOfRuntimeMXBean()); String childRegistratorFQN = rootFtlFile.getFullyQualifiedName(); Field rbParameter = new Field(fullyQualifiedNameOfMXBean, "rb"); rootRB.getPackageName(), registratorName, Collections.<String> emptyList(), Collections.singletonList(Closeable.class .getCanonicalName()), constructorParameters, methods);
for (RuntimeBeanEntry entry : runtimeBeanEntryValues) { checkUniqueAttributesWithGeneratedClass(uniqueGeneratedClassesNames, when.getQName(), entry.getYangPropertiesToTypesMap());
public static RuntimeBeanEntry findRoot( Collection<RuntimeBeanEntry> runtimeBeanEntries) { RuntimeBeanEntry result = null; for (RuntimeBeanEntry rb : runtimeBeanEntries) { if (rb.isRoot()) { if (result != null) { throw new IllegalArgumentException( "More than one root runtime bean found"); } result = rb; } } if (result != null) { return result; } throw new IllegalArgumentException("No root runtime bean found"); }
private static Rpcs mapRpcs(final Map<String, Map<String, ModuleMXBeanEntry>> mBeanEntries, final EnumResolver enumResolver) { final Map<String, Map<String, ModuleRpcs>> map = Maps.newHashMap(); for (final Map.Entry<String, Map<String, ModuleMXBeanEntry>> namespaceToModuleEntry : mBeanEntries.entrySet()) { Map<String, ModuleRpcs> namespaceToModules = map.get(namespaceToModuleEntry.getKey()); if (namespaceToModules == null) { namespaceToModules = Maps.newHashMap(); map.put(namespaceToModuleEntry.getKey(), namespaceToModules); } for (final Map.Entry<String, ModuleMXBeanEntry> moduleEntry : namespaceToModuleEntry.getValue().entrySet()) { ModuleRpcs rpcMapping = namespaceToModules.get(moduleEntry.getKey()); if (rpcMapping == null) { rpcMapping = new ModuleRpcs(enumResolver); namespaceToModules.put(moduleEntry.getKey(), rpcMapping); } final ModuleMXBeanEntry entry = moduleEntry.getValue(); for (final RuntimeBeanEntry runtimeEntry : entry.getRuntimeBeans()) { rpcMapping.addNameMapping(runtimeEntry); for (final Rpc rpc : runtimeEntry.getRpcs()) { rpcMapping.addRpc(runtimeEntry, rpc); } } } } return new Rpcs(map); }
AttributesRpcsAndRuntimeBeans attributesRpcsAndRuntimeBeans = extractSubtree( packageName, listSchemaNode, typeProviderWrapper, currentModule, ctx); .findJavaNamePrefix(listSchemaNode); RuntimeBeanEntry rbFromAttributes = new RuntimeBeanEntry(packageName, listSchemaNode, listSchemaNode.getQName().getLocalName(), javaNamePrefix, false, keyYangName,
private static RuntimeBeanEntry createRoot(final String packageName, final DataNodeContainer nodeForReporting, final String attributeYangName, final List<AttributeIfc> attributes, final String javaNamePrefix, final List<RuntimeBeanEntry> children, final Set<Rpc> rpcs) { return new RuntimeBeanEntry(packageName, nodeForReporting, attributeYangName, javaNamePrefix, true, Optional.<String> absent(), attributes, children, rpcs); }
public void addNameMapping(RuntimeBeanEntry runtimeEntry) { String yangName = runtimeEntry.getYangName(); Preconditions.checkState(!yangToJavaNames.containsKey(yangName), "RuntimeBean %s found twice in same namespace", yangName); yangToJavaNames.put(yangName, runtimeEntry.getJavaNamePrefix()); }
private static void checkUniqueRuntimeBeansGeneratedClasses(final Map<String, QName> uniqueGeneratedClassesNames, final DataSchemaNode when, final Collection<RuntimeBeanEntry> runtimeBeans) { for (RuntimeBeanEntry runtimeBean : runtimeBeans) { final String javaNameOfRuntimeMXBean = runtimeBean.getJavaNameOfRuntimeMXBean(); if (uniqueGeneratedClassesNames.containsKey(javaNameOfRuntimeMXBean)) { QName firstDefinedQName = uniqueGeneratedClassesNames.get(javaNameOfRuntimeMXBean); throw new NameConflictException(javaNameOfRuntimeMXBean, firstDefinedQName, when.getQName()); } uniqueGeneratedClassesNames.put(javaNameOfRuntimeMXBean, when.getQName()); } }