From: Robert Varga Date: Wed, 27 Jan 2021 09:20:48 +0000 (+0100) Subject: Add Current.equalParentPath() X-Git-Tag: v7.0.0~270 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F34%2F94834%2F7;p=yangtools.git Add Current.equalParentPath() This check needs to be controlled by the reactor, hence move it from BaseSchemaTreeStatementSupport to EffectiveStmtCtx.Current as a default equalParentPath() method. JIRA: YANGTOOLS-1208 Change-Id: I445789e9442db92b8081baad144f269ed14c35af Signed-off-by: Robert Varga --- diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/BaseSchemaTreeStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/BaseSchemaTreeStatementSupport.java index a2d2ea2436..20d5360141 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/BaseSchemaTreeStatementSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/BaseSchemaTreeStatementSupport.java @@ -49,8 +49,9 @@ public abstract class BaseSchemaTreeStatementSupport copy, final Current current, final Collection> substatements) { return equalHistory(copy.history(), current.history()) - // FIXME: this should devolve to getArgument() equality - && copy.getSchemaPath().equals(current.getSchemaPath()); + && copy.getArgument().equals(current.getArgument()) + // FIXME: 8.0.0: eliminate this call + && copy.equalParentPath(current); } private static boolean equalHistory(final CopyHistory copy, final CopyHistory current) { diff --git a/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/EffectiveStmtCtx.java b/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/EffectiveStmtCtx.java index 54e1c0231e..f389280535 100644 --- a/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/EffectiveStmtCtx.java +++ b/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/EffectiveStmtCtx.java @@ -11,6 +11,7 @@ import static com.google.common.base.Verify.verifyNotNull; import com.google.common.annotations.Beta; import com.google.common.base.VerifyException; +import java.util.Objects; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; @@ -141,5 +142,19 @@ 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: 8.0.0: Remove this method + default boolean equalParentPath(final Current other) { + final Parent ours = effectiveParent(); + final Parent theirs = other.effectiveParent(); + return ours == theirs + || ours != null && theirs != null && Objects.equals(ours.schemaPath(), theirs.schemaPath()); + } } }