From: Tony Tkacik Date: Tue, 20 Aug 2013 16:58:31 +0000 (+0200) Subject: Added builder generation for augmentations X-Git-Tag: yangtools-0.1.0~62 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=ea2ea57f728f5e0b7084b3f0f5a47f75629f714c;p=yangtools.git Added builder generation for augmentations Added support for named augmentations Signed-off-by: Tony Tkacik --- diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderGenerator.java b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderGenerator.java index 08ff99d196..571c301b00 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderGenerator.java +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderGenerator.java @@ -5,6 +5,8 @@ import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject; import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType; import org.opendaylight.yangtools.sal.binding.model.api.Type; import org.opendaylight.yangtools.yang.binding.Augmentable; +import org.opendaylight.yangtools.yang.binding.Augmentation; +import org.opendaylight.yangtools.yang.binding.DataObject; public final class BuilderGenerator implements CodeGenerator { @@ -17,7 +19,11 @@ public final class BuilderGenerator implements CodeGenerator { // "rpc" and "grouping" elements do not implement Augmentable if (t.getFullyQualifiedName().equals(Augmentable.class.getName())) { return true; + } else if (t.getFullyQualifiedName().equals(Augmentation.class.getName())) { + return true; } + + } } return false; diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend index a56a79ebf7..6ffc912ebf 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend @@ -136,7 +136,7 @@ class BuilderTemplate { def private generateBody() ''' public class «genType.name»«BUILDER» { - «generateFields» + «generateFields(false)» «generateSetters» @@ -146,7 +146,7 @@ class BuilderTemplate { private class «genType.name»«IMPL» implements «genType.name» { - «generateFields» + «generateFields(true)» «generateConstructor» @@ -157,10 +157,10 @@ class BuilderTemplate { } ''' - def private generateFields() ''' + def private generateFields(boolean _final) ''' «IF !fields.empty» «FOR f : fields» - private «f.returnType.resolveName» «f.name»; + private «IF _final»final«ENDIF» «f.returnType.resolveName» «f.name»; «ENDFOR» «ENDIF» «IF augmentField != null» diff --git a/yang/yang-maven-plugin/pom.xml b/yang/yang-maven-plugin/pom.xml index 8055fad5dc..776868a0a9 100644 --- a/yang/yang-maven-plugin/pom.xml +++ b/yang/yang-maven-plugin/pom.xml @@ -41,7 +41,11 @@ maven-artifact 2.0 - + +org.slf4j +slf4j-simple +1.7.2 + ${project.groupId} yang-parser-impl diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/UnknownTypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/UnknownTypeDefinition.java index 0bbc5916f0..67704388ef 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/UnknownTypeDefinition.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/UnknownTypeDefinition.java @@ -24,4 +24,6 @@ public interface UnknownTypeDefinition extends Integer getFractionDigits(); + boolean isReferenceOnly(); + } diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/UnknownType.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/UnknownType.java index 691fadc281..7459e6f6e6 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/UnknownType.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/UnknownType.java @@ -25,7 +25,7 @@ public class UnknownType implements UnknownTypeDefinition { private final SchemaPath path; private final String description; private final String reference; - + private final boolean referenceOnly; private final List lengthStatements; private final List patterns; private final List rangeStatements; @@ -55,6 +55,7 @@ public class UnknownType implements UnknownTypeDefinition { private Status status = Status.CURRENT; private String units = ""; private Object defaultValue = null; + private boolean referenceOnly = false; public Builder(final QName name, final String description, final String reference) { @@ -129,9 +130,15 @@ public class UnknownType implements UnknownTypeDefinition { public UnknownTypeDefinition build() { return new UnknownType(this); } + + public void setReferenceOnly(boolean b) { + this.referenceOnly = b; + + } } private UnknownType(Builder builder) { + this.referenceOnly = builder.referenceOnly; this.name = builder.name; this.path = builder.path; this.description = builder.description; @@ -296,6 +303,11 @@ public class UnknownType implements UnknownTypeDefinition { return fractionDigits; } + @Override + public boolean isReferenceOnly() { + return referenceOnly; + } + @Override public int hashCode() { final int prime = 31; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserImpl.java index 4bd6f20ffa..604a0c2fcf 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserImpl.java @@ -839,6 +839,7 @@ public final class YangParserImpl implements YangModelParser { usnb.getLine()); for (ExtensionBuilder extension : dependentModule.getExtensions()) { if (extension.getQName().getLocalName().equals(nodeType.getLocalName())) { + usnb.setNodeType(extension.getQName()); usnb.setExtensionBuilder(extension); break; } @@ -863,6 +864,7 @@ public final class YangParserImpl implements YangModelParser { usnb.getLine()); for (ExtensionDefinition e : dependentModule.getExtensionSchemaNodes()) { if (e.getQName().getLocalName().equals(nodeType.getLocalName())) { + usnb.setNodeType(new QName(e.getQName().getNamespace(),e.getQName().getRevision() , nodeType.getPrefix(), e.getQName().getLocalName())); usnb.setExtensionDefinition(e); break; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ParserListenerUtils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ParserListenerUtils.java index 51d7e3120b..0766b781ab 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ParserListenerUtils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ParserListenerUtils.java @@ -1024,8 +1024,10 @@ public final class ParserListenerUtils { return result; } + } else { + unknownType.setReferenceOnly(true); } - + return unknownType.build(); } diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangParserWithContextTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangParserWithContextTest.java index 1ffe85365b..4cab8d8da6 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangParserWithContextTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/YangParserWithContextTest.java @@ -316,8 +316,8 @@ public class YangParserWithContextTest { UnknownSchemaNode un = unknownNodes.get(0); QName unType = un.getNodeType(); - assertEquals(URI.create("urn:simple.demo.test3"), unType.getNamespace()); - assertEquals(simpleDateFormat.parse("2013-06-18"), unType.getRevision()); + assertEquals(URI.create("urn:custom.types.demo"), unType.getNamespace()); + assertEquals(simpleDateFormat.parse("2012-04-16"), unType.getRevision()); assertEquals("custom", unType.getPrefix()); assertEquals("mountpoint", unType.getLocalName()); assertEquals("point", un.getNodeParameter());