X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=yang%2Fyang-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Fstmt%2Frfc6020%2Feffective%2FAbstractEffectiveModule.java;h=7ae2adc5528caf70ae20e5f74c589ff8d31bde54;hb=fa1ed213acc06358d9b759fa871e2b360605734e;hp=883b54cd5c5b9432dac4b11dcbc887919fc117c5;hpb=0d77417cb1aab5cacac7503052eb0ca8faacc01e;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveModule.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveModule.java index 883b54cd5c..7ae2adc552 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveModule.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveModule.java @@ -20,10 +20,13 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; +import javax.annotation.Nonnull; import org.opendaylight.yangtools.concepts.Immutable; +import org.opendaylight.yangtools.concepts.SemVer; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil; +import org.opendaylight.yangtools.yang.common.YangVersion; import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.Deviation; @@ -42,7 +45,6 @@ import org.opendaylight.yangtools.yang.model.api.UsesNode; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement; -import org.opendaylight.yangtools.yang.model.util.ModuleImportImpl; import org.opendaylight.yangtools.yang.parser.spi.SubmoduleNamespace; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable; @@ -56,7 +58,7 @@ abstract class AbstractEffectiveModule> exte private final String name; private final String sourcePath; private final String prefix; - private final String yangVersion; + private final YangVersion yangVersion; private final String organization; private final String contact; private final Set imports; @@ -74,6 +76,7 @@ abstract class AbstractEffectiveModule> exte private final Set uses; private final Set> typeDefinitions; private final Set publicChildNodes; + private final SemVer semanticVersion; AbstractEffectiveModule(final StmtContext> ctx) { super(ctx); @@ -84,7 +87,10 @@ abstract class AbstractEffectiveModule> exte this.prefix = (prefixStmt == null) ? null : prefixStmt.argument(); YangVersionEffectiveStatementImpl yangVersionStmt = firstEffective(YangVersionEffectiveStatementImpl.class); - this.yangVersion = (yangVersionStmt == null) ? "1" : yangVersionStmt.argument(); + this.yangVersion = (yangVersionStmt == null) ? YangVersion.VERSION_1 : yangVersionStmt.argument(); + + SemanticVersionEffectiveStatementImpl semanticVersionStmt = firstEffective(SemanticVersionEffectiveStatementImpl.class); + this.semanticVersion = (semanticVersionStmt == null) ? DEFAULT_SEMANTIC_VERSION : semanticVersionStmt.argument(); OrganizationEffectiveStatementImpl organizationStmt = firstEffective(OrganizationEffectiveStatementImpl.class); this.organization = (organizationStmt == null) ? null : organizationStmt.argument(); @@ -172,10 +178,7 @@ abstract class AbstractEffectiveModule> exte featuresInit.add((FeatureDefinition) effectiveStatement); } if (effectiveStatement instanceof ExtensionEffectiveStatementImpl) { - ExtensionEffectiveStatementImpl extensionDefinition = (ExtensionEffectiveStatementImpl) effectiveStatement; - extensionDefinition.initUnknownSchemaNodes(); - extensionNodesInit - .add(extensionDefinition); + extensionNodesInit.add((ExtensionEffectiveStatementImpl) effectiveStatement); } if (effectiveStatement instanceof DataSchemaNode) { DataSchemaNode dataSchemaNode = (DataSchemaNode) effectiveStatement; @@ -215,7 +218,11 @@ abstract class AbstractEffectiveModule> exte this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); this.augmentations = ImmutableSet.copyOf(augmentationsInit); - this.imports = ImmutableSet.copyOf(resolveModuleImports(importsInit, ctx)); + if (ctx.isEnabledSemanticVersioning()) { + this.imports = ImmutableSet.copyOf(importsInit); + } else { + this.imports = ImmutableSet.copyOf(resolveModuleImports(importsInit, ctx)); + } this.notifications = ImmutableSet.copyOf(notificationsInit); this.rpcs = ImmutableSet.copyOf(rpcsInit); this.deviations = ImmutableSet.copyOf(deviationsInit); @@ -233,15 +240,13 @@ abstract class AbstractEffectiveModule> exte private static Set resolveModuleImports(final Set importsInit, final StmtContext, ? extends EffectiveStatement> ctx) { - Set resolvedModuleImports = new LinkedHashSet<>(); + final Set resolvedModuleImports = new LinkedHashSet<>(); for (ModuleImport moduleImport : importsInit) { if (moduleImport.getRevision().equals(SimpleDateFormatUtil.DEFAULT_DATE_IMP)) { - QNameModule impModuleQName = Utils.getModuleQNameByPrefix(ctx, moduleImport.getPrefix()); - if (!impModuleQName.getRevision().equals(SimpleDateFormatUtil.DEFAULT_DATE_REV)) { - ModuleImport resolvedModuleImport = new ModuleImportImpl(moduleImport.getModuleName(), - impModuleQName.getRevision(), moduleImport.getPrefix()); - resolvedModuleImports.add(resolvedModuleImport); - } + final QNameModule impModuleQName = Utils.getModuleQNameByPrefix(ctx, moduleImport.getPrefix()); + final ModuleImport resolvedModuleImport = new ModuleImportImpl(moduleImport.getModuleName(), + impModuleQName.getRevision(), moduleImport.getPrefix()); + resolvedModuleImports.add(resolvedModuleImport); } else { resolvedModuleImports.add(moduleImport); } @@ -281,7 +286,7 @@ abstract class AbstractEffectiveModule> exte @Override public String getYangVersion() { - return yangVersion; + return yangVersion.toCanonicalString(); } @Override @@ -339,6 +344,7 @@ abstract class AbstractEffectiveModule> exte return identities; } + @Nonnull @Override public List getUnknownSchemaNodes() { return unknownNodes; @@ -367,31 +373,24 @@ abstract class AbstractEffectiveModule> exte } @Override - public final DataSchemaNode getDataChildByName(final String name) { - for (DataSchemaNode node : childNodes.values()) { - if (node.getQName().getLocalName().equals(name)) { - return node; - } - } - return null; + public Set getUses() { + return uses; } @Override - public Set getUses() { - return uses; + public SemVer getSemanticVersion() { + return semanticVersion; } @Override public String toString() { - StringBuilder sb = new StringBuilder(this.getClass().getSimpleName()); - sb.append("["); - sb.append("name=").append(name); - sb.append(", namespace=").append(getNamespace()); - sb.append(", revision=").append(getRevision()); - sb.append(", prefix=").append(prefix); - sb.append(", yangVersion=").append(yangVersion); - sb.append("]"); - return sb.toString(); + return this.getClass().getSimpleName() + "[" + + "name=" + name + + ", namespace=" + getNamespace() + + ", revision=" + getRevision() + + ", prefix=" + prefix + + ", yangVersion=" + yangVersion + + "]"; } }