X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-rfc7950%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Frfc7950%2Fstmt%2Fmodule%2FModuleEffectiveStatementImpl.java;h=9e4df502fb8f94efb002813a715525f3ec0505d3;hb=68e44f106cc8b3ba8e2354f3dfeb3770b868b25a;hp=6a0dcc8187e4170163fe3a60b8d5bd773fee136b;hpb=a9eef954ddbe2d13b1fca4826ecb574d4f12e542;p=yangtools.git diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleEffectiveStatementImpl.java index 6a0dcc8187..9e4df502fb 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleEffectiveStatementImpl.java @@ -11,15 +11,15 @@ import static com.google.common.base.Verify.verifyNotNull; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Maps; import java.util.Map; import java.util.Map.Entry; -import java.util.Objects; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; -import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; +import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace; import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionEffectiveStatementNamespace; @@ -46,18 +46,20 @@ import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleQName; final class ModuleEffectiveStatementImpl extends AbstractEffectiveModule implements ModuleEffectiveStatement { - private final Map nameToSubmodule; - private final Map qnameToExtension; - private final Map qnameToFeature; - private final Map qnameToIdentity; - private final Map prefixToModule; - private final Map namespaceToPrefix; + private final ImmutableMap nameToSubmodule; + private final ImmutableMap qnameToExtension; + private final ImmutableMap qnameToFeature; + private final ImmutableMap qnameToIdentity; + private final ImmutableMap prefixToModule; + private final ImmutableMap namespaceToPrefix; private final @NonNull QNameModule qnameModule; + private final ImmutableSet submodules; - ModuleEffectiveStatementImpl( - final StmtContext> ctx) { - super(ctx); - qnameModule = verifyNotNull(ctx.getFromNamespace(ModuleCtxToModuleQName.class, ctx)); + private ModuleEffectiveStatementImpl(final @NonNull ModuleStmtContext ctx) { + super(ctx, findPrefix(ctx.delegate(), "module", ctx.getStatementArgument())); + submodules = ctx.getSubmodules(); + + qnameModule = verifyNotNull(ctx.getFromNamespace(ModuleCtxToModuleQName.class, ctx.delegate())); final String localPrefix = findFirstEffectiveSubstatementArgument(PrefixEffectiveStatement.class).get(); final Builder prefixToModuleBuilder = ImmutableMap.builder(); @@ -80,27 +82,28 @@ final class ModuleEffectiveStatementImpl extends AbstractEffectiveModule> submodules = + final Map> includedSubmodules = ctx.getAllFromCurrentStmtCtxNamespace(IncludedSubmoduleNameToModuleCtx.class); - nameToSubmodule = submodules == null ? ImmutableMap.of() - : ImmutableMap.copyOf(Maps.transformValues(submodules, + nameToSubmodule = includedSubmodules == null ? ImmutableMap.of() + : ImmutableMap.copyOf(Maps.transformValues(includedSubmodules, submodule -> (SubmoduleEffectiveStatement) submodule.buildEffective())); - final Map>> extensions = + final Map> extensions = ctx.getAllFromCurrentStmtCtxNamespace(ExtensionNamespace.class); qnameToExtension = extensions == null ? ImmutableMap.of() - : ImmutableMap.copyOf(Maps.transformValues(extensions, - stmt -> (ExtensionEffectiveStatement) stmt.buildEffective())); - final Map>> features = + : ImmutableMap.copyOf(Maps.transformValues(extensions, StmtContext::buildEffective)); + final Map> features = ctx.getAllFromCurrentStmtCtxNamespace(FeatureNamespace.class); qnameToFeature = features == null ? ImmutableMap.of() - : ImmutableMap.copyOf(Maps.transformValues(features, - stmt -> (FeatureEffectiveStatement) stmt.buildEffective())); - final Map>> identities = + : ImmutableMap.copyOf(Maps.transformValues(features, StmtContext::buildEffective)); + final Map> identities = ctx.getAllFromCurrentStmtCtxNamespace(IdentityNamespace.class); qnameToIdentity = identities == null ? ImmutableMap.of() - : ImmutableMap.copyOf(Maps.transformValues(identities, - stmt -> (IdentityEffectiveStatement) stmt.buildEffective())); + : ImmutableMap.copyOf(Maps.transformValues(identities, StmtContext::buildEffective)); + } + + ModuleEffectiveStatementImpl(final StmtContext ctx) { + this(ModuleStmtContext.create(ctx)); } @Override @@ -113,6 +116,11 @@ final class ModuleEffectiveStatementImpl extends AbstractEffectiveModule getSubmodules() { + return submodules; + } + @Override @SuppressWarnings("unchecked") public > Optional> getNamespaceContents( @@ -137,35 +145,4 @@ final class ModuleEffectiveStatementImpl extends AbstractEffectiveModule