X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-model-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fmodel%2Fapi%2Fstmt%2FTypeStatement.java;h=d419d880dc8f9a4ecfd8a7eb7599fa159bc71a19;hb=9738a742a50df99c9f3fc3ac16a5d65a63d77a10;hp=0277f124677dd5091e0285df5d8a6981ccc773da;hpb=eaeedd7c54381a24c89fb0d231b2178801bbed6a;p=yangtools.git diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypeStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypeStatement.java index 0277f12467..d419d880dc 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypeStatement.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypeStatement.java @@ -8,47 +8,62 @@ package org.opendaylight.yangtools.yang.model.api.stmt; import java.util.Collection; +import java.util.Optional; import javax.annotation.Nonnull; import javax.annotation.Nullable; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; @Rfc6020AbnfRule("type-stmt") public interface TypeStatement extends DeclaredStatement { - - @Nonnull String getName(); + default @Nonnull String getName() { + return argument(); + } @Rfc6020AbnfRule("numerical-restrictions") interface NumericalRestrictions extends TypeStatement { - @Nonnull RangeStatement getRange(); + default @Nonnull RangeStatement getRange() { + return findFirstDeclaredSubstatement(RangeStatement.class).get(); + } } @Rfc6020AbnfRule("decimal64-specification") interface Decimal64Specification extends TypeStatement { - - @Nonnull FractionDigitsStatement getFractionDigits(); - - @Nullable RangeStatement getRange(); + default @Nonnull FractionDigitsStatement getFractionDigits() { + return findFirstDeclaredSubstatement(FractionDigitsStatement.class).get(); + } + + default @Nullable RangeStatement getRange() { + final Optional opt = findFirstDeclaredSubstatement(RangeStatement.class); + return opt.isPresent() ? opt.get() : null; + } } @Rfc6020AbnfRule("string-restrictions") interface StringRestrictions extends TypeStatement { - - @Nullable LengthStatement getLength(); - - @Nonnull Collection getPatterns(); + default @Nullable LengthStatement getLength() { + final Optional opt = findFirstDeclaredSubstatement(LengthStatement.class); + return opt.isPresent() ? opt.get() : null; + } + + default @Nonnull Collection getPatterns() { + return declaredSubstatements(PatternStatement.class); + } } @Rfc6020AbnfRule("enum-specification") interface EnumSpecification extends TypeStatement { - @Nonnull Collection getEnums(); + default @Nonnull Collection getEnums() { + return declaredSubstatements(EnumStatement.class); + } } @Rfc6020AbnfRule("leafref-specification") interface LeafrefSpecification extends TypeStatement { - - @Nonnull PathStatement getPath(); + default @Nonnull PathStatement getPath() { + return findFirstDeclaredSubstatement(PathStatement.class).get(); + } /** * Return require-instance statement child, if present. For RFC6020 semantics, this method always returns @@ -56,13 +71,26 @@ public interface TypeStatement extends DeclaredStatement { * * @return require-instance statement, if present. */ - @Nullable RequireInstanceStatement getRequireInstance(); + default @Nullable RequireInstanceStatement getRequireInstance() { + final Optional opt = + findFirstDeclaredSubstatement(RequireInstanceStatement.class); + return opt.isPresent() ? opt.get() : null; + } } @Rfc6020AbnfRule("instanceidentifier-specification") interface InstanceIdentifierSpecification extends TypeStatement { - - @Nullable RequireInstanceStatement getRequireInstance(); + /** + * Return require-instance statement child, if present. For RFC6020 semantics, this method always returns + * null. + * + * @return require-instance statement, if present. + */ + default @Nullable RequireInstanceStatement getRequireInstance() { + final Optional opt = + findFirstDeclaredSubstatement(RequireInstanceStatement.class); + return opt.isPresent() ? opt.get() : null; + } } @Rfc6020AbnfRule("identityref-specification") @@ -73,24 +101,29 @@ public interface TypeStatement extends DeclaredStatement { * @return collection of base statements (in YANG 1.1 models) or a collection containing just one base * statement (in YANG 1.0 models) */ - @Nonnull Collection getBases(); + default @Nonnull Collection getBases() { + return declaredSubstatements(BaseStatement.class); + } } @Rfc6020AbnfRule("bits-specification") interface BitsSpecification extends TypeStatement { - - @Nonnull Collection getBits(); + default @Nonnull Collection getBits() { + return declaredSubstatements(BitStatement.class); + } } @Rfc6020AbnfRule("union-specification") interface UnionSpecification extends TypeStatement { - - @Nonnull Collection getTypes(); + default @Nonnull Collection getTypes() { + return declaredSubstatements(TypeStatement.class); + } } @Rfc6020AbnfRule("binary-specification") interface BinarySpecification extends TypeStatement { - - @Nullable LengthStatement getLength(); + default @Nonnull Collection getLength() { + return declaredSubstatements(LengthStatement.class); + } } }