From: Martin Vitez Date: Tue, 19 Nov 2013 15:45:32 +0000 (+0100) Subject: Added toString method to generated inner implementation in builder classes. X-Git-Tag: yangtools-0.6.0~176 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=d7b6f6a6b5f0564628af135ec75a35810bb57885;p=yangtools.git Added toString method to generated inner implementation in builder classes. Signed-off-by: Martin Vitez --- diff --git a/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.xtend b/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.xtend index 71f360726b..367d3b5697 100644 --- a/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.xtend +++ b/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.xtend @@ -238,57 +238,62 @@ public class BindingGeneratorImpl implements BindingGenerator { } } } + + private def GeneratedTypeBuilder processDataSchemaNode(Module module, String basePackageName, + GeneratedTypeBuilder parent, GeneratedTypeBuilder childOf, DataSchemaNode node) { + if (node.augmenting || node.addedByUses) { + return null + } + val packageName = packageNameForGeneratedType(basePackageName, (node).path) + val genType = addDefaultInterfaceDefinition(packageName, node, childOf) + if (node instanceof DataNodeContainer) { + genCtx.get(module).addChildNodeType(node.path, genType) + groupingsToGenTypes(module, (node as DataNodeContainer).groupings) + processUsesAugments(node as DataNodeContainer, module) + } + return genType + } private def void containerToGenType(Module module, String basePackageName, GeneratedTypeBuilder parent, GeneratedTypeBuilder childOf, ContainerSchemaNode node) { - if (node.augmenting || node.addedByUses) { - return + val genType = processDataSchemaNode(module, basePackageName, parent, childOf, node) + if (genType != null) { + constructGetter(parent, node.QName.localName, node.description, genType) + resolveDataSchemaNodes(module, basePackageName, genType, genType, node.childNodes) } - val packageName = packageNameForGeneratedType(basePackageName, node.path) - val genType = addDefaultInterfaceDefinition(packageName, node, childOf) - constructGetter(parent, node.QName.localName, node.description, genType) - genCtx.get(module).addChildNodeType(node.path, genType) - resolveDataSchemaNodes(module, basePackageName, genType, genType, node.childNodes) - groupingsToGenTypes(module, node.groupings) - processUsesAugments(node, module) } private def void listToGenType(Module module, String basePackageName, GeneratedTypeBuilder parent, GeneratedTypeBuilder childOf, ListSchemaNode node) { - if (node.augmenting || node.addedByUses) { - return - } - val packageName = packageNameForGeneratedType(basePackageName, (node).path) - val genType = addDefaultInterfaceDefinition(packageName, node, childOf) - constructGetter(parent, node.QName.localName, node.description, Types.listTypeFor(genType)) - genCtx.get(module).addChildNodeType(node.path, genType) - groupingsToGenTypes(module, node.groupings) - processUsesAugments(node, module) - - val List listKeys = listKeys(node); - val genTOBuilder = resolveListKeyTOBuilder(packageName, node); + val genType = processDataSchemaNode(module, basePackageName, parent, childOf, node) + if (genType != null) { + constructGetter(parent, node.QName.localName, node.description, Types.listTypeFor(genType)) + + val List listKeys = listKeys(node); + val packageName = packageNameForGeneratedType(basePackageName, (node).path) + val genTOBuilder = resolveListKeyTOBuilder(packageName, node); + if (genTOBuilder !== null) { + val identifierMarker = IDENTIFIER.parameterizedTypeFor(genType); + val identifiableMarker = IDENTIFIABLE.parameterizedTypeFor(genTOBuilder); + genTOBuilder.addImplementsType(identifierMarker); + genType.addImplementsType(identifiableMarker); + } - if (genTOBuilder !== null) { - val identifierMarker = IDENTIFIER.parameterizedTypeFor(genType); - val identifiableMarker = IDENTIFIABLE.parameterizedTypeFor(genTOBuilder); - genTOBuilder.addImplementsType(identifierMarker); - genType.addImplementsType(identifiableMarker); - } + for (schemaNode : node.childNodes) { + if (!schemaNode.augmenting) { + addSchemaNodeToListBuilders(basePackageName, schemaNode, genType, genTOBuilder, listKeys, module); + } + } - for (schemaNode : node.childNodes) { - if (!schemaNode.augmenting) { - addSchemaNodeToListBuilders(basePackageName, schemaNode, genType, genTOBuilder, listKeys, module); + // serialVersionUID + if (genTOBuilder !== null) { + val GeneratedPropertyBuilder prop = new GeneratedPropertyBuilderImpl("serialVersionUID"); + prop.setValue(Long.toString(computeDefaultSUID(genTOBuilder as GeneratedTOBuilderImpl))); + genTOBuilder.setSUID(prop); } - } - - // serialVersionUID - if (genTOBuilder !== null) { - val GeneratedPropertyBuilder prop = new GeneratedPropertyBuilderImpl("serialVersionUID"); - prop.setValue(Long.toString(computeDefaultSUID(genTOBuilder as GeneratedTOBuilderImpl))); - genTOBuilder.setSUID(prop); - } - typeBuildersToGenTypes(module, genType, genTOBuilder); + typeBuildersToGenTypes(module, genType, genTOBuilder); + } } private def void processUsesAugments(DataNodeContainer node, Module module) { @@ -1181,18 +1186,18 @@ public class BindingGeneratorImpl implements BindingGenerator { for (caseNode : caseNodes) { if (caseNode !== null && !caseNode.isAddedByUses() && !caseNode.isAugmenting()) { - val packageName = packageNameForGeneratedType(basePackageName, caseNode.path); - val caseTypeBuilder = addDefaultInterfaceDefinition(packageName, caseNode); - caseTypeBuilder.addImplementsType(refChoiceType); + val packageName = packageNameForGeneratedType(basePackageName, caseNode.path) + val caseTypeBuilder = addDefaultInterfaceDefinition(packageName, caseNode) + caseTypeBuilder.addImplementsType(refChoiceType) genCtx.get(module).addCaseType(caseNode.path, caseTypeBuilder) - val Set caseChildNodes = caseNode.childNodes; + val Set caseChildNodes = caseNode.childNodes if (caseChildNodes !== null) { - val parentNode = choiceNode.parent; - var SchemaNode parent; + val parentNode = choiceNode.parent + var SchemaNode parent if (parentNode instanceof AugmentationSchema) { val augSchema = parentNode as AugmentationSchema; val targetPath = augSchema.targetPath; - var targetSchemaNode = findDataSchemaNode(schemaContext, targetPath); + var targetSchemaNode = findDataSchemaNode(schemaContext, targetPath) if (targetSchemaNode instanceof DataSchemaNode && (targetSchemaNode as DataSchemaNode).isAddedByUses()) { targetSchemaNode = findOriginal(targetSchemaNode as DataSchemaNode); @@ -1202,12 +1207,12 @@ public class BindingGeneratorImpl implements BindingGenerator { " in module " + module.name); } } - parent = targetSchemaNode as SchemaNode + parent = targetSchemaNode } else { - parent = choiceNode.parent as SchemaNode; + parent = choiceNode.parent as SchemaNode } var GeneratedTypeBuilder childOfType = findChildNodeByPath(parent.path) - resolveDataSchemaNodes(module, basePackageName, caseTypeBuilder, childOfType, caseChildNodes); + resolveDataSchemaNodes(module, basePackageName, caseTypeBuilder, childOfType, caseChildNodes) } } diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend index f603932210..8a76419897 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend @@ -14,6 +14,7 @@ import org.opendaylight.yangtools.sal.binding.model.api.ConcreteType import org.opendaylight.yangtools.sal.binding.model.api.Restrictions import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject import java.util.Collection +import java.util.Arrays abstract class BaseTemplate { @@ -244,6 +245,31 @@ abstract class BaseTemplate { } ''' + def protected generateToString(Collection properties) ''' + «IF !properties.empty» + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("«type.name» [«properties.get(0).fieldName»="); + «IF properties.get(0).returnType.name.contains("[")» + builder.append(«Arrays.importedName».toString(«properties.get(0).fieldName»)); + «ELSE» + builder.append(«properties.get(0).fieldName»); + «ENDIF» + «FOR i : 1..toString(). - * - * @return string with the toString() method definition in JAVA format - */ - def protected generateToString() ''' - «IF !genTO.toStringIdentifiers.empty» - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - «val properties = genTO.toStringIdentifiers» - builder.append("«type.name» [«properties.get(0).fieldName»="); - «IF properties.get(0).returnType.name.contains("[")» - builder.append(«Arrays.importedName».toString(«properties.get(0).fieldName»)); - «ELSE» - builder.append(«properties.get(0).fieldName»); - «ENDIF» - «FOR i : 1..> getLength() {