import static org.opendaylight.yangtools.binding.generator.util.BindingGeneratorUtil.*;
import static org.opendaylight.yangtools.binding.generator.util.BindingTypes.*;
import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.*;
-
+import org.opendaylight.yangtools.yang.parser.util.ModuleDependencySort\r
\r
public class BindingGeneratorImpl implements BindingGenerator {\r
\r
schemaContext = context;\r
typeProvider = new TypeProviderImpl(context);\r
val Set<Module> modules = context.modules;\r
- genTypeBuilders = new HashMap();\r
- for (module : modules) {\r
-\r
- generatedTypes.addAll(allGroupingsToGenTypes(module));\r
-\r
- if (false == module.childNodes.isEmpty()) {\r
- generatedTypes.add(moduleToDataType(module));\r
- }\r
- generatedTypes.addAll(allTypeDefinitionsToGenTypes(module));\r
- generatedTypes.addAll(allContainersToGenTypes(module));\r
- generatedTypes.addAll(allListsToGenTypes(module));\r
- generatedTypes.addAll(allChoicesToGenTypes(module));\r
- generatedTypes.addAll(allRPCMethodsToGenType(module));\r
- generatedTypes.addAll(allNotificationsToGenType(module));\r
- generatedTypes.addAll(allIdentitiesToGenTypes(module, context));\r
- }\r
- for (module : modules) {\r
- generatedTypes.addAll(allAugmentsToGenTypes(module));\r
- \r
- }\r
- return generatedTypes;\r
+ return generateTypes(context,modules);
}\r
\r
/**\r
checkState(context.modules !== null,"Schema Context does not contain defined modules.");\r
checkArgument(modules !== null,"Set of Modules cannot be NULL.");\r
\r
- val List<Type> filteredGenTypes = new ArrayList();\r
+ val List<Type> filteredGenTypes = new ArrayList();
+ \r
schemaContext = context;\r
typeProvider = new TypeProviderImpl(context);\r
- val Set<Module> contextModules = context.modules;\r
+ val contextModules = ModuleDependencySort.sort(context.modules);\r
genTypeBuilders = new HashMap();\r
\r
for (contextModule : contextModules) {\r
val List<Type> generatedTypes = new ArrayList();\r
-\r
+ generatedTypes.addAll(allTypeDefinitionsToGenTypes(contextModule));\r
generatedTypes.addAll(allGroupingsToGenTypes(contextModule));\r
if (false == contextModule.childNodes.isEmpty()) {\r
generatedTypes.add(moduleToDataType(contextModule));\r
}\r
- generatedTypes.addAll(allTypeDefinitionsToGenTypes(contextModule));\r
generatedTypes.addAll(allContainersToGenTypes(contextModule));\r
generatedTypes.addAll(allListsToGenTypes(contextModule));\r
generatedTypes.addAll(allChoicesToGenTypes(contextModule));\r
checkArgument(module.name !== null,"Module name cannot be NULL.");\r
val Set<TypeDefinition<?>> typeDefinitions = module.typeDefinitions;\r
checkState(typeDefinitions !== null,'''Type Definitions for module «module.name» cannot be NULL.''');\r
-\r
\r
val List<Type> generatedTypes = new ArrayList();\r
for ( TypeDefinition<?> typedef : typeDefinitions) {\r
// and DataObject interface!!!\r
val targetPath = augSchema.targetPath;\r
val targetSchemaNode = findDataSchemaNode(schemaContext, targetPath);\r
- var targetType = yangToJavaMapping.get(targetSchemaNode.path);\r
- if(targetType == null) {\r
- // FIXME: augmentation should be added as last, all types should already be generated\r
- // and have assigned Java Types,\r
- val targetModule = findParentModule(schemaContext, targetSchemaNode);\r
- val targetBasePackage = moduleNamespaceToPackageName(targetModule);\r
- val typePackage = packageNameForGeneratedType(targetBasePackage, targetSchemaNode.getPath());\r
- val targetSchemaNodeName = targetSchemaNode.getQName().getLocalName();\r
- val typeName = parseToClassName(targetSchemaNodeName);\r
- targetType = new ReferencedTypeImpl(typePackage,typeName);\r
- }\r
if (targetSchemaNode !== null) {\r
+ var targetType = yangToJavaMapping.get(targetSchemaNode.path);
+ if(targetType == null) {
+ // FIXME: augmentation should be added as last, all types should already be generated
+ // and have assigned Java Types,
+ val targetModule = findParentModule(schemaContext, targetSchemaNode);
+ val targetBasePackage = moduleNamespaceToPackageName(targetModule);
+ val typePackage = packageNameForGeneratedType(targetBasePackage, targetSchemaNode.getPath());
+ val targetSchemaNodeName = targetSchemaNode.getQName().getLocalName();
+ val typeName = parseToClassName(targetSchemaNodeName);
+ targetType = new ReferencedTypeImpl(typePackage,typeName);
+ }
val augChildNodes = augSchema.childNodes;\r
if (!(targetSchemaNode instanceof ChoiceNode)) {\r
val augTypeBuilder = addRawAugmentGenTypeDefinition(augmentPackageName,\r