From cba1c2b9c7468be88536c44a39b1480dfb5225f2 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 7 Sep 2021 00:58:11 +0200 Subject: [PATCH] Promote UnknownEffectiveStatementBase to yang-model-spi The semantics of UnknownSchemaNode has been cleaned up and documented a bit more. We can therefore update UnknownEffectiveStatementBase and promote it to yang-model-spi, as we no longer need dependencies on yang-parser-spi. Also rename it to AbstractEffectiveUnknownSchemaNode to make to ensure we have proper naming. Since this is the only subclass of AbstractEffectiveDocumentedNodeWithStatus, we are combining the two, further simplifying things. JIRA: YANGTOOLS-1320 Change-Id: I090437cc5958ef1f9bacd80d899f2a3c08dd8ded Signed-off-by: Robert Varga --- .../yang/model/api/UnknownSchemaNode.java | 3 +- ... AbstractEffectiveUnknownSchmemaNode.java} | 64 +++++++++++------ parser/openconfig-parser-support/pom.xml | 5 +- ...nfigHashedValueEffectiveStatementImpl.java | 6 +- parser/rfc6241-parser-support/pom.xml | 12 ++-- ...ementAttributesEffectiveStatementImpl.java | 12 ++-- parser/rfc6536-parser-support/pom.xml | 10 +-- .../DefaultDenyAllEffectiveStatementImpl.java | 15 ++-- ...efaultDenyWriteEffectiveStatementImpl.java | 12 ++-- parser/rfc6643-parser-support/pom.xml | 6 +- .../parser/AliasEffectiveStatementImpl.java | 6 +- .../parser/DefValEffectiveStatementImpl.java | 6 +- .../DisplayHintEffectiveStatementImpl.java | 6 +- .../parser/ImpliedEffectiveStatementImpl.java | 6 +- .../MaxAccessEffectiveStatementImpl.java | 6 +- .../parser/OidEffectiveStatementImpl.java | 6 +- .../parser/SubIdEffectiveStatementImpl.java | 6 +- parser/rfc7952-parser-support/pom.xml | 6 +- .../AnnotationEffectiveStatementImpl.java | 17 ++--- parser/rfc8040-parser-support/pom.xml | 7 +- .../YangDataEffectiveStatementImpl.java | 7 +- parser/rfc8528-parser-support/pom.xml | 6 +- .../MountPointEffectiveStatementImpl.java | 10 ++- parser/rfc8639-parser-support/pom.xml | 6 +- ...enConfigVersionEffectiveStatementImpl.java | 6 +- .../stmt/UnknownEffectiveStatementBase.java | 70 ------------------- ...dPartyExtensionEffectiveStatementImpl.java | 6 +- 27 files changed, 128 insertions(+), 200 deletions(-) rename model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/{AbstractEffectiveDocumentedNodeWithStatus.java => AbstractEffectiveUnknownSchmemaNode.java} (58%) delete mode 100644 parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/UnknownSchemaNode.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/UnknownSchemaNode.java index e7731844d4..2796d0bd83 100644 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/UnknownSchemaNode.java +++ b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/UnknownSchemaNode.java @@ -7,6 +7,7 @@ */ package org.opendaylight.yangtools.yang.model.api; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.stmt.UnknownEffectiveStatement; @@ -21,7 +22,7 @@ public interface UnknownSchemaNode extends SchemaNode, CopyableNode, * * @return QName with name the name of the unknown node. */ - QName getNodeType(); + @NonNull QName getNodeType(); /** * Returns name of the unknown node. diff --git a/model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/AbstractEffectiveDocumentedNodeWithStatus.java b/model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/AbstractEffectiveUnknownSchmemaNode.java similarity index 58% rename from model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/AbstractEffectiveDocumentedNodeWithStatus.java rename to model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/AbstractEffectiveUnknownSchmemaNode.java index 0fbd5d144e..6756904fc1 100644 --- a/model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/AbstractEffectiveDocumentedNodeWithStatus.java +++ b/model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/AbstractEffectiveUnknownSchmemaNode.java @@ -13,32 +13,37 @@ import com.google.common.annotations.Beta; import com.google.common.collect.Collections2; import com.google.common.collect.ImmutableList; import java.util.Collection; -import java.util.function.Predicate; import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.yang.model.api.DocumentedNode; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.CopyableNode; import org.opendaylight.yangtools.yang.model.api.Status; -import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement; import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.DocumentedNodeMixin; /** - * A declared {@link AbstractDeclaredEffectiveStatement} with {@link DocumentedNode.WithStatus}. + * A declared {@link AbstractDeclaredEffectiveStatement} with {@link UnknownSchemaNode}. */ @Beta -public abstract class AbstractEffectiveDocumentedNodeWithStatus> +public abstract class AbstractEffectiveUnknownSchmemaNode> extends AbstractDeclaredEffectiveStatement - implements DocumentedNodeMixin, DocumentedNode.WithStatus { + implements DocumentedNodeMixin, UnknownSchemaNode { private final @NonNull ImmutableList> substatements; private final @NonNull D declared; - private final A argument; + private final @NonNull A argument; + private final boolean addedByUses; + private final boolean augmenting; - protected AbstractEffectiveDocumentedNodeWithStatus(final A argument, final @NonNull D declared, + protected AbstractEffectiveUnknownSchmemaNode(final @NonNull D declared, final A argument, + final CopyableNode history, final @NonNull ImmutableList> substatements) { - this.argument = argument; + this.argument = requireNonNull(argument); this.declared = requireNonNull(declared); this.substatements = requireNonNull(substatements); + this.augmenting = history.isAugmenting(); + this.addedByUses = history.isAddedByUses(); } @Override @@ -56,6 +61,35 @@ public abstract class AbstractEffectiveDocumentedNodeWithStatus Collection allSubstatementsOfType(final Class type) { return Collection.class.cast(Collections2.filter(effectiveSubstatements(), type::isInstance)); @@ -65,14 +99,4 @@ public abstract class AbstractEffectiveDocumentedNodeWithStatus @Nullable T firstSubstatementOfType(final Class type) { - return effectiveSubstatements().stream().filter(type::isInstance).findFirst().map(type::cast).orElse(null); - } - - protected final R firstSubstatementOfType(final Class type, final Class returnType) { - return effectiveSubstatements().stream() - .filter(((Predicate)type::isInstance).and(returnType::isInstance)) - .findFirst().map(returnType::cast).orElse(null); - } } diff --git a/parser/openconfig-parser-support/pom.xml b/parser/openconfig-parser-support/pom.xml index 08a5a70282..f5b5fefa70 100644 --- a/parser/openconfig-parser-support/pom.xml +++ b/parser/openconfig-parser-support/pom.xml @@ -26,10 +26,6 @@ com.google.guava guava - - org.opendaylight.yangtools - concepts - org.opendaylight.yangtools yang-common @@ -58,6 +54,7 @@ org.opendaylight.yangtools yang-parser-rfc7950 + test 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 c22170d8f1..16457228fd 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 @@ -15,17 +15,17 @@ import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.common.QName; 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.model.spi.meta.AbstractEffectiveUnknownSchmemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; final class OpenConfigHashedValueEffectiveStatementImpl - extends UnknownEffectiveStatementBase + extends AbstractEffectiveUnknownSchmemaNode implements OpenConfigHashedValueEffectiveStatement { private final @NonNull StatementDefinition definition; OpenConfigHashedValueEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { - super(stmt, substatements); + super(stmt.declared(), stmt.argument(), stmt.history(), substatements); definition = stmt.publicDefinition(); } diff --git a/parser/rfc6241-parser-support/pom.xml b/parser/rfc6241-parser-support/pom.xml index 1d67fcf424..c3ff91f83b 100644 --- a/parser/rfc6241-parser-support/pom.xml +++ b/parser/rfc6241-parser-support/pom.xml @@ -26,10 +26,6 @@ com.google.guava guava - - org.opendaylight.yangtools - concepts - org.opendaylight.yangtools yang-common @@ -57,17 +53,17 @@ org.opendaylight.yangtools - yang-parser-rfc7950 + yang-repo-api + test - org.opendaylight.yangtools - yang-repo-api + yang-parser-reactor test org.opendaylight.yangtools - yang-parser-reactor + yang-parser-rfc7950 test 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 63ddc575f1..5443c2f409 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 @@ -8,30 +8,26 @@ package org.opendaylight.yangtools.rfc6241.parser; import com.google.common.collect.ImmutableList; -import org.eclipse.jdt.annotation.NonNull; 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.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; +import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; final class GetFilterElementAttributesEffectiveStatementImpl - extends UnknownEffectiveStatementBase + extends AbstractEffectiveUnknownSchmemaNode implements GetFilterElementAttributesEffectiveStatement, GetFilterElementAttributesSchemaNode { - private final @NonNull QName qname; - GetFilterElementAttributesEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { - super(stmt, substatements); - qname = stmt.publicDefinition().getStatementName(); + super(stmt.declared(), stmt.argument(), stmt.history(), substatements); } @Override public QName getQName() { - return qname; + return getNodeType(); } @Override diff --git a/parser/rfc6536-parser-support/pom.xml b/parser/rfc6536-parser-support/pom.xml index 2197cc7b14..077a3342c8 100644 --- a/parser/rfc6536-parser-support/pom.xml +++ b/parser/rfc6536-parser-support/pom.xml @@ -26,10 +26,6 @@ com.google.guava guava - - org.opendaylight.yangtools - concepts - org.opendaylight.yangtools yang-common @@ -57,12 +53,12 @@ org.opendaylight.yangtools - yang-parser-rfc7950 + yang-parser-reactor + test - org.opendaylight.yangtools - yang-parser-reactor + yang-parser-rfc7950 test 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 8d154033f0..2331a578f0 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 @@ -8,33 +8,30 @@ package org.opendaylight.yangtools.rfc6536.parser; import com.google.common.collect.ImmutableList; -import org.eclipse.jdt.annotation.NonNull; 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.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; +import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -final class DefaultDenyAllEffectiveStatementImpl extends UnknownEffectiveStatementBase +final class DefaultDenyAllEffectiveStatementImpl + extends AbstractEffectiveUnknownSchmemaNode implements DefaultDenyAllEffectiveStatement, DefaultDenyAllSchemaNode { - private final @NonNull QName qname; - DefaultDenyAllEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { - super(stmt, substatements); - qname = stmt.publicDefinition().getStatementName(); + super(stmt.declared(), stmt.argument(), stmt.history(), substatements); } @Override public QName getQName() { - return qname; + return getNodeType(); } @Override public DefaultDenyAllEffectiveStatement asEffectiveStatement() { return this; } -} \ No newline at end of file +} 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 c00e1f0f08..24b8267829 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 @@ -8,30 +8,26 @@ package org.opendaylight.yangtools.rfc6536.parser; import com.google.common.collect.ImmutableList; -import org.eclipse.jdt.annotation.NonNull; 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.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; +import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; final class DefaultDenyWriteEffectiveStatementImpl - extends UnknownEffectiveStatementBase + extends AbstractEffectiveUnknownSchmemaNode implements DefaultDenyWriteEffectiveStatement, DefaultDenyWriteSchemaNode { - private final @NonNull QName qname; - DefaultDenyWriteEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { - super(stmt, substatements); - qname = stmt.publicDefinition().getStatementName(); + super(stmt.declared(), stmt.argument(), stmt.history(), substatements); } @Override public QName getQName() { - return qname; + return getNodeType(); } @Override diff --git a/parser/rfc6643-parser-support/pom.xml b/parser/rfc6643-parser-support/pom.xml index 25db96c62d..383c49b7b1 100644 --- a/parser/rfc6643-parser-support/pom.xml +++ b/parser/rfc6643-parser-support/pom.xml @@ -53,12 +53,12 @@ org.opendaylight.yangtools - yang-parser-rfc7950 + yang-parser-reactor + test - org.opendaylight.yangtools - yang-parser-reactor + yang-parser-rfc7950 test 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 a4db71548f..b7c0093762 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 @@ -14,14 +14,14 @@ 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.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; +import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -final class AliasEffectiveStatementImpl extends UnknownEffectiveStatementBase +final class AliasEffectiveStatementImpl extends AbstractEffectiveUnknownSchmemaNode implements AliasEffectiveStatement, AliasSchemaNode { AliasEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { - super(stmt, substatements); + super(stmt.declared(), stmt.argument(), stmt.history(), substatements); } @Override diff --git a/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/DefValEffectiveStatementImpl.java b/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/DefValEffectiveStatementImpl.java index c7975fd98a..99309737ff 100644 --- a/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/DefValEffectiveStatementImpl.java +++ b/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/DefValEffectiveStatementImpl.java @@ -14,14 +14,14 @@ import org.opendaylight.yangtools.rfc6643.model.api.DefValSchemaNode; import org.opendaylight.yangtools.rfc6643.model.api.DefValStatement; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; +import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -final class DefValEffectiveStatementImpl extends UnknownEffectiveStatementBase +final class DefValEffectiveStatementImpl extends AbstractEffectiveUnknownSchmemaNode implements DefValEffectiveStatement, DefValSchemaNode { DefValEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { - super(stmt, substatements); + super(stmt.declared(), stmt.argument(), stmt.history(), substatements); } @Override diff --git a/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/DisplayHintEffectiveStatementImpl.java b/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/DisplayHintEffectiveStatementImpl.java index 68997dbc36..6174b45f0c 100644 --- a/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/DisplayHintEffectiveStatementImpl.java +++ b/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/DisplayHintEffectiveStatementImpl.java @@ -14,14 +14,14 @@ import org.opendaylight.yangtools.rfc6643.model.api.DisplayHintSchemaNode; import org.opendaylight.yangtools.rfc6643.model.api.DisplayHintStatement; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; +import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -final class DisplayHintEffectiveStatementImpl extends UnknownEffectiveStatementBase +final class DisplayHintEffectiveStatementImpl extends AbstractEffectiveUnknownSchmemaNode implements DisplayHintEffectiveStatement, DisplayHintSchemaNode { DisplayHintEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { - super(stmt, substatements); + super(stmt.declared(), stmt.argument(), stmt.history(), substatements); } @Override 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 6b32599c05..cc97703d64 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 @@ -14,14 +14,14 @@ 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.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; +import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -final class ImpliedEffectiveStatementImpl extends UnknownEffectiveStatementBase +final class ImpliedEffectiveStatementImpl extends AbstractEffectiveUnknownSchmemaNode implements ImpliedEffectiveStatement, ImpliedSchemaNode { ImpliedEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { - super(stmt, substatements); + super(stmt.declared(), stmt.argument(), stmt.history(), substatements); } @Override 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 45b474b631..6317f4adee 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 @@ -15,14 +15,14 @@ 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.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; +import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -final class MaxAccessEffectiveStatementImpl extends UnknownEffectiveStatementBase +final class MaxAccessEffectiveStatementImpl extends AbstractEffectiveUnknownSchmemaNode implements MaxAccessEffectiveStatement, MaxAccessSchemaNode { MaxAccessEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { - super(stmt, substatements); + super(stmt.declared(), stmt.argument(), stmt.history(), substatements); } @Override 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 e95d7e8052..22a60a230f 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 @@ -15,14 +15,14 @@ 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.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; +import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -final class OidEffectiveStatementImpl extends UnknownEffectiveStatementBase +final class OidEffectiveStatementImpl extends AbstractEffectiveUnknownSchmemaNode implements OidEffectiveStatement, OidSchemaNode { OidEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { - super(stmt, substatements); + super(stmt.declared(), stmt.argument(), stmt.history(), substatements); } @Override diff --git a/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/SubIdEffectiveStatementImpl.java b/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/SubIdEffectiveStatementImpl.java index bff1f50ba5..1b6308938c 100644 --- a/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/SubIdEffectiveStatementImpl.java +++ b/parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/SubIdEffectiveStatementImpl.java @@ -15,14 +15,14 @@ import org.opendaylight.yangtools.rfc6643.model.api.SubIdStatement; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.Uint32; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; +import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -final class SubIdEffectiveStatementImpl extends UnknownEffectiveStatementBase +final class SubIdEffectiveStatementImpl extends AbstractEffectiveUnknownSchmemaNode implements SubIdEffectiveStatement, SubIdSchemaNode { SubIdEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { - super(stmt, substatements); + super(stmt.declared(), stmt.argument(), stmt.history(), substatements); } @Override diff --git a/parser/rfc7952-parser-support/pom.xml b/parser/rfc7952-parser-support/pom.xml index 950d805be9..4d242053c1 100644 --- a/parser/rfc7952-parser-support/pom.xml +++ b/parser/rfc7952-parser-support/pom.xml @@ -57,12 +57,12 @@ org.opendaylight.yangtools - yang-parser-rfc7950 + yang-parser-reactor + test - org.opendaylight.yangtools - yang-parser-reactor + yang-parser-rfc7950 test diff --git a/parser/rfc7952-parser-support/src/main/java/org/opendaylight/yangtools/rfc7952/parser/AnnotationEffectiveStatementImpl.java b/parser/rfc7952-parser-support/src/main/java/org/opendaylight/yangtools/rfc7952/parser/AnnotationEffectiveStatementImpl.java index 3decdf81ae..e0fae59008 100644 --- a/parser/rfc7952-parser-support/src/main/java/org/opendaylight/yangtools/rfc7952/parser/AnnotationEffectiveStatementImpl.java +++ b/parser/rfc7952-parser-support/src/main/java/org/opendaylight/yangtools/rfc7952/parser/AnnotationEffectiveStatementImpl.java @@ -7,8 +7,6 @@ */ package org.opendaylight.yangtools.rfc7952.parser; -import static com.google.common.base.Verify.verifyNotNull; - import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.rfc7952.model.api.AnnotationEffectiveStatement; @@ -21,36 +19,33 @@ import org.opendaylight.yangtools.yang.model.api.stmt.TypeEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.UnitsEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.type.ConcreteTypeBuilder; import org.opendaylight.yangtools.yang.model.ri.type.ConcreteTypes; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; +import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; -final class AnnotationEffectiveStatementImpl extends UnknownEffectiveStatementBase +final class AnnotationEffectiveStatementImpl extends AbstractEffectiveUnknownSchmemaNode implements AnnotationEffectiveStatement, AnnotationSchemaNode { private final @NonNull TypeDefinition type; AnnotationEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { - super(stmt, substatements); + super(stmt.declared(), stmt.argument(), stmt.history(), substatements); final QName qname = stmt.getArgument(); // FIXME: move this into onFullDefinitionDeclared() final TypeEffectiveStatement typeStmt = SourceException.throwIfNull( - firstSubstatementOfType(TypeEffectiveStatement.class), stmt, + findFirstEffectiveSubstatement(TypeEffectiveStatement.class).orElse(null), stmt, "AnnotationStatementSupport %s is missing a 'type' statement", qname); final ConcreteTypeBuilder builder = ConcreteTypes.concreteTypeBuilder(typeStmt.getTypeDefinition(), qname); - final UnitsEffectiveStatement unitsStmt = firstSubstatementOfType(UnitsEffectiveStatement.class); - if (unitsStmt != null) { - builder.setUnits(unitsStmt.argument()); - } + findFirstEffectiveSubstatementArgument(UnitsEffectiveStatement.class).ifPresent(builder::setUnits); type = builder.build(); } @Override public QName getQName() { - return verifyNotNull(argument()); + return argument(); } @Override diff --git a/parser/rfc8040-parser-support/pom.xml b/parser/rfc8040-parser-support/pom.xml index 64522adb31..531b609fb8 100644 --- a/parser/rfc8040-parser-support/pom.xml +++ b/parser/rfc8040-parser-support/pom.xml @@ -51,14 +51,15 @@ rfc8040-model-api + org.opendaylight.yangtools - yang-parser-rfc7950 + yang-parser-reactor + test - org.opendaylight.yangtools - yang-parser-reactor + yang-parser-rfc7950 test 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 29e1a7ef47..b32cfe6dac 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 @@ -15,6 +15,7 @@ import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableList; import java.util.Map; import java.util.Optional; +import org.checkerframework.checker.units.qual.K; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.rfc8040.model.api.YangDataEffectiveStatement; import org.opendaylight.yangtools.rfc8040.model.api.YangDataSchemaNode; @@ -26,18 +27,18 @@ import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace; import org.opendaylight.yangtools.yang.model.api.stmt.ContainerEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.DataTreeAwareEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.SchemaTreeAwareEffectiveStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; +import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; @Beta -final class YangDataEffectiveStatementImpl extends UnknownEffectiveStatementBase +final class YangDataEffectiveStatementImpl extends AbstractEffectiveUnknownSchmemaNode implements YangDataEffectiveStatement, YangDataSchemaNode { private final @NonNull QName argumentQName; private final @NonNull ContainerEffectiveStatement container; YangDataEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements, final QName qname) { - super(stmt, substatements); + super(stmt.declared(), stmt.argument(), stmt.history(), substatements); this.argumentQName = requireNonNull(qname); container = findFirstEffectiveSubstatement(ContainerEffectiveStatement.class).get(); diff --git a/parser/rfc8528-parser-support/pom.xml b/parser/rfc8528-parser-support/pom.xml index ac74714614..88f1e4e01f 100644 --- a/parser/rfc8528-parser-support/pom.xml +++ b/parser/rfc8528-parser-support/pom.xml @@ -53,12 +53,12 @@ org.opendaylight.yangtools - yang-parser-rfc7950 + yang-parser-reactor + test - org.opendaylight.yangtools - yang-parser-reactor + yang-parser-rfc7950 test 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 a0a2be0a45..f84c0e9e80 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 @@ -7,27 +7,25 @@ */ package org.opendaylight.yangtools.rfc8528.parser; -import static com.google.common.base.Verify.verifyNotNull; - import com.google.common.collect.ImmutableList; 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.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; +import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -final class MountPointEffectiveStatementImpl extends UnknownEffectiveStatementBase +final class MountPointEffectiveStatementImpl extends AbstractEffectiveUnknownSchmemaNode implements MountPointEffectiveStatement, MountPointSchemaNode { MountPointEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { - super(stmt, substatements); + super(stmt.declared(), stmt.argument(), stmt.history(), substatements); } @Override public QName getQName() { - return verifyNotNull(argument()); + return argument(); } @Override diff --git a/parser/rfc8639-parser-support/pom.xml b/parser/rfc8639-parser-support/pom.xml index 3a41106bc2..6e05ace266 100644 --- a/parser/rfc8639-parser-support/pom.xml +++ b/parser/rfc8639-parser-support/pom.xml @@ -53,12 +53,12 @@ org.opendaylight.yangtools - yang-parser-rfc7950 + yang-parser-reactor + test - org.opendaylight.yangtools - yang-parser-reactor + yang-parser-rfc7950 test 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 d9fe1cbf60..3cde2e8f1a 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 @@ -13,15 +13,15 @@ import org.opendaylight.yangtools.openconfig.model.api.OpenConfigVersionEffectiv import org.opendaylight.yangtools.openconfig.model.api.OpenConfigVersionStatement; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; +import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; final class OpenConfigVersionEffectiveStatementImpl - extends UnknownEffectiveStatementBase + extends AbstractEffectiveUnknownSchmemaNode implements OpenConfigVersionEffectiveStatement { OpenConfigVersionEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { - super(stmt, substatements); + super(stmt.declared(), stmt.argument(), stmt.history(), substatements); } @Override diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java deleted file mode 100644 index 65adb7a485..0000000000 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2015 Cisco Systems, Inc. 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.rfc7950.stmt; - -import com.google.common.collect.ImmutableList; -import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.CopyableNode; -import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement; -import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveDocumentedNodeWithStatus; -import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; - -public abstract class UnknownEffectiveStatementBase> - extends AbstractEffectiveDocumentedNodeWithStatus implements UnknownSchemaNode { - - private final boolean addedByUses; - private final boolean augmenting; - - private final QName nodeType; - private final String nodeParameter; - - protected UnknownEffectiveStatementBase(final Current stmt, - final @NonNull ImmutableList> substatements) { - super(stmt.argument(), stmt.declared(), substatements); - - nodeType = stmt.publicDefinition().getStatementName(); - - // initCopyType - final CopyableNode copyTypesFromOriginal = stmt.history(); - this.augmenting = copyTypesFromOriginal.isAugmenting(); - this.addedByUses = copyTypesFromOriginal.isAddedByUses(); - - nodeParameter = stmt.rawArgument() == null ? "" : stmt.rawArgument(); - } - - @Override - public QName getNodeType() { - return nodeType; - } - - @Override - public String getNodeParameter() { - return nodeParameter; - } - - @Deprecated - @Override - public boolean isAddedByUses() { - return addedByUses; - } - - @Deprecated - @Override - public boolean isAugmenting() { - return augmenting; - } - - @Override - public String toString() { - final QName type = getNodeType(); - return type.getNamespace() + ":" + type.getLocalName() + " " + nodeParameter; - } -} 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 1ef3df1678..ed50798131 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 @@ -11,17 +11,17 @@ import com.google.common.collect.ImmutableList; import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; +import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; final class ThirdPartyExtensionEffectiveStatementImpl - extends UnknownEffectiveStatementBase + extends AbstractEffectiveUnknownSchmemaNode implements ThirdPartyExtensionEffectiveStatement { private final String valueFromNamespace; ThirdPartyExtensionEffectiveStatementImpl(final Current stmt, final ImmutableList> substatements) { - super(stmt, substatements); + super(stmt.declared(), stmt.argument(), stmt.history(), substatements); valueFromNamespace = stmt.getFromNamespace(ThirdPartyNamespace.class, Empty.getInstance()); } -- 2.36.6