TypeStatement takes a QName argument 63/95363/3
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 25 Feb 2021 18:56:29 +0000 (19:56 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 25 Feb 2021 21:31:27 +0000 (22:31 +0100)
commitda2c5f0abfe5eb59d4e507f5da2485e78ee030b9
treed99b5df72874d25a070113320c8ac50001f06a26
parent5efd2c346280e705c7bc14d8fa503dc7c68b0089
TypeStatement takes a QName argument

YANG 'type' statement has effective semantics attached to the
namespace where it is defined. These need to be captured into a
correct QName, so that users trying to infere on top of
TypeEffectiveStatement do not need to deal with interpreting
the value.

We even make it exceedingly difficult, as the statements have an
'exact replica' policy, hence the argument namespace is no way
related to parent namespace.

Change argument mapping of 'type' from String to QName. Introduce
the corresponding EffectiveStatementNamespace as well.

This changes the behavior of nested union typedefinitions, where
we would be confused as to the nested base type's namespace: since
it is a plain reference, it has to point to the YANG namespace,
not the model's.

JIRA: YANGTOOLS-1117
Change-Id: Ib44cb2796ba11de4a20d86c382d25e753c61279e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
73 files changed:
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/TypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypeEffectiveStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypeStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypedefEffectiveStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypedefNamespace.java [new file with mode: 0644]
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/BinaryTypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/BitsTypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/BooleanTypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/DecimalTypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/EmptyTypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/EnumTypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/IdentityrefTypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/InstanceIdentifierTypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int16TypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int32TypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int64TypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Int8TypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/LeafrefTypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/StringTypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/TypeDefinitions.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint16TypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint32TypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint64TypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/Uint8TypeDefinition.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/UnionTypeDefinition.java
yang/yang-model-ri/src/main/java/module-info.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/DeclaredStatements.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/decl/EmptyTypeStatement.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/decl/RegularTypeStatement.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/TypedefEffectiveStatementImpl.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseBinaryType.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseBooleanType.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseEmptyType.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseInstanceIdentifierType.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseInt16Type.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseInt32Type.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseInt64Type.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseInt8Type.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseStringType.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseUint16Type.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseUint32Type.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseUint64Type.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseUint8Type.java
yang/yang-model-ri/src/test/java/org/opendaylight/yangtools/yang/model/ri/type/BinaryTypeTest.java
yang/yang-model-ri/src/test/java/org/opendaylight/yangtools/yang/model/ri/type/BooleanTypeTest.java
yang/yang-model-ri/src/test/java/org/opendaylight/yangtools/yang/model/ri/type/EmptyTypeTest.java
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReactorStmtCtx.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractIdentityRefSpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractLeafrefSpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractTypeStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractTypeSupport.java [new file with mode: 0644]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BitsSpecificationImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BitsSpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BuiltinEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BuiltinTypeStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/Decimal64SpecificationImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/Decimal64SpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/EmptyIdentifierSpecification.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/EnumSpecificationImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/EnumSpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/IdentityRefSpecificationImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/IdentityRefSpecificationRFC7950Support.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/IdentityrefSpecificationRFC7950Support.java with 93% similarity]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/InstanceIdentifierSpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/LeafrefSpecificationImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/RegularInstanceIdentifierSpecification.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/TypeEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/TypeStatementRFC7950Support.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/UnionSpecificationImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/UnionSpecificationSupport.java
yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/AugmentTest.java
yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/DeclaredStatementsTest.java
yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/TypedefConstraintsTest.java
yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserTest.java