From: Robert Varga Date: Thu, 8 Jul 2021 13:18:46 +0000 (+0200) Subject: Remove SchemaNode.getPath() X-Git-Tag: v8.0.0~257 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=45a4c4183b924cd36adf31210eef11be756ba4ba;p=yangtools.git Remove SchemaNode.getPath() SchemaPath is costing us almost 20% of retained EffectiveModelContext memory. This facility is deprecated with precious few remaining users, convert all users and remove everything related to the SchemaNode/SchemaPath link. This saves additional 0/8/8/0 bytes from InferredStatementContext. JIRA: YANGTOOLS-1066 Change-Id: I0034b19a754f544187341f757f60a1fe25cda191 Signed-off-by: Robert Varga --- diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractAsContainer.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractAsContainer.java index 5aff91f2c8..1fcdd5c560 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractAsContainer.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractAsContainer.java @@ -18,7 +18,6 @@ import org.opendaylight.yangtools.yang.model.api.ContainerLike; import org.opendaylight.yangtools.yang.model.api.MustDefinition; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.UsesNode; import org.opendaylight.yangtools.yang.xpath.api.YangXPathExpression.QualifiedBound; @@ -47,12 +46,6 @@ abstract class AbstractAsContainer extends ForwardingObject implements Container return delegate().getQName(); } - @Override - @Deprecated - public final SchemaPath getPath() { - return delegate().getPath(); - } - @Deprecated @Override public final boolean isAugmenting() { diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ContainerSchemaNodes.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ContainerSchemaNodes.java index dcc87fbcbb..0dd693a4a7 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ContainerSchemaNodes.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ContainerSchemaNodes.java @@ -29,7 +29,6 @@ import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UsesNode; @@ -84,12 +83,6 @@ public final class ContainerSchemaNodes { return schemaNode.getQName(); } - @Override - @Deprecated - public SchemaPath getPath() { - return schemaNode.getPath(); - } - @Override public Optional getDescription() { return schemaNode.getDescription(); diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaContext.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaContext.java index 89774deb0d..37e120753f 100644 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaContext.java +++ b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaContext.java @@ -262,12 +262,6 @@ public interface SchemaContext extends ContainerLike, Immutable { return NAME; } - @Override - @Deprecated - default SchemaPath getPath() { - return SchemaPath.ROOT; - } - @Override @Deprecated default Status getStatus() { diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaNode.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaNode.java index d4f70a1efe..9ba302f2f9 100644 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaNode.java +++ b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaNode.java @@ -20,31 +20,4 @@ public interface SchemaNode extends DocumentedNode.WithStatus { * @return QName with the name of the schema node */ @NonNull QName getQName(); - - /** - * Returns the schema path of the instance of the type {@code SchemaNode}. - * - *

- * The default implementation throws an {@link UnsupportedOperationException}. - * - * @return schema path of the schema node - * @throws UnsupportedOperationException when the implementation does not support per-node unique paths - * @deprecated The idea of identifying SchemaNodes through a global path does not work. There are two problems: - *

    - *
  • SchemaPath does not work because it does not discern namespaces, i.e. we do not known whether - * the {@code QName} refers to a {@code grouping}, a {@code typedef} or a {@code container}. - *
  • - *
  • Such a path needs to be maintained by each SchemaNode and requires us to instantiate each - * effective statement as a separate object (because {@link #getPath()} is effectively an - * identity within a given {@link EffectiveModelContext}. - *
  • - *
- * An alternative method of exchanging pointers to schema nodes (well, statements, really), exists in - * the form of {@link EffectiveStatementInference} and its ecosystem. This method is scheduled for - * removal in the next major release. - */ - @Deprecated(forRemoval = true) - default @NonNull SchemaPath getPath() { - return SchemaNodeDefaults.throwUnsupported(this); - } } diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaNodeDefaults.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaNodeDefaults.java deleted file mode 100644 index c88c835216..0000000000 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaNodeDefaults.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.model.api; - -import static com.google.common.base.Verify.verifyNotNull; - -import com.google.common.annotations.Beta; -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.concepts.Immutable; -import org.opendaylight.yangtools.yang.common.QName; - -@Beta -@NonNullByDefault -public final class SchemaNodeDefaults { - private SchemaNodeDefaults() { - // Hidden on purpose - } - - /** - * Report unsupported {@link SchemaNode#getPath()} implementation. This method is guaranteed to throw an - * {@link UnsupportedOperationException}. - * - * @param impl {@code this} object of invoking implementation - * @return Nothing - * @throws NullPointerException if {@code impl} is null - * @throws UnsupportedOperationException always - * @see SchemaNode#getPath() - */ - // FIXME: 8.0.0: consider deprecating this method - public static SchemaPath throwUnsupported(final Object impl) { - throw new UnsupportedOperationException(impl.getClass() + " does not support SchemaNode.getPath()"); - } - - /** - * Report unsupported {@link SchemaNode#getPath()} implementation if provided path is null. - * - * @param impl {@code this} object of invoking implementation - * @param path A schema path - * @return {@code path} if non-null - * @throws NullPointerException if {@code impl} is null - * @throws UnsupportedOperationException if @{code path} is null - * @see SchemaNode#getPath() - */ - // FIXME: 8.0.0: consider deprecating this method - public static SchemaPath throwUnsupportedIfNull(final Object impl, final @Nullable SchemaPath path) { - return path != null ? path : throwUnsupported(impl); - } - - /** - * Extract {@link QName} from a path object. - * - * @param path Path handle - * @return Extracted QName - * @throws NullPointerException if {@code path} is null - * @throws IllegalArgumentException if {@code path} is not supported - */ - // FIXME: 8.0.0: consider deprecating this method - public static QName extractQName(final Immutable path) { - if (path instanceof QName) { - return (QName) path; - } else if (path instanceof SchemaPath) { - return verifyNotNull(((SchemaPath) path).getLastComponent()); - } else { - throw new IllegalArgumentException("Unhandled object " + path); - } - } - - /** - * Extract {@link SchemaPath} from a path object. - * - * @param impl Implementation object - * @param path Path handle - * @return Extracted SchemaPath - * @throws UnsupportedOperationException if {@code path} does not hold a SchemaPath - */ - // FIXME: 8.0.0: consider deprecating this method - public static SchemaPath extractPath(final Object impl, final Immutable path) { - return path instanceof SchemaPath ? (SchemaPath) path : SchemaNodeDefaults.throwUnsupported(impl); - } -} diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/EffectiveStatements.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/EffectiveStatements.java index 70510c3631..2911fd3503 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/EffectiveStatements.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/EffectiveStatements.java @@ -15,7 +15,6 @@ import com.google.common.collect.ImmutableSet; import java.util.Set; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode; @@ -26,7 +25,6 @@ import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ActionEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ActionStatement; @@ -280,56 +278,56 @@ public final class EffectiveStatements { // Hidden on purpose } - public static ActionEffectiveStatement copyAction(final ActionEffectiveStatement original, final Immutable path, + public static ActionEffectiveStatement copyAction(final ActionEffectiveStatement original, final QName argument, final int flags) { checkArgument(original instanceof ActionEffectiveStatementImpl, "Unsupported original %s", original); - return new ActionEffectiveStatementImpl((ActionEffectiveStatementImpl) original, path, flags); + return new ActionEffectiveStatementImpl((ActionEffectiveStatementImpl) original, argument, flags); } - public static ActionEffectiveStatement createAction(final ActionStatement declared, final Immutable path, + public static ActionEffectiveStatement createAction(final ActionStatement declared, final QName argument, final int flags, final ImmutableList> substatements) throws SubstatementIndexingException { - return new ActionEffectiveStatementImpl(declared, path, flags, substatements); + return new ActionEffectiveStatementImpl(declared, argument, flags, substatements); } - public static AnydataEffectiveStatement copyAnydata(final AnydataEffectiveStatement original, final Immutable path, + public static AnydataEffectiveStatement copyAnydata(final AnydataEffectiveStatement original, final QName argument, final int flags, final @Nullable AnydataSchemaNode newOriginal) { if (original instanceof RegularAnydataEffectiveStatement) { - return new RegularAnydataEffectiveStatement((RegularAnydataEffectiveStatement) original, path, flags, + return new RegularAnydataEffectiveStatement((RegularAnydataEffectiveStatement) original, argument, flags, newOriginal); } else if (original instanceof EmptyAnydataEffectiveStatement) { - return new EmptyAnydataEffectiveStatement((EmptyAnydataEffectiveStatement) original, path, flags, + return new EmptyAnydataEffectiveStatement((EmptyAnydataEffectiveStatement) original, argument, flags, newOriginal); } else { throw new IllegalArgumentException("Unsupported original " + original); } } - public static AnydataEffectiveStatement createAnydata(final AnydataStatement declared, final Immutable path, + public static AnydataEffectiveStatement createAnydata(final AnydataStatement declared, final QName argument, final int flags, final ImmutableList> substatements, final @Nullable AnydataSchemaNode original) { - return substatements.isEmpty() ? new EmptyAnydataEffectiveStatement(declared, path, flags, original) - : new RegularAnydataEffectiveStatement(declared, path, flags, original, substatements); + return substatements.isEmpty() ? new EmptyAnydataEffectiveStatement(declared, argument, flags, original) + : new RegularAnydataEffectiveStatement(declared, argument, flags, original, substatements); } - public static AnyxmlEffectiveStatement copyAnyxml(final AnyxmlEffectiveStatement original, final Immutable path, + public static AnyxmlEffectiveStatement copyAnyxml(final AnyxmlEffectiveStatement original, final QName argument, final int flags, final @Nullable AnyxmlSchemaNode newOriginal) { if (original instanceof RegularAnyxmlEffectiveStatement) { - return new RegularAnyxmlEffectiveStatement((RegularAnyxmlEffectiveStatement) original, path, flags, + return new RegularAnyxmlEffectiveStatement((RegularAnyxmlEffectiveStatement) original, argument, flags, newOriginal); } else if (original instanceof EmptyAnyxmlEffectiveStatement) { - return new EmptyAnyxmlEffectiveStatement((EmptyAnyxmlEffectiveStatement) original, path, flags, + return new EmptyAnyxmlEffectiveStatement((EmptyAnyxmlEffectiveStatement) original, argument, flags, newOriginal); } else { throw new IllegalArgumentException("Unsupported original " + original); } } - public static AnyxmlEffectiveStatement createAnyxml(final AnyxmlStatement declared, final Immutable path, + public static AnyxmlEffectiveStatement createAnyxml(final AnyxmlStatement declared, final QName argument, final int flags, final ImmutableList> substatements, final @Nullable AnyxmlSchemaNode original) { - return substatements.isEmpty() ? new EmptyAnyxmlEffectiveStatement(declared, path, flags, original) - : new RegularAnyxmlEffectiveStatement(declared, path, flags, original, substatements); + return substatements.isEmpty() ? new EmptyAnyxmlEffectiveStatement(declared, argument, flags, original) + : new RegularAnyxmlEffectiveStatement(declared, argument, flags, original, substatements); } public static ArgumentEffectiveStatement createArgument(final ArgumentStatement declared, @@ -363,41 +361,41 @@ public final class EffectiveStatements { : new RegularBitEffectiveStatement(declared, substatements); } - public static CaseEffectiveStatement copyCase(final CaseEffectiveStatement original, - final Immutable path, final int flags, final @Nullable CaseSchemaNode newOriginal) { + public static CaseEffectiveStatement copyCase(final CaseEffectiveStatement original, final QName argument, + final int flags, final @Nullable CaseSchemaNode newOriginal) { if (original instanceof DeclaredCaseEffectiveStatement) { - return new DeclaredCaseEffectiveStatement((DeclaredCaseEffectiveStatement) original, path, flags, + return new DeclaredCaseEffectiveStatement((DeclaredCaseEffectiveStatement) original, argument, flags, newOriginal); } else if (original instanceof UndeclaredCaseEffectiveStatement) { - return new UndeclaredCaseEffectiveStatement((UndeclaredCaseEffectiveStatement) original, path, flags, + return new UndeclaredCaseEffectiveStatement((UndeclaredCaseEffectiveStatement) original, argument, flags, newOriginal); } else { throw new IllegalArgumentException("Unsupported origin " + original); } } - public static CaseEffectiveStatement createCase(final Immutable path, - final int flags, final ImmutableList> substatements, - final @Nullable CaseSchemaNode original) { - return new UndeclaredCaseEffectiveStatement(substatements, path, flags, original); + public static CaseEffectiveStatement createCase(final QName argument, final int flags, + final ImmutableList> substatements, + final @Nullable CaseSchemaNode original) { + return new UndeclaredCaseEffectiveStatement(substatements, argument, flags, original); } - public static CaseEffectiveStatement createCase(final CaseStatement declared, final Immutable path, + public static CaseEffectiveStatement createCase(final CaseStatement declared, final QName argument, final int flags, final ImmutableList> substatements, final @Nullable CaseSchemaNode original) { - return new DeclaredCaseEffectiveStatement(declared, substatements, path, flags, original); + return new DeclaredCaseEffectiveStatement(declared, substatements, argument, flags, original); } public static ChoiceEffectiveStatement copyChoice(final ChoiceEffectiveStatement original, - final Immutable path, final int flags, final @Nullable ChoiceSchemaNode newOriginal) { + final QName argument, final int flags, final @Nullable ChoiceSchemaNode newOriginal) { checkArgument(original instanceof ChoiceEffectiveStatementImpl, "Unsupported original %s", original); - return new ChoiceEffectiveStatementImpl((ChoiceEffectiveStatementImpl) original, path, flags, newOriginal); + return new ChoiceEffectiveStatementImpl((ChoiceEffectiveStatementImpl) original, argument, flags, newOriginal); } - public static ChoiceEffectiveStatement createChoice(final ChoiceStatement declared, final Immutable path, + public static ChoiceEffectiveStatement createChoice(final ChoiceStatement declared, final QName argument, final int flags, final ImmutableList> substatements, final @Nullable CaseSchemaNode defaultCase, final @Nullable ChoiceSchemaNode original) { - return new ChoiceEffectiveStatementImpl(declared, substatements, path, flags, defaultCase, original); + return new ChoiceEffectiveStatementImpl(declared, substatements, argument, flags, defaultCase, original); } public static ConfigEffectiveStatement createConfig(final boolean argument) { @@ -425,15 +423,15 @@ public final class EffectiveStatements { } public static ContainerEffectiveStatement copyContainer(final ContainerEffectiveStatement original, - final Immutable path, final int flags, final @Nullable ContainerSchemaNode orig) { + final QName argument, final int flags, final @Nullable ContainerSchemaNode orig) { checkArgument(original instanceof ContainerEffectiveStatementImpl, "Unsupported original %s", original); - return new ContainerEffectiveStatementImpl((ContainerEffectiveStatementImpl) original, path, flags, orig); + return new ContainerEffectiveStatementImpl((ContainerEffectiveStatementImpl) original, argument, flags, orig); } - public static ContainerEffectiveStatement createContainer(final ContainerStatement declared, final Immutable path, + public static ContainerEffectiveStatement createContainer(final ContainerStatement declared, final QName argument, final int flags, final ImmutableList> substatements, final @Nullable ContainerSchemaNode original) { - return new ContainerEffectiveStatementImpl(declared, substatements, path, flags, original); + return new ContainerEffectiveStatementImpl(declared, substatements, argument, flags, original); } public static DefaultEffectiveStatement createDefault(final DefaultStatement declared, @@ -477,15 +475,14 @@ public final class EffectiveStatements { } public static ExtensionEffectiveStatement createExtension(final ExtensionStatement declared, - final ImmutableList> substatements, - final @Nullable SchemaPath schemaPath) { - return new ExtensionEffectiveStatementImpl(declared, substatements, schemaPath); + final ImmutableList> substatements) { + return new ExtensionEffectiveStatementImpl(declared, substatements); } - public static FeatureEffectiveStatement createFeature(final FeatureStatement declared, final Immutable path, - final int flags, final ImmutableList> substatements) { - return substatements.isEmpty() ? new EmptyFeatureEffectiveStatement(declared, path, flags) - : new RegularFeatureEffectiveStatement(declared, path, flags, substatements); + public static FeatureEffectiveStatement createFeature(final FeatureStatement declared, final int flags, + final ImmutableList> substatements) { + return substatements.isEmpty() ? new EmptyFeatureEffectiveStatement(declared, flags) + : new RegularFeatureEffectiveStatement(declared, flags, substatements); } public static FractionDigitsEffectiveStatement createFractionDigits(final FractionDigitsStatement declared) { @@ -499,9 +496,9 @@ public final class EffectiveStatements { } public static GroupingEffectiveStatement createGrouping(final GroupingStatement declared, - final ImmutableList> substatements, final Immutable path, + final ImmutableList> substatements, final QName argument, final int flags) throws SubstatementIndexingException { - return new GroupingEffectiveStatementImpl(declared, substatements, path, flags); + return new GroupingEffectiveStatementImpl(declared, substatements, argument, flags); } public static IfFeatureEffectiveStatement createIfFeature(final IfFeatureStatement declared, @@ -510,14 +507,14 @@ public final class EffectiveStatements { : new RegularIfFeatureEffectiveStatement(declared, substatements); } - public static IdentityEffectiveStatement createIdentity(final IdentityStatement declared, final Immutable path) { - return new EmptyIdentityEffectiveStatement(declared, path); + public static IdentityEffectiveStatement createIdentity(final IdentityStatement declared) { + return new EmptyIdentityEffectiveStatement(declared); } - public static IdentityEffectiveStatement createIdentity(final IdentityStatement declared, final Immutable path, - final int flags, final ImmutableList> substatements, + public static IdentityEffectiveStatement createIdentity(final IdentityStatement declared, final int flags, + final ImmutableList> substatements, final ImmutableSet baseIdentities) { - return new RegularIdentityEffectiveStatement(declared, path, flags, substatements, baseIdentities); + return new RegularIdentityEffectiveStatement(declared, flags, substatements, baseIdentities); } public static ImportEffectiveStatement createImport(final ImportStatement declared, @@ -532,27 +529,27 @@ public final class EffectiveStatements { : new RegularIncludeEffectiveStatement(declared, substatements); } - public static InputEffectiveStatement copyInput(final InputEffectiveStatement original, final Immutable path, + public static InputEffectiveStatement copyInput(final InputEffectiveStatement original, final QName argument, final int flags) { if (original instanceof DeclaredInputEffectiveStatement) { - return new DeclaredInputEffectiveStatement((DeclaredInputEffectiveStatement) original, path, flags); + return new DeclaredInputEffectiveStatement((DeclaredInputEffectiveStatement) original, argument, flags); } else if (original instanceof UndeclaredInputEffectiveStatement) { - return new UndeclaredInputEffectiveStatement((UndeclaredInputEffectiveStatement) original, path, flags); + return new UndeclaredInputEffectiveStatement((UndeclaredInputEffectiveStatement) original, argument, flags); } else { throw new IllegalArgumentException("Unsupported original " + original); } } - public static InputEffectiveStatement createInput(final Immutable path, final int flags, + public static InputEffectiveStatement createInput(final QName argument, final int flags, final ImmutableList> substatements) throws SubstatementIndexingException { - return new UndeclaredInputEffectiveStatement(substatements, path, flags); + return new UndeclaredInputEffectiveStatement(substatements, argument, flags); } - public static InputEffectiveStatement createInput(final InputStatement declared, final Immutable path, + public static InputEffectiveStatement createInput(final InputStatement declared, final QName argument, final int flags, final ImmutableList> substatements) throws SubstatementIndexingException { - return new DeclaredInputEffectiveStatement(declared, substatements, path, flags); + return new DeclaredInputEffectiveStatement(declared, substatements, argument, flags); } public static KeyEffectiveStatement createKey(final KeyStatement declared, final Set argument, @@ -565,17 +562,18 @@ public final class EffectiveStatements { : new RegularForeignKeyEffectiveStatement(declared, argument, substatements); } - public static LeafEffectiveStatement copyLeaf(final LeafEffectiveStatement original, final Immutable path, + public static LeafEffectiveStatement copyLeaf(final LeafEffectiveStatement original, final QName argument, final int flags, final @Nullable LeafSchemaNode newOriginal) { checkArgument(original instanceof AbstractLeafEffectiveStatement, "Unsupported original %s", original); - return new RegularLeafEffectiveStatement((AbstractLeafEffectiveStatement) original, path, flags, newOriginal); + return new RegularLeafEffectiveStatement((AbstractLeafEffectiveStatement) original, argument, flags, + newOriginal); } - public static LeafEffectiveStatement createLeaf(final LeafStatement declared, final Immutable path, - final int flags, final ImmutableList> substatements, + public static LeafEffectiveStatement createLeaf(final LeafStatement declared, final QName argument, final int flags, + final ImmutableList> substatements, final @Nullable LeafSchemaNode original) throws SubstatementIndexingException { - return original == null ? new EmptyLeafEffectiveStatement(declared, path, flags, substatements) - : new RegularLeafEffectiveStatement(declared, path, flags, substatements, original); + return original == null ? new EmptyLeafEffectiveStatement(declared, argument, flags, substatements) + : new RegularLeafEffectiveStatement(declared, argument, flags, substatements, original); } public static LengthEffectiveStatement createLength(final LengthStatement declared, @@ -629,39 +627,40 @@ public final class EffectiveStatements { } public static NotificationEffectiveStatement copyNotification(final NotificationEffectiveStatement original, - final Immutable path, final int flags) { + final QName argument, final int flags) { checkArgument(original instanceof NotificationEffectiveStatementImpl, "Unsupported original %s", original); - return new NotificationEffectiveStatementImpl((NotificationEffectiveStatementImpl) original, path, flags); + return new NotificationEffectiveStatementImpl((NotificationEffectiveStatementImpl) original, argument, flags); } public static NotificationEffectiveStatement createNotification(final NotificationStatement declared, - final Immutable path, final int flags, + final QName argument, final int flags, final ImmutableList> substatements) throws SubstatementIndexingException { - return new NotificationEffectiveStatementImpl(declared, substatements, path, flags); + return new NotificationEffectiveStatementImpl(declared, substatements, argument, flags); } - public static OutputEffectiveStatement copyOutput(final OutputEffectiveStatement original, final Immutable path, + public static OutputEffectiveStatement copyOutput(final OutputEffectiveStatement original, final QName argument, final int flags) { if (original instanceof DeclaredOutputEffectiveStatement) { - return new DeclaredOutputEffectiveStatement((DeclaredOutputEffectiveStatement) original, path, flags); + return new DeclaredOutputEffectiveStatement((DeclaredOutputEffectiveStatement) original, argument, flags); } else if (original instanceof UndeclaredOutputEffectiveStatement) { - return new UndeclaredOutputEffectiveStatement((UndeclaredOutputEffectiveStatement) original, path, flags); + return new UndeclaredOutputEffectiveStatement((UndeclaredOutputEffectiveStatement) original, argument, + flags); } else { throw new IllegalArgumentException("Unsupported original " + original); } } - public static OutputEffectiveStatement createOutput(final Immutable path, final int flags, + public static OutputEffectiveStatement createOutput(final QName argument, final int flags, final ImmutableList> substatements) throws SubstatementIndexingException { - return new UndeclaredOutputEffectiveStatement(substatements, path, flags); + return new UndeclaredOutputEffectiveStatement(substatements, argument, flags); } - public static OutputEffectiveStatement createOutput(final OutputStatement declared, final Immutable path, + public static OutputEffectiveStatement createOutput(final OutputStatement declared, final QName argument, final int flags, final ImmutableList> substatements) throws SubstatementIndexingException { - return new DeclaredOutputEffectiveStatement(declared, substatements, path, flags); + return new DeclaredOutputEffectiveStatement(declared, substatements, argument, flags); } public static OrderedByEffectiveStatement createOrderedBy(final OrderedByStatement declared) { @@ -767,9 +766,9 @@ public final class EffectiveStatements { } public static RpcEffectiveStatement createRpc(final RpcStatement declared, - final ImmutableList> substatements, final Immutable path, - final int flags) throws SubstatementIndexingException { - return new RpcEffectiveStatementImpl(declared, substatements, path, flags); + final ImmutableList> substatements, final QName argument, + final int flags) throws SubstatementIndexingException { + return new RpcEffectiveStatementImpl(declared, substatements, argument, flags); } public static StatusEffectiveStatement createStatus(final StatusStatement declared) { @@ -795,10 +794,9 @@ public final class EffectiveStatements { : new RegularStatusEffectiveStatement(declared, substatements); } - public static TypedefEffectiveStatement createTypedef(final TypedefStatement declared, - final Immutable path, final int flags, + public static TypedefEffectiveStatement createTypedef(final TypedefStatement declared, final int flags, final ImmutableList> substatements) { - return new TypedefEffectiveStatementImpl(declared, path, flags, substatements); + return new TypedefEffectiveStatementImpl(declared, flags, substatements); } public static UnitsEffectiveStatement createUnits(final UnitsStatement declared, diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractIdentityEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractIdentityEffectiveStatement.java index 42ca57a3e7..ef0d9d5337 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractIdentityEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractIdentityEffectiveStatement.java @@ -7,11 +7,7 @@ */ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff; -import static java.util.Objects.requireNonNull; - import com.google.common.base.MoreObjects; -import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode; import org.opendaylight.yangtools.yang.model.api.stmt.IdentityEffectiveStatement; @@ -20,17 +16,9 @@ import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveS import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.SchemaNodeMixin; abstract class AbstractIdentityEffectiveStatement extends DefaultArgument - implements IdentityEffectiveStatement, IdentitySchemaNode, SchemaNodeMixin { - private final @NonNull Immutable path; - - AbstractIdentityEffectiveStatement(final IdentityStatement declared, final Immutable path) { + implements IdentityEffectiveStatement, IdentitySchemaNode, SchemaNodeMixin { + AbstractIdentityEffectiveStatement(final IdentityStatement declared) { super(declared); - this.path = requireNonNull(path); - } - - @Override - public final Immutable pathObject() { - return path; } @Override @@ -40,6 +28,6 @@ abstract class AbstractIdentityEffectiveStatement extends DefaultArgument implements LeafEffectiveStatement, LeafSchemaNode, DerivableSchemaNode, - DataSchemaNodeMixin, MandatoryMixin, + DataSchemaNodeMixin, MandatoryMixin, MustConstraintMixin { private final @NonNull Object substatements; - private final @NonNull Immutable path; + private final @NonNull QName argument; private final @NonNull TypeDefinition type; private final int flags; - AbstractLeafEffectiveStatement(final LeafStatement declared, final Immutable path, final int flags, + AbstractLeafEffectiveStatement(final LeafStatement declared, final QName argument, final int flags, final ImmutableList> substatements) { super(declared); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.substatements = maskList(substatements); this.flags = flags; // TODO: lazy instantiation? this.type = buildType(); } - AbstractLeafEffectiveStatement(final AbstractLeafEffectiveStatement original, final Immutable path, + AbstractLeafEffectiveStatement(final AbstractLeafEffectiveStatement original, final QName argument, final int flags) { super(original); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.substatements = original.substatements; this.flags = flags; // FIXME: share with original? @@ -74,12 +73,7 @@ public abstract class AbstractLeafEffectiveStatement @Override public final QName argument() { - return getQName(); - } - - @Override - public final Immutable pathObject() { - return path; + return argument; } @Override diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ActionEffectiveStatementImpl.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ActionEffectiveStatementImpl.java index a638d2361f..09d9e15f34 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ActionEffectiveStatementImpl.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ActionEffectiveStatementImpl.java @@ -11,7 +11,6 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ActionDefinition; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; @@ -25,26 +24,26 @@ public final class ActionEffectiveStatementImpl extends WithSubstatements implements ActionDefinition, ActionEffectiveStatement, OperationDefinitionMixin, CopyableMixin { - private final @NonNull Immutable path; + private final @NonNull QName argument; private final int flags; - public ActionEffectiveStatementImpl(final ActionStatement declared, final Immutable path, final int flags, + public ActionEffectiveStatementImpl(final ActionStatement declared, final QName argument, final int flags, final ImmutableList> substatements) { super(declared, substatements); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; } - public ActionEffectiveStatementImpl(final ActionEffectiveStatementImpl original, final Immutable path, + public ActionEffectiveStatementImpl(final ActionEffectiveStatementImpl original, final QName argument, final int flags) { super(original); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; } @Override - public Immutable pathObject() { - return path; + public QName argument() { + return argument; } @Override diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/CaseEffectiveStatementMixin.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/CaseEffectiveStatementMixin.java index e7d28980c1..206e34e0fd 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/CaseEffectiveStatementMixin.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/CaseEffectiveStatementMixin.java @@ -7,7 +7,6 @@ */ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff; -import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; @@ -20,12 +19,11 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.D import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.MustConstraintMixin; interface CaseEffectiveStatementMixin extends CaseEffectiveStatement, CaseSchemaNode, DerivableSchemaNode, - DataSchemaNodeMixin, DocumentedNodeMixin.WithStatus, + DataSchemaNodeMixin, DocumentedNodeMixin.WithStatus, DataNodeContainerMixin, MustConstraintMixin, AugmentationTargetMixin { - @Override - default @NonNull QName argument() { - return getQName(); + default QName getQName() { + return argument(); } } diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ChoiceEffectiveStatementImpl.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ChoiceEffectiveStatementImpl.java index 27b143ee32..d0d2b51401 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ChoiceEffectiveStatementImpl.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ChoiceEffectiveStatementImpl.java @@ -14,7 +14,6 @@ import java.util.Collection; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; @@ -31,41 +30,35 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.M public final class ChoiceEffectiveStatementImpl extends WithSubstatements implements ChoiceEffectiveStatement, ChoiceSchemaNode, DerivableSchemaNode, - DataSchemaNodeMixin, AugmentationTargetMixin, + DataSchemaNodeMixin, AugmentationTargetMixin, MandatoryMixin { private final CaseSchemaNode defaultCase; private final ChoiceSchemaNode original; - private final @NonNull Immutable path; + private final @NonNull QName argument; private final int flags; public ChoiceEffectiveStatementImpl(final ChoiceStatement declared, - final ImmutableList> substatements, final Immutable path, - final int flags, final @Nullable CaseSchemaNode defaultCase, - final @Nullable ChoiceSchemaNode original) { + final ImmutableList> substatements, final QName argument, + final int flags, final @Nullable CaseSchemaNode defaultCase, final @Nullable ChoiceSchemaNode original) { super(declared, substatements); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; this.defaultCase = defaultCase; this.original = original; } - public ChoiceEffectiveStatementImpl(final ChoiceEffectiveStatementImpl origEffective, final Immutable path, + public ChoiceEffectiveStatementImpl(final ChoiceEffectiveStatementImpl origEffective, final QName argument, final int flags, final ChoiceSchemaNode newOriginal) { super(origEffective); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; this.defaultCase = origEffective.defaultCase; this.original = newOriginal; } @Override - public @NonNull QName argument() { - return getQName(); - } - - @Override - public Immutable pathObject() { - return path; + public QName argument() { + return argument; } @Override @@ -101,6 +94,6 @@ public final class ChoiceEffectiveStatementImpl @Override public String toString() { - return ChoiceEffectiveStatementImpl.class.getSimpleName() + "[" + "qname=" + getQName() + "]"; + return ChoiceEffectiveStatementImpl.class.getSimpleName() + "[" + "qname=" + argument + "]"; } } diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ContainerEffectiveStatementImpl.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ContainerEffectiveStatementImpl.java index 6efe6e670c..35b768af13 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ContainerEffectiveStatementImpl.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ContainerEffectiveStatementImpl.java @@ -13,7 +13,6 @@ import com.google.common.collect.ImmutableList; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -35,7 +34,7 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.P public final class ContainerEffectiveStatementImpl extends WithSubstatements implements ContainerEffectiveStatement, ContainerSchemaNode, DerivableSchemaNode, - DataSchemaNodeMixin, DataNodeContainerMixin, + DataSchemaNodeMixin, DataNodeContainerMixin, ActionNodeContainerMixin, ActionNodeContainerCompat, NotificationNodeContainerMixin, @@ -44,22 +43,22 @@ public final class ContainerEffectiveStatementImpl AugmentationTargetMixin { private final int flags; - private final @NonNull Immutable path; + private final @NonNull QName argument; private final @Nullable ContainerSchemaNode original; public ContainerEffectiveStatementImpl(final ContainerStatement declared, - final ImmutableList> substatements, final Immutable path, + final ImmutableList> substatements, final QName argument, final int flags, final @Nullable ContainerSchemaNode original) { super(declared, substatements); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.original = original; this.flags = flags; } - public ContainerEffectiveStatementImpl(final ContainerEffectiveStatementImpl origEffective, final Immutable path, + public ContainerEffectiveStatementImpl(final ContainerEffectiveStatementImpl origEffective, final QName argument, final int flags, final @Nullable ContainerSchemaNode original) { super(origEffective); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.original = original; this.flags = flags; } @@ -71,12 +70,7 @@ public final class ContainerEffectiveStatementImpl @Override public QName argument() { - return getQName(); - } - - @Override - public Immutable pathObject() { - return path; + return argument; } @Override @@ -101,6 +95,6 @@ public final class ContainerEffectiveStatementImpl @Override public String toString() { - return "container " + getQName().getLocalName(); + return "container " + argument.getLocalName(); } } diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredCaseEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredCaseEffectiveStatement.java index bfbefe1d5c..09665b9e4c 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredCaseEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredCaseEffectiveStatement.java @@ -13,7 +13,6 @@ import com.google.common.collect.ImmutableList; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -25,34 +24,34 @@ import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveS public final class DeclaredCaseEffectiveStatement extends WithSubstatements implements CaseEffectiveStatementMixin { private final CaseSchemaNode original; - private final @NonNull Immutable path; + private final @NonNull QName argument; private final int flags; public DeclaredCaseEffectiveStatement(final CaseStatement declared, - final ImmutableList> substatements, final Immutable path, + final ImmutableList> substatements, final QName argument, final int flags, final @Nullable CaseSchemaNode original) { super(declared, substatements); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; this.original = original; } - public DeclaredCaseEffectiveStatement(final DeclaredCaseEffectiveStatement origEffective, final Immutable path, + public DeclaredCaseEffectiveStatement(final DeclaredCaseEffectiveStatement origEffective, final QName argument, final int flags, final @Nullable CaseSchemaNode original) { super(origEffective); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; this.original = original; } @Override - public int flags() { - return flags; + public QName argument() { + return argument; } @Override - public Immutable pathObject() { - return path; + public int flags() { + return flags; } @Override @@ -72,6 +71,6 @@ public final class DeclaredCaseEffectiveStatement @Override public String toString() { - return DeclaredCaseEffectiveStatement.class.getSimpleName() + "[" + "qname=" + getQName() + "]"; + return DeclaredCaseEffectiveStatement.class.getSimpleName() + "[" + "qname=" + argument + "]"; } } diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredInputEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredInputEffectiveStatement.java index 28033deccf..b586ce7e72 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredInputEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredInputEffectiveStatement.java @@ -11,7 +11,6 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.InputSchemaNode; @@ -24,27 +23,27 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.O public final class DeclaredInputEffectiveStatement extends WithSubstatements implements InputEffectiveStatement, InputSchemaNode, OperationContainerMixin { - private final @NonNull Immutable path; + private final @NonNull QName argument; private final int flags; public DeclaredInputEffectiveStatement(final InputStatement declared, - final ImmutableList> substatements, final Immutable path, + final ImmutableList> substatements, final QName argument, final int flags) { super(declared, substatements); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; } - public DeclaredInputEffectiveStatement(final DeclaredInputEffectiveStatement original, final Immutable path, + public DeclaredInputEffectiveStatement(final DeclaredInputEffectiveStatement original, final QName argument, final int flags) { super(original); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; } @Override - public Immutable pathObject() { - return path; + public QName argument() { + return argument; } @Override diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredOutputEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredOutputEffectiveStatement.java index a9f07fa564..376d9ee1ce 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredOutputEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredOutputEffectiveStatement.java @@ -11,7 +11,6 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode; @@ -24,27 +23,27 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.O public final class DeclaredOutputEffectiveStatement extends WithSubstatements implements OutputEffectiveStatement, OutputSchemaNode, OperationContainerMixin { - private final @NonNull Immutable path; + private final @NonNull QName argument; private final int flags; public DeclaredOutputEffectiveStatement(final OutputStatement declared, - final ImmutableList> substatements, final Immutable path, + final ImmutableList> substatements, final QName argument, final int flags) { super(declared, substatements); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; } - public DeclaredOutputEffectiveStatement(final DeclaredOutputEffectiveStatement original, final Immutable path, + public DeclaredOutputEffectiveStatement(final DeclaredOutputEffectiveStatement original, final QName argument, final int flags) { super(original); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; } @Override - public Immutable pathObject() { - return path; + public QName argument() { + return argument; } @Override diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnydataEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnydataEffectiveStatement.java index 34d5f2c22a..66e7591df0 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnydataEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnydataEffectiveStatement.java @@ -13,7 +13,6 @@ import com.google.common.base.MoreObjects; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; @@ -24,29 +23,29 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.O public class EmptyAnydataEffectiveStatement extends Default implements AnydataEffectiveStatement, AnydataSchemaNode, OpaqueDataSchemaNodeMixin { - private final @NonNull Immutable path; + private final @NonNull QName argument; private final AnydataSchemaNode original; private final int flags; - public EmptyAnydataEffectiveStatement(final AnydataStatement declared, final Immutable path, final int flags, + public EmptyAnydataEffectiveStatement(final AnydataStatement declared, final QName argument, final int flags, final @Nullable AnydataSchemaNode original) { super(declared); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; this.original = original; } - public EmptyAnydataEffectiveStatement(final EmptyAnydataEffectiveStatement original, final Immutable path, + public EmptyAnydataEffectiveStatement(final EmptyAnydataEffectiveStatement original, final QName argument, final int flags, final @Nullable AnydataSchemaNode newOriginal) { super(original); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; this.original = newOriginal; } @Override - public final Immutable pathObject() { - return path; + public final QName argument() { + return argument; } @Override diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnyxmlEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnyxmlEffectiveStatement.java index d1cab699ed..bc1445df98 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnyxmlEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnyxmlEffectiveStatement.java @@ -13,7 +13,6 @@ import com.google.common.base.MoreObjects; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode; import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlEffectiveStatement; @@ -23,29 +22,29 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.O public class EmptyAnyxmlEffectiveStatement extends Default implements AnyxmlEffectiveStatement, AnyxmlSchemaNode, OpaqueDataSchemaNodeMixin { - private final @NonNull Immutable path; + private final @NonNull QName argument; private final AnyxmlSchemaNode original; private final int flags; - public EmptyAnyxmlEffectiveStatement(final AnyxmlStatement declared, final Immutable path, final int flags, + public EmptyAnyxmlEffectiveStatement(final AnyxmlStatement declared, final QName argument, final int flags, final @Nullable AnyxmlSchemaNode original) { super(declared); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; this.original = original; } - public EmptyAnyxmlEffectiveStatement(final EmptyAnyxmlEffectiveStatement original, final Immutable path, + public EmptyAnyxmlEffectiveStatement(final EmptyAnyxmlEffectiveStatement original, final QName argument, final int flags, final @Nullable AnyxmlSchemaNode newOriginal) { super(original); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; this.original = newOriginal; } @Override - public final Immutable pathObject() { - return path; + public final QName argument() { + return argument; } @Override @@ -65,6 +64,6 @@ public class EmptyAnyxmlEffectiveStatement extends Default - implements FeatureDefinition, FeatureEffectiveStatement, SchemaNodeMixin { - private final @NonNull Immutable path; +public class EmptyFeatureEffectiveStatement extends DefaultArgument + implements FeatureDefinition, FeatureEffectiveStatement, SchemaNodeMixin { private final int flags; - public EmptyFeatureEffectiveStatement(final FeatureStatement declared, final Immutable path, final int flags) { + public EmptyFeatureEffectiveStatement(final FeatureStatement declared, final int flags) { super(declared); - this.path = requireNonNull(path); this.flags = flags; } @@ -34,17 +28,6 @@ public class EmptyFeatureEffectiveStatement extends Default> substatements) { - super(declared, path, flags, substatements); - } - - EmptyLeafEffectiveStatement(final EmptyLeafEffectiveStatement original, final Immutable path, final int flags) { - super(original, path, flags); + // FIXME: this seems to imply that argument.equals(declared.argument()) and we could save a field + super(declared, argument, flags, substatements); } @Override diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ExtensionEffectiveStatementImpl.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ExtensionEffectiveStatementImpl.java index d2d3dc9c18..5c962b208c 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ExtensionEffectiveStatementImpl.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ExtensionEffectiveStatementImpl.java @@ -12,11 +12,8 @@ import static com.google.common.base.Verify.verifyNotNull; import com.google.common.collect.ImmutableList; import java.util.ArrayDeque; import java.util.Deque; -import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition; -import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ArgumentEffectiveStatement; @@ -63,14 +60,12 @@ public final class ExtensionEffectiveStatementImpl extends DefaultArgument> substatements, final SchemaPath path) { + final ImmutableList> substatements) { super(declared); this.substatements = maskList(substatements); - this.path = path; } @Override @@ -78,12 +73,6 @@ public final class ExtensionEffectiveStatementImpl extends DefaultArgument ]"; } diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/GroupingEffectiveStatementImpl.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/GroupingEffectiveStatementImpl.java index e4dcfb5df0..bd136d04d1 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/GroupingEffectiveStatementImpl.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/GroupingEffectiveStatementImpl.java @@ -11,7 +11,6 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; @@ -28,17 +27,17 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.S public final class GroupingEffectiveStatementImpl extends WithSubstatements implements GroupingDefinition, GroupingEffectiveStatement, - DataNodeContainerMixin, - SchemaNodeMixin, ActionNodeContainerMixin, + DataNodeContainerMixin, SchemaNodeMixin, + ActionNodeContainerMixin, NotificationNodeContainerMixin, AddedByUsesMixin { - private final @NonNull Immutable path; + private final @NonNull QName argument; private final int flags; public GroupingEffectiveStatementImpl(final GroupingStatement declared, - final ImmutableList> substatements, final Immutable path, + final ImmutableList> substatements, final QName argument, final int flags) { super(declared, substatements); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; } @@ -47,14 +46,9 @@ public final class GroupingEffectiveStatementImpl return flags; } - @Override - public Immutable pathObject() { - return path; - } - @Override public QName argument() { - return getQName(); + return argument; } @Override @@ -69,6 +63,6 @@ public final class GroupingEffectiveStatementImpl @Override public String toString() { - return GroupingEffectiveStatementImpl.class.getSimpleName() + "[" + "qname=" + getQName() + "]"; + return GroupingEffectiveStatementImpl.class.getSimpleName() + "[" + "qname=" + argument + "]"; } } diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/NotificationEffectiveStatementImpl.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/NotificationEffectiveStatementImpl.java index 70a5b3da2c..df37d60d27 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/NotificationEffectiveStatementImpl.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/NotificationEffectiveStatementImpl.java @@ -11,7 +11,6 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; @@ -28,31 +27,31 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.S public final class NotificationEffectiveStatementImpl extends WithSubstatements implements NotificationDefinition, NotificationEffectiveStatement, - SchemaNodeMixin, DataNodeContainerMixin, + SchemaNodeMixin, DataNodeContainerMixin, AugmentationTargetMixin, CopyableMixin, MustConstraintMixin { - private final @NonNull Immutable path; + private final @NonNull QName argument; private final int flags; public NotificationEffectiveStatementImpl(final NotificationStatement declared, - final ImmutableList> substatements, final Immutable path, + final ImmutableList> substatements, final QName argument, final int flags) { super(declared, substatements); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; } - public NotificationEffectiveStatementImpl(final NotificationEffectiveStatementImpl original, final Immutable path, + public NotificationEffectiveStatementImpl(final NotificationEffectiveStatementImpl original, final QName argument, final int flags) { super(original); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; } @Override public QName argument() { - return getQName(); + return argument; } @Override @@ -65,11 +64,6 @@ public final class NotificationEffectiveStatementImpl return flags; } - @Override - public Immutable pathObject() { - return path; - } - @Override public NotificationEffectiveStatement asEffectiveStatement() { return this; @@ -77,7 +71,6 @@ public final class NotificationEffectiveStatementImpl @Override public String toString() { - return NotificationEffectiveStatementImpl.class.getSimpleName() + "[qname=" + getQName() + ", path=" + path - + "]"; + return NotificationEffectiveStatementImpl.class.getSimpleName() + "[qname=" + argument + "]"; } } diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularAnydataEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularAnydataEffectiveStatement.java index 3d26258a27..c9d6da6282 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularAnydataEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularAnydataEffectiveStatement.java @@ -10,7 +10,7 @@ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.concepts.Immutable; +import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.AnydataStatement; @@ -21,16 +21,16 @@ import org.opendaylight.yangtools.yang.model.api.stmt.AnydataStatement; public final class RegularAnydataEffectiveStatement extends EmptyAnydataEffectiveStatement { private final @NonNull Object substatements; - public RegularAnydataEffectiveStatement(final AnydataStatement declared, final Immutable path, final int flags, + public RegularAnydataEffectiveStatement(final AnydataStatement declared, final QName argument, final int flags, final @Nullable AnydataSchemaNode original, final ImmutableList> substatements) { - super(declared, path, flags, original); + super(declared, argument, flags, original); this.substatements = maskList(substatements); } - public RegularAnydataEffectiveStatement(final RegularAnydataEffectiveStatement original, final Immutable path, + public RegularAnydataEffectiveStatement(final RegularAnydataEffectiveStatement original, final QName argument, final int flags, final @Nullable AnydataSchemaNode newOriginal) { - super(original, path, flags, newOriginal); + super(original, argument, flags, newOriginal); this.substatements = original.substatements; } diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularAnyxmlEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularAnyxmlEffectiveStatement.java index b11cb6edbc..bff540e253 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularAnyxmlEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularAnyxmlEffectiveStatement.java @@ -10,7 +10,7 @@ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.concepts.Immutable; +import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement; @@ -18,16 +18,16 @@ import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement; public final class RegularAnyxmlEffectiveStatement extends EmptyAnyxmlEffectiveStatement { private final @NonNull Object substatements; - public RegularAnyxmlEffectiveStatement(final AnyxmlStatement declared, final Immutable path, final int flags, + public RegularAnyxmlEffectiveStatement(final AnyxmlStatement declared, final QName argument, final int flags, final @Nullable AnyxmlSchemaNode original, final ImmutableList> substatements) { - super(declared, path, flags, original); + super(declared, argument, flags, original); this.substatements = maskList(substatements); } - public RegularAnyxmlEffectiveStatement(final RegularAnyxmlEffectiveStatement original, final Immutable path, + public RegularAnyxmlEffectiveStatement(final RegularAnyxmlEffectiveStatement original, final QName argument, final int flags, final @Nullable AnyxmlSchemaNode newOriginal) { - super(original, path, flags, newOriginal); + super(original, argument, flags, newOriginal); this.substatements = original.substatements; } diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularFeatureEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularFeatureEffectiveStatement.java index 2d722a15d9..d8ce4a4350 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularFeatureEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularFeatureEffectiveStatement.java @@ -9,16 +9,15 @@ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.FeatureStatement; public final class RegularFeatureEffectiveStatement extends EmptyFeatureEffectiveStatement { private final @NonNull Object substatements; - public RegularFeatureEffectiveStatement(final FeatureStatement declared, final Immutable path, final int flags, + public RegularFeatureEffectiveStatement(final FeatureStatement declared, final int flags, final ImmutableList> substatements) { - super(declared, path, flags); + super(declared, flags); this.substatements = maskList(substatements); } diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularIdentityEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularIdentityEffectiveStatement.java index be0e479fb6..627c3676d9 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularIdentityEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularIdentityEffectiveStatement.java @@ -11,7 +11,6 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import java.util.Collection; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement; @@ -21,10 +20,10 @@ public final class RegularIdentityEffectiveStatement extends AbstractIdentityEff private final @NonNull Object substatements; private final int flags; - public RegularIdentityEffectiveStatement(final IdentityStatement declared, final Immutable path, final int flags, + public RegularIdentityEffectiveStatement(final IdentityStatement declared, final int flags, final ImmutableList> substatements, final ImmutableSet baseIdentities) { - super(declared, path); + super(declared); this.flags = flags; this.substatements = maskList(substatements); this.baseIdentities = maskSet(baseIdentities); diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularLeafEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularLeafEffectiveStatement.java index 319b71a142..425d2601f4 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularLeafEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularLeafEffectiveStatement.java @@ -10,7 +10,7 @@ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff; import com.google.common.collect.ImmutableList; import java.util.Optional; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.concepts.Immutable; +import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.LeafStatement; @@ -18,15 +18,15 @@ import org.opendaylight.yangtools.yang.model.api.stmt.LeafStatement; public final class RegularLeafEffectiveStatement extends AbstractLeafEffectiveStatement { private final @Nullable LeafSchemaNode original; - public RegularLeafEffectiveStatement(final LeafStatement declared, final Immutable path, final int flags, + public RegularLeafEffectiveStatement(final LeafStatement declared, final QName argument, final int flags, final ImmutableList> substatements, final LeafSchemaNode original) { - super(declared, path, flags, substatements); + super(declared, argument, flags, substatements); this.original = original; } - public RegularLeafEffectiveStatement(final AbstractLeafEffectiveStatement originalEffective, final Immutable path, + public RegularLeafEffectiveStatement(final AbstractLeafEffectiveStatement originalEffective, final QName argument, final int flags, final LeafSchemaNode original) { - super(originalEffective, path, flags); + super(originalEffective, argument, flags); this.original = original; } diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RpcEffectiveStatementImpl.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RpcEffectiveStatementImpl.java index b63e305ed7..08504a9ace 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RpcEffectiveStatementImpl.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RpcEffectiveStatementImpl.java @@ -11,7 +11,6 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; @@ -22,20 +21,20 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.O public final class RpcEffectiveStatementImpl extends WithSubstatements implements RpcDefinition, RpcEffectiveStatement, OperationDefinitionMixin { - private final @NonNull Immutable path; + private final @NonNull QName argument; private final int flags; public RpcEffectiveStatementImpl(final RpcStatement declared, - final ImmutableList> substatements, - final Immutable path, final int flags) { + final ImmutableList> substatements, final QName argument, + final int flags) { super(declared, substatements); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; } @Override - public Immutable pathObject() { - return path; + public QName argument() { + return argument; } @Override diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/TypedefEffectiveStatementImpl.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/TypedefEffectiveStatementImpl.java index 4420629d50..b8957b3acc 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/TypedefEffectiveStatementImpl.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/TypedefEffectiveStatementImpl.java @@ -7,8 +7,6 @@ */ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff; -import static java.util.Objects.requireNonNull; - import com.google.common.collect.ImmutableList; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodHandles.Lookup; @@ -17,7 +15,6 @@ import java.util.Collection; import java.util.Map; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; @@ -35,13 +32,13 @@ import org.opendaylight.yangtools.yang.model.api.stmt.TypedefStatement; import org.opendaylight.yangtools.yang.model.api.stmt.UnitsEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.type.DerivedTypeBuilder; import org.opendaylight.yangtools.yang.model.ri.type.DerivedTypes; -import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.Default; +import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultArgument.WithSubstatements; import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.SchemaNodeMixin; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public final class TypedefEffectiveStatementImpl extends Default - implements TypedefEffectiveStatement, SchemaNodeMixin { +public final class TypedefEffectiveStatementImpl extends WithSubstatements + implements TypedefEffectiveStatement, SchemaNodeMixin { private static final Logger LOG = LoggerFactory.getLogger(TypedefEffectiveStatementImpl.class); private static final VarHandle TYPE_DEFINITION; @@ -59,8 +56,6 @@ public final class TypedefEffectiveStatementImpl extends Default> substatements) { - super(declared); - this.path = requireNonNull(path); + super(declared, substatements); this.flags = flags; - this.substatements = maskList(substatements); } @Override @@ -83,21 +76,6 @@ public final class TypedefEffectiveStatementImpl extends Default> effectiveSubstatements() { - return unmaskList(substatements); - } - @Override public TypeDefinition getTypeDefinition() { final TypeDefinition existing = (TypeDefinition) TYPE_DEFINITION.getAcquire(this); @@ -112,7 +90,7 @@ public final class TypedefEffectiveStatementImpl extends Default loadTypeDefinition() { final TypeEffectiveStatement type = findFirstEffectiveSubstatement(TypeEffectiveStatement.class).get(); - final DerivedTypeBuilder builder = DerivedTypes.derivedTypeBuilder(type.getTypeDefinition(), getQName()); + final DerivedTypeBuilder builder = DerivedTypes.derivedTypeBuilder(type.getTypeDefinition(), argument()); for (final EffectiveStatement stmt : effectiveSubstatements()) { if (stmt instanceof DefaultEffectiveStatement) { @@ -168,7 +146,7 @@ public final class TypedefEffectiveStatementImpl extends Default implements CaseEffectiveStatementMixin { private final @Nullable CaseSchemaNode original; - private final @NonNull Immutable path; + private final @NonNull QName argument; private final int flags; public UndeclaredCaseEffectiveStatement(final ImmutableList> substatements, - final Immutable path, final int flags, final @Nullable CaseSchemaNode original) { + final QName argument, final int flags, final @Nullable CaseSchemaNode original) { super(substatements); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; this.original = original; } - public UndeclaredCaseEffectiveStatement(final UndeclaredCaseEffectiveStatement origEffective, final Immutable path, + public UndeclaredCaseEffectiveStatement(final UndeclaredCaseEffectiveStatement origEffective, final QName argument, final int flags, final @Nullable CaseSchemaNode original) { super(origEffective); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; this.original = original; } @Override - public int flags() { - return flags; + public QName argument() { + return argument; } @Override - public Immutable pathObject() { - return path; + public int flags() { + return flags; } @Override @@ -71,6 +70,6 @@ public final class UndeclaredCaseEffectiveStatement @Override public String toString() { - return UndeclaredCaseEffectiveStatement.class.getSimpleName() + "[" + "qname=" + getQName() + "]"; + return UndeclaredCaseEffectiveStatement.class.getSimpleName() + "[" + "qname=" + argument + "]"; } } diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/UndeclaredInputEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/UndeclaredInputEffectiveStatement.java index 60ac0d7484..38d061234f 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/UndeclaredInputEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/UndeclaredInputEffectiveStatement.java @@ -11,7 +11,6 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.InputSchemaNode; @@ -24,26 +23,26 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.O public final class UndeclaredInputEffectiveStatement extends WithSubstatements implements InputEffectiveStatement, InputSchemaNode, OperationContainerMixin { - private final @NonNull Immutable path; + private final @NonNull QName argument; private final int flags; public UndeclaredInputEffectiveStatement(final ImmutableList> substatements, - final Immutable path, final int flags) { + final QName argument, final int flags) { super(substatements); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; } - public UndeclaredInputEffectiveStatement(final UndeclaredInputEffectiveStatement original, final Immutable path, + public UndeclaredInputEffectiveStatement(final UndeclaredInputEffectiveStatement original, final QName argument, final int flags) { super(original); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; } @Override - public Immutable pathObject() { - return path; + public QName argument() { + return argument; } @Override diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/UndeclaredOutputEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/UndeclaredOutputEffectiveStatement.java index baf5381e2b..e0cd4abe08 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/UndeclaredOutputEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/UndeclaredOutputEffectiveStatement.java @@ -11,7 +11,6 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode; @@ -24,26 +23,26 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.O public final class UndeclaredOutputEffectiveStatement extends WithSubstatements implements OutputEffectiveStatement, OutputSchemaNode, OperationContainerMixin { - private final @NonNull Immutable path; + private final @NonNull QName argument; private final int flags; public UndeclaredOutputEffectiveStatement(final ImmutableList> substatements, - final Immutable path, final int flags) { + final QName argument, final int flags) { super(substatements); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; } - public UndeclaredOutputEffectiveStatement(final UndeclaredOutputEffectiveStatement original, final Immutable path, + public UndeclaredOutputEffectiveStatement(final UndeclaredOutputEffectiveStatement original, final QName argument, final int flags) { super(original); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.flags = flags; } @Override - public Immutable pathObject() { - return path; + public QName argument() { + return argument; } @Override diff --git a/model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/AbstractDeclaredEffectiveStatement.java b/model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/AbstractDeclaredEffectiveStatement.java index 3d0490b2b3..4db2cf10e5 100644 --- a/model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/AbstractDeclaredEffectiveStatement.java +++ b/model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/AbstractDeclaredEffectiveStatement.java @@ -128,7 +128,7 @@ public abstract class AbstractDeclaredEffectiveStatement Argument type ({@link Empty} if statement does not have argument.) * @param Class representing declared version of this statement. */ - public interface DataSchemaNodeMixin> - extends DataSchemaNode, CopyableMixin, SchemaNodeMixin, WhenConditionMixin { + public interface DataSchemaNodeMixin> + extends DataSchemaNode, CopyableMixin, SchemaNodeMixin, WhenConditionMixin { @Override default Optional effectiveConfig() { final int fl = flags() & FlagsBuilder.MASK_CONFIG; @@ -309,24 +305,14 @@ public final class EffectiveStatementMixins { /** * Bridge between {@link EffectiveStatementWithFlags} and {@link SchemaNode}. * - * @param Argument type ({@link Empty} if statement does not have argument.) * @param Class representing declared version of this statement. */ - public interface SchemaNodeMixin> - extends DocumentedNodeMixin.WithStatus, SchemaNode { - // FIXME: ditch all this complexity once we do not require SchemaPath + public interface SchemaNodeMixin> + extends DocumentedNodeMixin.WithStatus, SchemaNode { @Override default QName getQName() { - return SchemaNodeDefaults.extractQName(pathObject()); + return argument(); } - - @Override - @Deprecated - default SchemaPath getPath() { - return SchemaNodeDefaults.extractPath(this, pathObject()); - } - - @NonNull Immutable pathObject(); } /** @@ -336,8 +322,7 @@ public final class EffectiveStatementMixins { * @param Class representing declared version of this statement. */ public interface UnknownSchemaNodeMixin> - extends SchemaNodeMixin, CopyableMixin, UnknownSchemaNode { - + extends DocumentedNodeMixin.WithStatus, CopyableMixin, UnknownSchemaNode { @Override default String getNodeParameter() { return Strings.nullToEmpty(getDeclared().rawArgument()); @@ -378,12 +363,7 @@ public final class EffectiveStatementMixins { public interface OperationContainerMixin> extends ContainerLike, DocumentedNodeMixin.WithStatus, DataNodeContainerMixin, MustConstraintMixin, WhenConditionMixin, AugmentationTargetMixin, - SchemaNodeMixin, CopyableMixin { - @Override - default @NonNull QName argument() { - return getQName(); - } - + SchemaNodeMixin, CopyableMixin { @Override default Optional findAction(final QName qname) { return Optional.empty(); @@ -420,11 +400,11 @@ public final class EffectiveStatementMixins { * @param Class representing declared version of this statement. */ public interface OpaqueDataSchemaNodeMixin> - extends DerivableSchemaNode, DataSchemaNodeMixin, DocumentedNodeMixin.WithStatus, + extends DerivableSchemaNode, DataSchemaNodeMixin, DocumentedNodeMixin.WithStatus, MandatoryMixin, MustConstraintMixin, WhenConditionMixin { @Override - default @NonNull QName argument() { - return getQName(); + default QName getQName() { + return argument(); } } @@ -434,12 +414,7 @@ public final class EffectiveStatementMixins { * @param Class representing declared version of this statement. */ public interface OperationDefinitionMixin> - extends SchemaNodeMixin, OperationDefinition { - @Override - default @NonNull QName argument() { - return getQName(); - } - + extends SchemaNodeMixin, OperationDefinition { @Override default Collection> getTypeDefinitions() { return filterTypeDefinitions(this); diff --git a/parser/openconfig-parser-support/src/main/java/org/opendaylight/yangtools/openconfig/parser/OpenConfigHashedValueEffectiveStatementImpl.java b/parser/openconfig-parser-support/src/main/java/org/opendaylight/yangtools/openconfig/parser/OpenConfigHashedValueEffectiveStatementImpl.java index 75d7c94640..c22170d8f1 100644 --- a/parser/openconfig-parser-support/src/main/java/org/opendaylight/yangtools/openconfig/parser/OpenConfigHashedValueEffectiveStatementImpl.java +++ b/parser/openconfig-parser-support/src/main/java/org/opendaylight/yangtools/openconfig/parser/OpenConfigHashedValueEffectiveStatementImpl.java @@ -9,42 +9,29 @@ package org.opendaylight.yangtools.openconfig.parser; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.openconfig.model.api.OpenConfigHashedValueEffectiveStatement; import org.opendaylight.yangtools.openconfig.model.api.OpenConfigHashedValueStatement; import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -import org.opendaylight.yangtools.yang.parser.spi.meta.SchemaPathSupport; final class OpenConfigHashedValueEffectiveStatementImpl extends UnknownEffectiveStatementBase implements OpenConfigHashedValueEffectiveStatement { private final @NonNull StatementDefinition definition; - private final @NonNull Immutable path; OpenConfigHashedValueEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { super(stmt, substatements); definition = stmt.publicDefinition(); - path = SchemaPathSupport.toEffectivePath(stmt.getEffectiveParent().getSchemaPath() - .createChild(stmt.publicDefinition().getStatementName())); } @Override public QName getQName() { - return SchemaNodeDefaults.extractQName(path); - } - - @Override - @Deprecated - public SchemaPath getPath() { - return SchemaNodeDefaults.extractPath(this, path); + return definition.getStatementName(); } @Override diff --git a/parser/rfc6241-parser-support/src/main/java/org/opendaylight/yangtools/rfc6241/parser/GetFilterElementAttributesEffectiveStatementImpl.java b/parser/rfc6241-parser-support/src/main/java/org/opendaylight/yangtools/rfc6241/parser/GetFilterElementAttributesEffectiveStatementImpl.java index 70114076e9..63ddc575f1 100644 --- a/parser/rfc6241-parser-support/src/main/java/org/opendaylight/yangtools/rfc6241/parser/GetFilterElementAttributesEffectiveStatementImpl.java +++ b/parser/rfc6241-parser-support/src/main/java/org/opendaylight/yangtools/rfc6241/parser/GetFilterElementAttributesEffectiveStatementImpl.java @@ -9,40 +9,29 @@ package org.opendaylight.yangtools.rfc6241.parser; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.rfc6241.model.api.GetFilterElementAttributesEffectiveStatement; import org.opendaylight.yangtools.rfc6241.model.api.GetFilterElementAttributesSchemaNode; import org.opendaylight.yangtools.rfc6241.model.api.GetFilterElementAttributesStatement; import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -import org.opendaylight.yangtools.yang.parser.spi.meta.SchemaPathSupport; final class GetFilterElementAttributesEffectiveStatementImpl extends UnknownEffectiveStatementBase implements GetFilterElementAttributesEffectiveStatement, GetFilterElementAttributesSchemaNode { - private final @NonNull Immutable path; + private final @NonNull QName qname; GetFilterElementAttributesEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { super(stmt, substatements); - path = SchemaPathSupport.toEffectivePath(stmt.getEffectiveParent().getSchemaPath() - .createChild(stmt.publicDefinition().getStatementName())); + qname = stmt.publicDefinition().getStatementName(); } @Override public QName getQName() { - return SchemaNodeDefaults.extractQName(path); - } - - @Override - @Deprecated - public SchemaPath getPath() { - return SchemaNodeDefaults.extractPath(this, path); + return qname; } @Override diff --git a/parser/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyAllEffectiveStatementImpl.java b/parser/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyAllEffectiveStatementImpl.java index 62f94f950c..8d154033f0 100644 --- a/parser/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyAllEffectiveStatementImpl.java +++ b/parser/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyAllEffectiveStatementImpl.java @@ -9,39 +9,28 @@ package org.opendaylight.yangtools.rfc6536.parser; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyAllEffectiveStatement; import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyAllSchemaNode; import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyAllStatement; import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -import org.opendaylight.yangtools.yang.parser.spi.meta.SchemaPathSupport; final class DefaultDenyAllEffectiveStatementImpl extends UnknownEffectiveStatementBase implements DefaultDenyAllEffectiveStatement, DefaultDenyAllSchemaNode { - private final @NonNull Immutable path; + private final @NonNull QName qname; DefaultDenyAllEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { super(stmt, substatements); - path = SchemaPathSupport.toEffectivePath(stmt.getEffectiveParent().getSchemaPath() - .createChild(stmt.publicDefinition().getStatementName())); + qname = stmt.publicDefinition().getStatementName(); } @Override public QName getQName() { - return SchemaNodeDefaults.extractQName(path); - } - - @Override - @Deprecated - public SchemaPath getPath() { - return SchemaNodeDefaults.extractPath(this, path); + return qname; } @Override diff --git a/parser/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyWriteEffectiveStatementImpl.java b/parser/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyWriteEffectiveStatementImpl.java index 8591b31d58..c00e1f0f08 100644 --- a/parser/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyWriteEffectiveStatementImpl.java +++ b/parser/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyWriteEffectiveStatementImpl.java @@ -9,40 +9,29 @@ package org.opendaylight.yangtools.rfc6536.parser; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyWriteEffectiveStatement; import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyWriteSchemaNode; import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyWriteStatement; import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -import org.opendaylight.yangtools.yang.parser.spi.meta.SchemaPathSupport; final class DefaultDenyWriteEffectiveStatementImpl extends UnknownEffectiveStatementBase implements DefaultDenyWriteEffectiveStatement, DefaultDenyWriteSchemaNode { - private final @NonNull Immutable path; + private final @NonNull QName qname; DefaultDenyWriteEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { super(stmt, substatements); - path = SchemaPathSupport.toEffectivePath(stmt.getEffectiveParent().getSchemaPath() - .createChild(stmt.publicDefinition().getStatementName())); + qname = stmt.publicDefinition().getStatementName(); } @Override public QName getQName() { - return SchemaNodeDefaults.extractQName(path); - } - - @Override - @Deprecated - public SchemaPath getPath() { - return SchemaNodeDefaults.extractPath(this, path); + return qname; } @Override diff --git a/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/AliasEffectiveStatementImpl.java b/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/AliasEffectiveStatementImpl.java index 2a7b56cd4e..a4db71548f 100644 --- a/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/AliasEffectiveStatementImpl.java +++ b/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/AliasEffectiveStatementImpl.java @@ -13,21 +13,15 @@ import org.opendaylight.yangtools.rfc6643.model.api.AliasEffectiveStatement; import org.opendaylight.yangtools.rfc6643.model.api.AliasSchemaNode; import org.opendaylight.yangtools.rfc6643.model.api.AliasStatement; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -import org.opendaylight.yangtools.yang.parser.spi.meta.SchemaPathSupport; final class AliasEffectiveStatementImpl extends UnknownEffectiveStatementBase implements AliasEffectiveStatement, AliasSchemaNode { - private final SchemaPath path; - AliasEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { super(stmt, substatements); - path = SchemaPathSupport.toOptionalPath(stmt.getEffectiveParent().getSchemaPath().createChild(getNodeType())); } @Override @@ -35,12 +29,6 @@ final class AliasEffectiveStatementImpl extends UnknownEffectiveStatementBase implements DefValEffectiveStatement, DefValSchemaNode { - private final SchemaPath path; - DefValEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { super(stmt, substatements); - path = SchemaPathSupport.toOptionalPath(stmt.getEffectiveParent().getSchemaPath().createChild(getNodeType())); } @Override @@ -35,12 +29,6 @@ final class DefValEffectiveStatementImpl extends UnknownEffectiveStatementBase implements DisplayHintEffectiveStatement, DisplayHintSchemaNode { - private final SchemaPath path; - DisplayHintEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { super(stmt, substatements); - path = SchemaPathSupport.toOptionalPath(stmt.getEffectiveParent().getSchemaPath().createChild(getNodeType())); } @Override @@ -35,12 +29,6 @@ final class DisplayHintEffectiveStatementImpl extends UnknownEffectiveStatementB return getNodeType(); } - @Override - @Deprecated - public SchemaPath getPath() { - return SchemaNodeDefaults.throwUnsupportedIfNull(this, path); - } - @Override public DisplayHintEffectiveStatement asEffectiveStatement() { return this; @@ -48,7 +36,7 @@ final class DisplayHintEffectiveStatementImpl extends UnknownEffectiveStatementB @Override public int hashCode() { - return Objects.hash(path, getNodeType(), getNodeParameter()); + return Objects.hash(getNodeType(), getNodeParameter()); } @Override @@ -61,6 +49,6 @@ final class DisplayHintEffectiveStatementImpl extends UnknownEffectiveStatementB } final DisplayHintEffectiveStatementImpl other = (DisplayHintEffectiveStatementImpl) obj; return Objects.equals(getNodeType(), other.getNodeType()) - && Objects.equals(getNodeParameter(), other.getNodeParameter()) && Objects.equals(path, other.path); + && Objects.equals(getNodeParameter(), other.getNodeParameter()); } } diff --git a/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/ImpliedEffectiveStatementImpl.java b/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/ImpliedEffectiveStatementImpl.java index 22a0140950..6b32599c05 100644 --- a/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/ImpliedEffectiveStatementImpl.java +++ b/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/ImpliedEffectiveStatementImpl.java @@ -13,22 +13,15 @@ import org.opendaylight.yangtools.rfc6643.model.api.ImpliedEffectiveStatement; import org.opendaylight.yangtools.rfc6643.model.api.ImpliedSchemaNode; import org.opendaylight.yangtools.rfc6643.model.api.ImpliedStatement; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -import org.opendaylight.yangtools.yang.parser.spi.meta.SchemaPathSupport; final class ImpliedEffectiveStatementImpl extends UnknownEffectiveStatementBase implements ImpliedEffectiveStatement, ImpliedSchemaNode { - - private final SchemaPath path; - ImpliedEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { super(stmt, substatements); - path = SchemaPathSupport.toOptionalPath(stmt.getEffectiveParent().getSchemaPath().createChild(getNodeType())); } @Override @@ -36,12 +29,6 @@ final class ImpliedEffectiveStatementImpl extends UnknownEffectiveStatementBase< return getNodeType(); } - @Override - @Deprecated - public SchemaPath getPath() { - return SchemaNodeDefaults.throwUnsupportedIfNull(this, path); - } - @Override public ImpliedEffectiveStatement asEffectiveStatement() { return this; @@ -49,7 +36,7 @@ final class ImpliedEffectiveStatementImpl extends UnknownEffectiveStatementBase< @Override public int hashCode() { - return Objects.hash(path, getNodeType(), getNodeParameter()); + return Objects.hash(getNodeType(), getNodeParameter()); } @Override @@ -62,6 +49,6 @@ final class ImpliedEffectiveStatementImpl extends UnknownEffectiveStatementBase< } final ImpliedEffectiveStatementImpl other = (ImpliedEffectiveStatementImpl) obj; return Objects.equals(getNodeType(), other.getNodeType()) - && Objects.equals(getNodeParameter(), other.getNodeParameter()) && Objects.equals(path, other.path); + && Objects.equals(getNodeParameter(), other.getNodeParameter()); } } diff --git a/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/MaxAccessEffectiveStatementImpl.java b/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/MaxAccessEffectiveStatementImpl.java index 1abda1d33e..45b474b631 100644 --- a/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/MaxAccessEffectiveStatementImpl.java +++ b/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/MaxAccessEffectiveStatementImpl.java @@ -14,21 +14,15 @@ import org.opendaylight.yangtools.rfc6643.model.api.MaxAccessEffectiveStatement; import org.opendaylight.yangtools.rfc6643.model.api.MaxAccessSchemaNode; import org.opendaylight.yangtools.rfc6643.model.api.MaxAccessStatement; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -import org.opendaylight.yangtools.yang.parser.spi.meta.SchemaPathSupport; final class MaxAccessEffectiveStatementImpl extends UnknownEffectiveStatementBase implements MaxAccessEffectiveStatement, MaxAccessSchemaNode { - private final SchemaPath path; - MaxAccessEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { super(stmt, substatements); - path = SchemaPathSupport.toOptionalPath(stmt.getEffectiveParent().getSchemaPath().createChild(getNodeType())); } @Override @@ -41,12 +35,6 @@ final class MaxAccessEffectiveStatementImpl extends UnknownEffectiveStatementBas return getNodeType(); } - @Override - @Deprecated - public SchemaPath getPath() { - return SchemaNodeDefaults.throwUnsupportedIfNull(this, path); - } - @Override public MaxAccessEffectiveStatement asEffectiveStatement() { return this; @@ -54,7 +42,7 @@ final class MaxAccessEffectiveStatementImpl extends UnknownEffectiveStatementBas @Override public int hashCode() { - return Objects.hash(path, getNodeType(), getNodeParameter()); + return Objects.hash(getNodeType(), getNodeParameter()); } @Override @@ -67,6 +55,6 @@ final class MaxAccessEffectiveStatementImpl extends UnknownEffectiveStatementBas } final MaxAccessEffectiveStatementImpl other = (MaxAccessEffectiveStatementImpl) obj; return Objects.equals(getNodeType(), other.getNodeType()) - && Objects.equals(getNodeParameter(), other.getNodeParameter()) && Objects.equals(path, other.path); + && Objects.equals(getNodeParameter(), other.getNodeParameter()); } } diff --git a/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/OidEffectiveStatementImpl.java b/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/OidEffectiveStatementImpl.java index 8df7a5cc10..e95d7e8052 100644 --- a/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/OidEffectiveStatementImpl.java +++ b/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/OidEffectiveStatementImpl.java @@ -14,22 +14,15 @@ import org.opendaylight.yangtools.rfc6643.model.api.OidEffectiveStatement; import org.opendaylight.yangtools.rfc6643.model.api.OidSchemaNode; import org.opendaylight.yangtools.rfc6643.model.api.OidStatement; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -import org.opendaylight.yangtools.yang.parser.spi.meta.SchemaPathSupport; final class OidEffectiveStatementImpl extends UnknownEffectiveStatementBase implements OidEffectiveStatement, OidSchemaNode { - - private final SchemaPath path; - OidEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { super(stmt, substatements); - path = SchemaPathSupport.toOptionalPath(stmt.getEffectiveParent().getSchemaPath().createChild(getNodeType())); } @Override @@ -37,12 +30,6 @@ final class OidEffectiveStatementImpl extends UnknownEffectiveStatementBase implements SubIdEffectiveStatement, SubIdSchemaNode { - - private final SchemaPath path; - SubIdEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { super(stmt, substatements); - path = SchemaPathSupport.toOptionalPath(stmt.getEffectiveParent().getSchemaPath().createChild(getNodeType())); } @Override @@ -37,12 +30,6 @@ final class SubIdEffectiveStatementImpl extends UnknownEffectiveStatementBase implements AnnotationEffectiveStatement, AnnotationSchemaNode { private final @NonNull TypeDefinition type; - private final @Nullable SchemaPath path; AnnotationEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { @@ -51,8 +46,6 @@ final class AnnotationEffectiveStatementImpl extends UnknownEffectiveStatementBa builder.setUnits(unitsStmt.argument()); } type = builder.build(); - - path = SchemaPathSupport.toOptionalPath(stmt.getEffectiveParent().getSchemaPath().createChild(qname)); } @Override @@ -60,12 +53,6 @@ final class AnnotationEffectiveStatementImpl extends UnknownEffectiveStatementBa return verifyNotNull(argument()); } - @Override - @Deprecated - public SchemaPath getPath() { - return SchemaNodeDefaults.throwUnsupportedIfNull(this, path); - } - @Override public TypeDefinition getType() { return type; diff --git a/parser/rfc8040-parser-support/src/main/java/org/opendaylight/yangtools/rfc8040/parser/YangDataEffectiveStatementImpl.java b/parser/rfc8040-parser-support/src/main/java/org/opendaylight/yangtools/rfc8040/parser/YangDataEffectiveStatementImpl.java index ff7b8d86b0..29e1a7ef47 100644 --- a/parser/rfc8040-parser-support/src/main/java/org/opendaylight/yangtools/rfc8040/parser/YangDataEffectiveStatementImpl.java +++ b/parser/rfc8040-parser-support/src/main/java/org/opendaylight/yangtools/rfc8040/parser/YangDataEffectiveStatementImpl.java @@ -16,14 +16,11 @@ import com.google.common.collect.ImmutableList; import java.util.Map; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.rfc8040.model.api.YangDataEffectiveStatement; import org.opendaylight.yangtools.rfc8040.model.api.YangDataSchemaNode; import org.opendaylight.yangtools.rfc8040.model.api.YangDataStatement; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace; import org.opendaylight.yangtools.yang.model.api.stmt.ContainerEffectiveStatement; @@ -31,12 +28,10 @@ import org.opendaylight.yangtools.yang.model.api.stmt.DataTreeAwareEffectiveStat import org.opendaylight.yangtools.yang.model.api.stmt.SchemaTreeAwareEffectiveStatement; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -import org.opendaylight.yangtools.yang.parser.spi.meta.SchemaPathSupport; @Beta final class YangDataEffectiveStatementImpl extends UnknownEffectiveStatementBase implements YangDataEffectiveStatement, YangDataSchemaNode { - private final @Nullable SchemaPath path; private final @NonNull QName argumentQName; private final @NonNull ContainerEffectiveStatement container; @@ -45,7 +40,6 @@ final class YangDataEffectiveStatementImpl extends UnknownEffectiveStatementBase super(stmt, substatements); this.argumentQName = requireNonNull(qname); - path = SchemaPathSupport.toOptionalPath(stmt.getEffectiveParent().getSchemaPath().createChild(qname)); container = findFirstEffectiveSubstatement(ContainerEffectiveStatement.class).get(); // TODO: this is strong binding of two API contracts. Unfortunately ContainerEffectiveStatement design is @@ -58,12 +52,6 @@ final class YangDataEffectiveStatementImpl extends UnknownEffectiveStatementBase return argumentQName; } - @Override - @Deprecated - public SchemaPath getPath() { - return SchemaNodeDefaults.throwUnsupportedIfNull(this, path); - } - @Override public ContainerEffectiveStatement getContainer() { return container; @@ -96,7 +84,6 @@ final class YangDataEffectiveStatementImpl extends UnknownEffectiveStatementBase public String toString() { return MoreObjects.toStringHelper(this).omitNullValues() .add("qname", argumentQName) - .add("path", path) .add("container", container).toString(); } } diff --git a/parser/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointEffectiveStatementImpl.java b/parser/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointEffectiveStatementImpl.java index a3034e8915..a0a2be0a45 100644 --- a/parser/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointEffectiveStatementImpl.java +++ b/parser/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointEffectiveStatementImpl.java @@ -10,25 +10,19 @@ package org.opendaylight.yangtools.rfc8528.parser; import static com.google.common.base.Verify.verifyNotNull; import com.google.common.collect.ImmutableList; -import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.rfc8528.model.api.MountPointEffectiveStatement; import org.opendaylight.yangtools.rfc8528.model.api.MountPointSchemaNode; import org.opendaylight.yangtools.rfc8528.model.api.MountPointStatement; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; final class MountPointEffectiveStatementImpl extends UnknownEffectiveStatementBase implements MountPointEffectiveStatement, MountPointSchemaNode { - private final @Nullable SchemaPath path; - MountPointEffectiveStatementImpl(final Current stmt, - final ImmutableList> substatements, final @Nullable SchemaPath path) { + final ImmutableList> substatements) { super(stmt, substatements); - this.path = path; } @Override @@ -36,12 +30,6 @@ final class MountPointEffectiveStatementImpl extends UnknownEffectiveStatementBa return verifyNotNull(argument()); } - @Override - @Deprecated - public SchemaPath getPath() { - return SchemaNodeDefaults.throwUnsupportedIfNull(this, path); - } - @Override public MountPointEffectiveStatement asEffectiveStatement() { return this; diff --git a/parser/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointStatementSupport.java b/parser/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointStatementSupport.java index 3eef9a27cf..fc564cb593 100644 --- a/parser/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointStatementSupport.java +++ b/parser/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointStatementSupport.java @@ -22,7 +22,6 @@ import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition; import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSupport; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -import org.opendaylight.yangtools.yang.parser.spi.meta.SchemaPathSupport; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils; @@ -44,8 +43,7 @@ public final class MountPointStatementSupport copy.getArgument().equals(current.getArgument()) // Implied by UnknownSchemaNode && copy.history().isAugmenting() == current.history().isAugmenting() - && copy.history().isAddedByUses() == current.history().isAddedByUses() - && copy.equalParentPath(current)), config, VALIDATOR); + && copy.history().isAddedByUses() == current.history().isAddedByUses()), config, VALIDATOR); } // FIXME: these two methods are not quite right. RFC8528 states that: @@ -87,7 +85,6 @@ public final class MountPointStatementSupport @Override protected MountPointEffectiveStatement createEffective(final Current stmt, final ImmutableList> substatements) { - return new MountPointEffectiveStatementImpl(stmt, substatements, SchemaPathSupport.toOptionalPath( - stmt.getEffectiveParent().getSchemaPath().createChild(stmt.getArgument()))); + return new MountPointEffectiveStatementImpl(stmt, substatements); } } diff --git a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/InferredStatementContext.java b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/InferredStatementContext.java index 3d012f30b5..aff44fd619 100644 --- a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/InferredStatementContext.java +++ b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/InferredStatementContext.java @@ -28,7 +28,6 @@ import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; 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.meta.StatementDefinition; @@ -607,12 +606,6 @@ final class InferredStatementContext, E extend * below methods exist in the same form in SubstatementContext. If any adjustment is made here, make sure it is * properly updated there. */ - @Override - @Deprecated - public SchemaPath schemaPath() { - return substatementGetSchemaPath(); - } - @Override public A argument() { return argument; diff --git a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReactorStmtCtx.java b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReactorStmtCtx.java index 66ad765afa..9a5441d8e8 100644 --- a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReactorStmtCtx.java +++ b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReactorStmtCtx.java @@ -22,7 +22,6 @@ import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.YangVersion; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; 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.meta.StatementDefinition; @@ -160,11 +159,6 @@ abstract class ReactorStmtCtx, E extends Effec // FIXME: move this out once we have JDK15+ private boolean boolFlag; - // SchemaPath cache for use with SubstatementContext and InferredStatementContext. This hurts RootStatementContext - // a bit in terms of size -- but those are only a few and SchemaPath is on its way out anyway. - // FIXME: this should become 'QName' - private SchemaPath schemaPath; - ReactorStmtCtx() { // Empty on purpose } @@ -614,63 +608,38 @@ abstract class ReactorStmtCtx, E extends Effec @Override public final QName argumentAsTypeQName() { - return interpretAsQName(getRawArgument()); + // FIXME: This may yield illegal argument exceptions + return StmtContextUtils.qnameFromArgument(getOriginalCtx().orElse(this), getRawArgument()); } @Override public final QNameModule effectiveNamespace() { - // FIXME: there has to be a better way to do this - return getSchemaPath().getLastComponent().getModule(); - } - - // - // - // Common SchemaPath cache. All of this is bound to be removed once YANGTOOLS-1066 is done. - // - // - - // Exists only to support {SubstatementContext,InferredStatementContext}.schemaPath() - @Deprecated - final @Nullable SchemaPath substatementGetSchemaPath() { - if (schemaPath == null) { - schemaPath = createSchemaPath((StatementContextBase) coerceParentContext()); - } - return schemaPath; - } - - // FIXME: 7.0.0: this method's logic needs to be moved to the respective StatementSupport classes - @Deprecated - private SchemaPath createSchemaPath(final StatementContextBase parent) { - final SchemaPath parentPath = parent.getSchemaPath(); if (StmtContextUtils.isUnknownStatement(this)) { - return parentPath.createChild(publicDefinition().getStatementName()); + return publicDefinition().getStatementName().getModule(); + } + if (producesDeclared(UsesStatement.class)) { + return coerceParent().effectiveNamespace(); } + final Object argument = argument(); if (argument instanceof QName) { - final QName qname = (QName) argument; - if (producesDeclared(UsesStatement.class)) { - return parentPath; - } - - return parentPath.createChild(qname); + return ((QName) argument).getModule(); } if (argument instanceof String) { - return parentPath.createChild(interpretAsQName((String) argument)); + // FIXME: This may yield illegal argument exceptions + return StmtContextUtils.qnameFromArgument(getOriginalCtx().orElse(this), (String) argument).getModule(); } if (argument instanceof SchemaNodeIdentifier && (producesDeclared(AugmentStatement.class) || producesDeclared(RefineStatement.class) || producesDeclared(DeviationStatement.class))) { - - return parentPath.createChild(((SchemaNodeIdentifier) argument).getNodeIdentifiers()); + return ((SchemaNodeIdentifier) argument).lastNodeIdentifier().getModule(); } - // FIXME: this does not look right, investigate more? - return parentPath; + return coerceParent().effectiveNamespace(); } - private @NonNull QName interpretAsQName(final String argument) { - // FIXME: This may yield illegal argument exceptions - return StmtContextUtils.qnameFromArgument(getOriginalCtx().orElse(this), argument); + private ReactorStmtCtx coerceParent() { + return (ReactorStmtCtx) coerceParentContext(); } // diff --git a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReplicaStatementContext.java b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReplicaStatementContext.java index 392642e0db..79add29f2e 100644 --- a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReplicaStatementContext.java +++ b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReplicaStatementContext.java @@ -14,7 +14,6 @@ import java.util.List; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QNameModule; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.parser.spi.meta.CopyHistory; @@ -183,12 +182,6 @@ final class ReplicaStatementContext, E extends * below methods exist in the same form in InferredStatementContext/SubstatementContext. If any adjustment is made * here, make sure it is properly updated there. */ - @Override - @Deprecated - public SchemaPath schemaPath() { - return substatementGetSchemaPath(); - } - @Override public StatementContextBase getParentContext() { return parent; diff --git a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java index 31655861d6..60e495f68c 100644 --- a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java +++ b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java @@ -24,7 +24,6 @@ import java.util.Set; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.common.YangVersion; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; @@ -117,12 +116,6 @@ public final class RootStatementContext, E ext return argument; } - @Override - @Deprecated - public SchemaPath schemaPath() { - return SchemaPath.ROOT; - } - @Override public EffectiveConfig effectiveConfig() { return EffectiveConfig.UNDETERMINED; diff --git a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java index 1bb706b355..3596c879b9 100644 --- a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java +++ b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java @@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.parser.stmt.reactor; import static java.util.Objects.requireNonNull; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.parser.spi.meta.CopyType; @@ -55,12 +54,6 @@ final class SubstatementContext, E extends Eff * below methods exist in the same form in InferredStatementContext. If any adjustment is made here, make sure it is * properly updated there. */ - @Override - @Deprecated - public SchemaPath schemaPath() { - return substatementGetSchemaPath(); - } - @Override public A argument() { return argument; diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenConfigVersionEffectiveStatementImpl.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenConfigVersionEffectiveStatementImpl.java index e456d16187..d9fe1cbf60 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenConfigVersionEffectiveStatementImpl.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenConfigVersionEffectiveStatementImpl.java @@ -8,28 +8,20 @@ package org.opendaylight.yangtools.yang.parser.openconfig.stmt; import com.google.common.collect.ImmutableList; -import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.concepts.SemVer; import org.opendaylight.yangtools.openconfig.model.api.OpenConfigVersionEffectiveStatement; import org.opendaylight.yangtools.openconfig.model.api.OpenConfigVersionStatement; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -import org.opendaylight.yangtools.yang.parser.spi.meta.SchemaPathSupport; final class OpenConfigVersionEffectiveStatementImpl extends UnknownEffectiveStatementBase implements OpenConfigVersionEffectiveStatement { - - private final @Nullable SchemaPath path; - OpenConfigVersionEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { super(stmt, substatements); - path = SchemaPathSupport.toOptionalPath(stmt.getEffectiveParent().getSchemaPath().createChild(getNodeType())); } @Override @@ -37,12 +29,6 @@ final class OpenConfigVersionEffectiveStatementImpl return getNodeType(); } - @Override - @Deprecated - public SchemaPath getPath() { - return SchemaNodeDefaults.throwUnsupportedIfNull(this, path); - } - @Override public OpenConfigVersionEffectiveStatement asEffectiveStatement() { return this; diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ExtensionStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ExtensionStatementSupport.java index 18ccd825e9..0ef91fa875 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ExtensionStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ExtensionStatementSupport.java @@ -93,6 +93,6 @@ public final class ExtensionStatementSupport @Override protected ExtensionEffectiveStatement createEffective(final Current stmt, final ImmutableList> substatements) { - return EffectiveStatements.createExtension(stmt.declared(), substatements, stmt.optionalPath()); + return EffectiveStatements.createExtension(stmt.declared(), substatements); } } diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/AbstractLeafListEffectiveStatement.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/AbstractLeafListEffectiveStatement.java index 5c6d212187..56b06f1703 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/AbstractLeafListEffectiveStatement.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/AbstractLeafListEffectiveStatement.java @@ -11,7 +11,6 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; @@ -34,27 +33,27 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.U abstract class AbstractLeafListEffectiveStatement extends AbstractDeclaredEffectiveStatement.Default implements LeafListEffectiveStatement, LeafListSchemaNode, DerivableSchemaNode, - UserOrderedMixin, DataSchemaNodeMixin, + UserOrderedMixin, DataSchemaNodeMixin, MustConstraintMixin { private final @NonNull Object substatements; - private final @NonNull Immutable path; + private final @NonNull QName argument; private final @NonNull TypeDefinition type; private final int flags; - AbstractLeafListEffectiveStatement(final LeafListStatement declared, final Immutable path, final int flags, + AbstractLeafListEffectiveStatement(final LeafListStatement declared, final QName argument, final int flags, final ImmutableList> substatements) { super(declared); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.substatements = maskList(substatements); this.flags = flags; // TODO: lazy instantiation? this.type = buildType(); } - AbstractLeafListEffectiveStatement(final AbstractLeafListEffectiveStatement original, final Immutable path, + AbstractLeafListEffectiveStatement(final AbstractLeafListEffectiveStatement original, final QName argument, final int flags) { super(original); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.substatements = original.substatements; this.flags = flags; // TODO: lazy instantiation? @@ -73,12 +72,7 @@ abstract class AbstractLeafListEffectiveStatement @Override public final QName argument() { - return getQName(); - } - - @Override - public final Immutable pathObject() { - return path; + return argument; } @Override @@ -98,7 +92,7 @@ abstract class AbstractLeafListEffectiveStatement @Override public final String toString() { - return getClass().getSimpleName() + "[" + getQName() + "]"; + return getClass().getSimpleName() + "[" + argument + "]"; } private TypeDefinition buildType() { diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/AbstractNonEmptyLeafListEffectiveStatement.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/AbstractNonEmptyLeafListEffectiveStatement.java index 76a7f19b5c..b36b4433d1 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/AbstractNonEmptyLeafListEffectiveStatement.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/AbstractNonEmptyLeafListEffectiveStatement.java @@ -10,7 +10,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf_list; import com.google.common.collect.ImmutableList; import java.util.Optional; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.concepts.Immutable; +import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; @@ -20,24 +20,24 @@ abstract class AbstractNonEmptyLeafListEffectiveStatement extends AbstractLeafLi private final @Nullable LeafListSchemaNode original; private final @Nullable ElementCountConstraint elementCountConstraint; - AbstractNonEmptyLeafListEffectiveStatement(final LeafListStatement declared, final Immutable path, final int flags, + AbstractNonEmptyLeafListEffectiveStatement(final LeafListStatement declared, final QName argument, final int flags, final ImmutableList> substatements, final LeafListSchemaNode original, final ElementCountConstraint elementCountConstraint) { - super(declared, path, flags, substatements); + super(declared, argument, flags, substatements); this.original = original; this.elementCountConstraint = elementCountConstraint; } AbstractNonEmptyLeafListEffectiveStatement(final AbstractNonEmptyLeafListEffectiveStatement originalEffecive, - final LeafListSchemaNode original, final Immutable path, final int flags) { - super(originalEffecive, path, flags); + final LeafListSchemaNode original, final QName argument, final int flags) { + super(originalEffecive, argument, flags); this.elementCountConstraint = originalEffecive.elementCountConstraint; this.original = original; } AbstractNonEmptyLeafListEffectiveStatement(final EmptyLeafListEffectiveStatement originalEffective, - final LeafListSchemaNode original, final Immutable path, final int flags) { - super(originalEffective, path, flags); + final LeafListSchemaNode original, final QName argument, final int flags) { + super(originalEffective, argument, flags); this.elementCountConstraint = null; this.original = original; } diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/EmptyLeafListEffectiveStatement.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/EmptyLeafListEffectiveStatement.java index 0a7e3cb908..167b2e890f 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/EmptyLeafListEffectiveStatement.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/EmptyLeafListEffectiveStatement.java @@ -11,21 +11,21 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import java.util.Collection; import java.util.Optional; -import org.opendaylight.yangtools.concepts.Immutable; +import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement; final class EmptyLeafListEffectiveStatement extends AbstractLeafListEffectiveStatement { - EmptyLeafListEffectiveStatement(final LeafListStatement declared, final Immutable path, final int flags, + EmptyLeafListEffectiveStatement(final LeafListStatement declared, final QName argument, final int flags, final ImmutableList> substatements) { - super(declared, path, flags, substatements); + super(declared, argument, flags, substatements); } - EmptyLeafListEffectiveStatement(final EmptyLeafListEffectiveStatement original, final Immutable path, + EmptyLeafListEffectiveStatement(final EmptyLeafListEffectiveStatement original, final QName argument, final int flags) { - super(original, path, flags); + super(original, argument, flags); } @Override diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListStatementSupport.java index 5cf1ab349e..1399110aaf 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListStatementSupport.java @@ -104,14 +104,14 @@ public final class LeafListStatementSupport final int flags = computeFlags(stmt, original.effectiveSubstatements()); if (original instanceof RegularLeafListEffectiveStatement) { return new RegularLeafListEffectiveStatement((RegularLeafListEffectiveStatement) original, - stmt.original(LeafListSchemaNode.class), stmt.effectivePath(), flags); + stmt.original(LeafListSchemaNode.class), stmt.getArgument(), flags); } else if (original instanceof SlimLeafListEffectiveStatement) { return new SlimLeafListEffectiveStatement((SlimLeafListEffectiveStatement) original, - stmt.original(LeafListSchemaNode.class), stmt.effectivePath(), flags); + stmt.original(LeafListSchemaNode.class), stmt.getArgument(), flags); } else if (original instanceof EmptyLeafListEffectiveStatement) { // Promote to slim return new SlimLeafListEffectiveStatement((EmptyLeafListEffectiveStatement) original, - stmt.original(LeafListSchemaNode.class), stmt.effectivePath(), flags); + stmt.original(LeafListSchemaNode.class), stmt.getArgument(), flags); } else { // Safe fallback return super.copyEffective(stmt, original); @@ -147,12 +147,12 @@ public final class LeafListStatementSupport final LeafListStatement declared = stmt.declared(); if (defaultValues.isEmpty()) { return original == null && !elementCountConstraint.isPresent() - ? new EmptyLeafListEffectiveStatement(declared, stmt.effectivePath(), flags, substatements) - : new SlimLeafListEffectiveStatement(declared, stmt.effectivePath(), flags, substatements, original, + ? new EmptyLeafListEffectiveStatement(declared, stmt.getArgument(), flags, substatements) + : new SlimLeafListEffectiveStatement(declared, stmt.getArgument(), flags, substatements, original, elementCountConstraint.orElse(null)); } - return new RegularLeafListEffectiveStatement(declared, stmt.effectivePath(), flags, substatements, original, + return new RegularLeafListEffectiveStatement(declared, stmt.getArgument(), flags, substatements, original, defaultValues, elementCountConstraint.orElse(null)); } diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/RegularLeafListEffectiveStatement.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/RegularLeafListEffectiveStatement.java index 50842e930d..d63857ac76 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/RegularLeafListEffectiveStatement.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/RegularLeafListEffectiveStatement.java @@ -12,7 +12,7 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; +import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; @@ -21,16 +21,16 @@ import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement; final class RegularLeafListEffectiveStatement extends AbstractNonEmptyLeafListEffectiveStatement { private final @NonNull ImmutableSet defaults; - RegularLeafListEffectiveStatement(final LeafListStatement declared, final Immutable path, final int flags, + RegularLeafListEffectiveStatement(final LeafListStatement declared, final QName argument, final int flags, final ImmutableList> substatements, final LeafListSchemaNode original, final ImmutableSet defaults, final ElementCountConstraint elementCountConstraint) { - super(declared, path, flags, substatements, original, elementCountConstraint); + super(declared, argument, flags, substatements, original, elementCountConstraint); this.defaults = requireNonNull(defaults); } RegularLeafListEffectiveStatement(final RegularLeafListEffectiveStatement originalEffective, - final LeafListSchemaNode original, final Immutable path, final int flags) { - super(originalEffective, original, path, flags); + final LeafListSchemaNode original, final QName argument, final int flags) { + super(originalEffective, original, argument, flags); this.defaults = originalEffective.defaults; } diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/SlimLeafListEffectiveStatement.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/SlimLeafListEffectiveStatement.java index 0ccbbc1dc4..ee13e4638e 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/SlimLeafListEffectiveStatement.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/SlimLeafListEffectiveStatement.java @@ -9,27 +9,27 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf_list; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; -import org.opendaylight.yangtools.concepts.Immutable; +import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement; final class SlimLeafListEffectiveStatement extends AbstractNonEmptyLeafListEffectiveStatement { - SlimLeafListEffectiveStatement(final LeafListStatement declared, final Immutable path, final int flags, + SlimLeafListEffectiveStatement(final LeafListStatement declared, final QName argument, final int flags, final ImmutableList> substatements, final LeafListSchemaNode original, final ElementCountConstraint elementCountConstraint) { - super(declared, path, flags, substatements, original, elementCountConstraint); + super(declared, argument, flags, substatements, original, elementCountConstraint); } SlimLeafListEffectiveStatement(final SlimLeafListEffectiveStatement originalEffective, - final LeafListSchemaNode original, final Immutable path, final int flags) { - super(originalEffective, original, path, flags); + final LeafListSchemaNode original, final QName argument, final int flags) { + super(originalEffective, original, argument, flags); } SlimLeafListEffectiveStatement(final EmptyLeafListEffectiveStatement originalEffective, - final LeafListSchemaNode original, final Immutable path, final int flags) { - super(originalEffective, original, path, flags); + final LeafListSchemaNode original, final QName argument, final int flags) { + super(originalEffective, original, argument, flags); } @Override diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/AbstractListEffectiveStatement.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/AbstractListEffectiveStatement.java index d3113c2fac..d69b91ff2a 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/AbstractListEffectiveStatement.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/AbstractListEffectiveStatement.java @@ -13,7 +13,6 @@ import com.google.common.collect.ImmutableList; import java.util.Collection; import java.util.List; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; @@ -39,29 +38,29 @@ abstract class AbstractListEffectiveStatement implements ListEffectiveStatement, ListSchemaNode, DerivableSchemaNode, ActionNodeContainerCompat, NotificationNodeContainerCompat, - DataSchemaNodeMixin, UserOrderedMixin, + DataSchemaNodeMixin, UserOrderedMixin, DataNodeContainerMixin, WhenConditionMixin, AugmentationTargetMixin, NotificationNodeContainerMixin, ActionNodeContainerMixin, MustConstraintMixin { private final int flags; private final @NonNull Object substatements; - private final @NonNull Immutable path; + private final @NonNull QName argument; private final @NonNull Object keyDefinition; - AbstractListEffectiveStatement(final ListStatement declared, final Immutable path, final int flags, + AbstractListEffectiveStatement(final ListStatement declared, final QName argument, final int flags, final ImmutableList> substatements, final ImmutableList keyDefinition) { super(declared, substatements); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.substatements = maskList(substatements); this.keyDefinition = maskList(keyDefinition); this.flags = flags; } - AbstractListEffectiveStatement(final AbstractListEffectiveStatement original, final Immutable path, + AbstractListEffectiveStatement(final AbstractListEffectiveStatement original, final QName argument, final int flags) { super(original); - this.path = requireNonNull(path); + this.argument = requireNonNull(argument); this.substatements = original.substatements; this.keyDefinition = original.keyDefinition; this.flags = flags; @@ -72,19 +71,14 @@ abstract class AbstractListEffectiveStatement return unmaskList(substatements); } - @Override - public final int flags() { - return flags; - } - @Override public final QName argument() { - return getQName(); + return argument; } @Override - public final Immutable pathObject() { - return path; + public final int flags() { + return flags; } @Override diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/EmptyListEffectiveStatement.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/EmptyListEffectiveStatement.java index 86e6029e09..fec0bb9706 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/EmptyListEffectiveStatement.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/EmptyListEffectiveStatement.java @@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.list; import com.google.common.collect.ImmutableList; import java.util.Optional; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint; import org.opendaylight.yangtools.yang.model.api.SchemaNode; @@ -17,14 +16,14 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ListStatement; final class EmptyListEffectiveStatement extends AbstractListEffectiveStatement { - EmptyListEffectiveStatement(final ListStatement declared, final Immutable path, final int flags, + EmptyListEffectiveStatement(final ListStatement declared, final QName argument, final int flags, final ImmutableList> substatements, final ImmutableList keyDefinition) { - super(declared, path, flags, substatements, keyDefinition); + super(declared, argument, flags, substatements, keyDefinition); } - EmptyListEffectiveStatement(final EmptyListEffectiveStatement original, final Immutable path, final int flags) { - super(original, path, flags); + EmptyListEffectiveStatement(final EmptyListEffectiveStatement original, final QName argument, final int flags) { + super(original, argument, flags); } @Override diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListStatementSupport.java index 0adb85324d..6aab0cebd4 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListStatementSupport.java @@ -19,7 +19,6 @@ import java.util.List; import java.util.Optional; import java.util.Set; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.Ordering; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint; @@ -142,10 +141,10 @@ public final class ListStatementSupport final int flags = computeFlags(stmt, original.effectiveSubstatements()); if (original instanceof RegularListEffectiveStatement) { return new RegularListEffectiveStatement((RegularListEffectiveStatement) original, - stmt.original(ListSchemaNode.class), stmt.effectivePath(), flags); + stmt.original(ListSchemaNode.class), stmt.getArgument(), flags); } else if (original instanceof EmptyListEffectiveStatement) { return new RegularListEffectiveStatement((EmptyListEffectiveStatement) original, - stmt.original(ListSchemaNode.class), stmt.effectivePath(), flags); + stmt.original(ListSchemaNode.class), stmt.getArgument(), flags); } else { // Safe fallback return super.copyEffective(stmt, original); @@ -189,12 +188,12 @@ public final class ListStatementSupport final Optional elementCountConstraint = EffectiveStmtUtils.createElementCountConstraint(substatements); - final Immutable path = stmt.effectivePath(); + final QName qname = stmt.getArgument(); final ListSchemaNode original = stmt.original(ListSchemaNode.class); try { return original == null && !elementCountConstraint.isPresent() - ? new EmptyListEffectiveStatement(stmt.declared(), path, flags, substatements, keyDefinition) - : new RegularListEffectiveStatement(stmt.declared(), path, flags, substatements, keyDefinition, + ? new EmptyListEffectiveStatement(stmt.declared(), qname, flags, substatements, keyDefinition) + : new RegularListEffectiveStatement(stmt.declared(), qname, flags, substatements, keyDefinition, elementCountConstraint.orElse(null), original); } catch (SubstatementIndexingException e) { throw new SourceException(e.getMessage(), stmt, e); diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/RegularListEffectiveStatement.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/RegularListEffectiveStatement.java index a8b273b5a2..aba9b89aec 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/RegularListEffectiveStatement.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/RegularListEffectiveStatement.java @@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.list; import com.google.common.collect.ImmutableList; import java.util.Optional; -import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; @@ -20,25 +19,25 @@ final class RegularListEffectiveStatement extends AbstractListEffectiveStatement private final ElementCountConstraint elementCountConstraint; private final ListSchemaNode original; - RegularListEffectiveStatement(final ListStatement declared, final Immutable path, final int flags, + RegularListEffectiveStatement(final ListStatement declared, final QName argument, final int flags, final ImmutableList> substatements, final ImmutableList keyDefinition, final ElementCountConstraint elementCountConstraint, final ListSchemaNode original) { - super(declared, path, flags, substatements, keyDefinition); + super(declared, argument, flags, substatements, keyDefinition); this.elementCountConstraint = elementCountConstraint; this.original = original; } RegularListEffectiveStatement(final RegularListEffectiveStatement originalEffective, final ListSchemaNode original, - final Immutable path, final int flags) { - super(originalEffective, path, flags); + final QName argument, final int flags) { + super(originalEffective, argument, flags); this.elementCountConstraint = originalEffective.elementCountConstraint; this.original = original; } RegularListEffectiveStatement(final EmptyListEffectiveStatement originalEffective, final ListSchemaNode original, - final Immutable path, final int flags) { - super(originalEffective, path, flags); + final QName argument, final int flags) { + super(originalEffective, argument, flags); this.elementCountConstraint = null; this.original = original; } diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ActionStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ActionStatementSupport.java index 17ee582aad..ebf83b6b84 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ActionStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ActionStatementSupport.java @@ -112,7 +112,7 @@ public final class ActionStatementSupport extends verify(!substatements.isEmpty(), "Missing implicit input/output statements at %s", ref); try { - return EffectiveStatements.createAction(stmt.declared(), stmt.effectivePath(), + return EffectiveStatements.createAction(stmt.declared(), stmt.getArgument(), EffectiveStatementMixins.historyAndStatusFlags(stmt.history(), substatements), substatements); } catch (SubstatementIndexingException e) { throw new SourceException(e.getMessage(), stmt, e); @@ -122,7 +122,7 @@ public final class ActionStatementSupport extends @Override public ActionEffectiveStatement copyEffective(final Current stmt, final ActionEffectiveStatement original) { - return EffectiveStatements.copyAction(original, stmt.effectivePath(), + return EffectiveStatements.copyAction(original, stmt.getArgument(), EffectiveStatementMixins.historyAndStatusFlags(stmt.history(), original.effectiveSubstatements())); } } diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/AnydataStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/AnydataStatementSupport.java index 43ba7726e9..6748e98b2f 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/AnydataStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/AnydataStatementSupport.java @@ -63,14 +63,14 @@ public final class AnydataStatementSupport @Override protected AnydataEffectiveStatement createEffective(final Current stmt, final ImmutableList> substatements) { - return EffectiveStatements.createAnydata(stmt.declared(), stmt.effectivePath(), + return EffectiveStatements.createAnydata(stmt.declared(), stmt.getArgument(), createFlags(stmt, substatements), substatements, stmt.original(AnydataSchemaNode.class)); } @Override public AnydataEffectiveStatement copyEffective(final Current stmt, final AnydataEffectiveStatement original) { - return EffectiveStatements.copyAnydata(original, stmt.effectivePath(), + return EffectiveStatements.copyAnydata(original, stmt.getArgument(), createFlags(stmt, original.effectiveSubstatements()), stmt.original(AnydataSchemaNode.class)); } diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/AnyxmlStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/AnyxmlStatementSupport.java index d1d43d0215..70d07fa808 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/AnyxmlStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/AnyxmlStatementSupport.java @@ -63,14 +63,14 @@ public final class AnyxmlStatementSupport @Override protected AnyxmlEffectiveStatement createEffective(final Current stmt, final ImmutableList> substatements) { - return EffectiveStatements.createAnyxml(stmt.declared(), stmt.effectivePath(), createFlags(stmt, substatements), + return EffectiveStatements.createAnyxml(stmt.declared(), stmt.getArgument(), createFlags(stmt, substatements), substatements, stmt.original(AnyxmlSchemaNode.class)); } @Override public AnyxmlEffectiveStatement copyEffective(final Current stmt, final AnyxmlEffectiveStatement original) { - return EffectiveStatements.copyAnyxml(original, stmt.effectivePath(), + return EffectiveStatements.copyAnyxml(original, stmt.getArgument(), createFlags(stmt, original.effectiveSubstatements()), stmt.original(AnyxmlSchemaNode.class)); } diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/CaseStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/CaseStatementSupport.java index 6879078635..4b79879697 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/CaseStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/CaseStatementSupport.java @@ -106,14 +106,14 @@ public final class CaseStatementSupport @Override protected CaseEffectiveStatement copyDeclaredEffective(final Current stmt, final CaseEffectiveStatement original) { - return EffectiveStatements.copyCase(original, stmt.effectivePath(), + return EffectiveStatements.copyCase(original, stmt.getArgument(), computeFlags(stmt, original.effectiveSubstatements()), stmt.original(CaseSchemaNode.class)); } @Override protected CaseEffectiveStatement copyUndeclaredEffective(final Current stmt, final CaseEffectiveStatement original) { - return EffectiveStatements.copyCase(original, stmt.effectivePath(), + return EffectiveStatements.copyCase(original, stmt.getArgument(), computeFlags(stmt, original.effectiveSubstatements()), stmt.original(CaseSchemaNode.class)); } @@ -121,7 +121,7 @@ public final class CaseStatementSupport protected CaseEffectiveStatement createDeclaredEffective(final Current stmt, final ImmutableList> substatements) { try { - return EffectiveStatements.createCase(stmt.declared(), stmt.effectivePath(), + return EffectiveStatements.createCase(stmt.declared(), stmt.getArgument(), computeFlags(stmt, substatements), substatements, stmt.original(CaseSchemaNode.class)); } catch (SubstatementIndexingException e) { throw new SourceException(e.getMessage(), stmt, e); @@ -132,7 +132,7 @@ public final class CaseStatementSupport protected CaseEffectiveStatement createUndeclaredEffective(final Current stmt, final ImmutableList> substatements) { try { - return EffectiveStatements.createCase(stmt.effectivePath(), computeFlags(stmt, substatements), + return EffectiveStatements.createCase(stmt.getArgument(), computeFlags(stmt, substatements), substatements, stmt.original(CaseSchemaNode.class)); } catch (SubstatementIndexingException e) { throw new SourceException(e.getMessage(), stmt, e); diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ChoiceStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ChoiceStatementSupport.java index 784c70b3b6..04c04b7937 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ChoiceStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ChoiceStatementSupport.java @@ -122,7 +122,7 @@ public final class ChoiceStatementSupport @Override public ChoiceEffectiveStatement copyEffective(final Current stmt, final ChoiceEffectiveStatement original) { - return EffectiveStatements.copyChoice(original, stmt.effectivePath(), + return EffectiveStatements.copyChoice(original, stmt.getArgument(), computeFlags(stmt, original.effectiveSubstatements()), stmt.original(ChoiceSchemaNode.class)); } @@ -147,7 +147,7 @@ public final class ChoiceStatementSupport } try { - return EffectiveStatements.createChoice(stmt.declared(), stmt.effectivePath(), + return EffectiveStatements.createChoice(stmt.declared(), stmt.getArgument(), computeFlags(stmt, substatements), substatements, defaultCase, stmt.original(ChoiceSchemaNode.class)); } catch (SubstatementIndexingException e) { throw new SourceException(e.getMessage(), stmt, e); diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ContainerStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ContainerStatementSupport.java index 4ca2a1a05b..e8574eb278 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ContainerStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ContainerStatementSupport.java @@ -115,7 +115,7 @@ public final class ContainerStatementSupport EffectiveStmtUtils.checkUniqueUses(stmt, substatements); try { - return EffectiveStatements.createContainer(stmt.declared(), stmt.effectivePath(), + return EffectiveStatements.createContainer(stmt.declared(), stmt.getArgument(), createFlags(stmt, substatements), substatements, stmt.original(ContainerSchemaNode.class)); } catch (SubstatementIndexingException e) { throw new SourceException(e.getMessage(), stmt, e); @@ -125,7 +125,7 @@ public final class ContainerStatementSupport @Override public ContainerEffectiveStatement copyEffective(final Current stmt, final ContainerEffectiveStatement original) { - return EffectiveStatements.copyContainer(original, stmt.effectivePath(), + return EffectiveStatements.copyContainer(original, stmt.getArgument(), createFlags(stmt, original.effectiveSubstatements()), stmt.original(ContainerSchemaNode.class)); } diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/FeatureStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/FeatureStatementSupport.java index 7b78289ef6..039ab9e197 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/FeatureStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/FeatureStatementSupport.java @@ -70,8 +70,7 @@ public final class FeatureStatementSupport @Override protected FeatureEffectiveStatement createEffective(final Current stmt, final ImmutableList> substatements) { - return EffectiveStatements.createFeature(stmt.declared(), stmt.effectivePath(), computeFlags(substatements), - substatements); + return EffectiveStatements.createFeature(stmt.declared(), computeFlags(substatements), substatements); } private static int computeFlags(final ImmutableList> substatements) { diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/GroupingStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/GroupingStatementSupport.java index 2b7842afaf..45f7daf6d7 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/GroupingStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/GroupingStatementSupport.java @@ -79,8 +79,7 @@ public final class GroupingStatementSupport super(YangStmtMapping.GROUPING, StatementPolicy.copyDeclared( (copy, current, substatements) -> copy.history().isAddedByUses() == current.history().isAddedByUses() - && copy.getArgument().equals(current.getArgument()) - && copy.equalParentPath(current)), config, validator); + && copy.getArgument().equals(current.getArgument())), config, validator); } public static @NonNull GroupingStatementSupport rfc6020Instance(final YangParserConfiguration config) { @@ -146,7 +145,7 @@ public final class GroupingStatementSupport protected GroupingEffectiveStatement createEffective(final Current stmt, final ImmutableList> substatements) { try { - return EffectiveStatements.createGrouping(stmt.declared(), substatements, stmt.effectivePath(), + return EffectiveStatements.createGrouping(stmt.declared(), substatements, stmt.getArgument(), EffectiveStatementMixins.historyAndStatusFlags(stmt.history(), substatements)); } catch (SubstatementIndexingException e) { throw new SourceException(e.getMessage(), stmt, e); diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/IdentityStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/IdentityStatementSupport.java index cf25d18740..1bcabad7bb 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/IdentityStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/IdentityStatementSupport.java @@ -102,7 +102,7 @@ public final class IdentityStatementSupport protected IdentityEffectiveStatement createEffective(final Current stmt, final ImmutableList> substatements) { if (substatements.isEmpty()) { - return EffectiveStatements.createIdentity(stmt.declared(), stmt.effectivePath()); + return EffectiveStatements.createIdentity(stmt.declared()); } final List identities = new ArrayList<>(); @@ -118,7 +118,7 @@ public final class IdentityStatementSupport } } - return EffectiveStatements.createIdentity(stmt.declared(), stmt.effectivePath(), new FlagsBuilder() + return EffectiveStatements.createIdentity(stmt.declared(), new FlagsBuilder() .setStatus(findFirstArgument(substatements, StatusEffectiveStatement.class, Status.CURRENT)) .toFlags(), substatements, ImmutableSet.copyOf(identities)); } diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/InputStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/InputStatementSupport.java index 136bfb8083..552232e3fb 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/InputStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/InputStatementSupport.java @@ -93,20 +93,20 @@ public final class InputStatementSupport @Override InputEffectiveStatement copyDeclaredEffective(final int flags, final Current stmt, final InputEffectiveStatement original) { - return EffectiveStatements.copyInput(original, stmt.effectivePath(), flags); + return EffectiveStatements.copyInput(original, stmt.getArgument(), flags); } @Override InputEffectiveStatement copyUndeclaredEffective(final int flags, final Current stmt, final InputEffectiveStatement original) { - return EffectiveStatements.copyInput(original, stmt.effectivePath(), flags); + return EffectiveStatements.copyInput(original, stmt.getArgument(), flags); } @Override InputEffectiveStatement createDeclaredEffective(final int flags, final Current stmt, final ImmutableList> substatements) { try { - return EffectiveStatements.createInput(stmt.declared(), stmt.effectivePath(), flags, substatements); + return EffectiveStatements.createInput(stmt.declared(), stmt.getArgument(), flags, substatements); } catch (SubstatementIndexingException e) { throw new SourceException(e.getMessage(), stmt, e); } @@ -116,7 +116,7 @@ public final class InputStatementSupport InputEffectiveStatement createUndeclaredEffective(final int flags, final Current stmt, final ImmutableList> substatements) { try { - return EffectiveStatements.createInput(stmt.effectivePath(), flags, substatements); + return EffectiveStatements.createInput(stmt.getArgument(), flags, substatements); } catch (SubstatementIndexingException e) { throw new SourceException(e.getMessage(), stmt, e); } diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/LeafStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/LeafStatementSupport.java index c0b0af1f47..e1809a87e9 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/LeafStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/LeafStatementSupport.java @@ -77,7 +77,7 @@ public final class LeafStatementSupport @Override public LeafEffectiveStatement copyEffective(final Current stmt, final LeafEffectiveStatement original) { - return EffectiveStatements.copyLeaf(original, stmt.effectivePath(), + return EffectiveStatements.copyLeaf(original, stmt.getArgument(), computeFlags(stmt, original.effectiveSubstatements()), stmt.original(LeafSchemaNode.class)); } @@ -92,7 +92,7 @@ public final class LeafStatementSupport EffectiveStmtUtils.hasDefaultValueMarkedWithIfFeature(stmt.yangVersion(), typeStmt, dflt), stmt, "Leaf '%s' has default value '%s' marked with an if-feature statement.", stmt.argument(), dflt); - return EffectiveStatements.createLeaf(stmt.declared(), stmt.effectivePath(), computeFlags(stmt, substatements), + return EffectiveStatements.createLeaf(stmt.declared(), stmt.getArgument(), computeFlags(stmt, substatements), substatements, stmt.original(LeafSchemaNode.class)); } diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/OutputStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/OutputStatementSupport.java index 46de5c5e0f..b92aceaab7 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/OutputStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/OutputStatementSupport.java @@ -93,20 +93,20 @@ public final class OutputStatementSupport @Override OutputEffectiveStatement copyDeclaredEffective(final int flags, final Current stmt, final OutputEffectiveStatement original) { - return EffectiveStatements.copyOutput(original, stmt.effectivePath(), flags); + return EffectiveStatements.copyOutput(original, stmt.getArgument(), flags); } @Override OutputEffectiveStatement copyUndeclaredEffective(final int flags, final Current stmt, final OutputEffectiveStatement original) { - return EffectiveStatements.copyOutput(original, stmt.effectivePath(), flags); + return EffectiveStatements.copyOutput(original, stmt.getArgument(), flags); } @Override OutputEffectiveStatement createDeclaredEffective(final int flags, final Current stmt, final ImmutableList> substatements) { try { - return EffectiveStatements.createOutput(stmt.declared(), stmt.effectivePath(), flags, substatements); + return EffectiveStatements.createOutput(stmt.declared(), stmt.getArgument(), flags, substatements); } catch (SubstatementIndexingException e) { throw new SourceException(e.getMessage(), stmt, e); } @@ -116,7 +116,7 @@ public final class OutputStatementSupport OutputEffectiveStatement createUndeclaredEffective(final int flags, final Current stmt, final ImmutableList> substatements) { try { - return EffectiveStatements.createOutput(stmt.effectivePath(), flags, substatements); + return EffectiveStatements.createOutput(stmt.getArgument(), flags, substatements); } catch (SubstatementIndexingException e) { throw new SourceException(e.getMessage(), stmt, e); } diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/RpcStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/RpcStatementSupport.java index 7a848fe98f..d120c2c163 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/RpcStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/RpcStatementSupport.java @@ -93,7 +93,7 @@ public final class RpcStatementSupport extends AbstractSchemaTreeStatementSuppor checkState(!substatements.isEmpty(), "Missing implicit input/output statements at %s", stmt.sourceReference()); try { - return EffectiveStatements.createRpc(stmt.declared(), substatements, stmt.effectivePath(), + return EffectiveStatements.createRpc(stmt.declared(), substatements, stmt.getArgument(), computeFlags(substatements)); } catch (SubstatementIndexingException e) { throw new SourceException(e.getMessage(), stmt, e); diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/TypedefStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/TypedefStatementSupport.java index b064a5fc97..303cc6d2c3 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/TypedefStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/TypedefStatementSupport.java @@ -122,8 +122,7 @@ public final class TypedefStatementSupport extends EffectiveStmtUtils.hasDefaultValueMarkedWithIfFeature(stmt.yangVersion(), typeEffectiveStmt, dflt), stmt, "Typedef '%s' has default value '%s' marked with an if-feature statement.", stmt.argument(), dflt); - return EffectiveStatements.createTypedef(declared, stmt.effectivePath(), computeFlags(substatements), - substatements); + return EffectiveStatements.createTypedef(declared, computeFlags(substatements), substatements); } private static void checkConflict(final StmtContext parent, final StmtContext stmt) { diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/notification/AbstractNotificationStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/notification/AbstractNotificationStatementSupport.java index e0d9c201fb..e050ab5a54 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/notification/AbstractNotificationStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/notification/AbstractNotificationStatementSupport.java @@ -49,7 +49,7 @@ abstract class AbstractNotificationStatementSupport protected final NotificationEffectiveStatement createEffective(final Current stmt, final ImmutableList> substatements) { try { - return EffectiveStatements.createNotification(stmt.declared(), stmt.effectivePath(), + return EffectiveStatements.createNotification(stmt.declared(), stmt.getArgument(), EffectiveStatementMixins.historyAndStatusFlags(stmt.history(), substatements), substatements); } catch (SubstatementIndexingException e) { throw new SourceException(e.getMessage(), stmt, e); @@ -60,7 +60,7 @@ abstract class AbstractNotificationStatementSupport // FIXME: propagate original? public final NotificationEffectiveStatement copyEffective(final Current stmt, final NotificationEffectiveStatement original) { - return EffectiveStatements.copyNotification(original, stmt.effectivePath(), + return EffectiveStatements.copyNotification(original, stmt.getArgument(), EffectiveStatementMixins.historyAndStatusFlags(stmt.history(), original.effectiveSubstatements())); } } diff --git a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/AugmentTest.java b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/AugmentTest.java index 4e57b84002..5996ce28e5 100644 --- a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/AugmentTest.java +++ b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/AugmentTest.java @@ -11,11 +11,8 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.assertPathEquals; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; @@ -33,7 +30,6 @@ import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute; import org.opendaylight.yangtools.yang.model.api.type.TypeDefinitions; @@ -53,10 +49,6 @@ public class AugmentTest { public void testAugmentParsing() throws Exception { final SchemaContext context = TestUtils.loadModules(getClass().getResource("/augment-test/augment-in-augment") .toURI()); - final List qnames = new ArrayList<>(); - qnames.add(Q0); - qnames.add(Q1); - qnames.add(Q2); // foo.yang final Module module1 = TestUtils.findModule(context, "foo").get(); @@ -65,7 +57,7 @@ public class AugmentTest { final AugmentationSchemaNode augment = augmentations.iterator().next(); assertNotNull(augment); - assertEquals(Absolute.of(qnames), augment.getTargetPath()); + assertEquals(Absolute.of(Q0, Q1, Q2), augment.getTargetPath()); final Collection augmentChildren = augment.getChildNodes(); assertEquals(4, augmentChildren.size()); @@ -88,37 +80,21 @@ public class AugmentTest { assertNotNull(odl); // leaf ds0ChannelNumber - QName qname = QName.create(FOO, "ds0ChannelNumber"); - qnames.add(qname); - assertEquals(qname, ds0ChannelNumber.getQName()); - SchemaPath expectedSchemaPath = SchemaPath.create(qnames, true); - assertPathEquals(expectedSchemaPath, ds0ChannelNumber); + assertEquals(QName.create(FOO, "ds0ChannelNumber"), ds0ChannelNumber.getQName()); assertFalse(ds0ChannelNumber.isAugmenting()); // type of leaf ds0ChannelNumber assertEquals(TypeDefinitions.STRING, ds0ChannelNumber.getType().getQName()); // leaf interface-id - qname = QName.create(FOO, "interface-id"); - assertEquals(qname, interfaceId.getQName()); - qnames.set(3, qname); - expectedSchemaPath = SchemaPath.create(qnames, true); - assertPathEquals(expectedSchemaPath, interfaceId); + assertEquals(QName.create(FOO, "interface-id"), interfaceId.getQName()); assertFalse(interfaceId.isAugmenting()); // container schemas - qname = QName.create(FOO, "schemas"); - assertEquals(qname, schemas.getQName()); - qnames.set(3, qname); - expectedSchemaPath = SchemaPath.create(qnames, true); - assertPathEquals(expectedSchemaPath, schemas); + assertEquals(QName.create(FOO, "schemas"), schemas.getQName()); assertFalse(schemas.isAugmenting()); // choice odl - qname = QName.create(FOO, "odl"); - assertEquals(qname, odl.getQName()); - qnames.set(3, qname); - expectedSchemaPath = SchemaPath.create(qnames, true); - assertPathEquals(expectedSchemaPath, odl); + assertEquals(QName.create(FOO, "odl"), odl.getQName()); assertFalse(odl.isAugmenting()); // baz.yang @@ -167,18 +143,12 @@ public class AugmentTest { final ListSchemaNode ifEntry = (ListSchemaNode) interfaces.getDataChildByName(QName.create( module2.getQNameModule(), "ifEntry")); - final List qnames = new ArrayList<>(); - qnames.add(Q0); - qnames.add(Q1); - qnames.add(Q2); - // baz.yang // augment "/br:interfaces/br:ifEntry" { final ContainerSchemaNode augmentHolder = (ContainerSchemaNode) ifEntry.getDataChildByName(QName.create(BAZ, "augment-holder")); TestUtils.checkIsAugmenting(augmentHolder, true); assertEquals(Q2, augmentHolder.getQName()); - assertPathEquals(SchemaPath.create(qnames, true), augmentHolder); // foo.yang // augment "/br:interfaces/br:ifEntry/bz:augment-holder" @@ -196,28 +166,16 @@ public class AugmentTest { assertNotNull(odl); // leaf ds0ChannelNumber - QName qname = QName.create(FOO, "ds0ChannelNumber"); - assertEquals(qname, ds0ChannelNumber.getQName()); - qnames.add(qname); - assertPathEquals(SchemaPath.create(qnames, true), ds0ChannelNumber); + assertEquals(QName.create(FOO, "ds0ChannelNumber"), ds0ChannelNumber.getQName()); // leaf interface-id - qname = QName.create(FOO, "interface-id"); - assertEquals(qname, interfaceId.getQName()); - qnames.set(3, qname); - assertPathEquals(SchemaPath.create(qnames, true), interfaceId); + assertEquals(QName.create(FOO, "interface-id"), interfaceId.getQName()); // container schemas - qname = QName.create(FOO, "schemas"); - assertEquals(qname, schemas.getQName()); - qnames.set(3, qname); - assertPathEquals(SchemaPath.create(qnames, true), schemas); + assertEquals(QName.create(FOO, "schemas"), schemas.getQName()); // choice odl - qname = QName.create(FOO, "odl"); - assertEquals(qname, odl.getQName()); - qnames.set(3, qname); - assertPathEquals(SchemaPath.create(qnames, true), odl); + assertEquals(QName.create(FOO, "odl"), odl.getQName()); } @Test @@ -262,64 +220,36 @@ public class AugmentTest { assertNotNull(node2); assertNotNull(node3); - final List qnames = new ArrayList<>(); - qnames.add(Q0); - qnames.add(Q1); - qnames.add(Q2); - qnames.add(QName.create(FOO, "odl")); - // case id - QName qname = QName.create(FOO, "id"); - assertEquals(qname, id.getQName()); - qnames.add(qname); - assertPathEquals(SchemaPath.create(qnames, true), id); + assertEquals(QName.create(FOO, "id"), id.getQName()); final Collection idChildren = id.getChildNodes(); assertEquals(1, idChildren.size()); // case node1 - qname = QName.create(FOO, "node1"); - assertEquals(qname, node1.getQName()); - qnames.set(4, qname); - assertPathEquals(SchemaPath.create(qnames, true), node1); + assertEquals(QName.create(FOO, "node1"), node1.getQName()); final Collection node1Children = node1.getChildNodes(); assertTrue(node1Children.isEmpty()); // case node2 - qname = QName.create(FOO, "node2"); - assertEquals(qname, node2.getQName()); - qnames.set(4, qname); - assertPathEquals(SchemaPath.create(qnames, true), node2); + assertEquals(QName.create(FOO, "node2"), node2.getQName()); final Collection node2Children = node2.getChildNodes(); assertTrue(node2Children.isEmpty()); // case node3 - qname = QName.create(FOO, "node3"); - assertEquals(qname, node3.getQName()); - qnames.set(4, qname); - assertPathEquals(SchemaPath.create(qnames, true), node3); + assertEquals(QName.create(FOO, "node3"), node3.getQName()); final Collection node3Children = node3.getChildNodes(); assertEquals(1, node3Children.size()); // test cases - qnames.clear(); - qnames.add(Q0); - qnames.add(Q1); - qnames.add(Q2); - qnames.add(QName.create(FOO, "odl")); - // case id child - qnames.add(QName.create(FOO, "id")); - qnames.add(QName.create(FOO, "id")); final LeafSchemaNode caseIdChild = (LeafSchemaNode) idChildren.iterator().next(); assertNotNull(caseIdChild); - assertPathEquals(SchemaPath.create(qnames, true), caseIdChild); + assertEquals(QName.create(FOO, "id"), caseIdChild.getQName()); // case node3 child - qnames.set(4, QName.create(FOO, "node3")); - qnames.set(5, QName.create(FOO, "node3")); final ContainerSchemaNode caseNode3Child = (ContainerSchemaNode) node3Children.iterator().next(); assertNotNull(caseNode3Child); - assertPathEquals(SchemaPath.create(qnames, true), caseNode3Child); + assertEquals(QName.create(FOO, "node3"), caseNode3Child.getQName()); } @Test @@ -374,29 +304,18 @@ public class AugmentTest { assertTrue(create.isAugmenting()); assertTrue(destroy.isAugmenting()); - final QName[] qnames = new QName[4]; - qnames[0] = submitQName; - qnames[1] = inputQName; - qnames[2] = argumentsQName; - // case attach - qnames[3] = QName.create(NS_FOO, revision, "attach"); - assertEquals(qnames[3], attach.getQName()); - assertPathEquals(SchemaPath.create(true, qnames), attach); + assertEquals(QName.create(NS_FOO, revision, "attach"), attach.getQName()); final Collection attachChildren = attach.getChildNodes(); assertEquals(1, attachChildren.size()); // case create - qnames[3] = QName.create(NS_FOO, revision, "create"); - assertEquals(qnames[3], create.getQName()); - assertPathEquals(SchemaPath.create(true, qnames), create); + assertEquals(QName.create(NS_FOO, revision, "create"), create.getQName()); final Collection createChildren = create.getChildNodes(); assertEquals(1, createChildren.size()); // case attach - qnames[3] = QName.create(NS_FOO, revision, "destroy"); - assertEquals(qnames[3], destroy.getQName()); - assertPathEquals(SchemaPath.create(true, qnames), destroy); + assertEquals(QName.create(NS_FOO, revision, "destroy"), destroy.getQName()); final Collection destroyChildren = destroy.getChildNodes(); assertEquals(1, destroyChildren.size()); } @@ -422,5 +341,4 @@ public class AugmentTest { final LeafSchemaNode id = (LeafSchemaNode) node.getDataChildByName(QName.create(test.getQNameModule(), "id")); assertTrue(id.isAugmenting()); } - } diff --git a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveBuildTest.java b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveBuildTest.java index 6667a4805e..bbe4fdec8d 100644 --- a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveBuildTest.java +++ b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveBuildTest.java @@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.stmt; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.assertPathEquals; import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResource; import java.io.FileNotFoundException; @@ -26,7 +25,6 @@ import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.RFC7950Reactors; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource; @@ -85,9 +83,9 @@ public class EffectiveBuildTest { ContainerSchemaNode grpSubSubCon2 = (ContainerSchemaNode) grpSubCon2.getDataChildByName(q6); assertNotNull(grpSubSubCon2); - assertPathEquals(SchemaPath.create(true, q1, q2, q3), subSubCon); - assertPathEquals(SchemaPath.create(true, q4, q5, q6), subSubCon2); - assertPathEquals(SchemaPath.create(true, q7, q5, q6), grpSubSubCon2); + assertEquals(q3, subSubCon.getQName()); + assertEquals(q6, subSubCon2.getQName()); + assertEquals(q6, grpSubSubCon2.getQName()); } @Test diff --git a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModuleTest.java b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModuleTest.java index 0ee7f97694..528b5f8677 100644 --- a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModuleTest.java +++ b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModuleTest.java @@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.stmt; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.assertPathEquals; import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResource; import java.util.Collection; @@ -31,43 +30,28 @@ import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.ModuleImport; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute; import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.RFC7950Reactors; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; -import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource; public class EffectiveModuleTest { - - private static final StatementStreamSource ROOT_MODULE = sourceForResource( - "/semantic-statement-parser/effective-module/root.yang"); - private static final StatementStreamSource IMPORTED_MODULE = sourceForResource( - "/semantic-statement-parser/effective-module/imported.yang"); - private static final StatementStreamSource SUBMODULE = sourceForResource( - "/semantic-statement-parser/effective-module/submod.yang"); - private static final QNameModule ROOT_MODULE_QNAME = QNameModule.create(XMLNamespace.of("root-ns")); - private static final QName CONT = QName.create(ROOT_MODULE_QNAME, "cont"); private static final QName FEATURE1 = QName.create(ROOT_MODULE_QNAME, "feature1"); - - private static final SchemaPath FEATURE1_SCHEMA_PATH = SchemaPath.create(true, FEATURE1); - private static final Revision REVISION = Revision.of("2000-01-01"); @Test public void effectiveBuildTest() throws SourceException, ReactorException { - SchemaContext result = RFC7950Reactors.defaultReactor().newBuild() - .addSources(ROOT_MODULE, IMPORTED_MODULE, SUBMODULE) - .buildEffective(); - - assertNotNull(result); - - Module rootModule = result.findModules("root").iterator().next(); + final Module rootModule = RFC7950Reactors.defaultReactor().newBuild() + .addSources( + sourceForResource("/semantic-statement-parser/effective-module/root.yang"), + sourceForResource("/semantic-statement-parser/effective-module/imported.yang"), + sourceForResource("/semantic-statement-parser/effective-module/submod.yang")) + .buildEffective() + .findModules("root").iterator().next(); assertNotNull(rootModule); assertEquals("root-pref", rootModule.getPrefix()); @@ -121,7 +105,6 @@ public class EffectiveModuleTest { final FeatureDefinition featureStmt = features.iterator().next(); assertNotNull(featureStmt); assertEquals(FEATURE1, featureStmt.getQName()); - assertPathEquals(FEATURE1_SCHEMA_PATH, featureStmt); assertEquals(Optional.of("feature1 description"), featureStmt.getDescription()); assertEquals(Optional.of("feature1 reference"), featureStmt.getReference()); assertEquals(Status.CURRENT, featureStmt.getStatus()); diff --git a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveSchemaContextTest.java b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveSchemaContextTest.java index fac4662d58..9e395ab674 100644 --- a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveSchemaContextTest.java +++ b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveSchemaContextTest.java @@ -27,7 +27,6 @@ import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.UnrecognizedStatement; @@ -79,7 +78,6 @@ public class EffectiveSchemaContextTest { assertFalse(schemaContext.getDescription().isPresent()); assertFalse(schemaContext.getReference().isPresent()); assertEquals(SchemaContext.NAME, schemaContext.getQName()); - assertEquals(SchemaPath.ROOT, schemaContext.getPath()); assertEquals(Status.CURRENT, schemaContext.getStatus()); assertNotNull(schemaContext.getUses()); assertTrue(schemaContext.getUses().isEmpty()); diff --git a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/GroupingTest.java b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/GroupingTest.java index ad063bd93a..6fde4e592a 100644 --- a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/GroupingTest.java +++ b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/GroupingTest.java @@ -14,15 +14,13 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.assertPathEquals; -import java.util.Arrays; +import com.google.common.collect.Iterables; import java.util.Collection; import java.util.Map; import java.util.Optional; -import java.util.stream.Collectors; import org.eclipse.jdt.annotation.Nullable; -import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; @@ -44,7 +42,6 @@ import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.MustDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UsesNode; import org.opendaylight.yangtools.yang.model.api.stmt.RefineEffectiveStatement; @@ -52,24 +49,25 @@ import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Desce import org.opendaylight.yangtools.yang.model.api.stmt.UnrecognizedStatement; public class GroupingTest { - private EffectiveModelContext ctx; - private Module foo; - private Module baz; - - @Before - public void init() throws Exception { - ctx = TestUtils.parseYangSources("/model"); - foo = TestUtils.findModule(ctx, "foo").get(); - baz = TestUtils.findModule(ctx, "baz").get(); - assertEquals(3, ctx.getModules().size()); + private static EffectiveModelContext CTX; + private static Module FOO; + private static Module BAZ; + + @BeforeClass + public static void beforeClass() throws Exception { + CTX = TestUtils.parseYangSources("/model"); + assertEquals(3, CTX.getModules().size()); + + FOO = Iterables.getOnlyElement(CTX.findModules("foo")); + BAZ = Iterables.getOnlyElement(CTX.findModules("baz")); } @Test public void testRefine() { - final ContainerSchemaNode peer = (ContainerSchemaNode) foo.getDataChildByName(QName.create( - foo.getQNameModule(), "peer")); + final ContainerSchemaNode peer = (ContainerSchemaNode) FOO.getDataChildByName(QName.create( + FOO.getQNameModule(), "peer")); final ContainerSchemaNode destination = (ContainerSchemaNode) peer.getDataChildByName(QName.create( - foo.getQNameModule(), "destination")); + FOO.getQNameModule(), "destination")); final Collection usesNodes = destination.getUses(); assertEquals(1, usesNodes.size()); @@ -140,7 +138,7 @@ public class GroupingTest { @Test public void testGrouping() { - final Collection groupings = baz.getGroupings(); + final Collection groupings = BAZ.getGroupings(); assertEquals(1, groupings.size()); final GroupingDefinition grouping = groupings.iterator().next(); final Collection children = grouping.getChildNodes(); @@ -154,15 +152,15 @@ public class GroupingTest { // get grouping - final Collection groupings = baz.getGroupings(); + final Collection groupings = BAZ.getGroupings(); assertEquals(1, groupings.size()); final GroupingDefinition grouping = groupings.iterator().next(); // get node containing uses - final ContainerSchemaNode peer = (ContainerSchemaNode) foo.getDataChildByName(QName.create( - foo.getQNameModule(), "peer")); + final ContainerSchemaNode peer = (ContainerSchemaNode) FOO.getDataChildByName(QName.create( + FOO.getQNameModule(), "peer")); final ContainerSchemaNode destination = (ContainerSchemaNode) peer.getDataChildByName(QName.create( - foo.getQNameModule(), "destination")); + FOO.getQNameModule(), "destination")); // check uses final Collection uses = destination.getUses(); @@ -170,25 +168,25 @@ public class GroupingTest { // check uses process final AnyxmlSchemaNode data_u = (AnyxmlSchemaNode) destination.getDataChildByName(QName.create( - foo.getQNameModule(), "data")); + FOO.getQNameModule(), "data")); assertNotNull(data_u); assertTrue(data_u.isAddedByUses()); final AnyxmlSchemaNode data_g = (AnyxmlSchemaNode) grouping.getDataChildByName(QName.create( - baz.getQNameModule(), "data")); + BAZ.getQNameModule(), "data")); assertNotNull(data_g); assertFalse(data_g.isAddedByUses()); assertFalse(data_u.equals(data_g)); assertEquals(data_g, extractOriginal(data_u)); final ChoiceSchemaNode how_u = (ChoiceSchemaNode) destination.getDataChildByName(QName.create( - foo.getQNameModule(), "how")); + FOO.getQNameModule(), "how")); assertNotNull(how_u); assertIsAddedByUses(how_u, true); assertEquals(2, how_u.getCases().size()); final ChoiceSchemaNode how_g = (ChoiceSchemaNode) grouping.getDataChildByName(QName.create( - baz.getQNameModule(), "how")); + BAZ.getQNameModule(), "how")); assertNotNull(how_g); assertIsAddedByUses(how_g, false); assertEquals(2, how_g.getCases().size()); @@ -196,7 +194,7 @@ public class GroupingTest { assertEquals(how_g, extractOriginal(how_u)); final LeafSchemaNode address_u = (LeafSchemaNode) destination.getDataChildByName(QName.create( - foo.getQNameModule(), "address")); + FOO.getQNameModule(), "address")); assertNotNull(address_u); assertEquals(Optional.of("1.2.3.4"), address_u.getType().getDefaultValue()); assertEquals(Optional.of("IP address of target node"), address_u.getDescription()); @@ -206,7 +204,7 @@ public class GroupingTest { assertFalse(address_u.isMandatory()); final LeafSchemaNode address_g = (LeafSchemaNode) grouping.getDataChildByName(QName.create( - baz.getQNameModule(), "address")); + BAZ.getQNameModule(), "address")); assertNotNull(address_g); assertFalse(address_g.isAddedByUses()); assertEquals(Optional.empty(), address_g.getType().getDefaultValue()); @@ -218,24 +216,24 @@ public class GroupingTest { assertEquals(address_g, extractOriginal(address_u)); final ContainerSchemaNode port_u = (ContainerSchemaNode) destination.getDataChildByName(QName.create( - foo.getQNameModule(), "port")); + FOO.getQNameModule(), "port")); assertNotNull(port_u); assertIsAddedByUses(port_u, true); final ContainerSchemaNode port_g = (ContainerSchemaNode) grouping.getDataChildByName(QName.create( - baz.getQNameModule(), "port")); + BAZ.getQNameModule(), "port")); assertNotNull(port_g); assertIsAddedByUses(port_g, false); assertFalse(port_u.equals(port_g)); assertEquals(port_g, extractOriginal(port_u)); final ListSchemaNode addresses_u = (ListSchemaNode) destination.getDataChildByName(QName.create( - foo.getQNameModule(), "addresses")); + FOO.getQNameModule(), "addresses")); assertNotNull(addresses_u); assertIsAddedByUses(addresses_u, true); final ListSchemaNode addresses_g = (ListSchemaNode) grouping.getDataChildByName(QName.create( - baz.getQNameModule(), "addresses")); + BAZ.getQNameModule(), "addresses")); assertNotNull(addresses_g); assertIsAddedByUses(addresses_g, false); assertFalse(addresses_u.equals(addresses_g)); @@ -262,28 +260,28 @@ public class GroupingTest { // suffix _g = defined in grouping // get grouping - final Collection groupings = baz.getGroupings(); + final Collection groupings = BAZ.getGroupings(); assertEquals(1, groupings.size()); final GroupingDefinition grouping = groupings.iterator().next(); // check uses - final Collection uses = foo.getUses(); + final Collection uses = FOO.getUses(); assertEquals(1, uses.size()); // check uses process - final AnyxmlSchemaNode data_u = (AnyxmlSchemaNode) foo.getDataChildByName(QName.create(foo.getQNameModule(), + final AnyxmlSchemaNode data_u = (AnyxmlSchemaNode) FOO.getDataChildByName(QName.create(FOO.getQNameModule(), "data")); assertNotNull(data_u); assertTrue(data_u.isAddedByUses()); final AnyxmlSchemaNode data_g = (AnyxmlSchemaNode) grouping.getDataChildByName(QName.create( - baz.getQNameModule(), "data")); + BAZ.getQNameModule(), "data")); assertNotNull(data_g); assertFalse(data_g.isAddedByUses()); assertFalse(data_u.equals(data_g)); assertEquals(data_g, extractOriginal(data_u)); - final ChoiceSchemaNode how_u = (ChoiceSchemaNode) foo.getDataChildByName(QName.create(foo.getQNameModule(), + final ChoiceSchemaNode how_u = (ChoiceSchemaNode) FOO.getDataChildByName(QName.create(FOO.getQNameModule(), "how")); assertNotNull(how_u); assertIsAddedByUses(how_u, true); @@ -292,21 +290,21 @@ public class GroupingTest { assertEquals(2, cases_u.size()); final CaseSchemaNode interval = how_u.findCaseNodes("interval").iterator().next(); assertFalse(interval.isAugmenting()); - final LeafSchemaNode name = (LeafSchemaNode) interval.getDataChildByName(QName.create(foo.getQNameModule(), + final LeafSchemaNode name = (LeafSchemaNode) interval.getDataChildByName(QName.create(FOO.getQNameModule(), "name")); assertTrue(name.isAugmenting()); final LeafSchemaNode intervalLeaf = (LeafSchemaNode) interval.getDataChildByName(QName.create( - foo.getQNameModule(), "interval")); + FOO.getQNameModule(), "interval")); assertFalse(intervalLeaf.isAugmenting()); final ChoiceSchemaNode how_g = (ChoiceSchemaNode) grouping.getDataChildByName(QName.create( - baz.getQNameModule(), "how")); + BAZ.getQNameModule(), "how")); assertNotNull(how_g); assertIsAddedByUses(how_g, false); assertFalse(how_u.equals(how_g)); assertEquals(how_g, extractOriginal(how_u)); - final LeafSchemaNode address_u = (LeafSchemaNode) foo.getDataChildByName(QName.create(foo.getQNameModule(), + final LeafSchemaNode address_u = (LeafSchemaNode) FOO.getDataChildByName(QName.create(FOO.getQNameModule(), "address")); assertNotNull(address_u); assertEquals(Optional.empty(), address_u.getType().getDefaultValue()); @@ -316,7 +314,7 @@ public class GroupingTest { assertTrue(address_u.isAddedByUses()); final LeafSchemaNode address_g = (LeafSchemaNode) grouping.getDataChildByName(QName.create( - baz.getQNameModule(), "address")); + BAZ.getQNameModule(), "address")); assertNotNull(address_g); assertFalse(address_g.isAddedByUses()); assertEquals(Optional.empty(), address_g.getType().getDefaultValue()); @@ -326,32 +324,32 @@ public class GroupingTest { assertFalse(address_u.equals(address_g)); assertEquals(address_g, extractOriginal(address_u)); - final ContainerSchemaNode port_u = (ContainerSchemaNode) foo.getDataChildByName(QName.create( - foo.getQNameModule(), "port")); + final ContainerSchemaNode port_u = (ContainerSchemaNode) FOO.getDataChildByName(QName.create( + FOO.getQNameModule(), "port")); assertNotNull(port_u); assertIsAddedByUses(port_u, true); final ContainerSchemaNode port_g = (ContainerSchemaNode) grouping.getDataChildByName(QName.create( - baz.getQNameModule(), "port")); + BAZ.getQNameModule(), "port")); assertNotNull(port_g); assertIsAddedByUses(port_g, false); assertFalse(port_u.equals(port_g)); assertEquals(port_g, extractOriginal(port_u)); - final ListSchemaNode addresses_u = (ListSchemaNode) foo.getDataChildByName(QName.create(foo.getQNameModule(), + final ListSchemaNode addresses_u = (ListSchemaNode) FOO.getDataChildByName(QName.create(FOO.getQNameModule(), "addresses")); assertNotNull(addresses_u); assertIsAddedByUses(addresses_u, true); final ListSchemaNode addresses_g = (ListSchemaNode) grouping.getDataChildByName(QName.create( - baz.getQNameModule(), "addresses")); + BAZ.getQNameModule(), "addresses")); assertNotNull(addresses_g); assertIsAddedByUses(addresses_g, false); assertFalse(addresses_u.equals(addresses_g)); assertEquals(addresses_g, extractOriginal(addresses_u)); // grouping defined by 'uses' - final Collection groupings_u = foo.getGroupings(); + final Collection groupings_u = FOO.getGroupings(); assertEquals(0, groupings_u.size()); // grouping defined in 'grouping' node @@ -378,10 +376,10 @@ public class GroupingTest { @Test public void testCascadeUses() throws Exception { - ctx = TestUtils.parseYangSource("/grouping-test/cascade-uses.yang"); - assertEquals(1, ctx.getModules().size()); + final EffectiveModelContext loadModules = TestUtils.parseYangSource("/grouping-test/cascade-uses.yang"); + assertEquals(1, loadModules.getModules().size()); - final Module testModule = TestUtils.findModule(ctx, "cascade-uses").get(); + final Module testModule = Iterables.getOnlyElement(loadModules.findModules("cascade-uses")); final QNameModule namespace = testModule.getQNameModule(); final Collection groupings = testModule.getGroupings(); @@ -462,8 +460,7 @@ public class GroupingTest { // grouping-V/container-grouping-V assertNotNull(containerGroupingV); assertFalse(containerGroupingV.isAddedByUses()); - SchemaPath expectedPath = createPath(true, expectedModule, "grouping-V", "container-grouping-V"); - assertPathEquals(expectedPath, containerGroupingV); + assertEquals(QName.create(expectedModule, "container-grouping-V"), containerGroupingV.getQName()); childNodes = containerGroupingV.getChildNodes(); assertEquals(2, childNodes.size()); for (final DataSchemaNode childNode : childNodes) { @@ -473,15 +470,11 @@ public class GroupingTest { // grouping-V/container-grouping-V/leaf-grouping-X final LeafSchemaNode leafXinContainerV = (LeafSchemaNode) containerGroupingV.getDataChildByName( QName.create(namespace, "leaf-grouping-X")); - expectedPath = createPath(true, expectedModule, "grouping-V", "container-grouping-V", - "leaf-grouping-X"); - assertPathEquals(expectedPath, leafXinContainerV); + assertEquals(QName.create(expectedModule, "leaf-grouping-X"), leafXinContainerV.getQName()); // grouping-V/container-grouping-V/leaf-grouping-Y final LeafSchemaNode leafYinContainerV = (LeafSchemaNode) containerGroupingV.getDataChildByName( QName.create(namespace, "leaf-grouping-Y")); - expectedPath = createPath(true, expectedModule, "grouping-V", "container-grouping-V", - "leaf-grouping-Y"); - assertPathEquals(expectedPath, leafYinContainerV); + assertEquals(QName.create(expectedModule, "leaf-grouping-Y"), leafYinContainerV.getQName()); // grouping-X childNodes = gx.getChildNodes(); @@ -491,15 +484,13 @@ public class GroupingTest { final LeafSchemaNode leafXinGX = (LeafSchemaNode) gx.getDataChildByName( QName.create(namespace, "leaf-grouping-X")); assertFalse(leafXinGX.isAddedByUses()); - expectedPath = createPath(true, expectedModule, "grouping-X", "leaf-grouping-X"); - assertPathEquals(expectedPath, leafXinGX); + assertEquals(QName.create(expectedModule, "leaf-grouping-X"), leafXinGX.getQName()); // grouping-X/leaf-grouping-Y final LeafSchemaNode leafYinGX = (LeafSchemaNode) gx.getDataChildByName( QName.create(namespace, "leaf-grouping-Y")); assertTrue(leafYinGX.isAddedByUses()); - expectedPath = createPath(true, expectedModule, "grouping-X", "leaf-grouping-Y"); - assertPathEquals(expectedPath, leafYinGX); + assertEquals(QName.create(expectedModule, "leaf-grouping-Y"), leafYinGX.getQName()); // grouping-Y childNodes = gy.getChildNodes(); @@ -509,8 +500,7 @@ public class GroupingTest { final LeafSchemaNode leafYinGY = (LeafSchemaNode) gy.getDataChildByName( QName.create(namespace, "leaf-grouping-Y")); assertFalse(leafYinGY.isAddedByUses()); - expectedPath = createPath(true, expectedModule, "grouping-Y", "leaf-grouping-Y"); - assertPathEquals(expectedPath, leafYinGY); + assertEquals(QName.create(expectedModule, "leaf-grouping-Y"), leafYinGY.getQName()); // grouping-Z childNodes = gz.getChildNodes(); @@ -520,8 +510,7 @@ public class GroupingTest { final LeafSchemaNode leafZinGZ = (LeafSchemaNode) gz.getDataChildByName( QName.create(namespace, "leaf-grouping-Z")); assertFalse(leafZinGZ.isAddedByUses()); - expectedPath = createPath(true, expectedModule, "grouping-Z", "leaf-grouping-Z"); - assertPathEquals(expectedPath, leafZinGZ); + assertEquals(QName.create(expectedModule, "leaf-grouping-Z"), leafZinGZ.getQName()); // grouping-ZZ childNodes = gzz.getChildNodes(); @@ -531,8 +520,7 @@ public class GroupingTest { final LeafSchemaNode leafZZinGZZ = (LeafSchemaNode) gzz.getDataChildByName( QName.create(namespace, "leaf-grouping-ZZ")); assertFalse(leafZZinGZZ.isAddedByUses()); - expectedPath = createPath(true, expectedModule, "grouping-ZZ", "leaf-grouping-ZZ"); - assertPathEquals(expectedPath, leafZZinGZZ); + assertEquals(QName.create(expectedModule, "leaf-grouping-ZZ"), leafZZinGZZ.getQName()); // TEST getOriginal from grouping-U assertEquals(gv.getDataChildByName(QName.create(namespace, "leaf-grouping-V")), @@ -566,8 +554,9 @@ public class GroupingTest { public void testAddedByUsesLeafTypeQName() throws Exception { final EffectiveModelContext loadModules = TestUtils.parseYangSources("/added-by-uses-leaf-test"); assertEquals(2, loadModules.getModules().size()); - foo = TestUtils.findModule(loadModules, "foo").get(); - final Module imp = TestUtils.findModule(loadModules, "import-module").get(); + + final Module foo = Iterables.getOnlyElement(loadModules.findModules("foo")); + final Module imp = Iterables.getOnlyElement(loadModules.findModules("import-module")); final LeafSchemaNode leaf = (LeafSchemaNode) ((ContainerSchemaNode) foo.getDataChildByName(QName.create(foo.getQNameModule(), "my-container"))) @@ -585,11 +574,6 @@ public class GroupingTest { assertEquals(leaf.getType().getQName(), impType.getQName()); } - private static SchemaPath createPath(final boolean absolute, final QNameModule module, final String... names) { - return SchemaPath.create( - Arrays.stream(names).map(name -> QName.create(module, name)).collect(Collectors.toList()), true); - } - private static void assertIsAddedByUses(final GroupingDefinition node, final boolean expected) { assertEquals(expected, node.isAddedByUses()); for (DataSchemaNode child : node.getChildNodes()) { diff --git a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/StmtTestUtils.java b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/StmtTestUtils.java index 916b8f9d5f..6b0d4d3b30 100644 --- a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/StmtTestUtils.java +++ b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/StmtTestUtils.java @@ -7,8 +7,6 @@ */ package org.opendaylight.yangtools.yang.stmt; -import static org.junit.Assert.assertEquals; - import com.google.common.io.Files; import java.io.File; import java.io.FileFilter; @@ -29,8 +27,6 @@ import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.ModuleImport; import org.opendaylight.yangtools.yang.model.api.ModuleLike; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource; @@ -281,26 +277,6 @@ public final class StmtTestUtils { .orElse(null); } - /** - * Assertion that a {@link SchemaNode} reports expected path. This method deals with {@link SchemaNode#getPath()} - * being unavailable by comparing {@link SchemaNode#getQName()} to {@link SchemaPath#getLastComponent()}. - * - * @param expected Expected - * @param node Node to examine - * @throws AssertionError if the - */ - public static void assertPathEquals(final SchemaPath expected, final SchemaNode node) { - final SchemaPath actual; - try { - actual = node.getPath(); - } catch (UnsupportedOperationException e) { - LOG.trace("Node {} does not support getPath()", node, e); - assertEquals(expected.getLastComponent(), node.getQName()); - return; - } - assertEquals(expected, actual); - } - private static CrossSourceStatementReactor getReactor(final YangParserConfiguration config) { return YangParserConfiguration.DEFAULT.equals(config) ? RFC7950Reactors.defaultReactor() : RFC7950Reactors.defaultReactorBuilder(config).build(); diff --git a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/UsesAugmentTest.java b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/UsesAugmentTest.java index 9d5756e51d..490889fb59 100644 --- a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/UsesAugmentTest.java +++ b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/UsesAugmentTest.java @@ -11,13 +11,10 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.assertPathEquals; import java.io.IOException; import java.net.URISyntaxException; -import java.util.ArrayDeque; import java.util.Collection; -import java.util.Deque; import org.junit.Before; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; @@ -32,7 +29,6 @@ import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition; @@ -114,60 +110,37 @@ public class UsesAugmentTest { public void testAugmentInUses() throws Exception { final Module testModule = TestUtils.findModule(context, "uses-grouping").get(); - final Deque path = new ArrayDeque<>(); - // * notification pcreq final Collection notifications = testModule.getNotifications(); assertEquals(1, notifications.size()); final NotificationDefinition pcreq = notifications.iterator().next(); assertNotNull(pcreq); - QName expectedQName = QName.create(UG, "pcreq"); - path.offer(expectedQName); - SchemaPath expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, pcreq); + assertEquals(QName.create(UG, "pcreq"), pcreq.getQName()); Collection childNodes = pcreq.getChildNodes(); assertEquals(4, childNodes.size()); // * |-- leaf version LeafSchemaNode version = (LeafSchemaNode) pcreq.getDataChildByName(QName.create(testModule.getQNameModule(), "version")); assertNotNull(version); - expectedQName = QName.create(UG, "version"); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, version); - expectedQName = QName.create(UG, "version"); - path.offer(expectedQName); - assertEquals(expectedQName, version.getType().getQName()); + assertEquals(QName.create(UG, "version"), version.getQName()); + assertEquals(QName.create(UG, "version"), version.getType().getQName()); assertEquals(BaseTypes.uint8Type(), version.getType().getBaseType().getBaseType()); assertTrue(version.isAddedByUses()); // * |-- leaf type LeafSchemaNode type = (LeafSchemaNode) pcreq.getDataChildByName(QName.create(testModule.getQNameModule(), "type")); assertNotNull(type); - expectedQName = QName.create(UG, "type"); assertTrue(type.isAddedByUses()); - path.pollLast(); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, type); - expectedQName = QName.create(GD, "int-ext"); - path.offer(expectedQName); - assertEquals(expectedQName, type.getType().getQName()); + assertEquals(QName.create(UG, "type"), type.getQName()); + assertEquals(QName.create(GD, "int-ext"), type.getType().getQName()); final UnionTypeDefinition union = (UnionTypeDefinition) type.getType().getBaseType(); - assertEquals(QName.create(expectedQName, "union"), union.getQName()); + assertEquals(QName.create(GD, "union"), union.getQName()); assertEquals(2, union.getTypes().size()); // * |-- list requests final ListSchemaNode requests = (ListSchemaNode) pcreq.getDataChildByName(QName.create( testModule.getQNameModule(), "requests")); assertNotNull(requests); - expectedQName = QName.create(UG, "requests"); - assertEquals(expectedQName, requests.getQName()); - path.pollLast(); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, requests); + assertEquals(QName.create(UG, "requests"), requests.getQName()); assertFalse(requests.isAddedByUses()); childNodes = requests.getChildNodes(); assertEquals(3, childNodes.size()); @@ -175,10 +148,7 @@ public class UsesAugmentTest { final ContainerSchemaNode rp = (ContainerSchemaNode) requests.getDataChildByName(QName.create( testModule.getQNameModule(), "rp")); assertNotNull(rp); - expectedQName = QName.create(UG, "rp"); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, rp); + assertEquals(QName.create(UG, "rp"), rp.getQName()); assertFalse(rp.isAddedByUses()); childNodes = rp.getChildNodes(); assertEquals(4, childNodes.size()); @@ -186,63 +156,36 @@ public class UsesAugmentTest { LeafSchemaNode processingRule = (LeafSchemaNode) rp.getDataChildByName(QName.create( testModule.getQNameModule(), "processing-rule")); assertNotNull(processingRule); - expectedQName = QName.create(UG, "processing-rule"); - assertEquals(expectedQName, processingRule.getQName()); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, processingRule); + assertEquals(QName.create(UG, "processing-rule"), processingRule.getQName()); assertEquals(BaseTypes.booleanType(), processingRule.getType()); assertTrue(processingRule.isAddedByUses()); // * |-- |-- |-- leaf ignore LeafSchemaNode ignore = (LeafSchemaNode) rp.getDataChildByName(QName.create(testModule.getQNameModule(), "ignore")); assertNotNull(ignore); - expectedQName = QName.create(UG, "ignore"); - assertEquals(expectedQName, ignore.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, ignore); + assertEquals(QName.create(UG, "ignore"), ignore.getQName()); assertEquals(BaseTypes.booleanType(), ignore.getType()); assertTrue(ignore.isAddedByUses()); // * |-- |-- |-- leaf priority final LeafSchemaNode priority = (LeafSchemaNode) rp.getDataChildByName(QName.create( testModule.getQNameModule(), "priority")); assertNotNull(priority); - expectedQName = QName.create(UG, "priority"); - assertEquals(expectedQName, priority.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, priority); - expectedQName = QName.create(UG, "uint8"); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); + assertEquals(QName.create(UG, "priority"), priority.getQName()); // TODO - // assertEquals(expectedPath, priority.getType().getPath()); + // assertEquals(QName.create(UG, "uint8"), priority.getType().getQName()); assertEquals(BaseTypes.uint8Type(), priority.getType().getBaseType()); assertTrue(priority.isAddedByUses()); // * |-- |-- |-- container box ContainerSchemaNode box = (ContainerSchemaNode) rp.getDataChildByName(QName.create(testModule.getQNameModule(), "box")); assertNotNull(box); - expectedQName = QName.create(UG, "box"); - assertEquals(expectedQName, box.getQName()); - path.pollLast(); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, box); + assertEquals(QName.create(UG, "box"), box.getQName()); assertTrue(box.isAddedByUses()); // * |-- |-- |-- |-- container order final ContainerSchemaNode order = (ContainerSchemaNode) box.getDataChildByName(QName.create( testModule.getQNameModule(), "order")); assertNotNull(order); - expectedQName = QName.create(UG, "order"); - assertEquals(expectedQName, order.getQName()); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, order); + assertEquals(QName.create(UG, "order"), order.getQName()); assertTrue(order.isAddedByUses()); assertTrue(order.isAugmenting()); assertEquals(2, order.getChildNodes().size()); @@ -250,93 +193,54 @@ public class UsesAugmentTest { final LeafSchemaNode delete = (LeafSchemaNode) order.getDataChildByName(QName.create( testModule.getQNameModule(), "delete")); assertNotNull(delete); - expectedQName = QName.create(UG, "delete"); - assertEquals(expectedQName, delete.getQName()); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, delete); + assertEquals(QName.create(UG, "delete"), delete.getQName()); assertEquals(BaseTypes.uint32Type(), delete.getType()); assertTrue(delete.isAddedByUses()); // * |-- |-- |-- |-- |-- leaf setup final LeafSchemaNode setup = (LeafSchemaNode) order.getDataChildByName(QName.create( testModule.getQNameModule(), "setup")); assertNotNull(setup); - expectedQName = QName.create(UG, "setup"); - assertEquals(expectedQName, setup.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, setup); + assertEquals(QName.create(UG, "setup"), setup.getQName()); assertEquals(BaseTypes.uint32Type(), setup.getType()); assertTrue(setup.isAddedByUses()); // * |-- |-- path-key-expansion final ContainerSchemaNode pke = (ContainerSchemaNode) requests.getDataChildByName(QName.create( testModule.getQNameModule(), "path-key-expansion")); assertNotNull(pke); - expectedQName = QName.create(UG, "path-key-expansion"); - assertEquals(expectedQName, pke.getQName()); - path.pollLast(); - path.pollLast(); - path.pollLast(); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, pke); + assertEquals(QName.create(UG, "path-key-expansion"), pke.getQName()); assertFalse(pke.isAddedByUses()); // * |-- |-- |-- path-key final ContainerSchemaNode pathKey = (ContainerSchemaNode) pke.getDataChildByName(QName.create( testModule.getQNameModule(), "path-key")); assertNotNull(pathKey); - expectedQName = QName.create(UG, "path-key"); - assertEquals(expectedQName, pathKey.getQName()); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, pathKey); + assertEquals(QName.create(UG, "path-key"), pathKey.getQName()); assertFalse(pathKey.isAddedByUses()); assertEquals(3, pathKey.getChildNodes().size()); // * |-- |-- |-- |-- leaf processing-rule processingRule = (LeafSchemaNode) pathKey.getDataChildByName(QName.create(testModule.getQNameModule(), "processing-rule")); assertNotNull(processingRule); - expectedQName = QName.create(UG, "processing-rule"); - assertEquals(expectedQName, processingRule.getQName()); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, processingRule); + assertEquals(QName.create(UG, "processing-rule"), processingRule.getQName()); assertEquals(BaseTypes.booleanType(), processingRule.getType()); assertTrue(processingRule.isAddedByUses()); // * |-- |-- |-- |-- leaf ignore ignore = (LeafSchemaNode) pathKey.getDataChildByName(QName.create(testModule.getQNameModule(), "ignore")); assertNotNull(ignore); - expectedQName = QName.create(UG, "ignore"); - assertEquals(expectedQName, ignore.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, ignore); + assertEquals(QName.create(UG, "ignore"), ignore.getQName()); assertEquals(BaseTypes.booleanType(), ignore.getType()); assertTrue(ignore.isAddedByUses()); // * |-- |-- |-- |-- list path-keys final ListSchemaNode pathKeys = (ListSchemaNode) pathKey.getDataChildByName(QName.create( testModule.getQNameModule(), "path-keys")); assertNotNull(pathKeys); - expectedQName = QName.create(UG, "path-keys"); - assertEquals(expectedQName, pathKeys.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, pathKeys); + assertEquals(QName.create(UG, "path-keys"), pathKeys.getQName()); assertTrue(pathKeys.isAddedByUses()); childNodes = pathKeys.getChildNodes(); assertEquals(2, childNodes.size()); // * |-- |-- |-- |-- |-- leaf version version = (LeafSchemaNode) pathKeys.getDataChildByName(QName.create(testModule.getQNameModule(), "version")); assertNotNull(version); - expectedQName = QName.create(UG, "version"); - assertEquals(expectedQName, version.getQName()); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, version); + assertEquals(QName.create(UG, "version"), version.getQName()); assertTrue(version.getType() instanceof Uint8TypeDefinition); assertEquals(BaseTypes.uint8Type(), version.getType().getBaseType().getBaseType()); assertTrue(version.isAddedByUses()); @@ -344,12 +248,7 @@ public class UsesAugmentTest { // * |-- |-- |-- |-- |-- leaf type type = (LeafSchemaNode) pathKeys.getDataChildByName(QName.create(testModule.getQNameModule(), "type")); assertNotNull(type); - expectedQName = QName.create(UG, "type"); - assertEquals(expectedQName, type.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, type); + assertEquals(QName.create(UG, "type"), type.getQName()); assertTrue(type.getType() instanceof UnionTypeDefinition); assertTrue(type.isAddedByUses()); assertTrue(type.isAugmenting()); @@ -357,282 +256,155 @@ public class UsesAugmentTest { final ContainerSchemaNode sc = (ContainerSchemaNode) requests.getDataChildByName(QName.create( testModule.getQNameModule(), "segment-computation")); assertNotNull(sc); - expectedQName = QName.create(UG, "segment-computation"); - assertEquals(expectedQName, sc.getQName()); - path.pollLast(); - path.pollLast(); - path.pollLast(); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, sc); + assertEquals(QName.create(UG, "segment-computation"), sc.getQName()); assertFalse(sc.isAddedByUses()); // * |-- |-- |-- container p2p final ContainerSchemaNode p2p = (ContainerSchemaNode) sc.getDataChildByName(QName.create( testModule.getQNameModule(), "p2p")); assertNotNull(p2p); - expectedQName = QName.create(UG, "p2p"); - assertEquals(expectedQName, p2p.getQName()); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, p2p); + assertEquals(QName.create(UG, "p2p"), p2p.getQName()); assertFalse(p2p.isAddedByUses()); // * |-- |-- |-- |-- container endpoints final ContainerSchemaNode endpoints = (ContainerSchemaNode) p2p.getDataChildByName(QName.create( testModule.getQNameModule(), "endpoints")); assertNotNull(endpoints); - expectedQName = QName.create(UG, "endpoints"); - assertEquals(expectedQName, endpoints.getQName()); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, endpoints); + assertEquals(QName.create(UG, "endpoints"), endpoints.getQName()); assertFalse(endpoints.isAddedByUses()); // * |-- |-- |-- |-- |-- leaf processing-rule processingRule = (LeafSchemaNode) endpoints.getDataChildByName(QName.create(testModule.getQNameModule(), "processing-rule")); assertNotNull(processingRule); - expectedQName = QName.create(UG, "processing-rule"); - assertEquals(expectedQName, processingRule.getQName()); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, processingRule); + assertEquals(QName.create(UG, "processing-rule"), processingRule.getQName()); assertEquals(BaseTypes.booleanType(), processingRule.getType()); assertTrue(processingRule.isAddedByUses()); // * |-- |-- |-- |-- |-- leaf ignore ignore = (LeafSchemaNode) endpoints.getDataChildByName(QName.create(testModule.getQNameModule(), "ignore")); assertNotNull(ignore); - expectedQName = QName.create(UG, "ignore"); - assertEquals(expectedQName, ignore.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, ignore); + assertEquals(QName.create(UG, "ignore"), ignore.getQName()); assertEquals(BaseTypes.booleanType(), ignore.getType()); assertTrue(ignore.isAddedByUses()); // * |-- |-- |-- |-- |-- container box box = (ContainerSchemaNode) endpoints.getDataChildByName(QName.create(testModule.getQNameModule(), "box")); assertNotNull(box); - expectedQName = QName.create(UG, "box"); - assertEquals(expectedQName, box.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, box); + assertEquals(QName.create(UG, "box"), box.getQName()); assertTrue(box.isAddedByUses()); // * |-- |-- |-- |-- |-- choice address-family final ChoiceSchemaNode af = (ChoiceSchemaNode) endpoints.getDataChildByName(QName.create( testModule.getQNameModule(), "address-family")); assertNotNull(af); - expectedQName = QName.create(UG, "address-family"); - assertEquals(expectedQName, af.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, af); + assertEquals(QName.create(UG, "address-family"), af.getQName()); assertTrue(af.isAddedByUses()); // * |-- |-- |-- |-- container reported-route final ContainerSchemaNode reportedRoute = (ContainerSchemaNode) p2p.getDataChildByName(QName.create( testModule.getQNameModule(), "reported-route")); assertNotNull(reportedRoute); - expectedQName = QName.create(UG, "reported-route"); - assertEquals(expectedQName, reportedRoute.getQName()); - path.pollLast(); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, reportedRoute); + assertEquals(QName.create(UG, "reported-route"), reportedRoute.getQName()); assertFalse(reportedRoute.isAddedByUses()); // * |-- |-- |-- |-- |-- leaf processing-rule processingRule = (LeafSchemaNode) reportedRoute.getDataChildByName(QName.create(testModule.getQNameModule(), "processing-rule")); assertNotNull(processingRule); - expectedQName = QName.create(UG, "processing-rule"); - assertEquals(expectedQName, processingRule.getQName()); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, processingRule); + assertEquals(QName.create(UG, "processing-rule"), processingRule.getQName()); assertEquals(BaseTypes.booleanType(), processingRule.getType()); assertTrue(processingRule.isAddedByUses()); // * |-- |-- |-- |-- |-- leaf ignore ignore = (LeafSchemaNode) reportedRoute.getDataChildByName(QName.create(testModule.getQNameModule(), "ignore")); assertNotNull(ignore); - expectedQName = QName.create(UG, "ignore"); - assertEquals(expectedQName, ignore.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, ignore); + assertEquals(QName.create(UG, "ignore"), ignore.getQName()); assertEquals(BaseTypes.booleanType(), ignore.getType()); assertTrue(ignore.isAddedByUses()); // * |-- |-- |-- |-- |-- list subobjects final ListSchemaNode subobjects = (ListSchemaNode) reportedRoute.getDataChildByName(QName.create( testModule.getQNameModule(), "subobjects")); assertNotNull(subobjects); - expectedQName = QName.create(UG, "subobjects"); - assertEquals(expectedQName, subobjects.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, subobjects); + assertEquals(QName.create(UG, "subobjects"), subobjects.getQName()); assertTrue(subobjects.isAddedByUses()); // * |-- |-- |-- |-- |-- container bandwidth ContainerSchemaNode bandwidth = (ContainerSchemaNode) reportedRoute.getDataChildByName(QName.create( testModule.getQNameModule(), "bandwidth")); assertNotNull(bandwidth); - expectedQName = QName.create(UG, "bandwidth"); - assertEquals(expectedQName, bandwidth.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, bandwidth); + assertEquals(QName.create(UG, "bandwidth"), bandwidth.getQName()); assertFalse(bandwidth.isAddedByUses()); // * |-- |-- |-- |-- container bandwidth bandwidth = (ContainerSchemaNode) p2p .getDataChildByName(QName.create(testModule.getQNameModule(), "bandwidth")); assertNotNull(bandwidth); - expectedQName = QName.create(UG, "bandwidth"); - assertEquals(expectedQName, bandwidth.getQName()); - path.pollLast(); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, bandwidth); + assertEquals(QName.create(UG, "bandwidth"), bandwidth.getQName()); assertTrue(bandwidth.isAddedByUses()); // * |-- |-- |-- |-- |-- leaf processing-rule processingRule = (LeafSchemaNode) bandwidth.getDataChildByName(QName.create(testModule.getQNameModule(), "processing-rule")); assertNotNull(processingRule); - expectedQName = QName.create(UG, "processing-rule"); - assertEquals(expectedQName, processingRule.getQName()); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, processingRule); + assertEquals(QName.create(UG, "processing-rule"), processingRule.getQName()); assertEquals(BaseTypes.booleanType(), processingRule.getType()); assertTrue(processingRule.isAddedByUses()); // * |-- |-- |-- |-- |-- leaf ignore ignore = (LeafSchemaNode) bandwidth.getDataChildByName(QName.create(testModule.getQNameModule(), "ignore")); assertNotNull(ignore); - expectedQName = QName.create(UG, "ignore"); - assertEquals(expectedQName, ignore.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, ignore); + assertEquals(QName.create(UG, "ignore"), ignore.getQName()); assertEquals(BaseTypes.booleanType(), ignore.getType()); assertTrue(ignore.isAddedByUses()); // * |-- |-- |-- |-- |-- container bandwidth final ContainerSchemaNode bandwidthInner = (ContainerSchemaNode) bandwidth.getDataChildByName(QName.create( testModule.getQNameModule(), "bandwidth")); assertNotNull(bandwidthInner); - expectedQName = QName.create(UG, "bandwidth"); - assertEquals(expectedQName, bandwidth.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, bandwidthInner); + assertEquals(QName.create(UG, "bandwidth"), bandwidth.getQName()); assertTrue(bandwidthInner.isAddedByUses()); // * |-- list svec final ListSchemaNode svec = (ListSchemaNode) pcreq.getDataChildByName(QName.create(testModule.getQNameModule(), "svec")); assertNotNull(svec); - expectedQName = QName.create(UG, "svec"); - assertEquals(expectedQName, svec.getQName()); - path.pollLast(); - path.pollLast(); - path.pollLast(); - path.pollLast(); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, svec); + assertEquals(QName.create(UG, "svec"), svec.getQName()); assertFalse(svec.isAddedByUses()); // * |-- |-- leaf link-diverse final LeafSchemaNode linkDiverse = (LeafSchemaNode) svec.getDataChildByName(QName.create( testModule.getQNameModule(), "link-diverse")); assertNotNull(linkDiverse); - expectedQName = QName.create(UG, "link-diverse"); - assertEquals(expectedQName, linkDiverse.getQName()); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, linkDiverse); + assertEquals(QName.create(UG, "link-diverse"), linkDiverse.getQName()); assertEquals(BaseTypes.booleanType(), linkDiverse.getType().getBaseType()); assertTrue(linkDiverse.isAddedByUses()); // * |-- |-- leaf processing-rule processingRule = (LeafSchemaNode) svec.getDataChildByName(QName.create(testModule.getQNameModule(), "processing-rule")); assertNotNull(processingRule); - expectedQName = QName.create(UG, "processing-rule"); - assertEquals(expectedQName, processingRule.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, processingRule); + assertEquals(QName.create(UG, "processing-rule"), processingRule.getQName()); assertEquals(BaseTypes.booleanType(), processingRule.getType()); assertTrue(processingRule.isAddedByUses()); // * |-- |-- leaf ignore ignore = (LeafSchemaNode) svec.getDataChildByName(QName.create(testModule.getQNameModule(), "ignore")); assertNotNull(ignore); - expectedQName = QName.create(UG, "ignore"); - assertEquals(expectedQName, ignore.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, ignore); + assertEquals(QName.create(UG, "ignore"), ignore.getQName()); assertEquals(BaseTypes.booleanType(), ignore.getType()); assertTrue(ignore.isAddedByUses()); // * |-- |-- list metric final ListSchemaNode metric = (ListSchemaNode) svec.getDataChildByName(QName.create( testModule.getQNameModule(), "metric")); assertNotNull(metric); - expectedQName = QName.create(UG, "metric"); - assertEquals(expectedQName, metric.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, metric); + assertEquals(QName.create(UG, "metric"), metric.getQName()); assertFalse(metric.isAddedByUses()); // * |-- |-- |-- leaf metric-type final LeafSchemaNode metricType = (LeafSchemaNode) metric.getDataChildByName(QName.create( testModule.getQNameModule(), "metric-type")); assertNotNull(metricType); - expectedQName = QName.create(UG, "metric-type"); - assertEquals(expectedQName, metricType.getQName()); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, metricType); + assertEquals(QName.create(UG, "metric-type"), metricType.getQName()); assertEquals(BaseTypes.uint8Type(), metricType.getType()); assertTrue(metricType.isAddedByUses()); // * |-- |-- |-- box box = (ContainerSchemaNode) metric.getDataChildByName(QName.create(testModule.getQNameModule(), "box")); assertNotNull(box); - expectedQName = QName.create(UG, "box"); - assertEquals(expectedQName, box.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, box); + assertEquals(QName.create(UG, "box"), box.getQName()); assertTrue(box.isAddedByUses()); // * |-- |-- |-- leaf processing-rule processingRule = (LeafSchemaNode) metric.getDataChildByName(QName.create(testModule.getQNameModule(), "processing-rule")); assertNotNull(processingRule); - expectedQName = QName.create(UG, "processing-rule"); - assertEquals(expectedQName, processingRule.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, processingRule); + assertEquals(QName.create(UG, "processing-rule"), processingRule.getQName()); assertEquals(BaseTypes.booleanType(), processingRule.getType()); assertTrue(processingRule.isAddedByUses()); // * |-- |-- |-- leaf ignore ignore = (LeafSchemaNode) metric.getDataChildByName(QName.create(testModule.getQNameModule(), "ignore")); assertNotNull(ignore); - expectedQName = QName.create(UG, "ignore"); - assertEquals(expectedQName, ignore.getQName()); - path.pollLast(); - path.offer(expectedQName); - expectedPath = SchemaPath.create(path, true); - assertPathEquals(expectedPath, ignore); + assertEquals(QName.create(UG, "ignore"), ignore.getQName()); assertEquals(BaseTypes.booleanType(), ignore.getType()); assertTrue(ignore.isAddedByUses()); } diff --git a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserSimpleTest.java b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserSimpleTest.java index ec06bba087..b8e7d63acc 100644 --- a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserSimpleTest.java +++ b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserSimpleTest.java @@ -11,11 +11,8 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.assertPathEquals; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; import java.util.Optional; import org.junit.Before; import org.junit.Test; @@ -32,16 +29,14 @@ import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.MustDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UsesNode; public class YangParserSimpleTest { - private static final QNameModule SN = QNameModule.create(XMLNamespace.of("urn:opendaylight:simple-nodes"), - Revision.of("2013-07-30")); + private static final XMLNamespace NS = XMLNamespace.of("urn:opendaylight:simple-nodes"); + private static final QNameModule SN = QNameModule.create(NS, Revision.of("2013-07-30")); private static final QName SN_NODES = QName.create(SN, "nodes"); - private static final SchemaPath SN_NODES_PATH = SchemaPath.create(true, SN_NODES); private SchemaContext context; private Module testModule; @@ -149,7 +144,6 @@ public class YangParserSimpleTest { .getDataChildByName(QName.create(testModule.getQNameModule(), "nodes")); // test SchemaNode args assertEquals(SN_NODES, nodes.getQName()); - assertPathEquals(SN_NODES_PATH, nodes); assertEquals(Optional.of("nodes collection"), nodes.getDescription()); assertEquals(Optional.of("nodes ref"), nodes.getReference()); assertEquals(Status.CURRENT, nodes.getStatus()); @@ -202,8 +196,8 @@ public class YangParserSimpleTest { assertEquals(8, nodes.getChildNodes().size()); final LeafListSchemaNode added = (LeafListSchemaNode)nodes.getDataChildByName(QName.create( testModule.getQNameModule(), "added")); - assertPathEquals(createPath("nodes", "added"), added); - assertEquals(createPath("mytype").getLastComponent(), added.getType().getQName()); + assertEquals(QName.create(SN, "added"), added.getQName()); + assertEquals(QName.create(SN, "mytype"), added.getType().getQName()); final ListSchemaNode links = (ListSchemaNode) nodes.getDataChildByName(QName.create( testModule.getQNameModule(), "links")); @@ -219,17 +213,4 @@ public class YangParserSimpleTest { final UsesNode use = uses.iterator().next(); assertEquals(nodeGroup, use.getSourceGrouping()); } - - - private static final XMLNamespace NS = XMLNamespace.of("urn:opendaylight:simple-nodes"); - - private static SchemaPath createPath(final String... names) { - final Revision rev = Revision.of("2013-07-30"); - final List path = new ArrayList<>(); - for (final String name : names) { - path.add(QName.create(NS, rev, name)); - } - return SchemaPath.create(path, true); - } - } diff --git a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserTest.java b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserTest.java index ce22eaedac..5135b13099 100644 --- a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserTest.java +++ b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserTest.java @@ -12,7 +12,6 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.assertPathEquals; import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResource; import com.google.common.collect.Range; @@ -50,7 +49,6 @@ import org.opendaylight.yangtools.yang.model.api.ModuleImport; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute; @@ -127,8 +125,6 @@ public class YangParserTest { // test SchemaNode args assertEquals(QName.create(BAR, "ifEntry"), ifEntry.getQName()); - assertPathEquals(SchemaPath.create(true, QName.create(BAR, "interfaces"), QName.create(BAR, "ifEntry")), - ifEntry); assertFalse(ifEntry.getDescription().isPresent()); assertFalse(ifEntry.getReference().isPresent()); assertEquals(Status.CURRENT, ifEntry.getStatus()); @@ -558,8 +554,6 @@ public class YangParserTest { final NotificationDefinition notification = notifications.iterator().next(); // test SchemaNode args assertEquals(QName.create(BAZ, "event"), notification.getQName()); - final SchemaPath expectedPath = SchemaPath.create(true, QName.create(BAZ, "event")); - assertPathEquals(expectedPath, notification); assertFalse(notification.getDescription().isPresent()); assertFalse(notification.getReference().isPresent()); assertEquals(Status.CURRENT, notification.getStatus()); diff --git a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/thirdparty/plugin/ThirdPartyExtensionEffectiveStatementImpl.java b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/thirdparty/plugin/ThirdPartyExtensionEffectiveStatementImpl.java index 3e330101b9..1ef3df1678 100644 --- a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/thirdparty/plugin/ThirdPartyExtensionEffectiveStatementImpl.java +++ b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/thirdparty/plugin/ThirdPartyExtensionEffectiveStatementImpl.java @@ -8,27 +8,20 @@ package org.opendaylight.yangtools.yang.thirdparty.plugin; import com.google.common.collect.ImmutableList; -import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -import org.opendaylight.yangtools.yang.parser.spi.meta.SchemaPathSupport; final class ThirdPartyExtensionEffectiveStatementImpl extends UnknownEffectiveStatementBase implements ThirdPartyExtensionEffectiveStatement { - - private final @Nullable SchemaPath path; private final String valueFromNamespace; ThirdPartyExtensionEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { super(stmt, substatements); - path = SchemaPathSupport.toOptionalPath(stmt.getEffectiveParent().getSchemaPath().createChild(getNodeType())); valueFromNamespace = stmt.getFromNamespace(ThirdPartyNamespace.class, Empty.getInstance()); } @@ -42,12 +35,6 @@ final class ThirdPartyExtensionEffectiveStatementImpl return getNodeType(); } - @Override - @Deprecated - public SchemaPath getPath() { - return SchemaNodeDefaults.throwUnsupportedIfNull(this, path); - } - @Override public ThirdPartyExtensionEffectiveStatement asEffectiveStatement() { return this; diff --git a/parser/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractSchemaTreeStatementSupport.java b/parser/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractSchemaTreeStatementSupport.java index 2369ed24f9..1d8c10d7ed 100644 --- a/parser/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractSchemaTreeStatementSupport.java +++ b/parser/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractSchemaTreeStatementSupport.java @@ -49,9 +49,7 @@ public abstract class AbstractSchemaTreeStatementSupport copy, final Current current, final Collection> substatements) { return equalHistory(copy.history(), current.history()) - && copy.getArgument().equals(current.getArgument()) - // FIXME: 8.0.0: eliminate this call - && copy.equalParentPath(current); + && copy.getArgument().equals(current.getArgument()); } private static boolean equalHistory(final CopyHistory copy, final CopyHistory current) { @@ -74,7 +72,6 @@ public abstract class AbstractSchemaTreeStatementSupport - *
  • {@link Current#schemaPath()} does not change
  • *
  • {@link Current#argument()} does not change
  • *
  • {@link Current#history()} does not change as far as {@link CopyableNode} is concerned
  • *
  • {@link Current#effectiveConfig()} does not change
  • @@ -96,7 +93,6 @@ public abstract class AbstractSchemaTreeStatementSupport - *
  • {@link Current#schemaPath()} does not change
  • *
  • {@link Current#argument()} does not change
  • *
  • {@link Current#history()} does not change as far as {@link CopyableNode} is concerned
  • * diff --git a/parser/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/EffectiveStmtCtx.java b/parser/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/EffectiveStmtCtx.java index 82ce9bcd4b..9f75ac7dcc 100644 --- a/parser/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/EffectiveStmtCtx.java +++ b/parser/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/EffectiveStmtCtx.java @@ -17,9 +17,6 @@ import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; @@ -99,56 +96,6 @@ public interface EffectiveStmtCtx extends CommonStmtCtx, StmtContextCompat, Immu // FIXME: 7.0.0: this is currently only used by AbstractTypeStatement @NonNull QNameModule effectiveNamespace(); - - /** - * Return the effective path of this statement. This method is intended for use with statements which naturally - * have a {@link QName} identifier and this identifier forms the ultimate step in their - * {@link SchemaNode#getPath()}. - * - *

    - * Returned object conforms to {@link SchemaPathSupport}'s view of how these are to be handled. Users of this - * method are expected to consult {@link SchemaNodeDefaults#extractQName(Immutable)} and - * {@link SchemaNodeDefaults#extractPath(Object, Immutable)} to ensure correct implementation behaviour with - * respect to {@link SchemaNode#getQName()} and {@link SchemaNode#getPath()} respectively. - * - * @return An {@link Immutable} effective path object - */ - // FIXME: Remove this when SchemaNode.getPath() is removed. QName users will store getArgument() instead. - default @NonNull Immutable effectivePath() { - return SchemaPathSupport.toEffectivePath(getSchemaPath()); - } - - /** - * Return an optional-to-provide path for {@link SchemaNode#getPath()}. The result of this method is expected - * to be consulted with {@link SchemaNodeDefaults#throwUnsupportedIfNull(Object, SchemaPath)} to get consistent - * API behaviour. - * - * @return Potentially-null {@link SchemaPath}. - */ - // FIXME: Remove this when SchemaNode.getPath() is removed - default @Nullable SchemaPath optionalPath() { - return SchemaPathSupport.toOptionalPath(getSchemaPath()); - } - - /** - * Return the {@link SchemaNode#getPath()} of this statement. Not all statements have a SchemaPath, in which - * case null is returned. - * - * @return SchemaPath or null - */ - // FIXME: Remove this when SchemaNode.getPath() is removed - @Nullable SchemaPath schemaPath(); - - /** - * Return the {@link SchemaNode#getPath()} of this statement, failing if it is not present. - * - * @return A SchemaPath. - * @throws VerifyException if {@link #schemaPath()} returns null - */ - // FIXME: Remove this when SchemaNode.getPath() is removed - default @NonNull SchemaPath getSchemaPath() { - return verifyNotNull(schemaPath(), "Missing path for %s", this); - } } /** @@ -181,20 +128,5 @@ public interface EffectiveStmtCtx extends CommonStmtCtx, StmtContextCompat, Immu // FIXME: YANGTOOLS-1186: lob the Holy Hand Grenade of Antioch @Deprecated > @NonNull StmtContext caerbannog(); - - /** - * Compare another context for equality of {@code getEffectiveParent().getSchemaPath()}, just in a safer manner. - * - * @param other Other {@link Current} - * @return True if {@code other} has parent path equal to this context's parent path. - */ - // FIXME: Remove this when SchemaNode.getPath() is removed - default boolean equalParentPath(final Current other) { - final Parent ours = effectiveParent(); - final Parent theirs = other.effectiveParent(); - return ours == theirs - || ours != null && theirs != null && SchemaPathSupport.effectivelyEqual( - ours.schemaPath(), theirs.schemaPath()); - } } } diff --git a/parser/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/SchemaPathSupport.java b/parser/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/SchemaPathSupport.java deleted file mode 100644 index 8be7e23c27..0000000000 --- a/parser/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/SchemaPathSupport.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.parser.spi.meta; - -import com.google.common.annotations.Beta; -import java.util.Objects; -import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.concepts.Immutable; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; - -@Beta -// FIXME: remove this class once we ditch SchemaPath.getPath() -public abstract class SchemaPathSupport implements Immutable { - private static final class Enabled extends SchemaPathSupport { - @Override - SchemaPath effectivePath(final SchemaPath path) { - return path; - } - - @Override - SchemaPath optionalPath(final SchemaPath path) { - return path; - } - - @Override - boolean equalPaths(final SchemaPath first, final SchemaPath second) { - return Objects.equals(first, second); - } - } - - private static final SchemaPathSupport DEFAULT = new Enabled(); - - private SchemaPathSupport() { - // Hidden on purpose - } - - public static @NonNull Immutable toEffectivePath(final @NonNull SchemaPath path) { - return DEFAULT.effectivePath(path); - } - - public static @Nullable SchemaPath toOptionalPath(final @Nullable SchemaPath path) { - return DEFAULT.optionalPath(path); - } - - public static boolean effectivelyEqual(@Nullable final SchemaPath first, @Nullable final SchemaPath second) { - return DEFAULT.equalPaths(first, second); - } - - abstract boolean equalPaths(@Nullable SchemaPath first, @Nullable SchemaPath second); - - abstract @NonNull Immutable effectivePath(@NonNull SchemaPath path); - - abstract @Nullable SchemaPath optionalPath(@Nullable SchemaPath path); -}